package org.activityinfo.core.shared.criteria; import com.google.common.collect.Sets; import org.activityinfo.model.resource.ResourceId; import org.activityinfo.core.shared.Projection; import org.activityinfo.model.form.FormInstance; import javax.annotation.Nonnull; import java.util.Set; /** * Matches Instances that belong to the given set */ public class IdCriteria implements Criteria { private final Set<ResourceId> instanceIds; public IdCriteria(ResourceId... instanceIds) { this.instanceIds = Sets.newHashSet(instanceIds); } public IdCriteria(Set<ResourceId> instanceIds) { this.instanceIds = instanceIds; } public IdCriteria(Iterable<ResourceId> instanceIds) { this.instanceIds = Sets.newHashSet(instanceIds); } public Set<ResourceId> getInstanceIds() { return instanceIds; } @Override public void accept(CriteriaVisitor visitor) { visitor.visitInstanceIdCriteria(this); } @Override public boolean apply(@Nonnull FormInstance instance) { return instanceIds.contains(instance.getId()); } @Override public boolean apply(@Nonnull Projection projection) { return instanceIds.contains(projection.getRootInstanceId()); } }