package org.nextprot.api.core.utils.annot.merge.impl; import com.google.common.base.Preconditions; import org.nextprot.api.core.domain.annotation.Annotation; import org.nextprot.api.core.utils.annot.merge.AnnotationSimilarityPredicate; import java.util.List; /** * A list of SimilarityPredicate applied with conjunction operator (AND) * * Created by fnikitin on 02/08/16. */ public class SimilarityPredicateChain implements AnnotationSimilarityPredicate { private final List<AnnotationSimilarityPredicate> criteria; public SimilarityPredicateChain(List<AnnotationSimilarityPredicate> criteria) { Preconditions.checkNotNull(criteria); Preconditions.checkArgument(!criteria.isEmpty()); this.criteria = criteria; } @Override public boolean isSimilar(Annotation annotation1, Annotation annotation2) { for (AnnotationSimilarityPredicate criterium : criteria) { if (!criterium.isSimilar(annotation1, annotation2)) return false; } return true; } }