/*
* Author: tdanford
* Date: Jun 9, 2008
*/
package org.seqcode.gsebricks.verbs.assignment;
import org.seqcode.genome.location.Region;
import org.seqcode.gsebricks.verbs.Mapper;
public interface AssignmentPredicate<X extends Region> {
public boolean isValidAssignment(Region item, X event);
public Mapper<Region,Region> assignmentZoneMapper();
public static class Filter<Y extends Region>
implements org.seqcode.gsebricks.verbs.Filter<Y,Y> {
private AssignmentPredicate<Y> predicate;
private Region baseRegion;
public Filter(AssignmentPredicate<Y> ap, Region r) {
predicate = ap;
baseRegion = r;
}
public Y execute(Y val) {
return predicate.isValidAssignment(baseRegion, val) ? val : null;
}
}
}