private static Expression mapExpression(GroupSymbol varGroup, ArrayList<Expression> selectSymbols, int i, Expression ex) { String name = "s_" +i; //$NON-NLS-1$ selectSymbols.add(new AliasSymbol(name, ex)); ex = new ElementSymbol(name, varGroup.clone()); return ex; }
symbol = ((AliasSymbol)symbol).getSymbol(); hasAlias = true; symbols.set(i, new AliasSymbol(name, symbol));
/** * Return a copy of this object. */ public Object clone() { Expression symbolCopy = (Expression) this.symbol.clone(); AliasSymbol result = new AliasSymbol(getName(), getShortName(), symbolCopy); result.outputName = this.outputName; return result; }
private void updateSymbolName(List<Expression> projectCols, int i, ElementSymbol virtualElem, Expression projectedSymbol) { if (projectedSymbol instanceof AliasSymbol) { ((AliasSymbol)projectedSymbol).setShortName(Symbol.getShortName(virtualElem)); } else { projectCols.set(i, new AliasSymbol(Symbol.getShortName(virtualElem), projectedSymbol)); } }
/** * If the element has alias wrapping, then return the matching alias element. * @return matched alias symbol; null otherwise. */ private AliasSymbol getMachingAlias(List<Expression> elementsInGroup, ElementSymbol symbol) { for (Expression element : elementsInGroup) { if (element instanceof AliasSymbol) { AliasSymbol alias = (AliasSymbol)element; if (alias.getSymbol().equals(symbol)) { return alias; } } } return null; }
@Override public void visit( AliasSymbol obj ) { visitNode(obj.getSymbol()); append(SPACE); append(AS); append(SPACE); append(escapeSinglePart(obj.getOutputName())); }
@Test public void testClone() { AliasSymbol a1 = new AliasSymbol("X", new ExpressionSymbol("x", new Constant(1))); //$NON-NLS-1$ //$NON-NLS-2$ a1.setOutputName("foo"); //$NON-NLS-1$ AliasSymbol clone = (AliasSymbol)a1.clone(); assertEquals(a1, clone); assertEquals(a1.getOutputName(), clone.getOutputName()); }
static void mapBindings(MappingSourceNode sourceNode, QueryNode oldQueryNode, QueryNode modifiedNode) throws TeiidComponentException { if (oldQueryNode.getBindings() != null) { List<String> bindings = new ArrayList<String>(); for (Iterator<Expression> i = QueryResolver.parseBindings(oldQueryNode).iterator(); i.hasNext();) { Expression ses = i.next(); String name = Symbol.getName(ses); boolean useName = false; if (ses instanceof AliasSymbol) { ses = ((AliasSymbol)ses).getSymbol(); useName = true; } ElementSymbol es = (ElementSymbol)ses; if (!useName) { bindings.add(sourceNode.getMappedSymbol(es).toString()); } else { bindings.add(new AliasSymbol(name, sourceNode.getMappedSymbol(es)).toString()); } } modifiedNode.setBindings(bindings); } }
mappedElements.put(symbol, new ElementSymbol(groupName + Symbol.SEPARATOR + alias.getShortName())); continue; AliasSymbol selectSymbol = new AliasSymbol(name, symbol); ElementSymbol upperSymbol = new ElementSymbol(groupName + Symbol.SEPARATOR + selectSymbol.getShortName()); mappedElements.put(symbol, upperSymbol);
@Test public void testAliasEquals() { AliasSymbol a1 = new AliasSymbol("X", new ExpressionSymbol("x", new Constant(1))); //$NON-NLS-1$ //$NON-NLS-2$ AliasSymbol a2 = new AliasSymbol("X", new ExpressionSymbol("x", new Constant(2))); //$NON-NLS-1$ //$NON-NLS-2$ AliasSymbol a3 = new AliasSymbol("x", new ExpressionSymbol("x", new Constant(1))); //$NON-NLS-1$ //$NON-NLS-2$ assertFalse(a1.equals(a3)); //just a different case for the alias assertFalse(a1.equals(a2)); //different express }
@Override public void visit( OrderByItem obj ) { Expression ses = obj.getSymbol(); if (ses instanceof AliasSymbol) { AliasSymbol as = (AliasSymbol)ses; outputDisplayName(as.getOutputName()); } else { visitNode(ses); } if (!obj.isAscending()) { append(SPACE); append(DESC); } // Don't print default "ASC" if (obj.getNullOrdering() != null) { append(SPACE); append(NonReserved.NULLS); append(SPACE); append(obj.getNullOrdering().name()); } }
/** * Constructor used for cloning * @param name * @param canonicalName * @since 4.3 */ private AliasSymbol(String name, String canonicalName, Expression symbol) { super(name); setSymbol(symbol); }
/** * @see org.teiid.query.sql.symbol.Symbol#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof AliasSymbol)) { return false; } AliasSymbol other = (AliasSymbol)obj; return this.getName().equals(other.getName()) && this.symbol.equals(other.symbol); }
private void updateSymbolName(List<Expression> projectCols, int i, ElementSymbol virtualElem, Expression projectedSymbol) { if (projectedSymbol instanceof AliasSymbol) { ((AliasSymbol)projectedSymbol).setShortName(Symbol.getShortName(virtualElem)); } else { projectCols.set(i, new AliasSymbol(Symbol.getShortName(virtualElem), projectedSymbol)); } }
public static final Expression getExpression(Expression symbol) { if (symbol instanceof AliasSymbol) { symbol = ((AliasSymbol)symbol).getSymbol(); } if (symbol instanceof ExpressionSymbol) { ExpressionSymbol exprSymbol = (ExpressionSymbol)symbol; return exprSymbol.getExpression(); } return symbol; }
@Override public void visit( AliasSymbol obj ) { visitNode(obj.getSymbol()); append(SPACE); append(AS); append(SPACE); append(escapeSinglePart(obj.getOutputName())); }
@Override public void visit( OrderByItem obj ) { Expression ses = obj.getSymbol(); if (ses instanceof AliasSymbol) { AliasSymbol as = (AliasSymbol)ses; outputDisplayName(as.getOutputName()); } else { visitNode(ses); } if (!obj.isAscending()) { append(SPACE); append(DESC); } // Don't print default "ASC" if (obj.getNullOrdering() != null) { append(SPACE); append(NonReserved.NULLS); append(SPACE); append(obj.getNullOrdering().name()); } }
/** * Construct an AliasSymbol given the alias name and the underlying symbol. * @param name Name of the alias * @param symbol Underlying symbol */ public AliasSymbol(String name, Expression symbol) { super(name); setSymbol(symbol); }