public static boolean validTitanOrder(OrderGlobalStep ostep, Traversal rootTraversal, boolean isVertexOrder) { for (Comparator comp : (List<Comparator>) ostep.getComparators()) { if (!(comp instanceof ElementValueComparator)) return false; ElementValueComparator evc = (ElementValueComparator) comp; if (!(evc.getValueComparator() instanceof Order)) return false; TitanTransaction tx = TitanTraversalUtil.getTx(rootTraversal.asAdmin()); String key = evc.getPropertyKey(); PropertyKey pkey = tx.getPropertyKey(key); if (pkey == null || !(Comparable.class.isAssignableFrom(pkey.dataType()))) return false; if (isVertexOrder && pkey.cardinality() != Cardinality.SINGLE) return false; } return true; }
titanStep.orderBy(evc.getPropertyKey(), (Order) evc.getValueComparator());
static boolean validJanusGraphOrder(OrderGlobalStep orderGlobalStep, Traversal rootTraversal, boolean isVertexOrder) { final List<Pair<Traversal.Admin, Object>> comparators = orderGlobalStep.getComparators(); for(final Pair<Traversal.Admin, Object> comp : comparators) { final String key; if (comp.getValue0() instanceof ElementValueTraversal && comp.getValue1() instanceof Order) { key = ((ElementValueTraversal) comp.getValue0()).getPropertyKey(); } else if (comp.getValue1() instanceof ElementValueComparator) { final ElementValueComparator evc = (ElementValueComparator) comp.getValue1(); if (!(evc.getValueComparator() instanceof Order)) return false; key = evc.getPropertyKey(); } else { // do not fold comparators that include nested traversals that are not simple ElementValues return false; } final JanusGraphTransaction tx = JanusGraphTraversalUtil.getTx(rootTraversal.asAdmin()); final PropertyKey pKey = tx.getPropertyKey(key); if (pKey == null || !(Comparable.class.isAssignableFrom(pKey.dataType())) || (isVertexOrder && pKey.cardinality() != Cardinality.SINGLE)) { return false; } } return true; }
final ElementValueComparator evc = (ElementValueComparator) comp.getValue1(); key = evc.getPropertyKey(); order = (Order) evc.getValueComparator();
public static void extractOrder(Step<?, ?> newStep, Traversal.Admin<?, ?> traversal) { Step<?, ?> step = newStep; do { step = step.getNextStep(); if (step instanceof OrderGlobalStep) { QueryHolder holder = (QueryHolder) newStep; @SuppressWarnings("resource") OrderGlobalStep<?, ?> orderStep = (OrderGlobalStep<?, ?>) step; orderStep.getComparators().forEach(comp -> { ElementValueComparator<?> comparator = (ElementValueComparator<?>) comp.getValue1(); holder.orderBy(comparator.getPropertyKey(), (Order) comparator.getValueComparator()); }); TraversalHelper.copyLabels(step, newStep, false); traversal.removeStep(step); } step = step.getNextStep(); } while (step instanceof OrderGlobalStep || step instanceof IdentityStep); }
public static boolean validTitanOrder(OrderGlobalStep ostep, Traversal rootTraversal, boolean isVertexOrder) { for (Comparator comp : (List<Comparator>) ostep.getComparators()) { if (!(comp instanceof ElementValueComparator)) return false; ElementValueComparator evc = (ElementValueComparator) comp; if (!(evc.getValueComparator() instanceof Order)) return false; TitanTransaction tx = TitanTraversalUtil.getTx(rootTraversal.asAdmin()); String key = evc.getPropertyKey(); PropertyKey pkey = tx.getPropertyKey(key); if (pkey == null || !(Comparable.class.isAssignableFrom(pkey.dataType()))) return false; if (isVertexOrder && pkey.cardinality() != Cardinality.SINGLE) return false; } return true; }
public static void extractOrder(Step<?, ?> newStep, Traversal.Admin<?, ?> traversal) { Step<?, ?> step = newStep; do { step = step.getNextStep(); if (step instanceof OrderGlobalStep) { QueryHolder holder = (QueryHolder) newStep; @SuppressWarnings("resource") OrderGlobalStep<?, ?> orderStep = (OrderGlobalStep<?, ?>) step; orderStep.getComparators().forEach(comp -> { ElementValueComparator<?> comparator = (ElementValueComparator<?>) comp.getValue1(); holder.orderBy(comparator.getPropertyKey(), (Order) comparator.getValueComparator()); }); TraversalHelper.copyLabels(step, newStep, false); traversal.removeStep(step); } step = step.getNextStep(); } while (step instanceof OrderGlobalStep || step instanceof IdentityStep); }
titanStep.orderBy(evc.getPropertyKey(), (Order) evc.getValueComparator());
if (elementValueComparator.getValueComparator() == Order.incr) { result += " ASC"; } else if (elementValueComparator.getValueComparator() == Order.decr) { result += " DESC"; } else { throw new RuntimeException("Only handle Order.incr and Order.decr, not " + elementValueComparator.getValueComparator().toString());
if (elementValueComparator.getValueComparator() == Order.incr) { result += " ASC"; } else if (elementValueComparator.getValueComparator() == Order.decr) { result += " DESC"; } else { throw new RuntimeException("Only handle Order.incr and Order.decr, not " + elementValueComparator.getValueComparator().toString());