public void visit(CaseExpression obj) { obj.setExpression(replaceExpression(obj.getExpression())); final int whenCount = obj.getWhenCount(); ArrayList whens = new ArrayList(whenCount); ArrayList thens = new ArrayList(whenCount); for (int i = 0; i < whenCount; i++) { whens.add(replaceExpression(obj.getWhenExpression(i))); thens.add(replaceExpression(obj.getThenExpression(i))); } obj.setWhen(whens, thens); if (obj.getElseExpression() != null) { obj.setElseExpression(replaceExpression(obj.getElseExpression())); } }
public void visit(CaseExpression obj) { obj.setExpression(replaceExpression(obj.getExpression())); final int whenCount = obj.getWhenCount(); ArrayList whens = new ArrayList(whenCount); ArrayList thens = new ArrayList(whenCount); for (int i = 0; i < whenCount; i++) { whens.add(replaceExpression(obj.getWhenExpression(i))); thens.add(replaceExpression(obj.getThenExpression(i))); } obj.setWhen(whens, thens); if (obj.getElseExpression() != null) { obj.setElseExpression(replaceExpression(obj.getElseExpression())); } }
public void visit(CaseExpression obj) { obj.setExpression(replaceExpression(obj.getExpression())); final int whenCount = obj.getWhenCount(); ArrayList whens = new ArrayList(whenCount); ArrayList thens = new ArrayList(whenCount); for (int i = 0; i < whenCount; i++) { whens.add(replaceExpression(obj.getWhenExpression(i))); thens.add(replaceExpression(obj.getThenExpression(i))); } obj.setWhen(whens, thens); if (obj.getElseExpression() != null) { obj.setElseExpression(replaceExpression(obj.getElseExpression())); } }
/** * @see java.lang.Object#clone() */ public Object clone() { Expression expr = (Expression)expression.clone(); int whenCount = getWhenCount(); ArrayList whenCopy = new ArrayList(whenCount); ArrayList thenCopy = new ArrayList(whenCount); for(int i = 0; i < whenCount; i++) { whenCopy.add(getWhenExpression(i).clone()); thenCopy.add(getThenExpression(i).clone()); } Expression elseExpr = getElseExpression(); if (elseExpr != null) { elseExpr = (Expression)elseExpr.clone(); } CaseExpression copy = new CaseExpression(expr, whenCopy, thenCopy); copy.setType(getType()); copy.setElseExpression(elseExpr); return copy; }
public void testSetElseExpression() { CaseExpression expr = example(3); expr.setElseExpression(new Constant(new Integer(1000))); assertEquals(new Constant(new Integer(1000)), expr.getElseExpression()); expr.setElseExpression(null); assertNull(expr.getElseExpression()); }
/** * @see java.lang.Object#clone() */ public Object clone() { Expression expr = (Expression)expression.clone(); int whenCount = getWhenCount(); ArrayList whenCopy = new ArrayList(whenCount); ArrayList thenCopy = new ArrayList(whenCount); for(int i = 0; i < whenCount; i++) { whenCopy.add(getWhenExpression(i).clone()); thenCopy.add(getThenExpression(i).clone()); } Expression elseExpr = getElseExpression(); if (elseExpr != null) { elseExpr = (Expression)elseExpr.clone(); } CaseExpression copy = new CaseExpression(expr, whenCopy, thenCopy); copy.setType(getType()); copy.setElseExpression(elseExpr); return copy; }
/** * @see java.lang.Object#clone() */ public Object clone() { Expression expr = (Expression)expression.clone(); int whenCount = getWhenCount(); ArrayList whenCopy = new ArrayList(whenCount); ArrayList thenCopy = new ArrayList(whenCount); for(int i = 0; i < whenCount; i++) { whenCopy.add(getWhenExpression(i).clone()); thenCopy.add(getThenExpression(i).clone()); } Expression elseExpr = getElseExpression(); if (elseExpr != null) { elseExpr = (Expression)elseExpr.clone(); } CaseExpression copy = new CaseExpression(expr, whenCopy, thenCopy); copy.setType(getType()); copy.setElseExpression(elseExpr); return copy; }
@Test public void testCaseExpression1() { ElementSymbol x = new ElementSymbol("x"); //$NON-NLS-1$ ElementSymbol y = new ElementSymbol("y"); //$NON-NLS-1$ Constant a = new Constant(String.valueOf('a')); Constant z = new Constant(String.valueOf('z')); HashMap<Expression, Expression> map = new HashMap<Expression, Expression>(); map.put(x, y); map.put(a, z); ArrayList<Expression> whens = new ArrayList<Expression>(), thens = new ArrayList<Expression>(); whens.add(new Constant(String.valueOf('z'))); thens.add(new Constant(new Integer(0))); whens.add(new Constant(String.valueOf('b'))); thens.add(new Constant(new Integer(1))); whens.add(new Constant(String.valueOf('c'))); thens.add(new Constant(new Integer(2))); CaseExpression mapped = new CaseExpression(y, whens, thens); mapped.setElseExpression(new Constant(new Integer(9999))); helpTest(TestCaseExpression.example(3), map, mapped); }
@Test public void testCaseExpression2() { CaseExpression example = TestCaseExpression.example(2); example.setElseExpression(null); helpTest(example, "CASE x WHEN 'a' THEN 0 WHEN 'b' THEN 1 END"); //$NON-NLS-1$ }
@Test public void testCaseExpression4() { CaseExpression example = TestCaseExpression.example(3, 2, true); example.setElseExpression(null); helpTest(example, "CASE x WHEN 'a' THEN 0 WHEN 'b' THEN 1 WHEN null THEN 2 END"); //$NON-NLS-1$ }
public static CaseExpression example(int whens) { ElementSymbol x = new ElementSymbol("x"); //$NON-NLS-1$ CaseExpression caseExpr = new CaseExpression(x, getWhenExpressions(whens), getThenExpressions(whens)); caseExpr.setElseExpression(new Constant(new Integer(9999))); return caseExpr; }
caseExpr.setElseExpression(elseExpression); {if (true) return caseExpr;} throw new Error("Missing return statement in function");
caseExpr.setElseExpression(elseExpression); {if (true) return caseExpr;} throw new Error("Missing return statement in function");
caseExpr.setElseExpression(elseExpression); {if (true) return caseExpr;} throw new Error("Missing return statement in function");
public static CaseExpression example(int whens, int nullIndex, boolean includeNull) { ArgCheck.isTrue(nullIndex < whens, "Null Index must be less than the number of When expressions"); //$NON-NLS-1$ ElementSymbol x = new ElementSymbol("x"); //$NON-NLS-1$ CaseExpression caseExpr = new CaseExpression(x, getWhenExpressions(whens, nullIndex, includeNull), getThenExpressions(whens)); caseExpr.setElseExpression(new Constant(new Integer(9999))); return caseExpr; }
@Test public void testCaseExpression2() { CaseExpression expr = TestCaseExpression.example(4); expr.setElseExpression(null); Select select = new Select(); select.addSymbol(new ElementSymbol("y")); //$NON-NLS-1$ select.addSymbol(new ElementSymbol("z")); //$NON-NLS-1$ // The parser hard-codes the name "expr" select.addSymbol(expr); //$NON-NLS-1$ From from = new From(); from.addGroup(new GroupSymbol("m.g")); //$NON-NLS-1$ Query q = new Query(); q.setSelect(select); q.setFrom(from); String query = new StringBuffer("SELECT y, z, ") //$NON-NLS-1$ .append("CASE x") //$NON-NLS-1$ .append(" WHEN 'a' THEN 0") //$NON-NLS-1$ .append(" WHEN 'b' THEN 1") //$NON-NLS-1$ .append(" WHEN 'c' THEN 2") //$NON-NLS-1$ .append(" WHEN 'd' THEN 3") //$NON-NLS-1$ .append(" END") //$NON-NLS-1$ .append(" FROM m.g").toString(); //$NON-NLS-1$ helpTest(query, query, q); }
obj.setElseExpression(ResolverUtil.convertExpression(elseExpr, thenTypeName, metadata));
obj.setElseExpression(ResolverUtil.convertExpression(elseExpr, thenTypeName, metadata));
Expression elseExpression = new Constant("c"); //$NON-NLS-1$ CaseExpression expr = new CaseExpression(x, whens, thens); expr.setElseExpression(elseExpression); expr.setType(DataTypeManager.DefaultDataClasses.STRING);
public void testEquals() { CaseExpression sc1 = example(3); assertTrue(sc1.equals(sc1)); assertTrue(sc1.equals(sc1.clone())); assertTrue(sc1.clone().equals(sc1)); assertTrue(sc1.equals(example(3))); CaseExpression sc2 = example(4); assertFalse(sc1.equals(sc2)); assertFalse(sc2.equals(sc1)); CaseExpression sc3 = example(3); sc3.setElseExpression(new ElementSymbol("y")); //$NON-NLS-1$ assertFalse(sc1.equals(sc3)); assertFalse(sc3.equals(sc1)); CaseExpression sc4 = example(3); sc4.setExpression(new ElementSymbol("y")); //$NON-NLS-1$ assertFalse(sc1.equals(sc4)); assertFalse(sc4.equals(sc1)); } }