/** * Deep copy of object. The values Iterator of this object * will not be cloned - it will be null in the new object * (see #setValueIterator setValueIterator}). * @return Deep copy of object */ public SubquerySetCriteria clone() { Expression copy = null; if(getExpression() != null) { copy = (Expression) getExpression().clone(); } QueryCommand copyCommand = null; if(getCommand() != null) { copyCommand = (QueryCommand) getCommand().clone(); } SubquerySetCriteria criteriaCopy = new SubquerySetCriteria(copy, copyCommand); criteriaCopy.setNegated(isNegated()); criteriaCopy.subqueryHint = this.subqueryHint.clone(); return criteriaCopy; }
/** * Override equals() method. * @param obj Other object * @return True if equal */ public boolean equals(Object obj) { // Use super.equals() to check obvious stuff and variable if(obj == this) { return true; } if(! (obj instanceof SubquerySetCriteria)) { return false; } SubquerySetCriteria sc = (SubquerySetCriteria)obj; return this.isNegated() == sc.isNegated() && EquivalenceUtil.areEqual(getExpression(), sc.getExpression()) && EquivalenceUtil.areEqual(getCommand(), sc.getCommand()) && this.subqueryHint.equals(sc.getSubqueryHint()); }
public SubquerySetCriteria(Expression expression, QueryCommand subCommand) { setExpression(expression); setCommand(subCommand); }
/** * @see org.teiid.query.sql.LanguageVisitor#visit(org.teiid.query.sql.lang.SubquerySetCriteria) */ public void visit(SubquerySetCriteria obj) { obj.setExpression( replaceExpression(obj.getExpression()) ); }
SubqueryIn translate(SubquerySetCriteria criteria) { return new SubqueryIn(translate(criteria.getExpression()), criteria.isNegated(), translate(criteria.getCommand())); }
public static SubquerySetCriteria helpExample() { ElementSymbol element = TestElementImpl.helpExample("g1", "e1"); //$NON-NLS-1$ //$NON-NLS-2$ Query query = TestQueryImpl.helpExample(true); SubquerySetCriteria ssc = new SubquerySetCriteria(element, query); ssc.setNegated(true); return ssc; }
/** * Get hash code. WARNING: The hash code is based on data in the criteria. * If data values are changed, the hash code will change - don't hash this * object and change values. * @return Hash code */ public int hashCode() { int hc = 0; hc = HashCodeUtil.hashCode(hc, getExpression()); hc = HashCodeUtil.hashCode(hc, getCommand()); return hc; }
public void testVisitSubquerySetCriteria() { SubquerySetCriteria ssc = new SubquerySetCriteria(); ssc.setExpression(new Function("length", new Expression[] {exampleElement(true, 0)})); //$NON-NLS-1$ ssc.setCommand(new Query()); helpTest(ssc,getSymbolMap()); }
SubquerySetCriteria ssc = new SubquerySetCriteria(expression, command); ssc.setSubqueryHint(hint); criteria = ssc; } else {
@Test public void testSubquerySetCriteria1() { Select s1 = new Select(); s1.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$ From f1 = new From(); f1.addGroup(new GroupSymbol("m.g1")); //$NON-NLS-1$ Query q1 = new Query(); q1.setSelect(s1); q1.setFrom(f1); ElementSymbol expr = new ElementSymbol("e2"); //$NON-NLS-1$ SubquerySetCriteria ssc = new SubquerySetCriteria(expr, q1); helpTest(ssc, "e2 IN (SELECT e1 FROM m.g1)"); //$NON-NLS-1$ }
public void testEquals3() { SubquerySetCriteria c1 = example1(); SubquerySetCriteria c2 = c1.clone(); c2.setNegated(true); assertFalse("Set criteria are not the same", c1.equals(c2)); //$NON-NLS-1$ }
static Query exampleIn(boolean semiJoin) { GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$ From from = new From(); from.addGroup(g); Select select = new Select(); select.addSymbol(new ElementSymbol("a")); //$NON-NLS-1$ Expression expr = new ElementSymbol("b"); //$NON-NLS-1$ Criteria criteria = new CompareCriteria(new ElementSymbol("a2"), CompareCriteria.EQ, //$NON-NLS-1$ new Constant(new Integer(5))); Query query = new Query(); query.setSelect(select); query.setFrom(from); query.setCriteria(criteria); SubquerySetCriteria subCrit = new SubquerySetCriteria(expr, query); subCrit.getSubqueryHint().setMergeJoin(semiJoin); Query outer = new Query(); outer.setSelect(select); outer.setFrom(from); outer.setCriteria(subCrit); return outer; }
public void visit(SubquerySetCriteria obj) { visitNode(obj.getExpression()); resolveSubQuery(obj, this.currentGroups); postVisitVisitor(obj); }
/** * Visit a language object and collect symbols. This method should <b>NOT</b> be * called directly. * @param obj Language object */ public void visit(SubquerySetCriteria obj) { this.commands.add(obj.getCommand()); }
isNegatedPredicateCriteria = setCriteria.isNegated();
SubqueryIn translate(SubquerySetCriteria criteria) { return new SubqueryIn(translate(criteria.getExpression()), criteria.isNegated(), translate(criteria.getCommand())); }
@Test public void testSubquerySetCriteria2() { Select s1 = new Select(); s1.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$ From f1 = new From(); f1.addGroup(new GroupSymbol("m.g1")); //$NON-NLS-1$ Query q1 = new Query(); q1.setSelect(s1); q1.setFrom(f1); ElementSymbol expr = new ElementSymbol("e2"); //$NON-NLS-1$ SubquerySetCriteria ssc = new SubquerySetCriteria(expr, q1); ssc.setNegated(true); helpTest(ssc, "e2 NOT IN (SELECT e1 FROM m.g1)"); //$NON-NLS-1$ }
/** * @see org.teiid.query.sql.LanguageVisitor#visit(org.teiid.query.sql.lang.SubquerySetCriteria) */ public void visit(SubquerySetCriteria obj) { obj.setExpression( replaceExpression(obj.getExpression()) ); }
/** * Get hash code. WARNING: The hash code is based on data in the criteria. * If data values are changed, the hash code will change - don't hash this * object and change values. * @return Hash code */ public int hashCode() { int hc = 0; hc = HashCodeUtil.hashCode(hc, getExpression()); hc = HashCodeUtil.hashCode(hc, getCommand()); return hc; }
SubquerySetCriteria ssc = new SubquerySetCriteria(expression, command); ssc.setSubqueryHint(hint); criteria = ssc; } else {