@Override public QueryMetadataInterface getDesignTimeMetadata() { if (designTime) { return this; } if (designTimeMetadata == null) { designTimeMetadata = createDesignTimeMetadata(); if (designTimeMetadata instanceof BasicQueryMetadataWrapper) { ((BasicQueryMetadataWrapper)designTimeMetadata).designTime = true; } } return designTimeMetadata; }
@Override public String getExtensionProperty(Object metadataID, String key, boolean checkUnqualified) { metadataID = getActualMetadataId(metadataID); if (metadataID instanceof TempMetadataID) { return null; } return super.getExtensionProperty(metadataID, key, checkUnqualified); }
@Override public Map<Expression, Integer> getFunctionBasedExpressions(Object metadataID) { if (metadataID instanceof TempMetadataID) { return ((TempMetadataID)metadataID).getTableData().getFunctionBasedExpressions(); } return super.getFunctionBasedExpressions(metadataID); }
@Override public Collection getGroupsForPartialName(String partialGroupName) throws TeiidComponentException, QueryMetadataException { Collection groups = super.getGroupsForPartialName(partialGroupName); ArrayList<String> allGroups = new ArrayList<String>(groups); for (Map.Entry<String, TempMetadataID> entry : tempStore.getData().entrySet()) { String name = entry.getKey(); if (StringUtil.endsWithIgnoreCase(name, partialGroupName) //don't want to match tables by anything less than the full name, //since this should be a temp or a global temp and in the latter case there's a real metadata entry //alternatively we could check to see if the name is already in the result list && (name.length() == partialGroupName.length() || (entry.getValue().getMetadataType() != Type.TEMP && name.length() > partialGroupName.length() && name.charAt(name.length() - partialGroupName.length() - 1) == '.'))) { allGroups.add(name); } } return allGroups; }
@Override public Object getElementID(String elementName) throws TeiidComponentException, QueryMetadataException { try { return super.getElementID(elementName); } catch (QueryMetadataException e) { //could be pseudo-column int index = elementName.lastIndexOf('.'); if(index <= 0 || elementName.length() <= index) { throw e; } String group = elementName.substring(0, index); elementName = elementName.substring(index + 1, elementName.length()); MultiSourceGroup msg = getMultiSourceGroup(getGroupID(group)); if (msg != null && elementName.equalsIgnoreCase(getName(msg.multiSourceElement))) { return msg.multiSourceElement; } throw e; } }
@Override public Map<Expression, Integer> getFunctionBasedExpressions(Object metadataID) { if (metadataID instanceof TempMetadataID) { return ((TempMetadataID)metadataID).getTableData().getFunctionBasedExpressions(); } return super.getFunctionBasedExpressions(metadataID); }
@Override public Collection getGroupsForPartialName(String partialGroupName) throws TeiidComponentException, QueryMetadataException { Collection groups = super.getGroupsForPartialName(partialGroupName); ArrayList<String> allGroups = new ArrayList<String>(groups); for (Map.Entry<String, TempMetadataID> entry : tempStore.getData().entrySet()) { String name = entry.getKey(); if (StringUtil.endsWithIgnoreCase(name, partialGroupName) //don't want to match tables by anything less than the full name, //since this should be a temp or a global temp and in the latter case there's a real metadata entry //alternatively we could check to see if the name is already in the result list && (name.length() == partialGroupName.length() || (entry.getValue().getMetadataType() != Type.TEMP && name.length() > partialGroupName.length() && name.charAt(name.length() - partialGroupName.length() - 1) == '.'))) { allGroups.add(name); } } return allGroups; }
@Override public Object getElementID(String elementName) throws TeiidComponentException, QueryMetadataException { try { return super.getElementID(elementName); } catch (QueryMetadataException e) { //could be pseudo-column int index = elementName.lastIndexOf('.'); if(index <= 0 || elementName.length() <= index) { throw e; } String group = elementName.substring(0, index); elementName = elementName.substring(index + 1, elementName.length()); MultiSourceGroup msg = getMultiSourceGroup(getGroupID(group)); if (msg != null && elementName.equalsIgnoreCase(getName(msg.multiSourceElement))) { return msg.multiSourceElement; } throw e; } }
@Override public QueryMetadataInterface getDesignTimeMetadata() { if (designTime) { return this; } if (designTimeMetadata == null) { designTimeMetadata = createDesignTimeMetadata(); if (designTimeMetadata instanceof BasicQueryMetadataWrapper) { ((BasicQueryMetadataWrapper)designTimeMetadata).designTime = true; } } return designTimeMetadata; }
@Override public Map<Expression, Integer> getFunctionBasedExpressions(Object metadataID) { if (metadataID instanceof TempMetadataID) { return ((TempMetadataID)metadataID).getTableData().getFunctionBasedExpressions(); } return super.getFunctionBasedExpressions(metadataID); }
@Override public String getExtensionProperty(Object metadataID, String key, boolean checkUnqualified) { metadataID = getActualMetadataId(metadataID); if (metadataID instanceof TempMetadataID) { return null; } return super.getExtensionProperty(metadataID, key, checkUnqualified); }
@Override public Collection getGroupsForPartialName(String partialGroupName) throws TeiidComponentException, QueryMetadataException { Collection groups = super.getGroupsForPartialName(partialGroupName); ArrayList<String> allGroups = new ArrayList<String>(groups); for (Map.Entry<String, TempMetadataID> entry : tempStore.getData().entrySet()) { String name = entry.getKey(); if (StringUtil.endsWithIgnoreCase(name, partialGroupName) //don't want to match tables by anything less than the full name, //since this should be a temp or a global temp and in the latter case there's a real metadata entry //alternatively we could check to see if the name is already in the result list && (name.length() == partialGroupName.length() || (entry.getValue().getMetadataType() != Type.TEMP && name.length() > partialGroupName.length() && name.charAt(name.length() - partialGroupName.length() - 1) == '.'))) { allGroups.add(name); } } return allGroups; }
@Override public Object getElementID(String elementName) throws TeiidComponentException, QueryMetadataException { try { return super.getElementID(elementName); } catch (QueryMetadataException e) { //could be pseudo-column int index = elementName.lastIndexOf('.'); if(index <= 0 || elementName.length() <= index) { throw e; } String group = elementName.substring(0, index); elementName = elementName.substring(index + 1, elementName.length()); MultiSourceGroup msg = getMultiSourceGroup(getGroupID(group)); if (msg != null && elementName.equalsIgnoreCase(getName(msg.multiSourceElement))) { return msg.multiSourceElement; } throw e; } }
@Override public QueryMetadataInterface getDesignTimeMetadata() { if (designTime) { return this; } if (designTimeMetadata == null) { designTimeMetadata = createDesignTimeMetadata(); if (designTimeMetadata instanceof BasicQueryMetadataWrapper) { ((BasicQueryMetadataWrapper)designTimeMetadata).designTime = true; } } return designTimeMetadata; }
@Override public String getExtensionProperty(Object metadataID, String key, boolean checkUnqualified) { metadataID = getActualMetadataId(metadataID); if (metadataID instanceof TempMetadataID) { return null; } return super.getExtensionProperty(metadataID, key, checkUnqualified); }