static Collection<ElementSymbol> getBindingElements(QueryNode queryNode) throws TeiidComponentException { HashSet<ElementSymbol> set = new HashSet<ElementSymbol>(); ElementCollectorVisitor.getElements(QueryResolver.parseBindings(queryNode), set); return set; }
/** * check to make sure that given query nodes bindings are only to the node provided, * if they are returns true; false otherwise */ private boolean areBindingsOnlyToNode(QueryNode modifiedNode, MappingSourceNode sourceNode) throws TeiidComponentException { List<Expression> bindings = QueryResolver.parseBindings(modifiedNode); String nodeStr = sourceNode.getActualResultSetName() + Symbol.SEPARATOR; for (Iterator<Expression> i = bindings.iterator(); i.hasNext();) { Expression ses = i.next(); if (ses instanceof AliasSymbol) { ses = ((AliasSymbol)ses).getSymbol(); } ElementSymbol binding = (ElementSymbol)ses; if (!binding.getName().startsWith(nodeStr)) { return false; } } return true; }
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); } }
for (Expression ses : parseBindings(queryNode)) { String name = Symbol.getShortName(ses); if (ses instanceof AliasSymbol) {