final public MultipleElementSymbol allInGroupSymbol() throws ParseException { Token allInGroupToken = null; allInGroupToken = jj_consume_token(ALL_IN_GROUP); {if (true) return new MultipleElementSymbol(normalizeId(allInGroupToken.image.substring(0, allInGroupToken.image.length() - 2)));} throw new Error("Missing return statement in function"); }
/** * Swap each ElementSymbol referenced by AllInGroupSymbol * @param obj Object to remap */ public void visit(MultipleElementSymbol obj) { List<ElementSymbol> oldSymbols = obj.getElementSymbols(); if(oldSymbols != null && oldSymbols.size() > 0) { List<ElementSymbol> newSymbols = new ArrayList<ElementSymbol>(oldSymbols.size()); Iterator<ElementSymbol> iter = oldSymbols.iterator(); while(iter.hasNext()) { ElementSymbol es = iter.next(); ElementSymbol mappedSymbol = getMappedElement(es); newSymbols.add( mappedSymbol ); } obj.setElementSymbols(newSymbols); } if (obj.getGroup() == null) { return; } obj.setGroup(getMappedGroup(obj.getGroup())); }
private static GroupSymbol resolveAllInGroup(MultipleElementSymbol allInGroupSymbol, Set<GroupSymbol> groups, QueryMetadataInterface metadata) throws QueryResolverException, QueryMetadataException, TeiidComponentException { String groupAlias = allInGroupSymbol.getGroup().getName(); List<GroupSymbol> groupSymbols = ResolverUtil.findMatchingGroups(groupAlias, groups, metadata); if(groupSymbols.isEmpty() || groupSymbols.size() > 1) { String msg = QueryPlugin.Util.getString(groupSymbols.isEmpty()?"ERR.015.008.0047":"SimpleQueryResolver.ambiguous_all_in_group", allInGroupSymbol); //$NON-NLS-1$ //$NON-NLS-2$ QueryResolverException qre = new QueryResolverException(msg); qre.addUnresolvedSymbol(new UnresolvedSymbolDescription(allInGroupSymbol.toString(), msg)); throw qre; } allInGroupSymbol.setGroup(groupSymbols.get(0).clone()); return groupSymbols.get(0); }
/** * Add an element symbol referenced by this multiple element symbol * @param symbol Element symbol referenced by this multiple element symbol */ public void addElementSymbol(ElementSymbol symbol) { if(getElementSymbols() == null) { setElementSymbols(new LinkedList<ElementSymbol>()); } getElementSymbols().add(symbol); }
/** * Return a deep copy of this object * @return Deep copy of this object */ public Object clone() { MultipleElementSymbol copy = new MultipleElementSymbol(); if (group != null) { copy.group = group.clone(); } List<ElementSymbol> elements = getElementSymbols(); if(elements != null && elements.size() > 0) { copy.setElementSymbols(LanguageObject.Util.deepClone(elements, ElementSymbol.class)); } return copy; }
public void testMapMultipleElementSymbolName() { MultipleElementSymbol aigs = new MultipleElementSymbol("OLDG0"); //$NON-NLS-1$ ArrayList<ElementSymbol> elements = new ArrayList<ElementSymbol>(); elements.add(exampleElement(true, 0)); elements.add(exampleElement(true, 1)); aigs.setElementSymbols(elements); // Run symbol mapper StaticSymbolMappingVisitor visitor = new StaticSymbolMappingVisitor(getSymbolMap()); DeepPreOrderNavigator.doVisit(aigs, visitor); // Check name of all in group symbol assertEquals("MultipleElementSymbol name did not get mapped correctly: ", "NEWG0.*", aigs.toString()); //$NON-NLS-1$ //$NON-NLS-2$ }
public static final Select sample1() { List symbols = new ArrayList(); symbols.add(new ElementSymbol("a")); //$NON-NLS-1$ symbols.add(new ElementSymbol("b")); //$NON-NLS-1$ Select select = new Select(); MultipleElementSymbol all = new MultipleElementSymbol(); all.setElementSymbols(symbols); select.addSymbol(all); return select; }
MultipleElementSymbol all = new MultipleElementSymbol(); all.setElementSymbols(validElements.values()); select.addSymbol(all); query.setSelect(select); if(all.getGroup() == null || all.getGroup().getName().equalsIgnoreCase(group.getName())) { all.setElementSymbols(validElements.values()); return; ElementSymbol elementSymbol = new ElementSymbol(all.getGroup().getName()); resolveElement(elementSymbol, validElements, externalGroups, metadata); all.setElementSymbols(elementsInNode); } else if (ss instanceof ExpressionSymbol) { throw new QueryResolverException(QueryPlugin.Event.TEIID30134, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30134));
/** * Get the ordered list of all elements returned by this select. These elements * may be ElementSymbols or ExpressionSymbols but in all cases each represents a * single column. * @return Ordered list of SingleElementSymbol */ public List<Expression> getProjectedSymbols() { ArrayList<Expression> projectedSymbols = new ArrayList<Expression>(); for (Expression symbol : symbols) { if(symbol instanceof MultipleElementSymbol) { List<ElementSymbol> multiSymbols = ((MultipleElementSymbol)symbol).getElementSymbols(); if(multiSymbols != null) { projectedSymbols.addAll(multiSymbols); } } else { projectedSymbols.add(symbol); } } return projectedSymbols; }
public void visit(MultipleElementSymbol obj) { // Determine group that this symbol is for try { List<ElementSymbol> elementSymbols = new ArrayList<ElementSymbol>(); Collection<GroupSymbol> groups = currentGroups; if (obj.getGroup() != null) { groups = Arrays.asList(resolveAllInGroup(obj, currentGroups, metadata)); } for (GroupSymbol group : groups) { elementSymbols.addAll(resolveSelectableElements(group)); } obj.setElementSymbols(elementSymbols); } catch (TeiidException err) { throw new TeiidRuntimeException(err); } }
/** * Checks for a Select * clause * @return True if Select * is used */ public boolean isStar() { return (symbols.size() == 1 && symbols.get(0) instanceof MultipleElementSymbol && ((MultipleElementSymbol)symbols.get(0)).getGroup() == null); }
public void testVisitSelect3() { Select select = new Select(); MultipleElementSymbol all = new MultipleElementSymbol(); all.addElementSymbol(exampleElement(true, 0)); select.addSymbol(all); helpTest(select, getSymbolMap()); }
/** * Return a deep copy of this object * @return Deep copy of this object */ public Object clone() { MultipleElementSymbol copy = new MultipleElementSymbol(); if (group != null) { copy.group = group.clone(); } List<ElementSymbol> elements = getElementSymbols(); if(elements != null && elements.size() > 0) { copy.setElementSymbols(LanguageObject.Util.deepClone(elements, ElementSymbol.class)); } return copy; }
public void testVisitMultipleElementSymbol() { MultipleElementSymbol aigs = new MultipleElementSymbol("OLDG0.*"); //$NON-NLS-1$ ArrayList elements = new ArrayList(); elements.add(exampleElement(true, 0)); elements.add(exampleElement(true, 1)); aigs.setElementSymbols(elements); helpTest(aigs, getSymbolMap()); }
/** * Add an element symbol referenced by this multiple element symbol * @param symbol Element symbol referenced by this multiple element symbol */ public void addElementSymbol(ElementSymbol symbol) { if(getElementSymbols() == null) { setElementSymbols(new LinkedList<ElementSymbol>()); } getElementSymbols().add(symbol); }
/** * Visit a language object and collect symbols. This method should <b>NOT</b> be * called directly. * @param obj Language object */ public void visit(MultipleElementSymbol obj) { List<ElementSymbol> elementSymbols = obj.getElementSymbols(); if(elementSymbols != null) { for (int i = 0; i < elementSymbols.size(); i++) { visit(elementSymbols.get(i)); } } }
public void visit(MultipleElementSymbol obj) { // Determine group that this symbol is for try { List<ElementSymbol> elementSymbols = new ArrayList<ElementSymbol>(); Collection<GroupSymbol> groups = currentGroups; if (obj.getGroup() != null) { groups = Arrays.asList(resolveAllInGroup(obj, currentGroups, metadata)); } for (GroupSymbol group : groups) { elementSymbols.addAll(resolveSelectableElements(group)); } obj.setElementSymbols(elementSymbols); } catch (TeiidException err) { throw new TeiidRuntimeException(err); } }
/** * Checks for a Select * clause * @return True if Select * is used */ public boolean isStar() { return (symbols.size() == 1 && symbols.get(0) instanceof MultipleElementSymbol && ((MultipleElementSymbol)symbols.get(0)).getGroup() == null); }
final public MultipleElementSymbol allInGroupSymbol() throws ParseException { Token allInGroupToken = null; allInGroupToken = jj_consume_token(ALL_IN_GROUP); {if (true) return new MultipleElementSymbol(normalizeId(allInGroupToken.image.substring(0, allInGroupToken.image.length() - 2)));} throw new Error("Missing return statement in function"); }
/** * Swap each ElementSymbol referenced by AllInGroupSymbol * @param obj Object to remap */ public void visit(MultipleElementSymbol obj) { List<ElementSymbol> oldSymbols = obj.getElementSymbols(); if(oldSymbols != null && oldSymbols.size() > 0) { List<ElementSymbol> newSymbols = new ArrayList<ElementSymbol>(oldSymbols.size()); Iterator<ElementSymbol> iter = oldSymbols.iterator(); while(iter.hasNext()) { ElementSymbol es = iter.next(); ElementSymbol mappedSymbol = getMappedElement(es); newSymbols.add( mappedSymbol ); } obj.setElementSymbols(newSymbols); } if (obj.getGroup() == null) { return; } obj.setGroup(getMappedGroup(obj.getGroup())); }