/* * JBoss, Home of Professional Open Source. * See the COPYRIGHT.txt file distributed with this work for information * regarding copyright ownership. Some portions may be licensed * to Red Hat, Inc. under one or more contributor license agreements. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. */ package org.teiid.query.metadata; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; import javax.script.ScriptEngine; import org.teiid.api.exception.query.QueryMetadataException; import org.teiid.core.TeiidComponentException; import org.teiid.core.TeiidProcessingException; import org.teiid.query.function.FunctionLibrary; import org.teiid.query.mapping.relational.QueryNode; import org.teiid.query.mapping.xml.MappingNode; import org.teiid.query.sql.symbol.Expression; public class BasicQueryMetadataWrapper implements QueryMetadataInterface { protected QueryMetadataInterface actualMetadata; protected QueryMetadataInterface designTimeMetadata; protected boolean designTime; public BasicQueryMetadataWrapper(QueryMetadataInterface actualMetadata) { this.actualMetadata = actualMetadata; } public boolean elementSupports(Object elementID, int elementConstant) throws TeiidComponentException, QueryMetadataException { return actualMetadata.elementSupports(elementID, elementConstant); } public Collection getAccessPatternsInGroup(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getAccessPatternsInGroup(groupID); } public byte[] getBinaryVDBResource(String resourcePath) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getBinaryVDBResource(resourcePath); } public float getCardinality(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getCardinality(groupID); } public String getCharacterVDBResource(String resourcePath) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getCharacterVDBResource(resourcePath); } public String getDefaultValue(Object elementID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getDefaultValue(elementID); } public String getDeletePlan(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getDeletePlan(groupID); } public float getDistinctValues(Object elementID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getDistinctValues(elementID); } public Object getElementID(String elementName) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getElementID(elementName); } public List getElementIDsInAccessPattern(Object accessPattern) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getElementIDsInAccessPattern(accessPattern); } public List getElementIDsInGroupID(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getElementIDsInGroupID(groupID); } public List getElementIDsInIndex(Object index) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getElementIDsInIndex(index); } public List getElementIDsInKey(Object key) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getElementIDsInKey(key); } public int getElementLength(Object elementID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getElementLength(elementID); } public String getElementRuntimeTypeName(Object elementID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getElementRuntimeTypeName(elementID); } public Properties getExtensionProperties(Object metadataID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getExtensionProperties(metadataID); } public Collection getForeignKeysInGroup(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getForeignKeysInGroup(groupID); } public String getFullName(Object metadataID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getFullName(metadataID); } public Object getGroupID(String groupName) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getGroupID(groupName); } public Object getGroupIDForElementID(Object elementID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getGroupIDForElementID(elementID); } public Collection getGroupsForPartialName(String partialGroupName) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getGroupsForPartialName(partialGroupName); } public Collection getIndexesInGroup(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getIndexesInGroup(groupID); } public String getInsertPlan(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getInsertPlan(groupID); } public MappingNode getMappingNode(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getMappingNode(groupID); } public Object getMaterialization(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getMaterialization(groupID); } public Object getMaterializationStage(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getMaterializationStage(groupID); } public Object getMaximumValue(Object elementID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getMaximumValue(elementID); } public int getMaxSetSize(Object modelID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getMaxSetSize(modelID); } public Object getMinimumValue(Object elementID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getMinimumValue(elementID); } public Object getModelID(Object groupOrElementID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getModelID(groupOrElementID); } public String getNameInSource(Object metadataID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getNameInSource(metadataID); } public String getNativeType(Object elementID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getNativeType(elementID); } public float getNullValues(Object elementID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getNullValues(elementID); } public int getPosition(Object elementID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getPosition(elementID); } public int getPrecision(Object elementID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getPrecision(elementID); } public Object getPrimaryKeyIDForForeignKeyID(Object foreignKeyID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getPrimaryKeyIDForForeignKeyID(foreignKeyID); } public int getRadix(Object elementID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getRadix(elementID); } public String getFormat(Object elementID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getFormat(elementID); } public int getScale(Object elementID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getScale(elementID); } public StoredProcedureInfo getStoredProcedureInfoForProcedure( String fullyQualifiedProcedureName) throws TeiidComponentException, QueryMetadataException { return actualMetadata .getStoredProcedureInfoForProcedure(fullyQualifiedProcedureName); } public Collection getUniqueKeysInGroup(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getUniqueKeysInGroup(groupID); } public String getUpdatePlan(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getUpdatePlan(groupID); } public String[] getVDBResourcePaths() throws TeiidComponentException, QueryMetadataException { return actualMetadata.getVDBResourcePaths(); } public String getVirtualDatabaseName() throws TeiidComponentException, QueryMetadataException { return actualMetadata.getVirtualDatabaseName(); } public QueryNode getVirtualPlan(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getVirtualPlan(groupID); } public List getXMLSchemas(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getXMLSchemas(groupID); } public Collection getXMLTempGroups(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getXMLTempGroups(groupID); } public boolean groupSupports(Object groupID, int groupConstant) throws TeiidComponentException, QueryMetadataException { return actualMetadata.groupSupports(groupID, groupConstant); } public boolean hasMaterialization(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.hasMaterialization(groupID); } public boolean isProcedure(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.isProcedure(groupID); } public boolean isTemporaryTable(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.isTemporaryTable(groupID); } public boolean isVirtualGroup(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.isVirtualGroup(groupID); } public boolean isVirtualModel(Object modelID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.isVirtualModel(modelID); } public boolean isXMLGroup(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.isXMLGroup(groupID); } public boolean modelSupports(Object modelID, int modelConstant) throws TeiidComponentException, QueryMetadataException { return actualMetadata.modelSupports(modelID, modelConstant); } public Object addToMetadataCache(Object metadataID, String key, Object value) throws TeiidComponentException, QueryMetadataException { return actualMetadata.addToMetadataCache(metadataID, key, value); } public Object getFromMetadataCache(Object metadataID, String key) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getFromMetadataCache(metadataID, key); } public boolean isScalarGroup(Object groupID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.isScalarGroup(groupID); } @Override public FunctionLibrary getFunctionLibrary() { return actualMetadata.getFunctionLibrary(); } @Override public Object getPrimaryKey(Object metadataID) { return actualMetadata.getPrimaryKey(metadataID); } @Override public boolean isMultiSource(Object modelId) throws QueryMetadataException, TeiidComponentException { return actualMetadata.isMultiSource(modelId); } @Override public boolean isMultiSourceElement(Object elementId) throws QueryMetadataException, TeiidComponentException { return actualMetadata.isMultiSourceElement(elementId); } @Override public QueryMetadataInterface getDesignTimeMetadata() { if (designTime) { return this; } if (designTimeMetadata == null) { designTimeMetadata = createDesignTimeMetadata(); if (designTimeMetadata instanceof BasicQueryMetadataWrapper) { ((BasicQueryMetadataWrapper)designTimeMetadata).designTime = true; } } return designTimeMetadata; } protected QueryMetadataInterface createDesignTimeMetadata() { return actualMetadata.getDesignTimeMetadata(); } @Override public boolean hasProcedure(String name) throws TeiidComponentException { return actualMetadata.hasProcedure(name); } @Override public String getName(Object metadataID) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getName(metadataID); } @Override public QueryMetadataInterface getSessionMetadata() { return actualMetadata.getSessionMetadata(); } @Override public Set<String> getImportedModels() { return actualMetadata.getImportedModels(); } @Override public ScriptEngine getScriptEngine(String langauge) throws TeiidProcessingException { return actualMetadata.getScriptEngine(langauge); } @Override public boolean isVariadic(Object metadataID) { return actualMetadata.isVariadic(metadataID); } @Override public Map<Expression, Integer> getFunctionBasedExpressions(Object metadataID) { return actualMetadata.getFunctionBasedExpressions(metadataID); } @Override public boolean isPseudo(Object elementId) { return actualMetadata.isPseudo(elementId); } @Override public Object getModelID(String modelName) throws TeiidComponentException, QueryMetadataException { return actualMetadata.getModelID(modelName); } @Override public String getExtensionProperty(Object metadataID, String key, boolean checkUnqualified) { return actualMetadata.getExtensionProperty(metadataID, key, checkUnqualified); } @Override public boolean findShortName() { return actualMetadata.findShortName(); } @Override public boolean useOutputName() { return actualMetadata.useOutputName(); } @Override public boolean widenComparisonToString() { return actualMetadata.widenComparisonToString(); } @Override public Class<?> getDataTypeClass(String typeName) throws QueryMetadataException { return actualMetadata.getDataTypeClass(typeName); } }