diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinColumn.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinColumn.java | 456 |
1 files changed, 456 insertions, 0 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinColumn.java new file mode 100644 index 0000000000..4d301f1331 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinColumn.java @@ -0,0 +1,456 @@ +/******************************************************************************* + * Copyright (c) 2007 Oracle. All rights reserved. This + * program and the accompanying materials are made available under the terms of + * the Eclipse Public License v1.0 which accompanies this distribution, and is + * available at http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: Oracle. - initial API and implementation + *******************************************************************************/ +package org.eclipse.jpt.core.internal.content.orm; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.jpt.core.internal.ITextRange; +import org.eclipse.jpt.core.internal.content.orm.resource.OrmXmlMapper; +import org.eclipse.jpt.core.internal.emfutility.DOMUtilities; +import org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean; +import org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean; +import org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn; +import org.eclipse.jpt.core.internal.mappings.IJoinColumn; +import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage; +import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform; +import org.eclipse.jpt.core.internal.platform.DefaultsContext; +import org.eclipse.jpt.db.internal.Column; +import org.eclipse.jpt.db.internal.Table; +import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Xml Join Column</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * <ul> + * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn#getSpecifiedReferencedColumnNameForXml <em>Specified Referenced Column Name For Xml</em>}</li> + * </ul> + * </p> + * + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlJoinColumn() + * @model kind="class" + * @generated + */ +public class XmlJoinColumn extends AbstractXmlColumn implements IJoinColumn +{ + /** + * The default value of the '{@link #getReferencedColumnName() <em>Referenced Column Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getReferencedColumnName() + * @generated + * @ordered + */ + protected static final String REFERENCED_COLUMN_NAME_EDEFAULT = null; + + /** + * The default value of the '{@link #getSpecifiedReferencedColumnName() <em>Specified Referenced Column Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getSpecifiedReferencedColumnName() + * @generated + * @ordered + */ + protected static final String SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSpecifiedReferencedColumnName() <em>Specified Referenced Column Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getSpecifiedReferencedColumnName() + * @generated + * @ordered + */ + protected String specifiedReferencedColumnName = SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getDefaultReferencedColumnName() <em>Default Referenced Column Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getDefaultReferencedColumnName() + * @generated + * @ordered + */ + protected static final String DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getDefaultReferencedColumnName() <em>Default Referenced Column Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getDefaultReferencedColumnName() + * @generated + * @ordered + */ + protected String defaultReferencedColumnName = DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getSpecifiedReferencedColumnNameForXml() <em>Specified Referenced Column Name For Xml</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getSpecifiedReferencedColumnNameForXml() + * @generated + * @ordered + */ + protected static final String SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML_EDEFAULT = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + protected XmlJoinColumn() { + throw new UnsupportedOperationException(); + } + + protected XmlJoinColumn(IJoinColumn.Owner owner) { + super(owner); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrmPackage.Literals.XML_JOIN_COLUMN; + } + + /** + * Returns the value of the '<em><b>Referenced Column Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Referenced Column Name</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Referenced Column Name</em>' attribute. + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIJoinColumn_ReferencedColumnName() + * @model changeable="false" volatile="true" derived="true" + * @generated NOT + */ + public String getReferencedColumnName() { + return (this.getSpecifiedReferencedColumnName() == null) ? getDefaultReferencedColumnName() : this.getSpecifiedReferencedColumnName(); + } + + /** + * Returns the value of the '<em><b>Specified Referenced Column Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Specified Referenced Column Name</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Specified Referenced Column Name</em>' attribute. + * @see #setSpecifiedReferencedColumnName(String) + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIAbstractJoinColumn_SpecifiedReferencedColumnName() + * @model + * @generated + */ + public String getSpecifiedReferencedColumnName() { + return specifiedReferencedColumnName; + } + + /** + * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn#getSpecifiedReferencedColumnName <em>Specified Referenced Column Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Specified Referenced Column Name</em>' attribute. + * @see #getSpecifiedReferencedColumnName() + * @generated + */ + public void setSpecifiedReferencedColumnNameGen(String newSpecifiedReferencedColumnName) { + String oldSpecifiedReferencedColumnName = specifiedReferencedColumnName; + specifiedReferencedColumnName = newSpecifiedReferencedColumnName; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME, oldSpecifiedReferencedColumnName, specifiedReferencedColumnName)); + } + + public void setSpecifiedReferencedColumnName(String newSpecifiedReferencedColumnName) { + setSpecifiedReferencedColumnNameGen(newSpecifiedReferencedColumnName); + setSpecifiedReferencedColumnNameForXml(newSpecifiedReferencedColumnName); + } + + /** + * Returns the value of the '<em><b>Default Referenced Column Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Default Referenced Column Name</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Default Referenced Column Name</em>' attribute. + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIAbstractJoinColumn_DefaultReferencedColumnName() + * @model changeable="false" + * @generated + */ + public String getDefaultReferencedColumnName() { + return defaultReferencedColumnName; + } + + protected void setDefaultReferencedColumnName(String newDefaultReferencedColumnName) { + String oldDefaultReferencedColumnName = this.defaultReferencedColumnName; + this.defaultReferencedColumnName = newDefaultReferencedColumnName; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME, oldDefaultReferencedColumnName, newDefaultReferencedColumnName)); + } + + /** + * Returns the value of the '<em><b>Specified Referenced Column Name For Xml</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Specified Referenced Column Name For Xml</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Specified Referenced Column Name For Xml</em>' attribute. + * @see #setSpecifiedReferencedColumnNameForXml(String) + * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlJoinColumn_SpecifiedReferencedColumnNameForXml() + * @model volatile="true" + * @generated NOT + */ + public String getSpecifiedReferencedColumnNameForXml() { + return getSpecifiedReferencedColumnName(); + } + + /** + * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn#getSpecifiedReferencedColumnNameForXml <em>Specified Referenced Column Name For Xml</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Specified Referenced Column Name For Xml</em>' attribute. + * @see #getSpecifiedReferencedColumnNameForXml() + * @generated NOT + */ + public void setSpecifiedReferencedColumnNameForXml(String newSpecifiedReferencedColumnNameForXml) { + setSpecifiedReferencedColumnNameGen(newSpecifiedReferencedColumnNameForXml); + if (eNotificationRequired()) + //make sure oldValue different from newValue because we don't store the value from the xml, see super.eNotify() + eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML, newSpecifiedReferencedColumnNameForXml + " ", newSpecifiedReferencedColumnNameForXml)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case OrmPackage.XML_JOIN_COLUMN__REFERENCED_COLUMN_NAME : + return getReferencedColumnName(); + case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME : + return getSpecifiedReferencedColumnName(); + case OrmPackage.XML_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME : + return getDefaultReferencedColumnName(); + case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML : + return getSpecifiedReferencedColumnNameForXml(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME : + setSpecifiedReferencedColumnName((String) newValue); + return; + case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML : + setSpecifiedReferencedColumnNameForXml((String) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME : + setSpecifiedReferencedColumnName(SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT); + return; + case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML : + setSpecifiedReferencedColumnNameForXml(SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case OrmPackage.XML_JOIN_COLUMN__REFERENCED_COLUMN_NAME : + return REFERENCED_COLUMN_NAME_EDEFAULT == null ? getReferencedColumnName() != null : !REFERENCED_COLUMN_NAME_EDEFAULT.equals(getReferencedColumnName()); + case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME : + return SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT == null ? specifiedReferencedColumnName != null : !SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT.equals(specifiedReferencedColumnName); + case OrmPackage.XML_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME : + return DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT == null ? defaultReferencedColumnName != null : !DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT.equals(defaultReferencedColumnName); + case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML : + return SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML_EDEFAULT == null ? getSpecifiedReferencedColumnNameForXml() != null : !SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML_EDEFAULT.equals(getSpecifiedReferencedColumnNameForXml()); + } + return super.eIsSet(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) { + if (baseClass == IAbstractJoinColumn.class) { + switch (derivedFeatureID) { + case OrmPackage.XML_JOIN_COLUMN__REFERENCED_COLUMN_NAME : + return JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__REFERENCED_COLUMN_NAME; + case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME : + return JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME; + case OrmPackage.XML_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME : + return JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME; + default : + return -1; + } + } + if (baseClass == IJoinColumn.class) { + switch (derivedFeatureID) { + default : + return -1; + } + } + return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) { + if (baseClass == IAbstractJoinColumn.class) { + switch (baseFeatureID) { + case JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__REFERENCED_COLUMN_NAME : + return OrmPackage.XML_JOIN_COLUMN__REFERENCED_COLUMN_NAME; + case JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME : + return OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME; + case JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME : + return OrmPackage.XML_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME; + default : + return -1; + } + } + if (baseClass == IJoinColumn.class) { + switch (baseFeatureID) { + default : + return -1; + } + } + return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (specifiedReferencedColumnName: "); + result.append(specifiedReferencedColumnName); + result.append(", defaultReferencedColumnName: "); + result.append(defaultReferencedColumnName); + result.append(')'); + return result.toString(); + } + + public void setSpecifiedName(String newSpecifiedName) { + setSpecifiedNameGen(newSpecifiedName); + setSpecifiedNameForXml(newSpecifiedName); + } + + public void setUnique(DefaultFalseBoolean newUnique) { + setUniqueGen(newUnique); + setUniqueForXml(newUnique); + } + + public void setNullable(DefaultTrueBoolean newNullable) { + setNullableGen(newNullable); + setNullableForXml(newNullable); + } + + public void setInsertable(DefaultTrueBoolean newInsertable) { + setInsertableGen(newInsertable); + setInsertableForXml(newInsertable); + } + + public void setUpdatable(DefaultTrueBoolean newUpdatable) { + setUpdatableGen(newUpdatable); + setUpdatableForXml(newUpdatable); + } + + public void setColumnDefinition(String newColumnDefinition) { + setColumnDefinitionGen(newColumnDefinition); + setColumnDefinitionForXml(newColumnDefinition); + } + + public void setSpecifiedTable(String newSpecifiedTable) { + setSpecifiedTableGen(newSpecifiedTable); + setSpecifiedTableForXml(newSpecifiedTable); + } + + public IJoinColumn.Owner getOwner() { + return (IJoinColumn.Owner) this.owner; + } + + public Table dbReferencedColumnTable() { + return getOwner().dbReferencedColumnTable(); + } + + public Column dbReferencedColumn() { + Table table = dbReferencedColumnTable(); + return (table == null) ? null : table.columnNamed(getReferencedColumnName()); + } + + public boolean isReferencedColumnResolved() { + return dbReferencedColumn() != null; + } + + public ITextRange getReferencedColumnNameTextRange() { + if (node == null) { + return owner.getTextRange(); + } + IDOMNode referencedColumnNameNode = (IDOMNode) DOMUtilities.getChildAttributeNode(node, OrmXmlMapper.REFERENCED_COLUMN_NAME); + return (referencedColumnNameNode == null) ? getTextRange() : getTextRange(referencedColumnNameNode); + } + + public void refreshDefaults(DefaultsContext defaultsContext) { + setDefaultReferencedColumnName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_REFERENCED_COLUMN_NAME_KEY)); + setDefaultName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_NAME_KEY)); + setDefaultTable((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_TABLE_KEY)); + } +} |