/* * 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.Collections; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; import javax.script.ScriptEngine; import org.teiid.designer.query.metadata.IQueryMetadataInterface; import org.teiid.designer.runtime.version.spi.ITeiidServerVersion; import org.teiid.designer.runtime.version.spi.TeiidServerVersion.Version; import org.teiid.designer.udf.IFunctionLibrary; import org.teiid.designer.xml.IMappingNode; import org.teiid.query.eval.TeiidScriptEngine; import org.teiid.query.mapping.relational.QueryNode; import org.teiid.query.sql.lang.ObjectTable; import org.teiid.query.sql.symbol.Expression; /** * This is an abstract implementation of the metadata interface. It can * be subclassed to create test implementations or partial implementations. */ public class BasicQueryMetadata implements IQueryMetadataInterface { private final ITeiidServerVersion teiidVersion; /** * Constructor for AbstractQueryMetadata. * @param teiidVersion */ public BasicQueryMetadata(ITeiidServerVersion teiidVersion) { super(); this.teiidVersion = teiidVersion; } @Override public ITeiidServerVersion getTeiidVersion() { return teiidVersion; } /** * @see IQueryMetadataInterface#getElementID(String) */ @Override public Object getElementID(String elementName) throws Exception { return null; } /** * @see IQueryMetadataInterface#getGroupID(String) */ @Override public Object getGroupID(String groupName) throws Exception { return null; } /** * @see IQueryMetadataInterface#getGroupID(String) */ @Override public Collection getGroupsForPartialName(String partialGroupName) throws Exception { return Collections.EMPTY_LIST; } /** * @see IQueryMetadataInterface#getModelID(Object) */ @Override public Object getModelID(Object groupOrElementID) throws Exception { return null; } /** * @see IQueryMetadataInterface#getFullName(Object) */ @Override public String getFullName(Object metadataID) throws Exception { return null; } /** * @see IQueryMetadataInterface#getElementIDsInGroupID(Object) */ @Override public List getElementIDsInGroupID(Object groupID) throws Exception { return Collections.EMPTY_LIST; } /** * @see IQueryMetadataInterface#getGroupIDForElementID(Object) */ @Override public Object getGroupIDForElementID(Object elementID) throws Exception { return null; } /** * @see IQueryMetadataInterface#getStoredProcedureInfoForProcedure(String) */ @Override public StoredProcedureInfo getStoredProcedureInfoForProcedure(String fullyQualifiedProcedureName) throws Exception { return null; } /** * @see IQueryMetadataInterface#getElementType(Object) */ @Override public String getElementType(Object elementID) throws Exception { return null; } @Override public String getDefaultValue(Object elementID) throws Exception { return null; } @Override public Object getMaximumValue(Object elementID) throws Exception { return null; } @Override public Object getMinimumValue(Object elementID) throws Exception { return null; } /** * @see IQueryMetadataInterface#getDistinctValues(java.lang.Object) * @since 4.3 */ @Override public float getDistinctValues(Object elementID) throws Exception { return -1; } /** * @see IQueryMetadataInterface#getNullValues(java.lang.Object) * @since 4.3 */ @Override public float getNullValues(Object elementID) throws Exception { return -1; } @Override public int getPosition(Object elementID) throws Exception { return 0; } @Override public int getPrecision(Object elementID) throws Exception { return 0; } @Override public int getRadix(Object elementID) throws Exception { return 0; } @Override public String getFormat(Object elementID) throws Exception { return null; } @Override public int getScale(Object elementID) throws Exception { return 0; } /** * @see IQueryMetadataInterface#isVirtualGroup(Object) */ @Override public boolean isVirtualGroup(Object groupID) throws Exception { return false; } /** * @see IQueryMetadataInterface#hasMaterialization(java.lang.Object) * @since 4.2 */ @Override public boolean hasMaterialization(Object groupID) throws Exception { return false; } /** * @see IQueryMetadataInterface#getMaterialization(java.lang.Object) * @since 4.2 */ @Override public Object getMaterialization(Object groupID) throws Exception { return null; } /** * @see IQueryMetadataInterface#getMaterializationStage(java.lang.Object) * @since 4.2 */ @Override public Object getMaterializationStage(Object groupID) throws Exception { return null; } /** * @see IQueryMetadataInterface#isVirtualModel(Object) */ @Override public boolean isVirtualModel(Object modelID) throws Exception { return false; } /** * @see IQueryMetadataInterface#getVirtualPlan(Object) */ @Override public QueryNode getVirtualPlan(Object groupID) throws Exception { return null; } /** * Get procedure defining the insert plan for this group. * @param groupID Group * @return A string giving the procedure for inserts. */ @Override public String getInsertPlan(Object groupID) throws Exception { return null; } /** * Get procedure defining the update plan for this group. * @param groupID Group * @return A string giving the procedure for inserts. */ @Override public String getUpdatePlan(Object groupID) throws Exception { return null; } /** * Get procedure defining the delete plan for this group. * @param groupID Group * @return A string giving the procedure for inserts. */ @Override public String getDeletePlan(Object groupID) throws Exception { return null; } /** * @see IQueryMetadataInterface#modelSupports(Object, int) */ @Override public boolean modelSupports(Object modelID, int modelConstant) throws Exception { return false; } /** * @see IQueryMetadataInterface#groupSupports(Object, int) */ @Override public boolean groupSupports(Object groupID, int groupConstant) throws Exception { return false; } /** * @see IQueryMetadataInterface#elementSupports(Object, int) */ @Override public boolean elementSupports(Object elementID, int elementConstant) throws Exception { return false; } /** * @see IQueryMetadataInterface#getMaxSetSize(Object) */ @Override public int getMaxSetSize(Object modelID) throws Exception { return 0; } /** * @see IQueryMetadataInterface#getIndexesInGroup(java.lang.Object) */ @Override public Collection getIndexesInGroup(Object groupID) throws Exception { return Collections.EMPTY_SET; } /** * @see IQueryMetadataInterface#getUniqueKeysInGroup(Object) */ @Override public Collection getUniqueKeysInGroup(Object groupID) throws Exception { return Collections.EMPTY_SET; } /** * @see IQueryMetadataInterface#getForeignKeysInGroup(Object) */ @Override public Collection getForeignKeysInGroup(Object groupID) throws Exception { return Collections.EMPTY_SET; } /** * @see IQueryMetadataInterface#getPrimaryKeyIDForForeignKeyID(Object) */ @Override public Object getPrimaryKeyIDForForeignKeyID(Object foreignKeyID) throws Exception{ return null; } /** * @see IQueryMetadataInterface#getElementIDsInKey(Object) */ @Override public List getElementIDsInKey(Object key) throws Exception { return Collections.EMPTY_LIST; } /** * @see IQueryMetadataInterface#getElementIDsInIndex(java.lang.Object) */ @Override public List getElementIDsInIndex(Object index) throws Exception { return Collections.EMPTY_LIST; } /** * @see IQueryMetadataInterface#getAccessPatternsInGroup(Object) */ @Override public Collection getAccessPatternsInGroup(Object groupID) throws Exception { return Collections.EMPTY_SET; } /** * @see IQueryMetadataInterface#getElementIDsInAccessPattern(Object) */ @Override public List getElementIDsInAccessPattern(Object accessPattern) throws Exception { return Collections.EMPTY_LIST; } /** * @see IQueryMetadataInterface#isXMLGroup(Object) */ @Override public boolean isXMLGroup(Object groupID) throws Exception { return false; } /** * @see IQueryMetadataInterface#getMappingNode(Object) */ @Override public IMappingNode getMappingNode(Object groupID) throws Exception { return null; } /** * @see IQueryMetadataInterface#getVirtualDatabaseName() */ @Override public String getVirtualDatabaseName() throws Exception { return null; } @Override public Collection getXMLTempGroups(Object groupID) throws Exception{ return Collections.EMPTY_SET; } @Override public float getCardinality(Object groupID) throws Exception{ return IQueryMetadataInterface.UNKNOWN_CARDINALITY; } @Override public List getXMLSchemas(Object groupID) throws Exception { return null; } @Override public String getNameInSource(Object metadataID) throws Exception { return null; } @Override public int getElementLength(Object elementID) throws Exception { return 0; } @Override public Properties getExtensionProperties(Object metadataID) throws Exception { return null; } @Override public String getNativeType(Object elementID) throws Exception { return null; } @Override public boolean isProcedure(Object elementID) throws Exception { return false; } @Override public byte[] getBinaryVDBResource(String resourcePath) throws Exception { return null; } @Override public String getCharacterVDBResource(String resourcePath) throws Exception { return null; } @Override public String[] getVDBResourcePaths() throws Exception { return null; } /** * @see IQueryMetadataInterface#getModeledType(java.lang.Object) * @since 5.0 */ @Override public String getModeledType(Object elementID) throws Exception { return null; } /** * @see IQueryMetadataInterface#getModeledBaseType(java.lang.Object) * @since 5.0 */ @Override public String getModeledBaseType(Object elementID) throws Exception { return null; } /** * @see IQueryMetadataInterface#getModeledPrimitiveType(java.lang.Object) * @since 5.0 */ @Override public String getModeledPrimitiveType(Object elementID) throws Exception { return null; } @Override public boolean isTemporaryTable(Object groupID) throws Exception { return false; } @Override public Object addToMetadataCache(Object metadataID, String key, Object value) throws Exception { return null; } @Override public Object getFromMetadataCache(Object metadataID, String key) throws Exception { return null; } @Override public boolean isScalarGroup(Object groupID) throws Exception { return false; } @Override public IFunctionLibrary getFunctionLibrary() { return null; } @Override public Object getPrimaryKey(Object metadataID) { return null; } @Override public boolean isMultiSource(Object modelId) { return false; } @Override public boolean isMultiSourceElement(Object elementId) { return false; } @Override public IQueryMetadataInterface getDesignTimeMetadata() { return this; } @Override public boolean hasProcedure(String name) throws Exception { return false; } @Override public String getName(Object metadataID) throws Exception { return null; } @Override public IQueryMetadataInterface getSessionMetadata() { return null; } @Override public Set<String> getImportedModels() { return Collections.emptySet(); } @Override public ScriptEngine getScriptEngine(String language) throws Exception { if (language == null || ObjectTable.DEFAULT_LANGUAGE.equals(language)) { return new TeiidScriptEngine(); } return getScriptEngineDirect(language); } /** * * @param language * @return script engine directly associated with language * @throws Exception */ public ScriptEngine getScriptEngineDirect(String language) throws Exception { return null; } @Override public boolean isVariadic(Object metadataID) { return false; } @Override public Map<Expression, Integer> getFunctionBasedExpressions(Object metadataID) { return null; } @Override public boolean isPseudo(Object elementId) { return false; } @Override public Object getModelID(String modelName) throws Exception { return null; } @Override public String getExtensionProperty(Object metadataID, String key, boolean checkUnqualified) { return null; } @Override public boolean findShortName() { return false; } @Override public boolean useOutputName() { return true; } @Override public boolean widenComparisonToString() { return true; } }