private static boolean isNumericOrGeometricPredicate( IndexQuery predicate ) { if ( predicate.type() == IndexQuery.IndexQueryType.exact ) { IndexQuery.ExactPredicate exactPredicate = (IndexQuery.ExactPredicate) predicate; return isNumberGeometryOrArray( exactPredicate.value() ); } else { return predicate.type() == IndexQuery.IndexQueryType.range && (predicate.valueGroup() == ValueGroup.NUMBER || predicate.valueGroup() == ValueGroup.GEOMETRY); } }
@Override protected boolean initializeRangeForQuery( KEY treeKeyFrom, KEY treeKeyTo, IndexQuery[] predicates ) { IndexQuery predicate = predicates[0]; switch ( predicate.type() ) { case exists: treeKeyFrom.initValueAsLowest( ValueGroup.UNKNOWN ); treeKeyTo.initValueAsHighest( ValueGroup.UNKNOWN ); break; case exact: IndexQuery.ExactPredicate exactPredicate = (IndexQuery.ExactPredicate) predicate; treeKeyFrom.from( exactPredicate.value() ); treeKeyTo.from( exactPredicate.value() ); break; case range: IndexQuery.RangePredicate<?> rangePredicate = (IndexQuery.RangePredicate<?>) predicate; initFromForRange( rangePredicate, treeKeyFrom ); initToForRange( rangePredicate, treeKeyTo ); break; default: throw new IllegalArgumentException( "IndexQuery of type " + predicate.type() + " is not supported." ); } return false; // no filtering }
@Override boolean initializeRangeForQuery( NumberIndexKey treeKeyFrom, NumberIndexKey treeKeyTo, IndexQuery[] predicates ) { IndexQuery predicate = predicates[0]; switch ( predicate.type() ) { case exists: treeKeyFrom.initValueAsLowest( ValueGroup.NUMBER ); treeKeyTo.initValueAsHighest( ValueGroup.NUMBER ); break; case exact: ExactPredicate exactPredicate = (ExactPredicate) predicate; treeKeyFrom.from( exactPredicate.value() ); treeKeyTo.from( exactPredicate.value() ); break; case range: RangePredicate<?> rangePredicate = (RangePredicate<?>) predicate; initFromForRange( rangePredicate, treeKeyFrom ); initToForRange( rangePredicate, treeKeyTo ); break; default: throw new IllegalArgumentException( "IndexQuery of type " + predicate.type() + " is not supported." ); } return false; }
private Query toLuceneQuery( IndexQuery... predicates ) throws IndexNotApplicableKernelException switch ( predicate.type() ) for ( int i = 0; i < predicates.length; i++ ) assert predicates[i].type() == exact : "Exact followed by another query predicate type is not supported at this moment."; values[i] = ((IndexQuery.ExactPredicate) predicates[i]).value(); for ( IndexQuery p : predicates ) if ( p.type() != IndexQueryType.exists )
switch ( firstPredicate.type() )
switch ( q.type() )
private static boolean isNumericOrGeometricPredicate( IndexQuery predicate ) { if ( predicate.type() == IndexQuery.IndexQueryType.exact ) { IndexQuery.ExactPredicate exactPredicate = (IndexQuery.ExactPredicate) predicate; return isNumberGeometryOrArray( exactPredicate.value() ); } else { return predicate.type() == IndexQuery.IndexQueryType.range && (predicate.valueGroup() == ValueGroup.NUMBER || predicate.valueGroup() == ValueGroup.GEOMETRY); } }
@Override boolean initializeRangeForQuery( NumberIndexKey treeKeyFrom, NumberIndexKey treeKeyTo, IndexQuery[] predicates ) { IndexQuery predicate = predicates[0]; switch ( predicate.type() ) { case exists: treeKeyFrom.initValueAsLowest( ValueGroup.NUMBER ); treeKeyTo.initValueAsHighest( ValueGroup.NUMBER ); break; case exact: ExactPredicate exactPredicate = (ExactPredicate) predicate; treeKeyFrom.from( exactPredicate.value() ); treeKeyTo.from( exactPredicate.value() ); break; case range: RangePredicate<?> rangePredicate = (RangePredicate<?>) predicate; initFromForRange( rangePredicate, treeKeyFrom ); initToForRange( rangePredicate, treeKeyTo ); break; default: throw new IllegalArgumentException( "IndexQuery of type " + predicate.type() + " is not supported." ); } return false; }
@Override protected boolean initializeRangeForQuery( KEY treeKeyFrom, KEY treeKeyTo, IndexQuery[] predicates ) { IndexQuery predicate = predicates[0]; switch ( predicate.type() ) { case exists: treeKeyFrom.initValueAsLowest( ValueGroup.UNKNOWN ); treeKeyTo.initValueAsHighest( ValueGroup.UNKNOWN ); break; case exact: IndexQuery.ExactPredicate exactPredicate = (IndexQuery.ExactPredicate) predicate; treeKeyFrom.from( exactPredicate.value() ); treeKeyTo.from( exactPredicate.value() ); break; case range: IndexQuery.RangePredicate<?> rangePredicate = (IndexQuery.RangePredicate<?>) predicate; initFromForRange( rangePredicate, treeKeyFrom ); initToForRange( rangePredicate, treeKeyTo ); break; default: throw new IllegalArgumentException( "IndexQuery of type " + predicate.type() + " is not supported." ); } return false; // no filtering }
switch ( firstPredicate.type() )
switch ( q.type() )