/* * 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.Collection; import org.eclipse.emf.ecore.EObject; import org.teiid.designer.core.index.IndexConstants; import org.teiid.designer.core.metamodel.aspect.sql.SqlTableAspect; /** * TableRecordImpl * * @since 8.0 */ public class TableRecordImpl extends org.teiid.designer.metadata.runtime.impl.TableRecordImpl { private static final long serialVersionUID = 5380577513142295779L; /** * Flags to determine if values have been set. */ private boolean cardinalitySet; private boolean tableTypeSet; private boolean primaryKeyIDSet; private boolean foreignKeyIDsSet; private boolean indexIDsSet; private boolean uniqueKeyIDsSet; private boolean accessPatternIDsSet; private boolean isVirtualSet; private boolean isMaterializedSet; private boolean isSystemSet; private boolean supportsUpdateSet; private boolean isTempTableSet; // ================================================================================== // C O N S T R U C T O R S // ================================================================================== public TableRecordImpl(final SqlTableAspect sqlAspect, final EObject eObject) { super(new ModelerMetadataRecordDelegate(sqlAspect, eObject)); setRecordType(IndexConstants.RECORD_TYPE.TABLE); this.eObject = eObject; } private SqlTableAspect getTableAspect() { return (SqlTableAspect) ((ModelerMetadataRecordDelegate)this.delegate).getSqlAspect(); } //================================================================================== // I N T E R F A C E M E T H O D S //================================================================================== /* (non-Javadoc) * @see org.teiid.designer.metadata.runtime.TableRecord#getAccessPatternIDs() */ @Override public Collection getAccessPatternIDs() { if(super.eObject != null && !accessPatternIDsSet) { Collection accessPatterns = getTableAspect().getAccessPatterns((EObject)this.eObject); setAccessPatternIDs(((ModelerMetadataRecordDelegate)this.delegate).getObjectIDs(accessPatterns)); } return super.getAccessPatternIDs(); } /* (non-Javadoc) * @see org.teiid.designer.metadata.runtime.TableRecord#getCardinality() */ @Override public int getCardinality() { if(super.eObject != null && !cardinalitySet) { setCardinality(getTableAspect().getCardinality((EObject)this.eObject)); } return super.getCardinality(); } /* (non-Javadoc) * @see org.teiid.designer.metadata.runtime.TableRecord#getForeignKeyIDs() */ @Override public Collection getForeignKeyIDs() { if(super.eObject != null && !foreignKeyIDsSet) { Collection uniqueKeys = getTableAspect().getForeignKeys((EObject)this.eObject); setForeignKeyIDs(((ModelerMetadataRecordDelegate)this.delegate).getObjectIDs(uniqueKeys)); } return super.getForeignKeyIDs(); } /* (non-Javadoc) * @see org.teiid.designer.metadata.runtime.TableRecord#getIndexIDs() */ @Override public Collection getIndexIDs() { if(super.eObject != null && !indexIDsSet) { Collection indexes = getTableAspect().getIndexes((EObject)this.eObject); setIndexIDs(((ModelerMetadataRecordDelegate)this.delegate).getObjectIDs(indexes)); } return super.getIndexIDs(); } /* (non-Javadoc) * @see org.teiid.designer.metadata.runtime.TableRecord#getPrimaryKeyID() */ @Override public Object getPrimaryKeyID() { if(super.eObject != null && !primaryKeyIDSet) { setPrimaryKeyID(((ModelerMetadataRecordDelegate)this.delegate).getObjectID(getTableAspect().getPrimaryKey((EObject)this.eObject))); } return super.getPrimaryKeyID(); } /* (non-Javadoc) * @see org.teiid.designer.metadata.runtime.TableRecord#getUniqueKeyIDs() */ @Override public Collection getUniqueKeyIDs() { if(super.eObject != null && !uniqueKeyIDsSet) { Collection uniqueKeys = getTableAspect().getUniqueKeys((EObject)this.eObject); setUniqueKeyIDs(((ModelerMetadataRecordDelegate)this.delegate).getObjectIDs(uniqueKeys)); } return super.getUniqueKeyIDs(); } /* (non-Javadoc) * @see org.teiid.designer.metadata.runtime.TableRecord#isVirtual() */ @Override public boolean isVirtual() { if(super.eObject != null && !isVirtualSet) { setVirtual(getTableAspect().isVirtual((EObject)this.eObject)); } return super.isVirtual(); } /** * @see org.teiid.designer.metadata.runtime.TableRecord#isMaterialized() * @since 4.2 */ @Override public boolean isMaterialized() { if(super.eObject != null && !isMaterializedSet) { setMaterialized(getTableAspect().isMaterialized((EObject)this.eObject)); } return super.isMaterialized(); } /** * @see org.teiid.designer.metadata.runtime.TableRecord#isTempTable() * @since 4.2 */ @Override public boolean isTempTable() { if(super.eObject != null && !isTempTableSet) { boolean isGTT = getTableAspect().isGlobalTempTable((EObject)this.eObject); super.setTempTable(isGTT); } return super.isTempTable(); } /** * @see org.teiid.designer.metadata.runtime.TableRecord#isSystem() */ @Override public boolean isSystem() { if(super.eObject != null && !isSystemSet) { setSystem(getTableAspect().isSystem((EObject)this.eObject)); } return super.isSystem(); } /* * @see org.teiid.designer.metadata.runtime.TableRecord#getTableType() */ @Override public int getTableType() { if(super.eObject != null && !tableTypeSet) { setTableType(getTableAspect().getTableType((EObject)this.eObject)); } return super.getTableType(); } /** * @see org.teiid.designer.metadata.runtime.TableRecord#getMaterializedTableID() * @since 4.2 */ @Override public Object getMaterializedTableID() { if(super.eObject != null && !tableTypeSet) { setTableType(getTableAspect().getTableType((EObject)this.eObject)); } return super.getMaterializedStageTableID(); } /* (non-Javadoc) * @see org.teiid.designer.metadata.runtime.TableRecord#supportsUpdate() */ @Override public boolean supportsUpdate() { if(super.eObject != null && !supportsUpdateSet) { setSupportsUpdate(getTableAspect().supportsUpdate((EObject)this.eObject)); } return super.supportsUpdate(); } // ================================================================================== // P U B L I C M E T H O D S // ================================================================================== /** * @param i */ @Override public void setCardinality(int i) { super.setCardinality(i); cardinalitySet = true; } /** * @param i */ @Override public void setTableType(int i) { super.setTableType(i); tableTypeSet = true; } /** * @param object */ @Override public void setPrimaryKeyID(Object keyID) { super.setPrimaryKeyID(keyID); primaryKeyIDSet = true; } /** * @param b */ @Override public void setSupportsUpdate(boolean b) { super.setSupportsUpdate(b); supportsUpdateSet = true; } /** * @param b */ @Override public void setVirtual(boolean b) { super.setVirtual(b); isVirtualSet = true; } /** * @param isMaterialized The isMaterialized to set. * @since 4.2 */ @Override public void setMaterialized(boolean isMaterialized) { super.setMaterialized(isMaterialized); this.isMaterializedSet = true; } /** * @param isTempTable The isTempTable to set. * @since 4.2 */ public void setTempTable(boolean isTempTable) { super.setTempTable(isTempTable); this.isTempTableSet = true; } /** * @param b */ @Override public void setSystem(boolean b) { super.setSystem(b); isSystemSet = true; } /** * @param collection */ @Override public void setAccessPatternIDs(Collection collection) { super.setAccessPatternIDs(collection); accessPatternIDsSet = true; } /** * @param collection */ @Override public void setForeignKeyIDs(Collection collection) { super.setForeignKeyIDs(collection); foreignKeyIDsSet = true; } /** * @param collection */ @Override public void setIndexIDs(Collection collection) { super.setIndexIDs(collection); indexIDsSet = true; } /** * @param collection */ @Override public void setUniqueKeyIDs(Collection collection) { super.setUniqueKeyIDs(collection); uniqueKeyIDsSet = true; } }