private TupleExpr joinOrExpr(BinaryTupleOperator theExpr) { if (theExpr.getLeftArg() != null && theExpr.getRightArg() == null) { return theExpr.getLeftArg(); } else if (theExpr.getLeftArg() == null && theExpr.getRightArg() != null) { return theExpr.getRightArg(); } else if (theExpr.getLeftArg() == null && theExpr.getRightArg() == null) { return null; } else { return theExpr; } }
/** * Creates a new binary tuple operator. * * @param leftArg * The operator's left argument, must not be <tt>null</tt>. * @param rightArg * The operator's right argument, must not be <tt>null</tt>. */ public BinaryTupleOperator(TupleExpr leftArg, TupleExpr rightArg) { setLeftArg(leftArg); setRightArg(rightArg); }
@Override public Union clone() { return (Union)super.clone(); } }
@Override protected void meetBinaryTupleOperator(BinaryTupleOperator node) { if (node.getLeftArg() == former) { if (replacement == null) { replaceNode(node, node.getRightArg()); } else { node.setLeftArg((TupleExpr)replacement); } } else { assert former == node.getRightArg(); if (replacement == null) { replaceNode(node, node.getLeftArg()); } else { node.setRightArg((TupleExpr)replacement); } } }
@Override public boolean equals(Object other) { return other instanceof Difference && super.equals(other); }
@Override public BinaryTupleOperator clone() { BinaryTupleOperator clone = (BinaryTupleOperator)super.clone(); clone.setLeftArg(getLeftArg().clone()); clone.setRightArg(getRightArg().clone()); return clone; } }
@Override public boolean equals(Object other) { return other instanceof Union && super.equals(other); }
if (aJoin.getLeftArg() == null) { aJoin.setLeftArg(aExpr); else if (aJoin.getRightArg() == null) { aJoin.setRightArg(aExpr);
@Override protected void meetBinaryTupleOperator(BinaryTupleOperator node) { double cost = 0; for (TupleExpr arg : new TupleExpr[] { node.getLeftArg(), node.getRightArg() }) { arg.visit(this); cost += cardinality; } cardinality = cost; } }
@Override public void replaceChildNode(QueryModelNode current, QueryModelNode replacement) { if (leftArg == current) { setLeftArg((TupleExpr)replacement); } else if (rightArg == current) { setRightArg((TupleExpr)replacement); } else { super.replaceChildNode(current, replacement); } }
@Override public Intersection clone() { return (Intersection)super.clone(); } }
@Override public boolean equals(Object other) { return other instanceof Join && super.equals(other); }
@Override public boolean equals(Object other) { if (other instanceof BinaryTupleOperator) { BinaryTupleOperator o = (BinaryTupleOperator)other; return leftArg.equals(o.getLeftArg()) && rightArg.equals(o.getRightArg()); } return false; }
@Override protected void meetBinaryTupleOperator(BinaryTupleOperator node) { if (predicate.equals(SeRQO.LEFTARG)) { node.setLeftArg((TupleExpr) model.get(object)); } else if (predicate.equals(SeRQO.RIGHTARG)) { node.setRightArg((TupleExpr) model.get(object)); } else { super.meetBinaryTupleOperator(node); } }
@Override public Difference clone() { return (Difference)super.clone(); } }
@Override public boolean equals(Object other) { return other instanceof Intersection && super.equals(other); }
@Override protected void meetBinaryTupleOperator(BinaryTupleOperator node) { double cost = 0; for (TupleExpr arg : new TupleExpr[] { node.getLeftArg(), // NOPMD node.getRightArg() }) { arg.visit(this); cost += cardinality; } cardinality = cost; } }
BinaryTupleOperator aJoin = aGroup.isOptional() ? new LeftJoin() : new Join(); aJoin.setLeftArg(aExpr); aJoin.setRightArg(aBasicGroup.expr(false)); aJoin.setRightArg(aGroup.expr());
@Override public Join clone() { return (Join)super.clone(); }
@Override public boolean equals(Object other) { if (other instanceof LeftJoin && super.equals(other)) { ValueExpr oCond = ((LeftJoin)other).getCondition(); return nullEquals(condition, oCond); } return false; }