Bug fix. Stopping condition of recurrence stopped too soon in some cases where an interval *contained* zero reads but *overlapped* with some reads.

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@2874 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
hanna 2010-02-23 15:58:54 +00:00
parent 36129e01e4
commit fff15944fe
1 changed files with 10 additions and 2 deletions

View File

@ -94,17 +94,25 @@ public class IndexDelimitedLocusShardStrategy implements ShardStrategy {
List<Bin> bins = findBinsAtLeastAsDeepAs(blockDrivenDataSource.getOverlappingBins(location),binsDeeperThan);
// Recursive stopping condition -- algorithm is at the zero point and no bins have been found.
if(binsDeeperThan == 0 && bins.size() == 0) {
filePointers.add(new FilePointer(location));
continue;
}
// No bins found; step up a level and search again.
if(bins.size() == 0) {
if(filePointer != null && filePointer.locations.size() > 0) {
filePointers.add(filePointer);
filePointer = null;
}
filePointers.add(new FilePointer(location));
filePointers.addAll(batchLociIntoBins(Collections.singletonList(location),binsDeeperThan-1));
continue;
}
Collections.sort(bins);
// Bins found; try to match bins with locations.
Collections.sort(bins);
Iterator<Bin> binIterator = bins.iterator();
while(locationStop >= locationStart) {