@Override public MarkerRange.Builder update( MarkerRange.Builder current, Range<Long> range) { // FIXME: this assumes all of the partition fields are in order // This should identify out-of-order fields and alter the range for (CalendarFieldPartitioner cfp : fields) { boolean hasLower = range.hasLowerBound(); boolean hasUpper = range.hasUpperBound(); if (hasLower) { current.addToStart(cfp.getName(), cfp.apply(range.lowerEndpoint())); } if (hasUpper) { current.addToEnd(cfp.getName(), cfp.apply(range.upperEndpoint())); } } return current; } }
@Override public MarkerRange.Builder update( MarkerRange.Builder current, Range range) { if (range.hasLowerBound()) { for (Pair<String, Range> pair : fields) { current.addToStart(pair.first(), pair.second().lowerEndpoint()); } } if (range.hasUpperBound()) { for (Pair<String, Range> pair : fields) { current.addToEnd(pair.first(), pair.second().upperEndpoint()); } } return current; } }
@Override public MarkerRange.Builder update( MarkerRange.Builder current, Range range) { if (range.hasLowerBound()) { current.addToStart(name, range.lowerEndpoint()); } if (range.hasUpperBound()) { current.addToEnd(name, range.upperEndpoint()); } return current; } }
@Override @SuppressWarnings("unchecked") public MarkerRange.Builder update( MarkerRange.Builder current, Object item) { for (FieldPartitioner fp : fields) { Object value = fp.apply(item); current.addToStart(fp.getName(), value); current.addToEnd(fp.getName(), value); } return current; } }
@Override public MarkerRange.Builder update( MarkerRange.Builder current, Object item) { current.addToStart(name, item); current.addToEnd(name, item); return current; } }