public static boolean isEmpty(Condition<?> condition) { return condition.getType() != Condition.Type.LITERAL && condition.numChildren() == 0; }
public static final <E extends TitanElement> Condition<E> simplifyQNF(Condition<E> condition) { Preconditions.checkArgument(isQueryNormalForm(condition)); if (condition.numChildren() == 1) { Condition<E> child = ((And) condition).get(0); if (child.getType() == Condition.Type.LITERAL) return child; } return condition; }
public static final boolean containsType(Condition<?> condition, Condition.Type type) { if (condition.getType()==type) return true; else if (condition.numChildren()>0) { for (Condition child : condition.getChildren()) { if (containsType(child,type)) return true; } } return false; }
public static final Condition<TitanElement> indexCover(final MixedIndexType index, Condition<TitanElement> condition, final IndexSerializer indexInfo, final Set<Condition> covered) { assert QueryUtil.isQueryNormalForm(condition); assert condition instanceof And; And<TitanElement> subcondition = new And<TitanElement>(condition.numChildren()); for (Condition<TitanElement> subclause : condition.getChildren()) { if (coversAll(index,subclause,indexInfo)) { subcondition.add(subclause); covered.add(subclause); } } return subcondition.isEmpty()?null:subcondition; }
public static final<E extends TitanElement> Condition<E> transformation(Condition<E> condition, Function<Condition<E>,Condition<E>> transformation) { Condition<E> transformed = transformation.apply(condition); if (transformed!=null) return transformed; //if transformed==null we go a level deeper if (condition.getType()== Condition.Type.LITERAL) { return condition; } else if (condition instanceof Not) { return Not.of(transformation(((Not) condition).getChild(), transformation)); } else if (condition instanceof And) { And<E> newand = new And<E>(condition.numChildren()); for (Condition<E> child : condition.getChildren()) newand.add(transformation(child, transformation)); return newand; } else if (condition instanceof Or) { Or<E> newor = new Or<E>(condition.numChildren()); for (Condition<E> child : condition.getChildren()) newor.add(transformation(child, transformation)); return newor; } else throw new IllegalArgumentException("Unexpected condition type: " + condition); }
public static boolean isEmpty(Condition<?> condition) { return condition.getType() != Condition.Type.LITERAL && condition.numChildren() == 0; }
public static boolean isEmpty(Condition<?> condition) { return condition.getType() != Condition.Type.LITERAL && condition.numChildren() == 0; }
public static final <E extends TitanElement> Condition<E> simplifyQNF(Condition<E> condition) { Preconditions.checkArgument(isQueryNormalForm(condition)); if (condition.numChildren() == 1) { Condition<E> child = ((And) condition).get(0); if (child.getType() == Condition.Type.LITERAL) return child; } return condition; }
public static final <E extends TitanElement> Condition<E> simplifyQNF(Condition<E> condition) { Preconditions.checkArgument(isQueryNormalForm(condition)); if (condition.numChildren() == 1) { Condition<E> child = ((And) condition).get(0); if (child.getType() == Condition.Type.LITERAL) return child; } return condition; }
public static final boolean containsType(Condition<?> condition, Condition.Type type) { if (condition.getType()==type) return true; else if (condition.numChildren()>0) { for (Condition child : condition.getChildren()) { if (containsType(child,type)) return true; } } return false; }
public static final boolean containsType(Condition<?> condition, Condition.Type type) { if (condition.getType()==type) return true; else if (condition.numChildren()>0) { for (Condition child : condition.getChildren()) { if (containsType(child,type)) return true; } } return false; }
public static final Condition<TitanElement> indexCover(final MixedIndexType index, Condition<TitanElement> condition, final IndexSerializer indexInfo, final Set<Condition> covered) { assert QueryUtil.isQueryNormalForm(condition); assert condition instanceof And; And<TitanElement> subcondition = new And<TitanElement>(condition.numChildren()); for (Condition<TitanElement> subclause : condition.getChildren()) { if (coversAll(index,subclause,indexInfo)) { subcondition.add(subclause); covered.add(subclause); } } return subcondition.isEmpty()?null:subcondition; }
public static final Condition<TitanElement> indexCover(final MixedIndexType index, Condition<TitanElement> condition, final IndexSerializer indexInfo, final Set<Condition> covered) { assert QueryUtil.isQueryNormalForm(condition); assert condition instanceof And; And<TitanElement> subcondition = new And<TitanElement>(condition.numChildren()); for (Condition<TitanElement> subclause : condition.getChildren()) { if (coversAll(index,subclause,indexInfo)) { subcondition.add(subclause); covered.add(subclause); } } return subcondition.isEmpty()?null:subcondition; }
public static final Condition<TitanElement> indexCover(final MixedIndexType index, Condition<TitanElement> condition, final IndexSerializer indexInfo, final Set<Condition> covered) { assert QueryUtil.isQueryNormalForm(condition); assert condition instanceof And; And<TitanElement> subcondition = new And<>(condition.numChildren()); for (Condition<TitanElement> subclause : condition.getChildren()) { if (coversAll(index, subclause, indexInfo)) { subcondition.add(subclause); covered.add(subclause); } } return subcondition.isEmpty()?null:subcondition; }
public static final Condition<TitanElement> indexCover(final MixedIndexType index, Condition<TitanElement> condition, final IndexSerializer indexInfo, final Set<Condition> covered) { assert QueryUtil.isQueryNormalForm(condition); assert condition instanceof And; And<TitanElement> subcondition = new And<TitanElement>(condition.numChildren()); for (Condition<TitanElement> subclause : condition.getChildren()) { if (coversAll(index,subclause,indexInfo)) { subcondition.add(subclause); covered.add(subclause); } } return subcondition.isEmpty()?null:subcondition; }
public static final<E extends TitanElement> Condition<E> transformation(Condition<E> condition, Function<Condition<E>,Condition<E>> transformation) { Condition<E> transformed = transformation.apply(condition); if (transformed!=null) return transformed; //if transformed==null we go a level deeper if (condition.getType()== Condition.Type.LITERAL) { return condition; } else if (condition instanceof Not) { return Not.of(transformation(((Not) condition).getChild(), transformation)); } else if (condition instanceof And) { And<E> newand = new And<E>(condition.numChildren()); for (Condition<E> child : condition.getChildren()) newand.add(transformation(child, transformation)); return newand; } else if (condition instanceof Or) { Or<E> newor = new Or<E>(condition.numChildren()); for (Condition<E> child : condition.getChildren()) newor.add(transformation(child, transformation)); return newor; } else throw new IllegalArgumentException("Unexpected condition type: " + condition); }
public static final<E extends TitanElement> Condition<E> transformation(Condition<E> condition, Function<Condition<E>,Condition<E>> transformation) { Condition<E> transformed = transformation.apply(condition); if (transformed!=null) return transformed; //if transformed==null we go a level deeper if (condition.getType()== Condition.Type.LITERAL) { return condition; } else if (condition instanceof Not) { return Not.of(transformation(((Not) condition).getChild(), transformation)); } else if (condition instanceof And) { And<E> newand = new And<E>(condition.numChildren()); for (Condition<E> child : condition.getChildren()) newand.add(transformation(child, transformation)); return newand; } else if (condition instanceof Or) { Or<E> newor = new Or<E>(condition.numChildren()); for (Condition<E> child : condition.getChildren()) newor.add(transformation(child, transformation)); return newor; } else throw new IllegalArgumentException("Unexpected condition type: " + condition); }