private static void generateRangeCondition(StringBuilder builder, String field, RangeCondition rangeCondition) { Key startKey = rangeCondition.getStart(); Key endKey = rangeCondition.getEnd(); if(startKey != null) { builder.append(field).append(rangeCondition.isStartIncluded() ? ">=" : ">"); handleValueAppend(builder, startKey); } if(startKey != null && endKey != null) { builder.append(","); } if(endKey != null) { builder.append(field).append(rangeCondition.isEndIncluded() ? "<=" : "<"); handleValueAppend(builder, endKey); } }
private RangeCondition validateRangeCondition(SearchCondition condition) throws JasDBStorageException { if(condition instanceof RangeCondition) { KeyFactory factory = keyInfo.getKeyFactory(); RangeCondition rangeCondition = (RangeCondition) condition; rangeCondition.setStart(validateKey(factory, rangeCondition.getStart())); rangeCondition.setEnd(validateKey(factory, rangeCondition.getEnd())); return rangeCondition; } else { throw new JasDBStorageException("Invalid Range condition input: " + condition); } }
private static RangeCondition mergeRangeConditions(List<RangeCondition> rangeConditions) { Key lowestKey = null; boolean startInclusive = false; boolean endInclusive = false; Key highestKey = null; for(SearchCondition condition : rangeConditions) { RangeCondition rangeCondition = (RangeCondition) condition; Key rangeStartKey = rangeCondition.getStart(); Key rangeEndKey = rangeCondition.getEnd(); if(rangeStartKey != null && (lowestKey == null || rangeStartKey.compareTo(lowestKey) < 0)) { lowestKey = rangeStartKey; startInclusive = rangeCondition.isStartIncluded(); } if(rangeEndKey != null && (highestKey == null || rangeEndKey.compareTo(highestKey) > 0)) { highestKey = rangeEndKey; endInclusive = rangeCondition.isEndIncluded(); } } return new RangeCondition(lowestKey, startInclusive, highestKey, endInclusive); }
while(keepEvaluating && currentLeave != null) { addFoundKeys(results, currentLeave.getKeyRange(rangeCondition.getStart(), rangeCondition.isStartIncluded(), rangeCondition.getEnd(), rangeCondition.isEndIncluded()), limit); } else if(rangeCondition.getEnd() != null) { Key lastKey = currentLeave.getLast(); int lastKeyCompare = lastKey.compareTo(rangeCondition.getEnd()); if(lastKeyCompare > 0) {
@Override public SearchCondition mergeCondition(KeyNameMapper nameMapper, String sourceField, String mergeField, SearchCondition condition) { if(condition instanceof EqualsCondition) { CompositeKey compositeKey; if(key instanceof CompositeKey) { compositeKey = (CompositeKey) key; } else { compositeKey = new CompositeKey(); compositeKey.addKey(nameMapper, sourceField, key); } return new EqualsCondition(compositeKey.addKey(nameMapper, mergeField, ((EqualsCondition) condition).getKey())); } else if(condition instanceof RangeCondition) { RangeCondition rangeCondition = (RangeCondition) condition; Key startKey = null, endKey = null; if(rangeCondition.getStart() != null) { startKey = new CompositeKey() .addKey(nameMapper, sourceField, key) .addKey(nameMapper, mergeField, rangeCondition.getStart()); } if(rangeCondition.getEnd() != null) { endKey = new CompositeKey() .addKey(nameMapper, sourceField, key) .addKey(nameMapper, mergeField, rangeCondition.getEnd()); } return new RangeCondition(startKey, rangeCondition.isStartIncluded(), endKey, rangeCondition.isEndIncluded()); } return null; }