/* * 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.core.metadata.runtime; import java.util.List; import org.eclipse.emf.ecore.EObject; import org.teiid.designer.core.index.IndexConstants; import org.teiid.designer.core.metamodel.aspect.sql.SqlProcedureAspect; /** * ProcedureRecordImpl * * @since 8.0 */ public class ProcedureRecordImpl extends org.teiid.designer.metadata.runtime.impl.ProcedureRecordImpl { private static final long serialVersionUID = -1036361384376387789L; /** * Flags to determine if values have been set. */ private boolean parameterIDsSet; private boolean isFunctionSet; private boolean isVirtualSet; private boolean resultSetIDSet; private boolean updateCountSet; // ================================================================================== // C O N S T R U C T O R S // ================================================================================== public ProcedureRecordImpl(final SqlProcedureAspect sqlAspect, final EObject eObject) { super(new ModelerMetadataRecordDelegate(sqlAspect, eObject)); setRecordType(IndexConstants.RECORD_TYPE.CALLABLE); this.eObject = eObject; } private SqlProcedureAspect getProcedureAspect() { return (SqlProcedureAspect) ((ModelerMetadataRecordDelegate)this.delegate).getSqlAspect(); } /* * @see org.teiid.designer.metadata.runtime.ProcedureRecord#getParameterIDs() */ @Override public List getParameterIDs() { if(eObject != null && !parameterIDsSet) { List params = getProcedureAspect().getParameters((EObject)eObject); setParameterIDs( ((ModelerMetadataRecordDelegate)this.delegate).getObjectIDs(params)); } return super.getParameterIDs(); } /* * @see org.teiid.designer.metadata.runtime.ProcedureRecord#isFunction() */ @Override public boolean isFunction() { if(eObject != null && !isFunctionSet) { setFunction(getProcedureAspect().isFunction((EObject)eObject)); } return super.isFunction(); } /* * @see org.teiid.designer.metadata.runtime.ProcedureRecord#isVirtual() */ @Override public boolean isVirtual() { if(eObject != null && !isVirtualSet) { setVirtual(getProcedureAspect().isVirtual((EObject)eObject)); } return super.isVirtual(); } /* * @see org.teiid.designer.metadata.runtime.ProcedureRecord#getResultSetID() */ @Override public Object getResultSetID() { if(eObject != null && !resultSetIDSet) { EObject resultSet = (EObject)getProcedureAspect().getResult((EObject)eObject); setResultSetID( ((ModelerMetadataRecordDelegate)this.delegate).getObjectID(resultSet)); } return super.getResultSetID(); } /** * @param list */ @Override public void setParameterIDs(List list) { super.setParameterIDs(list); parameterIDsSet = true; } /** * @param object */ @Override public void setResultSetID(Object object) { super.setResultSetID(object); resultSetIDSet = true; } /** * @param b */ @Override public void setFunction(boolean b) { super.setFunction(b); isFunctionSet = true; } /** * @param b */ @Override public void setVirtual(boolean b) { super.setVirtual(b); isVirtualSet = true; } /** * @see org.teiid.designer.metadata.runtime.ProcedureRecord#getUpdateCount() * @since 5.5.3 */ @Override public int getUpdateCount() { if (eObject != null && !updateCountSet) { setUpdateCount(getProcedureAspect().getUpdateCount((EObject)eObject)); } return super.getUpdateCount(); } @Override public void setUpdateCount(int count) { super.setUpdateCount(count); updateCountSet = true; } }