package org.nextprot.api.core.utils.annot.comp; import org.nextprot.api.commons.exception.NextProtException; import org.nextprot.api.core.domain.annotation.Annotation; import org.nextprot.api.core.utils.annot.AnnotationUtils; import java.util.Comparator; /** * Compare any annotations containing getVariant() informations */ class ByAnnotationVariantComparator implements Comparator<Annotation> { private final Comparator<Annotation> comparator; ByAnnotationVariantComparator() { comparator = new ByFeaturePositionComparator() .thenComparing(a -> a.getVariant().getOriginal()) .thenComparing(a -> a.getVariant().getVariant()); } @Override public int compare(Annotation a1, Annotation a2) { if (a1.getVariant() == null) throw new NextProtException("undefined AnnotationVariant for annotation:\n"+ AnnotationUtils.toString(a1)); if (a2.getVariant() == null) throw new NextProtException("undefined AnnotationVariant for annotation:\n"+ AnnotationUtils.toString(a2)); return comparator.compare(a1, a2); } }