diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/persistence/XmlPersistence.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/persistence/XmlPersistence.java | 127 |
1 files changed, 92 insertions, 35 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/persistence/XmlPersistence.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/persistence/XmlPersistence.java index 0e993c245e..4865bca35d 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/persistence/XmlPersistence.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/persistence/XmlPersistence.java @@ -10,6 +10,7 @@ package org.eclipse.jpt.core.resource.persistence; import java.util.Collection; +import java.util.Iterator; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.common.util.EList; @@ -19,10 +20,14 @@ import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; import org.eclipse.emf.ecore.util.EObjectContainmentEList; import org.eclipse.emf.ecore.util.InternalEList; +import org.eclipse.jpt.core.internal.resource.xml.translators.EnumeratedValueTranslator; import org.eclipse.jpt.core.internal.resource.xml.translators.SimpleRootTranslator; +import org.eclipse.jpt.core.resource.persistence.v2_0.JPA2_0; import org.eclipse.jpt.core.resource.xml.AbstractJpaEObject; -import org.eclipse.jpt.core.resource.xml.JpaEObject; +import org.eclipse.jpt.core.resource.xml.CommonPackage; +import org.eclipse.jpt.core.resource.xml.JpaRootEObject; import org.eclipse.jpt.core.resource.xml.XML; +import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; import org.eclipse.wst.common.internal.emf.resource.ConstantAttributeTranslator; import org.eclipse.wst.common.internal.emf.resource.Translator; @@ -41,46 +46,53 @@ import org.eclipse.wst.common.internal.emf.resource.Translator; * The following features are supported: * <ul> * <li>{@link org.eclipse.jpt.core.resource.persistence.XmlPersistence#getPersistenceUnits <em>Persistence Units</em>}</li> - * <li>{@link org.eclipse.jpt.core.resource.persistence.XmlPersistence#getVersion <em>Version</em>}</li> * </ul> * </p> * * @see org.eclipse.jpt.core.resource.persistence.PersistencePackage#getXmlPersistence() * @model kind="class" - * @extends JpaEObject * @generated */ -public class XmlPersistence extends AbstractJpaEObject implements JpaEObject +public class XmlPersistence extends AbstractJpaEObject implements JpaRootEObject { /** - * The cached value of the '{@link #getPersistenceUnits() <em>Persistence Units</em>}' containment reference list. + * The default value of the '{@link #getVersion() <em>Version</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @see #getPersistenceUnits() + * @see #getVersion() * @generated * @ordered */ - protected EList<XmlPersistenceUnit> persistenceUnits; + protected static final String VERSION_EDEFAULT = null; /** - * The default value of the '{@link #getVersion() <em>Version</em>}' attribute. + * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getVersion() * @generated * @ordered */ - protected static final String VERSION_EDEFAULT = null; + protected String version = VERSION_EDEFAULT; /** - * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute. + * This is true if the Version attribute has been set. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @see #getVersion() * @generated * @ordered */ - protected String version = VERSION_EDEFAULT; + protected boolean versionESet; + + /** + * The cached value of the '{@link #getPersistenceUnits() <em>Persistence Units</em>}' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getPersistenceUnits() + * @generated + * @ordered + */ + protected EList<XmlPersistenceUnit> persistenceUnits; /** * <!-- begin-user-doc --> @@ -122,9 +134,11 @@ public class XmlPersistence extends AbstractJpaEObject implements JpaEObject * </p> * <!-- end-user-doc --> * @return the value of the '<em>Version</em>' attribute. + * @see #isSetVersion() + * @see #unsetVersion() * @see #setVersion(String) - * @see org.eclipse.jpt.core.resource.persistence.PersistencePackage#getXmlPersistence_Version() - * @model unique="false" dataType="org.eclipse.jpt.core.resource.persistence.XmlVersion" required="true" + * @see org.eclipse.jpt.core.resource.persistence.PersistencePackage#getJpaRootEObject_Version() + * @model unsettable="true" required="true" * @generated */ public String getVersion() @@ -137,6 +151,8 @@ public class XmlPersistence extends AbstractJpaEObject implements JpaEObject * <!-- begin-user-doc --> * <!-- end-user-doc --> * @param value the new value of the '<em>Version</em>' attribute. + * @see #isSetVersion() + * @see #unsetVersion() * @see #getVersion() * @generated */ @@ -144,8 +160,44 @@ public class XmlPersistence extends AbstractJpaEObject implements JpaEObject { String oldVersion = version; version = newVersion; + boolean oldVersionESet = versionESet; + versionESet = true; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, PersistencePackage.XML_PERSISTENCE__VERSION, oldVersion, version, !oldVersionESet)); + } + + /** + * Unsets the value of the '{@link org.eclipse.jpt.core.resource.persistence.XmlPersistence#getVersion <em>Version</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #isSetVersion() + * @see #getVersion() + * @see #setVersion(String) + * @generated + */ + public void unsetVersion() + { + String oldVersion = version; + boolean oldVersionESet = versionESet; + version = VERSION_EDEFAULT; + versionESet = false; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, PersistencePackage.XML_PERSISTENCE__VERSION, oldVersion, version)); + eNotify(new ENotificationImpl(this, Notification.UNSET, PersistencePackage.XML_PERSISTENCE__VERSION, oldVersion, VERSION_EDEFAULT, oldVersionESet)); + } + + /** + * Returns whether the value of the '{@link org.eclipse.jpt.core.resource.persistence.XmlPersistence#getVersion <em>Version</em>}' attribute is set. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return whether the value of the '<em>Version</em>' attribute is set. + * @see #unsetVersion() + * @see #getVersion() + * @see #setVersion(String) + * @generated + */ + public boolean isSetVersion() + { + return versionESet; } /** @@ -197,10 +249,10 @@ public class XmlPersistence extends AbstractJpaEObject implements JpaEObject { switch (featureID) { - case PersistencePackage.XML_PERSISTENCE__PERSISTENCE_UNITS: - return getPersistenceUnits(); case PersistencePackage.XML_PERSISTENCE__VERSION: return getVersion(); + case PersistencePackage.XML_PERSISTENCE__PERSISTENCE_UNITS: + return getPersistenceUnits(); } return super.eGet(featureID, resolve, coreType); } @@ -216,13 +268,13 @@ public class XmlPersistence extends AbstractJpaEObject implements JpaEObject { switch (featureID) { + case PersistencePackage.XML_PERSISTENCE__VERSION: + setVersion((String)newValue); + return; case PersistencePackage.XML_PERSISTENCE__PERSISTENCE_UNITS: getPersistenceUnits().clear(); getPersistenceUnits().addAll((Collection<? extends XmlPersistenceUnit>)newValue); return; - case PersistencePackage.XML_PERSISTENCE__VERSION: - setVersion((String)newValue); - return; } super.eSet(featureID, newValue); } @@ -237,12 +289,12 @@ public class XmlPersistence extends AbstractJpaEObject implements JpaEObject { switch (featureID) { + case PersistencePackage.XML_PERSISTENCE__VERSION: + unsetVersion(); + return; case PersistencePackage.XML_PERSISTENCE__PERSISTENCE_UNITS: getPersistenceUnits().clear(); return; - case PersistencePackage.XML_PERSISTENCE__VERSION: - setVersion(VERSION_EDEFAULT); - return; } super.eUnset(featureID); } @@ -257,10 +309,10 @@ public class XmlPersistence extends AbstractJpaEObject implements JpaEObject { switch (featureID) { + case PersistencePackage.XML_PERSISTENCE__VERSION: + return isSetVersion(); case PersistencePackage.XML_PERSISTENCE__PERSISTENCE_UNITS: return persistenceUnits != null && !persistenceUnits.isEmpty(); - case PersistencePackage.XML_PERSISTENCE__VERSION: - return VERSION_EDEFAULT == null ? version != null : !VERSION_EDEFAULT.equals(version); } return super.eIsSet(featureID); } @@ -280,7 +332,7 @@ public class XmlPersistence extends AbstractJpaEObject implements JpaEObject StringBuffer result = new StringBuffer(super.toString()); result.append(" (version: "); - result.append(version); + if (versionESet) result.append(version); else result.append("<unset>"); result.append(')'); return result.toString(); } @@ -310,7 +362,20 @@ public class XmlPersistence extends AbstractJpaEObject implements JpaEObject XmlPersistenceUnit.buildTranslator(JPA.PERSISTENCE_UNIT, PersistencePackage.eINSTANCE.getXmlPersistence_PersistenceUnits()) }; } - + + protected static Translator buildVersionTranslator() { + return new EnumeratedValueTranslator( + JPA.PERSISTENCE__VERSION, + CommonPackage.eINSTANCE.getJpaRootEObject_Version(), + Translator.DOM_ATTRIBUTE) { + + @Override + protected Iterator enumeratedObjectValues() { + return new ArrayIterator(new Object[] { JPA.SCHEMA_VERSION, JPA2_0.SCHEMA_VERSION }); + } + }; + } + protected static Translator buildNamespaceTranslator() { return new ConstantAttributeTranslator(XML.NAMESPACE, JPA.SCHEMA_NAMESPACE); } @@ -322,12 +387,4 @@ public class XmlPersistence extends AbstractJpaEObject implements JpaEObject private static Translator buildSchemaLocationTranslator() { return new ConstantAttributeTranslator(XML.XSI_SCHEMA_LOCATION, JPA.SCHEMA_NAMESPACE + ' ' + JPA.SCHEMA_LOCATION); } - - protected static Translator buildVersionTranslator() { - return new Translator( - JPA.PERSISTENCE__VERSION, - PersistencePackage.eINSTANCE.getXmlPersistence_Version(), - Translator.DOM_ATTRIBUTE - ); - } } |