/* * 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 java.util.ArrayList; import java.util.List; import org.eclipse.emf.ecore.EObject; import org.teiid.core.designer.util.CoreArgCheck; import org.teiid.designer.core.index.IndexConstants; import org.teiid.designer.core.metamodel.aspect.MetamodelEntity; import org.teiid.designer.core.metamodel.aspect.sql.SqlAspect; import org.teiid.designer.core.metamodel.aspect.sql.SqlAspectHelper; import org.teiid.designer.core.metamodel.aspect.sql.SqlProcedureAspect; import org.teiid.designer.core.metamodel.aspect.sql.SqlTableAspect; import org.teiid.designer.metamodels.webservice.Operation; /** * OperationAspect * * @since 8.0 */ public class OperationAspect extends WebServiceComponentAspect implements SqlProcedureAspect { protected OperationAspect(final MetamodelEntity entity) { super(entity); } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlProcedureAspect#isVirtual(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public boolean isVirtual(final EObject eObject) { CoreArgCheck.isInstanceOf(Operation.class, eObject); return true; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlProcedureAspect#isFunction(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public boolean isFunction(final EObject eObject) { CoreArgCheck.isInstanceOf(Operation.class, eObject); return false; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlProcedureAspect#getParameters(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public List getParameters(final EObject eObject) { CoreArgCheck.isInstanceOf(Operation.class, eObject); Operation opearation = (Operation) eObject; List params = new ArrayList(1); params.add(opearation.getInput()); return params; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlProcedureAspect#getResult(org.eclipse.emf.ecore.EObject) * @since 4.2 */ @Override public Object getResult(final EObject eObject) { CoreArgCheck.isInstanceOf(Operation.class, eObject); Operation opearation = (Operation) eObject; return opearation.getOutput(); } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlProcedureAspect#getUpdateCount(org.eclipse.emf.ecore.EObject) * @since 5.5.3 */ @Override public int getUpdateCount(EObject eObject) { CoreArgCheck.isInstanceOf(Operation.class, eObject); return ((Operation)eObject).getUpdateCount().getValue(); } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlAspect#isRecordType(char) * @since 4.2 */ @Override public boolean isRecordType(final char recordType) { return (recordType == IndexConstants.RECORD_TYPE.CALLABLE); } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlProcedureAspect#isMappable(org.eclipse.emf.ecore.EObject, int) * @since 4.2 */ @Override public boolean isMappable(final EObject eObject, final int mappingType) { return (mappingType == SqlProcedureAspect.MAPPINGS.SQL_TRANSFORM); } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlTableAspect#canAcceptTransformationSource(org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EObject) * @since 4.3 */ @Override public boolean canAcceptTransformationSource(EObject target, EObject source) { CoreArgCheck.isInstanceOf(Operation.class, target); CoreArgCheck.isNotNull(source); // no object should be source of itself if(source == target) { return false; } if(isVirtual(target)) { // source cannot be an operation if(source instanceof Operation) { return canBeTransformationSource(source, target); } SqlAspect sourceAspect = SqlAspectHelper.getSqlAspect(source); if(sourceAspect instanceof SqlTableAspect || sourceAspect instanceof SqlProcedureAspect) { return true; } } return false; } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlTableAspect#canBeTransformationSource(org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EObject) * @since 4.3 */ @Override public boolean canBeTransformationSource(EObject source, EObject target) { CoreArgCheck.isInstanceOf(Operation.class, source); return false; } }