public List<GTScanRange> planScanRanges(){
  TupleFilter flatFilter=flattenToOrAndFilter(gtFilter);
  List<Collection<ColumnRange>> orAndDimRanges=translateToOrAndDimRanges(flatFilter);
  List<GTScanRange> scanRanges=Lists.newArrayListWithCapacity(orAndDimRanges.size());
  for (  Collection<ColumnRange> andDimRanges : orAndDimRanges) {
    GTScanRange scanRange=newScanRange(andDimRanges);
    if (scanRange != null)     scanRanges.add(scanRange);
  }
  List<GTScanRange> mergedRanges=mergeOverlapRanges(scanRanges);
  mergedRanges=mergeTooManyRanges(mergedRanges,maxScanRanges);
  return mergedRanges;
}

public List < GTScanRange > planScanRanges ( ) { TupleFilter flatFilter = flattenToOrAndFilter ( gtFilter ) ; List < Collection < ColumnRange > > orAndDimRanges = translateToOrAndDimRanges ( flatFilter ) ; List < GTScanRange > scanRanges = Lists . newArrayListWithCapacity ( orAndDimRanges . size ( ) ) ; for ( Collection < ColumnRange > andDimRanges : orAndDimRanges ) { GTScanRange scanRange = newScanRange ( andDimRanges ) ; if ( scanRange != null ) scanRanges . add ( scanRange ) ; } List < GTScanRange > mergedRanges = mergeOverlapRanges ( scanRanges ) ; mergedRanges = mergeTooManyRanges ( mergedRanges , maxScanRanges ) ; return mergedRanges ; }
overwrite this method to provide smarter storage visit plans
