public static GroupSymbol helpExample(String groupName, String definition, Object metadataID) { GroupSymbol symbol = new GroupSymbol(groupName, definition); if (metadataID != null) { symbol.setMetadataID(metadataID); } return symbol; }
public static Collection<ElementSymbol> collectTempElements(GroupSymbol group, QueryMetadataInterface metadata) throws QueryMetadataException, TeiidComponentException { ArrayList<ElementSymbol> validElements = new ArrayList<ElementSymbol>(); // Create GroupSymbol for temp groups and add to groups Collection<?> tempGroups = metadata.getXMLTempGroups(group.getMetadataID()); for (Object tempGroupID : tempGroups) { String name = metadata.getFullName(tempGroupID); GroupSymbol tempGroup = new GroupSymbol(name); tempGroup.setMetadataID(tempGroupID); validElements.addAll(ResolverUtil.resolveElementsInGroup(tempGroup, metadata)); } return validElements; }
public static List<? extends Expression> maskColumns(List<ElementSymbol> cols, final GroupSymbol group, QueryMetadataInterface metadata, CommandContext cc) throws QueryMetadataException, TeiidComponentException, TeiidProcessingException { Map<String, DataPolicy> policies = cc.getAllowedDataPolicies(); if (policies == null || policies.isEmpty()) { return cols; } ArrayList<Expression> result = new ArrayList<Expression>(cols.size()); ExpressionMappingVisitor emv = new RowBasedSecurityHelper.RecontextVisitor(group); GroupSymbol gs = group; if (gs.getDefinition() != null) { gs = new GroupSymbol(metadata.getFullName(group.getMetadataID())); gs.setMetadataID(group.getMetadataID()); } for (int i = 0; i < cols.size(); i++) { result.add(maskColumn(cols.get(i), gs, metadata, emv, policies, cc)); } return result; }
static List<ElementSymbol> defineNewGroup(GroupSymbol group, List<? extends Expression> virtualElements, QueryMetadataInterface metadata) throws TeiidComponentException, QueryMetadataException { TempMetadataStore store = new TempMetadataStore(); TempMetadataAdapter tma = new TempMetadataAdapter(metadata, store); try { group.setMetadataID(ResolverUtil.addTempGroup(tma, group, virtualElements, false)); } catch (QueryResolverException e) { throw new TeiidComponentException(QueryPlugin.Event.TEIID30265, e); } List<ElementSymbol> projectedSymbols = ResolverUtil.resolveElementsInGroup(group, metadata); return projectedSymbols; }
static List<ElementSymbol> defineNewGroup(GroupSymbol group, List<? extends Expression> virtualElements, QueryMetadataInterface metadata) throws TeiidComponentException, QueryMetadataException { TempMetadataStore store = new TempMetadataStore(); TempMetadataAdapter tma = new TempMetadataAdapter(metadata, store); try { group.setMetadataID(ResolverUtil.addTempGroup(tma, group, virtualElements, false)); } catch (QueryResolverException e) { throw new TeiidComponentException(QueryPlugin.Event.TEIID30265, e); } List<ElementSymbol> projectedSymbols = ResolverUtil.resolveElementsInGroup(group, metadata); return projectedSymbols; }
static List<ElementSymbol> defineNewGroup(GroupSymbol group, List<? extends Expression> virtualElements, QueryMetadataInterface metadata) throws TeiidComponentException, QueryMetadataException { TempMetadataStore store = new TempMetadataStore(); TempMetadataAdapter tma = new TempMetadataAdapter(metadata, store); try { group.setMetadataID(ResolverUtil.addTempGroup(tma, group, virtualElements, false)); } catch (QueryResolverException e) { throw new TeiidComponentException(QueryPlugin.Event.TEIID30265, e); } List<ElementSymbol> projectedSymbols = ResolverUtil.resolveElementsInGroup(group, metadata); return projectedSymbols; }
public static Query createMatViewQuery(Object matMetadataId, String matTableName, List<? extends Expression> select, boolean isGlobal) { Query query = new Query(); query.setSelect(new Select(select)); GroupSymbol gs = new GroupSymbol(matTableName); gs.setGlobalTable(isGlobal); gs.setMetadataID(matMetadataId); query.setFrom(new From(Arrays.asList(new UnaryFromClause(gs)))); return query; }
public static Query createMatViewQuery(Object matMetadataId, String matTableName, List<? extends Expression> select, boolean isGlobal) { Query query = new Query(); query.setSelect(new Select(select)); GroupSymbol gs = new GroupSymbol(matTableName); gs.setGlobalTable(isGlobal); gs.setMetadataID(matMetadataId); query.setFrom(new From(Arrays.asList(new UnaryFromClause(gs)))); return query; }
public static Query createMatViewQuery(Object matMetadataId, String matTableName, List<? extends Expression> select, boolean isGlobal) { Query query = new Query(); query.setSelect(new Select(select)); GroupSymbol gs = new GroupSymbol(matTableName); gs.setGlobalTable(isGlobal); gs.setMetadataID(matMetadataId); query.setFrom(new From(Arrays.asList(new UnaryFromClause(gs)))); return query; }
public static GroupSymbol addScalarGroup(String name, TempMetadataStore metadata, GroupContext externalGroups, List<? extends Expression> symbols, boolean[] updatable) { GroupSymbol variables = new GroupSymbol(name); externalGroups.addGroup(variables); TempMetadataID tid = metadata.addTempGroup(name, symbols); tid.setMetadataType(Type.SCALAR); int i = 0; for (TempMetadataID cid : tid.getElements()) { cid.setMetadataType(Type.SCALAR); cid.setUpdatable(updatable[i++]); } variables.setMetadataID(tid); return variables; }
public static GroupSymbol addScalarGroup(String name, TempMetadataStore metadata, GroupContext externalGroups, List<? extends Expression> symbols, boolean[] updatable) { GroupSymbol variables = new GroupSymbol(name); externalGroups.addGroup(variables); TempMetadataID tid = metadata.addTempGroup(name, symbols); tid.setMetadataType(Type.SCALAR); int i = 0; for (TempMetadataID cid : tid.getElements()) { cid.setMetadataType(Type.SCALAR); cid.setUpdatable(updatable[i++]); } variables.setMetadataID(tid); return variables; }
public static GroupSymbol addScalarGroup(String name, TempMetadataStore metadata, GroupContext externalGroups, List<? extends Expression> symbols, boolean[] updatable) { GroupSymbol variables = new GroupSymbol(name); externalGroups.addGroup(variables); TempMetadataID tid = metadata.addTempGroup(name, symbols); tid.setMetadataType(Type.SCALAR); int i = 0; for (TempMetadataID cid : tid.getElements()) { cid.setMetadataType(Type.SCALAR); cid.setUpdatable(updatable[i++]); } variables.setMetadataID(tid); return variables; }
public void helpTestRecontextGroup(String oldGroupName, String oldGroupDefinition, String[] knownGroupNames, String expectedName) { GroupSymbol oldSymbol = null; if(oldGroupDefinition == null) { oldSymbol = new GroupSymbol(oldGroupName); } else { oldSymbol = new GroupSymbol(oldGroupName, oldGroupDefinition); } oldSymbol.setMetadataID(oldSymbol.getName()); // Dummy metadata ID TreeSet<String> known = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER); for (int i = 0; i < knownGroupNames.length; i++) { known.add(knownGroupNames[i].toUpperCase()); } GroupSymbol newSymbol = RulePlaceAccess.recontextSymbol(oldSymbol, known); assertEquals("New recontexted group name is not as expected: ", expectedName, newSymbol.getName()); //$NON-NLS-1$ }
public Query createMatViewQuery(Object viewMatadataId, Object matMetadataId, String matTableName, List<? extends Expression> select, boolean isGlobal) throws QueryMetadataException, TeiidComponentException { Query query = new Query(); query.setSelect(new Select(select)); GroupSymbol gs = new GroupSymbol(matTableName); gs.setGlobalTable(isGlobal); gs.setMetadataID(matMetadataId); query.setFrom(new From(Arrays.asList(new UnaryFromClause(gs)))); boolean allow = false; if (!(viewMatadataId instanceof TempMetadataID)) { allow = Boolean.parseBoolean(metadata.getExtensionProperty(viewMatadataId, MaterializationMetadataRepository.ALLOW_MATVIEW_MANAGEMENT, false)); allow &= metadata.getMaterialization(viewMatadataId) != null; } if (allow) { String onErrorAction = metadata.getExtensionProperty(viewMatadataId, MaterializationMetadataRepository.MATVIEW_ONERROR_ACTION, false); if (onErrorAction == null || !ErrorAction.IGNORE.name().equalsIgnoreCase(onErrorAction)) { gs.setCheckMatStatus(viewMatadataId); } } return query; }
/** * Swap name of stored proc and elements in stored procedure parameter expressions * @param obj Object to remap */ public void visit(StoredProcedure obj) { // Swap procedure name String execName = obj.getProcedureName(); GroupSymbol fakeGroup = new GroupSymbol(execName); Object procedureID = obj.getProcedureID(); if(procedureID != null) { fakeGroup.setMetadataID(procedureID); } GroupSymbol mappedGroup = getMappedGroup(fakeGroup); obj.setProcedureName(mappedGroup.getName()); super.visit(obj); }
/** * Swap name of stored proc and elements in stored procedure parameter expressions * @param obj Object to remap */ public void visit(StoredProcedure obj) { // Swap procedure name String execName = obj.getProcedureName(); GroupSymbol fakeGroup = new GroupSymbol(execName); Object procedureID = obj.getProcedureID(); if(procedureID != null) { fakeGroup.setMetadataID(procedureID); } GroupSymbol mappedGroup = getMappedGroup(fakeGroup); obj.setProcedureName(mappedGroup.getName()); super.visit(obj); }
/** * Swap name of stored proc and elements in stored procedure parameter expressions * @param obj Object to remap */ public void visit(StoredProcedure obj) { // Swap procedure name String execName = obj.getProcedureName(); GroupSymbol fakeGroup = new GroupSymbol(execName); Object procedureID = obj.getProcedureID(); if(procedureID != null) { fakeGroup.setMetadataID(procedureID); } GroupSymbol mappedGroup = getMappedGroup(fakeGroup); obj.setProcedureName(mappedGroup.getName()); super.visit(obj); }
public void visit(SubqueryFromClause obj) { Collection<GroupSymbol> externalGroups = this.currentGroups; if (obj.isLateral() && allowImplicit) { externalGroups = new ArrayList<GroupSymbol>(externalGroups); externalGroups.addAll(this.implicitGroups); } resolveSubQuery(obj, externalGroups); discoveredGroup(obj.getGroupSymbol()); try { ResolverUtil.addTempGroup(metadata, obj.getGroupSymbol(), obj.getCommand().getProjectedSymbols(), false); } catch (QueryResolverException err) { throw new TeiidRuntimeException(err); } obj.getGroupSymbol().setMetadataID(metadata.getMetadataStore().getTempGroupID(obj.getGroupSymbol().getName())); }
public void visit(SubqueryFromClause obj) { Collection<GroupSymbol> externalGroups = this.currentGroups; if (obj.isLateral()) { externalGroups = new ArrayList<GroupSymbol>(externalGroups); externalGroups.addAll(this.implicitGroups); } resolveSubQuery(obj, externalGroups); discoveredGroup(obj.getGroupSymbol()); try { ResolverUtil.addTempGroup(metadata, obj.getGroupSymbol(), obj.getCommand().getProjectedSymbols(), false); } catch (QueryResolverException err) { throw new TeiidRuntimeException(err); } obj.getGroupSymbol().setMetadataID(metadata.getMetadataStore().getTempGroupID(obj.getGroupSymbol().getName())); }
public void visit(SubqueryFromClause obj) { Collection<GroupSymbol> externalGroups = this.currentGroups; if (obj.isLateral()) { externalGroups = new ArrayList<GroupSymbol>(externalGroups); externalGroups.addAll(this.implicitGroups); } resolveSubQuery(obj, externalGroups); discoveredGroup(obj.getGroupSymbol()); try { ResolverUtil.addTempGroup(metadata, obj.getGroupSymbol(), obj.getCommand().getProjectedSymbols(), false); } catch (QueryResolverException err) { throw new TeiidRuntimeException(err); } obj.getGroupSymbol().setMetadataID(metadata.getMetadataStore().getTempGroupID(obj.getGroupSymbol().getName())); }