/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.metamodels.webservice.aspects.sql; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.teiid.core.designer.ModelerCoreException; import org.teiid.designer.core.ModelerCore; import org.teiid.designer.core.index.IndexConstants; import org.teiid.designer.core.metamodel.aspect.MetamodelEntity; import org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect; import org.teiid.designer.core.types.DatatypeConstants; import org.teiid.designer.core.types.DatatypeManager; import org.teiid.designer.metadata.runtime.MetadataConstants; import org.teiid.designer.metamodels.webservice.WebServiceMetamodelPlugin; /** * This aspect is here because Output is adapted to a SqlColumnSet, and we need an object * that is adapted to SqlColumn, and the name has to be "xml" to match up with the output * of transformations that return a result set with a single "xml:string" column. * @since 8.0 */ public class SampleMessagesAspect extends WebServiceComponentAspect implements SqlColumnAspect { private final static boolean SELECTABLE = true; private final static boolean UPDATABLE = false; private final static boolean AUTO_INCREMENT = false; private final static boolean CASE_SENSITIVE = false; private final static boolean SIGNED = false; private final static boolean CURRENCY = false; private final static boolean FIXED_LENGTH = false; private final static boolean TRANSFORMATION_INPUT_PARAMETER = false; private final static int SEARCH_TYPE = MetadataConstants.SEARCH_TYPES.UNSEARCHABLE; // not searcheable private final static String DEFAULT_VALUE = null; private final static Object MIN_VALUE = null; private final static Object MAX_VALUE = null; private final static int LENGTH = 0; private final static int SCALE = 0; private final static int NULL_TYPE = MetadataConstants.NULL_TYPES.NULLABLE; // nullable private final static String FORMAT = null; private final static int PRECISION = 0; private final static int CHAR_OCTET_LENGTH = 0; private final static int POSITION = 1; private final static int RADIX = 0; private final static int NULL_VALUES = 0; private final static int DISTINCT_VALUES = 0; private final static String DATATYPE_NAME = DatatypeConstants.BuiltInNames.XML_LITERAL; private final static String RUNTIME_TYPE = DatatypeConstants.RuntimeTypeNames.XML; /** * @since 4.2 */ public SampleMessagesAspect(final MetamodelEntity entity) { super(entity); } // -------------------------------------------------------------------------------------------------------- // BEGIN -- Override the behavior of these methods // -------------------------------------------------------------------------------------------------------- /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlAspect#isQueryable(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public boolean isQueryable(final EObject eObject) { return true; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlAspect#getName(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public String getName(EObject eObject) { return "xml"; //$NON-NLS-1$ // Matches what is used for XML documents. } // -------------------------------------------------------------------------------------------------------- // END -- Override the behavior of these methods // -------------------------------------------------------------------------------------------------------- /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getCharOctetLength(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public int getCharOctetLength(EObject eObject) { return CHAR_OCTET_LENGTH; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getDatatype(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public EObject getDatatype(EObject eObject) { try { final DatatypeManager dtMgr = ModelerCore.getDatatypeManager(eObject,true); return dtMgr.getBuiltInDatatype(DATATYPE_NAME); } catch (ModelerCoreException e) { // ignore } return null; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getDatatypeName(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public String getDatatypeName(EObject eObject) { return DATATYPE_NAME; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getDatatypeObjectID(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public String getDatatypeObjectID(EObject eObject) { EObject datatype = getDatatype(eObject); if (datatype == null) { return null; } final DatatypeManager dtMgr = ModelerCore.getDatatypeManager(eObject,true); return dtMgr.getUuidString(datatype) == null ? "" : dtMgr.getUuidString(datatype); //$NON-NLS-1$ } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getDefaultValue(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public String getDefaultValue(EObject eObject) { return DEFAULT_VALUE; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getFormat(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public String getFormat(EObject eObject) { return FORMAT; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getLength(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public int getLength(EObject eObject) { return LENGTH; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getMaxValue(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public Object getMaxValue(EObject eObject) { return MAX_VALUE; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getMinValue(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public Object getMinValue(EObject eObject) { return MIN_VALUE; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getNullType(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public int getNullType(EObject eObject) { return NULL_TYPE; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getPosition(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public int getPosition(EObject eObject) { return POSITION; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getPrecision(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public int getPrecision(EObject eObject) { return PRECISION; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getRadix(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public int getRadix(EObject eObject) { return RADIX; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getDistinctValues(org.eclipse.emf.ecore.EObject) * @since 4.3 */ @Override public int getDistinctValues(EObject eObject) { return DISTINCT_VALUES; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getNullValues(org.eclipse.emf.ecore.EObject) * @since 4.3 */ @Override public int getNullValues(EObject eObject) { return NULL_VALUES; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getNativeType(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public String getNativeType(EObject eObject) { return null; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getRuntimeType(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public String getRuntimeType(EObject eObject) { return RUNTIME_TYPE; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getScale(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public int getScale(EObject eObject) { return SCALE; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#getSearchType(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public int getSearchType(EObject eObject) { return SEARCH_TYPE; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#isAutoIncrementable(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public boolean isAutoIncrementable(EObject eObject) { return AUTO_INCREMENT; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#isCaseSensitive(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public boolean isCaseSensitive(EObject eObject) { return CASE_SENSITIVE; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#isCurrency(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public boolean isCurrency(EObject eObject) { return CURRENCY; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#isDatatypeFeature(org.eclipse.emf.ecore.EObject, * org.eclipse.emf.ecore.EStructuralFeature) * @since 4.2 */ @Override public boolean isDatatypeFeature(EObject eObject, EStructuralFeature eFeature) { // documents do not have datatype features return false; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#isFixedLength(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public boolean isFixedLength(EObject eObject) { return FIXED_LENGTH; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#isSelectable(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public boolean isSelectable(EObject eObject) { return SELECTABLE; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#isSigned(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public boolean isSigned(EObject eObject) { return SIGNED; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#isTranformationInputParameter(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public boolean isTranformationInputParameter(EObject eObject) { return TRANSFORMATION_INPUT_PARAMETER; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#isUpdatable(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public boolean isUpdatable(EObject eObject) { return UPDATABLE; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#canSetDatatype() * @since 4.2 */ @Override public boolean canSetDatatype() { return false; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#setDatatype(org.eclipse.emf.ecore.EObject, * org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public void setDatatype(EObject eObject, EObject datatype) { throw new UnsupportedOperationException(WebServiceMetamodelPlugin.Util.getString("SampleMessagesAspect.setDatatypeNotSupported")); //$NON-NLS-1$ } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#canSetLength() * @since 4.2 */ @Override public boolean canSetLength() { return false; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#setLength(org.eclipse.emf.ecore.EObject, int) * @since 4.2 */ @Override public void setLength(EObject eObject, int length) { throw new UnsupportedOperationException(WebServiceMetamodelPlugin.Util.getString("SampleMessagesAspect.setLengthNotSupported")); //$NON-NLS-1$ } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#canSetNullType() * @since 4.2 */ @Override public boolean canSetNullType() { return false; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlColumnAspect#setNullType(org.eclipse.emf.ecore.EObject, int) * @since 4.2 */ @Override public void setNullType(EObject eObject, int nullType) { throw new UnsupportedOperationException(WebServiceMetamodelPlugin.Util.getString("SampleMessagesAspect.setNullTypeNotSupported")); //$NON-NLS-1$ } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlAspect#isRecordType(char) * @since 4.2 */ @Override public boolean isRecordType(char recordType) { return recordType == IndexConstants.RECORD_TYPE.COLUMN; } }