import java.util.ArrayList;
import java.util.List;
-import intervalstore.api.IntervalStoreI;
import intervalstore.impl.BinarySearcher;
/**
public class FeatureStoreImpl extends FeatureStore
{
- /**
- * Default constructor uses NCList
- */
public FeatureStoreImpl()
{
- this(true);
+ super();
}
- public FeatureStoreImpl(boolean useNCList)
+ public FeatureStoreImpl(int option)
{
- features = (useNCList ? new intervalstore.impl.IntervalStore<>()
- : new intervalstore.nonc.IntervalStore<>(false));
+ super(option);
}
/**
* insert into list sorted by start (first contact position):
* binary search the sorted list to find the insertion point
*/
- int insertPosition = findFirstBeginStatic(contactFeatureStarts,
+ int insertPosition = findFirstBegin(contactFeatureStarts,
feature.getBegin());
contactFeatureStarts.add(insertPosition, feature);
* insert into list sorted by end (second contact position):
* binary search the sorted list to find the insertion point
*/
- insertPosition = findFirstEndStatic(contactFeatureEnds,
+ insertPosition = findFirstEnd(contactFeatureEnds,
feature.getEnd());
contactFeatureEnds.add(insertPosition, feature);
* (creating the IntervalStore if necessary)
*/
@Override
- protected synchronized void addPositionalFeature(SequenceFeature feature)
+ protected synchronized boolean addPositionalFeature(
+ SequenceFeature feature)
{
- features.add(feature);
+ return features.add(feature);
}
/**
* find the first contact feature (if any)
* whose end point is not before the target range
*/
- int index = findFirstEndStatic(contactFeatureEnds, from);
+ int index = findFirstEnd(contactFeatureEnds, from);
int n = contactFeatureEnds.size();
while (index < n)
private void findOverlaps(long start, long end,
List<SequenceFeature> result)
{
- result.addAll(((IntervalStoreI<SequenceFeature>) features)
+ result.addAll(features
.findOverlaps(start, end));
}
@Override
protected int findFirstBegin(List<SequenceFeature> list, long pos)
{
- return findFirstBeginStatic(list, pos);
- }
-
- /**
- * Possibly a bit faster using a static method.
- *
- * @param list
- * @param pos
- * @return
- */
- private static int findFirstBeginStatic(List<SequenceFeature> list,
- long pos)
- {
- return BinarySearcher.findFirst(list, f -> f.getBegin() >= pos);
+ return BinarySearcher.findFirst(list, (int) pos,
+ BinarySearcher.fbegin);
}
@Override
protected int findFirstEnd(List<SequenceFeature> list, long pos)
{
- return findFirstEndStatic(list, pos);
- }
-
- /**
- * Possibly a bit faster using a static method.
- *
- * @param list
- * @param pos
- * @return
- */
- private static int findFirstEndStatic(List<SequenceFeature> list,
- long pos)
- {
- return BinarySearcher.findFirst(list, f -> f.getEnd() >= pos);
+ return BinarySearcher.findFirst(list, (int) pos, BinarySearcher.fend);
}
@Override