- /**
- * a class providing criteria for performing a binary search of a list
- */
- abstract static class SearchCriterion
- {
- /**
- * Answers true if the entry passes the search criterion test
- *
- * @param entry
- * @return
- */
- abstract boolean compare(SequenceFeature entry);
-
- /**
- * serves a search condition for finding the first feature whose start
- * position follows a given target location
- *
- * @param target
- * @return
- */
- static SearchCriterion byStart(final long target)
- {
- return new SearchCriterion() {
-
- @Override
- boolean compare(SequenceFeature entry)
- {
- return entry.getBegin() >= target;
- }
- };
- }
-
- /**
- * serves a search condition for finding the first feature whose end
- * position is at or follows a given target location
- *
- * @param target
- * @return
- */
- static SearchCriterion byEnd(final long target)
- {
- return new SearchCriterion()
- {
-
- @Override
- boolean compare(SequenceFeature entry)
- {
- return entry.getEnd() >= target;
- }
- };
- }
-
- /**
- * serves a search condition for finding the first feature which follows the
- * given range as determined by a supplied comparator
- *
- * @param target
- * @return
- */
- static SearchCriterion byFeature(final ContiguousI to,
- final Comparator<ContiguousI> rc)
- {
- return new SearchCriterion()
- {
-
- @Override
- boolean compare(SequenceFeature entry)
- {
- return rc.compare(entry, to) >= 0;
- }
- };
- }
- }
-