Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource')
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractColumnTranslator.java71
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractTableTranslator.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AccessTypeElementTranslator.java58
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AssociationOverrideTranslator.java86
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingTranslator.java50
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingsTranslator.java119
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeNameTranslator.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeOverrideTranslator.java70
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BasicTranslator.java79
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BooleanEnumeratorTranslator.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ColumnTranslator.java68
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DebugTranslator.java431
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DiscriminatorColumnTranslator.java84
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddableTranslator.java45
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedIdTranslator.java41
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedTranslator.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmptyTagBooleanTranslator.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityMappingsTranslator.java116
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityTranslator.java179
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratedTypeElementTranslator.java58
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratorTranslator.java42
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratedValueTranslator.java60
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratorTranslator.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/IdTranslator.java65
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinColumnTranslator.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinTableTranslator.java87
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToManyTranslator.java49
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToOneTranslator.java38
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MappedSuperclassTranslator.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiObjectDependencyTranslator.java63
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiRelationshipTranslator.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedNativeQueryTranslator.java77
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedQueryTranslator.java67
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToManyTranslator.java51
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToOneTranslator.java45
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrderByRefTranslator.java79
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlMapper.java168
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceFactory.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceImpl.java86
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitDefaultsTranslator.java100
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitMetadataTranslator.java84
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PrimaryKeyJoinColumnTranslator.java49
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/QueryHintTranslator.java63
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/RelationshipTranslator.java31
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SecondaryTableTranslator.java57
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SequenceGeneratorTranslator.java42
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SingleRelationshipTranslator.java55
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableGeneratorTranslator.java67
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableTranslator.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TemporalTypeElementTranslator.java58
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TransientTranslator.java36
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeJavaClassTranslator.java28
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingTranslator.java64
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingsTranslator.java93
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/VersionTranslator.java36
55 files changed, 3940 insertions, 0 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractColumnTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractColumnTranslator.java
new file mode 100644
index 0000000000..41596b036b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractColumnTranslator.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class AbstractColumnTranslator extends Translator
+ implements OrmXmlMapper
+{
+ private Translator[] children;
+
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+ protected static final OrmFactory JPA_CORE_XML_FACTORY =
+ OrmFactory.eINSTANCE;
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+
+ public AbstractColumnTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature, END_TAG_NO_INDENT);
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+
+ protected abstract Translator[] createChildren();
+
+ protected Translator createNameTranslator() {
+ return new Translator(COLUMN__NAME, JPA_CORE_XML_PKG.getAbstractXmlNamedColumn_SpecifiedNameForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createTableTranslator() {
+ return new Translator(COLUMN__TABLE, JPA_CORE_XML_PKG.getAbstractXmlColumn_SpecifiedTableForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createUniqueTranslator() {
+ return new Translator(COLUMN__UNIQUE, JPA_CORE_XML_PKG.getAbstractXmlColumn_UniqueForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createNullableTranslator() {
+ return new Translator(COLUMN__NULLABLE, JPA_CORE_XML_PKG.getAbstractXmlColumn_NullableForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createInsertableTranslator() {
+ return new Translator(COLUMN__INSERTABLE, JPA_CORE_XML_PKG.getAbstractXmlColumn_InsertableForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createUpdatableTranslator() {
+ return new Translator(COLUMN__UPDATABLE, JPA_CORE_XML_PKG.getAbstractXmlColumn_UpdatableForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createColumnDefinitionTranslator() {
+ return new Translator(COLUMN__COLUMN_DEFINITION, JPA_CORE_XML_PKG.getAbstractXmlNamedColumn_ColumnDefinitionForXml(), DOM_ATTRIBUTE);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractTableTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractTableTranslator.java
new file mode 100644
index 0000000000..4a21640d86
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractTableTranslator.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class AbstractTableTranslator extends Translator
+ implements OrmXmlMapper
+{
+ private Translator[] children;
+
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+ protected static final OrmFactory JPA_CORE_XML_FACTORY =
+ OrmFactory.eINSTANCE;
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+
+ public AbstractTableTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath,aFeature);
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+
+ protected abstract Translator[] createChildren();
+
+ protected Translator createNameTranslator() {
+ return new Translator(NAME, JPA_CORE_XML_PKG.getAbstractXmlTable_SpecifiedNameForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createCatalogTranslator() {
+ return new Translator(CATALOG, JPA_CORE_XML_PKG.getAbstractXmlTable_SpecifiedCatalogForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createSchemaTranslator() {
+ return new Translator(SCHEMA, JPA_CORE_XML_PKG.getAbstractXmlTable_SpecifiedSchemaForXml(), DOM_ATTRIBUTE);
+ }
+
+ //placeholder until we support unique-constraint
+ protected Translator createUniqueConstraintTranslator() {
+ return new Translator(UNIQUE_CONSTRAINT, (EStructuralFeature) null);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AccessTypeElementTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AccessTypeElementTranslator.java
new file mode 100644
index 0000000000..d1f57c7dd1
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AccessTypeElementTranslator.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import java.util.Collections;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.AccessType;
+
+/**
+ * There is a bug in the translator framework that causes
+ * enumerators in xml elements and enumerators in xml attributes
+ * to be treated differently. When the enumerator is an attribute
+ * setting the model to the default causes the attribute to be removed.
+ * With an element is causes the default literal to be placed in
+ * the tag.
+ *
+ * The problem is wrapped up in the emf unsettable attribute as well.
+ * For attributes the eIsSet method returns false for the default value
+ * For elements the eIsSet method returns true for the default value.
+ * I don't want to have to use the unsettable option in emf since that would
+ * require that I call different api. I am not sure yet what the bug is in
+ * the translator, so I have entered one ~KFM
+ */
+public class AccessTypeElementTranslator extends EnumeratorTranslator
+{
+
+ public AccessTypeElementTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) {
+ super(domNameAndPath, aFeature, style);
+ }
+
+ @Override
+ public Object getMOFValue(EObject mofObject) {
+ AccessType access = (AccessType) super.getMOFValue(mofObject);
+ if (access == AccessType.DEFAULT) {
+ return null;
+ }
+ return access;
+ }
+
+ @Override
+ public List getMOFChildren(EObject mofObject) {
+ List result = super.getMOFChildren(mofObject);
+ if(result != null && result.size() > 0) {
+ AccessType accessType = (AccessType) result.get(0);
+ if(accessType.getValue() == AccessType.DEFAULT_VALUE)
+ result = Collections.EMPTY_LIST;
+ }
+ return result;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AssociationOverrideTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AssociationOverrideTranslator.java
new file mode 100644
index 0000000000..faba3fa29e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AssociationOverrideTranslator.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.content.orm.resource.JoinColumnTranslator.JoinColumnBuilder;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride.JoinColumnOwner;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class AssociationOverrideTranslator extends Translator implements OrmXmlMapper
+{
+ private AssociationOverrideBuilder associationOverrideBuilder;
+
+ private IAssociationOverride associationOverride;
+
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ private Translator[] children;
+ private JoinColumnTranslator joinColumnsTranslator;
+
+ public AssociationOverrideTranslator(String domNameAndPath, EStructuralFeature aFeature, AssociationOverrideBuilder associationOverrideBuilder) {
+ super(domNameAndPath, aFeature);
+ this.associationOverrideBuilder = associationOverrideBuilder;
+ this.joinColumnsTranslator = createJoinColumnsTranslator();
+ }
+
+ protected JoinColumnTranslator createJoinColumnsTranslator() {
+ return new JoinColumnTranslator(
+ JOIN_COLUMN,
+ JpaCoreMappingsPackage.eINSTANCE.getIAssociationOverride_SpecifiedJoinColumns(),
+ buildJoinColumnsBuilder());
+ }
+
+ private JoinColumnBuilder buildJoinColumnsBuilder() {
+ return new JoinColumnBuilder() {
+ public IJoinColumn createJoinColumn() {
+ return OrmFactory.eINSTANCE.createXmlJoinColumn(new JoinColumnOwner(associationOverride));
+ }
+ };
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ joinColumnsTranslator,
+ };
+ }
+ protected Translator createNameTranslator() {
+ return new Translator(ATTRIBUTE_OVERRIDE_NAME, MAPPINGS_PKG.getIOverride_Name(), DOM_ATTRIBUTE);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ this.associationOverride = this.associationOverrideBuilder.createAssociationOverride();
+ return this.associationOverride;
+ }
+
+ public interface AssociationOverrideBuilder {
+ IAssociationOverride createAssociationOverride();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingTranslator.java
new file mode 100644
index 0000000000..566293e8ba
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingTranslator.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class AttributeMappingTranslator extends Translator
+ implements OrmXmlMapper
+{
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+ protected static final OrmFactory JPA_CORE_XML_FACTORY =
+ OrmFactory.eINSTANCE;
+
+
+ private Translator[] children;
+
+
+ public AttributeMappingTranslator(String domNameAndPath, int style) {
+ super(domNameAndPath, JPA_CORE_XML_PKG.getXmlPersistentType_SpecifiedAttributeMappings(), style);
+ dependencyFeature = JPA_CORE_XML_PKG.getXmlAttributeMapping_PersistentAttribute();
+ }
+
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (this.children == null) {
+ this.children = createChildren();
+ }
+ return this.children;
+ }
+
+ protected abstract Translator[] createChildren();
+
+
+ protected Translator createNameTranslator() {
+ return new AttributeNameTranslator();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingsTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingsTranslator.java
new file mode 100644
index 0000000000..9c754cdd68
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingsTranslator.java
@@ -0,0 +1,119 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class AttributeMappingsTranslator extends MultiObjectDependencyTranslator
+ implements OrmXmlMapper
+{
+ public static final String ATTRIBUTES_PATH =
+ ATTRIBUTES + '/' + ID + ',' + EMBEDDED_ID + ','+ BASIC + ',' + VERSION +',' + MANY_TO_ONE + "," + ONE_TO_MANY + ',' + ONE_TO_ONE + ',' + MANY_TO_MANY + ',' + EMBEDDED+ ',' + TRANSIENT;
+
+ private static final OrmPackage JPA_CORE_XML_PKG = OrmPackage.eINSTANCE;
+
+ public AttributeMappingsTranslator() {
+ super(ATTRIBUTES_PATH, JPA_CORE_XML_PKG.getXmlPersistentType_SpecifiedAttributeMappings(), JPA_CORE_XML_PKG.getXmlTypeMapping_PersistentType());
+ }
+
+ public Translator getDelegateFor(EObject o) {
+ Translator translator = super.getDelegateFor(o);
+ if (translator != null) {
+ return translator;
+ }
+ switch (o.eClass().getClassifierID()) {
+ case OrmPackage.XML_ID :
+ return new IdTranslator();
+
+ case OrmPackage.XML_BASIC :
+ return new BasicTranslator();
+
+ case OrmPackage.XML_ONE_TO_MANY :
+ return new OneToManyTranslator();
+
+ case OrmPackage.XML_MANY_TO_MANY :
+ return new ManyToManyTranslator();
+
+ case OrmPackage.XML_MANY_TO_ONE :
+ return new ManyToOneTranslator();
+
+ case OrmPackage.XML_TRANSIENT :
+ return new TransientTranslator();
+
+ case OrmPackage.XML_EMBEDDED :
+ return new EmbeddedTranslator();
+
+ case OrmPackage.XML_EMBEDDED_ID :
+ return new EmbeddedIdTranslator();
+
+ case OrmPackage.XML_ONE_TO_ONE :
+ return new OneToOneTranslator();
+
+ case OrmPackage.XML_VERSION :
+ return new VersionTranslator();
+ }
+
+ return null;
+ }
+
+
+ @Override
+ public Translator getDelegateFor(String domName, String readAheadName) {
+ if (domName.equals(ID)) {
+ return new IdTranslator();
+ }
+ if (domName.equals(BASIC)) {
+ return new BasicTranslator();
+ }
+ if (domName.equals(MANY_TO_ONE)) {
+ return new ManyToOneTranslator();
+ }
+ if (domName.equals(ONE_TO_MANY)) {
+ return new OneToManyTranslator();
+ }
+ if (domName.equals(MANY_TO_MANY)) {
+ return new ManyToManyTranslator();
+ }
+ if (domName.equals(TRANSIENT)) {
+ return new TransientTranslator();
+ }
+ if (domName.equals(EMBEDDED)) {
+ return new EmbeddedTranslator();
+ }
+ if (domName.equals(EMBEDDED_ID)) {
+ return new EmbeddedIdTranslator();
+ }
+ if (domName.equals(ONE_TO_ONE)) {
+ return new OneToOneTranslator();
+ }
+ if (domName.equals(VERSION)) {
+ return new VersionTranslator();
+ }
+ throw new IllegalStateException("Illegal dom name: " + domName); //$NON-NLS-1$
+ }
+
+ @Override
+ public boolean isDependencyParent() {
+ return true;
+ }
+
+ @Override
+ public EObject basicGetDependencyObject(EObject parent) {
+ Translator delegate = getDelegateFor(parent);
+
+ if (delegate != null) {
+ return delegate.basicGetDependencyObject(parent);
+ }
+ else {
+ return super.basicGetDependencyObject(parent);
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeNameTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeNameTranslator.java
new file mode 100644
index 0000000000..2278da6527
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeNameTranslator.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 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.resource;
+
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.wst.common.internal.emf.resource.DependencyTranslator;
+
+public class AttributeNameTranslator extends DependencyTranslator
+ implements OrmXmlMapper
+{
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ public AttributeNameTranslator() {
+ super(NAME, JPA_CORE_XML_PKG.getXmlPersistentAttribute_Name(),
+ JPA_CORE_XML_PKG.getXmlAttributeMapping_PersistentAttribute());
+ fStyle = DOM_ATTRIBUTE;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeOverrideTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeOverrideTranslator.java
new file mode 100644
index 0000000000..824b14e04d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeOverrideTranslator.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class AttributeOverrideTranslator extends Translator implements OrmXmlMapper
+{
+ private AttributeOverrideBuilder attributeOverrideBuilder;
+
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ private Translator[] children;
+ private ColumnTranslator columnTranslator;
+
+ public AttributeOverrideTranslator(String domNameAndPath, EStructuralFeature aFeature, AttributeOverrideBuilder attributeOverrideBuilder) {
+ super(domNameAndPath, aFeature);
+ this.attributeOverrideBuilder = attributeOverrideBuilder;
+ this.columnTranslator = createColumnTranslator();
+ }
+
+ private ColumnTranslator createColumnTranslator() {
+ return new ColumnTranslator(ATTRIBUTE_OVERRIDE_COLUMN, JPA_CORE_XML_PKG.getIXmlColumnMapping_ColumnForXml());
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ columnTranslator,
+ };
+ }
+ protected Translator createNameTranslator() {
+ return new Translator(ATTRIBUTE_OVERRIDE_NAME, MAPPINGS_PKG.getIOverride_Name(), DOM_ATTRIBUTE);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ IAttributeOverride attributeOverride = this.attributeOverrideBuilder.createAttributeOverride();
+ this.columnTranslator.setColumnMapping(attributeOverride);
+ return attributeOverride;
+ }
+
+ public interface AttributeOverrideBuilder {
+ IAttributeOverride createAttributeOverride();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BasicTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BasicTranslator.java
new file mode 100644
index 0000000000..2f563bf12a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BasicTranslator.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.IBasic;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class BasicTranslator extends AttributeMappingTranslator
+{
+ private ColumnTranslator columnTranslator;
+
+
+ public BasicTranslator() {
+ super(BASIC, NO_STYLE);
+ this.columnTranslator = createColumnTranslator();
+ }
+
+ private ColumnTranslator createColumnTranslator() {
+ return new ColumnTranslator(COLUMN, JPA_CORE_XML_PKG.getIXmlColumnMapping_ColumnForXml());
+ }
+
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ IBasic xmlBasic = JPA_CORE_XML_FACTORY.createXmlBasic();
+ this.columnTranslator.setColumnMapping(xmlBasic);
+ return xmlBasic;
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createFetchTypeTranslator(),
+ createOptionalTranslator(),
+ columnTranslator,
+ createLobTranslator(),
+ createTemporalTranslator(),
+ createEnumeratedTranslator(),
+ };
+ }
+
+ private Translator createPlaceHolderTranslator(String domNameAndPath) {
+ return new Translator(domNameAndPath, (EStructuralFeature) null);
+ }
+
+ private Translator createFetchTypeTranslator() {
+ return new EnumeratorTranslator(FETCH, JpaCoreMappingsPackage.eINSTANCE.getIBasic_Fetch(), DOM_ATTRIBUTE);
+ }
+
+ private Translator createOptionalTranslator() {
+ return new BooleanEnumeratorTranslator(OPTIONAL, JpaCoreMappingsPackage.eINSTANCE.getIBasic_Optional(), DOM_ATTRIBUTE);
+ }
+
+ private Translator createLobTranslator() {
+ return new EmptyTagBooleanTranslator(LOB, JpaCoreMappingsPackage.eINSTANCE.getIBasic_Lob());
+ }
+
+ private Translator createTemporalTranslator() {
+ return new TemporalTypeElementTranslator(TEMPORAL, JpaCoreMappingsPackage.eINSTANCE.getIBasic_Temporal(), NO_STYLE);
+ }
+
+ private Translator createEnumeratedTranslator() {
+ return new EnumeratedTypeElementTranslator(BASIC__ENUMERATED, JpaCoreMappingsPackage.eINSTANCE.getIBasic_Enumerated(), NO_STYLE);
+ }
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BooleanEnumeratorTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BooleanEnumeratorTranslator.java
new file mode 100644
index 0000000000..157f2f3409
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BooleanEnumeratorTranslator.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+public class BooleanEnumeratorTranslator extends EnumeratorTranslator
+{
+ public BooleanEnumeratorTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature, BOOLEAN_FEATURE | BOOLEAN_LOWERCASE);
+ }
+
+ public BooleanEnumeratorTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) {
+ super(domNameAndPath, aFeature, BOOLEAN_FEATURE | BOOLEAN_LOWERCASE | style);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ColumnTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ColumnTranslator.java
new file mode 100644
index 0000000000..adf9ca1dcf
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ColumnTranslator.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class ColumnTranslator extends AbstractColumnTranslator
+ implements OrmXmlMapper
+{
+
+ private IColumnMapping columnMapping;
+
+ public ColumnTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return getColumnMapping().getColumn();
+ }
+
+ private IColumnMapping getColumnMapping() {
+ return this.columnMapping;
+ }
+
+ void setColumnMapping(IColumnMapping columnMapping) {
+ this.columnMapping = columnMapping;
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createUniqueTranslator(),
+ createNullableTranslator(),
+ createInsertableTranslator(),
+ createUpdatableTranslator(),
+ createColumnDefinitionTranslator(),
+ createTableTranslator(),
+ createLengthTranslator(),
+ createPrecisionTranslator(),
+ createScaleTranslator(),
+ };
+ }
+
+ protected Translator createLengthTranslator() {
+ return new Translator(COLUMN__LENGTH, JPA_CORE_XML_PKG.getXmlColumn_LengthForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createPrecisionTranslator() {
+ return new Translator(COLUMN__PRECISION, JPA_CORE_XML_PKG.getXmlColumn_PrecisionForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createScaleTranslator() {
+ return new Translator(COLUMN__SCALE, JPA_CORE_XML_PKG.getXmlColumn_ScaleForXml(), DOM_ATTRIBUTE);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DebugTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DebugTranslator.java
new file mode 100644
index 0000000000..c080462564
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DebugTranslator.java
@@ -0,0 +1,431 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import java.util.List;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.wst.common.internal.emf.resource.ReadAheadHelper;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorPath;
+import org.eclipse.wst.common.internal.emf.resource.VariableTranslatorFactory;
+
+public class DebugTranslator extends Translator
+{
+ @Override
+ public String getDOMPath() {
+ // TODO Auto-generated method stub
+ return super.getDOMPath();
+ }
+
+ public DebugTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature);
+ // TODO Auto-generated constructor stub
+ }
+
+ public DebugTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) {
+ super(domNameAndPath, aFeature, style);
+ // TODO Auto-generated constructor stub
+ }
+
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ // TODO Auto-generated method stub
+ return super.createEMFObject(nodeName, readAheadName);
+ }
+
+ @Override
+ public Translator[] getChildren(Object target, int versionID) {
+ // TODO Auto-generated method stub
+ return super.getChildren(target, versionID);
+ }
+
+ @Override
+ public String getDOMName(Object value) {
+ // TODO Auto-generated method stub
+ return super.getDOMName(value);
+ }
+
+ @Override
+ public boolean isManagedByParent() {
+ // TODO Auto-generated method stub
+ return super.isManagedByParent();
+ }
+
+ @Override
+ public void addReadAheadHelper(ReadAheadHelper helper) {
+ // TODO Auto-generated method stub
+ super.addReadAheadHelper(helper);
+ }
+
+ @Override
+ public EObject basicGetDependencyObject(EObject parent) {
+ // TODO Auto-generated method stub
+ return super.basicGetDependencyObject(parent);
+ }
+
+ @Override
+ public void clearList(EObject mofObject) {
+ // TODO Auto-generated method stub
+ super.clearList(mofObject);
+ }
+
+ @Override
+ public Object convertStringToValue(String strValue, EObject owner) {
+ // TODO Auto-generated method stub
+ return super.convertStringToValue(strValue, owner);
+ }
+
+ @Override
+ public Object convertStringToValue(String nodeName, String readAheadName,
+ String value, Notifier owner) {
+ // TODO Auto-generated method stub
+ return super.convertStringToValue(nodeName, readAheadName, value, owner);
+ }
+
+ @Override
+ public String convertValueToString(Object value, EObject owner) {
+ // TODO Auto-generated method stub
+ return super.convertValueToString(value, owner);
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ // TODO Auto-generated method stub
+ return super.equals(object);
+ }
+
+ @Override
+ public String extractStringValue(EObject emfObject) {
+ // TODO Auto-generated method stub
+ return super.extractStringValue(emfObject);
+ }
+
+ @Override
+ public boolean featureExists(EObject emfObject) {
+ // TODO Auto-generated method stub
+ return super.featureExists(emfObject);
+ }
+
+ @Override
+ public Translator findChild(String tagName, Object target, int versionID) {
+ // TODO Auto-generated method stub
+ return super.findChild(tagName, target, versionID);
+ }
+
+ @Override
+ protected Translator[] getChildren() {
+ // TODO Auto-generated method stub
+ return super.getChildren();
+ }
+
+ @Override
+ public EStructuralFeature getDependencyFeature() {
+ // TODO Auto-generated method stub
+ return super.getDependencyFeature();
+ }
+
+ @Override
+ public String[] getDOMNames() {
+ // TODO Auto-generated method stub
+ return super.getDOMNames();
+ }
+
+ @Override
+ public EStructuralFeature getFeature() {
+ // TODO Auto-generated method stub
+ return super.getFeature();
+ }
+
+ @Override
+ public List getMOFChildren(EObject mofObject) {
+ // TODO Auto-generated method stub
+ return super.getMOFChildren(mofObject);
+ }
+
+ @Override
+ public Object getMOFValue(EObject mofObject) {
+ // TODO Auto-generated method stub
+ return super.getMOFValue(mofObject);
+ }
+
+ @Override
+ public String getNameSpace() {
+ // TODO Auto-generated method stub
+ return super.getNameSpace();
+ }
+
+ @Override
+ public ReadAheadHelper getReadAheadHelper(String parentName) {
+ // TODO Auto-generated method stub
+ return super.getReadAheadHelper(parentName);
+ }
+
+ @Override
+ public TranslatorPath[] getTranslatorPaths() {
+ // TODO Auto-generated method stub
+ return super.getTranslatorPaths();
+ }
+
+ @Override
+ public Translator[] getVariableChildren(Notifier target, int version) {
+ // TODO Auto-generated method stub
+ return super.getVariableChildren(target, version);
+ }
+
+ @Override
+ public VariableTranslatorFactory getVariableTranslatorFactory() {
+ // TODO Auto-generated method stub
+ return super.getVariableTranslatorFactory();
+ }
+
+ @Override
+ public boolean hasDOMPath() {
+ // TODO Auto-generated method stub
+ return super.hasDOMPath();
+ }
+
+ @Override
+ public boolean hasReadAheadNames() {
+ // TODO Auto-generated method stub
+ return super.hasReadAheadNames();
+ }
+
+ @Override
+ protected void initializeDOMNameAndPath(String domNameAndPathArg) {
+ // TODO Auto-generated method stub
+ super.initializeDOMNameAndPath(domNameAndPathArg);
+ }
+
+ @Override
+ public boolean isBooleanFeature() {
+ // TODO Auto-generated method stub
+ return super.isBooleanFeature();
+ }
+
+ @Override
+ public boolean isBooleanUppercase() {
+ // TODO Auto-generated method stub
+ return super.isBooleanUppercase();
+ }
+
+ @Override
+ public boolean isCDATAContent() {
+ // TODO Auto-generated method stub
+ return super.isCDATAContent();
+ }
+
+ @Override
+ public boolean isComment() {
+ // TODO Auto-generated method stub
+ return super.isComment();
+ }
+
+ @Override
+ public boolean isDataType() {
+ // TODO Auto-generated method stub
+ return super.isDataType();
+ }
+
+ @Override
+ public boolean isDependencyChild() {
+ // TODO Auto-generated method stub
+ return super.isDependencyChild();
+ }
+
+ @Override
+ public boolean isDependencyParent() {
+ // TODO Auto-generated method stub
+ return super.isDependencyParent();
+ }
+
+ @Override
+ public boolean isDOMAttribute() {
+ // TODO Auto-generated method stub
+ return super.isDOMAttribute();
+ }
+
+ @Override
+ public boolean isDOMTextValue() {
+ // TODO Auto-generated method stub
+ return super.isDOMTextValue();
+ }
+
+ @Override
+ public boolean isEmptyContentSignificant() {
+ // TODO Auto-generated method stub
+ return super.isEmptyContentSignificant();
+ }
+
+ @Override
+ public boolean isEmptyTag() {
+ // TODO Auto-generated method stub
+ return super.isEmptyTag();
+ }
+
+ @Override
+ public boolean isEnumFeature() {
+ // TODO Auto-generated method stub
+ return super.isEnumFeature();
+ }
+
+ @Override
+ public boolean isEnumWithHyphens() {
+ // TODO Auto-generated method stub
+ return super.isEnumWithHyphens();
+ }
+
+ @Override
+ public boolean isIDMap() {
+ // TODO Auto-generated method stub
+ return super.isIDMap();
+ }
+
+ @Override
+ public boolean isLinkMap() {
+ // TODO Auto-generated method stub
+ return super.isLinkMap();
+ }
+
+ @Override
+ public boolean isMapFor(Object aFeature, Object oldValue, Object newValue) {
+ // TODO Auto-generated method stub
+ return super.isMapFor(aFeature, oldValue, newValue);
+ }
+
+ @Override
+ public boolean isMapFor(String domName) {
+ // TODO Auto-generated method stub
+ return super.isMapFor(domName);
+ }
+
+ @Override
+ public boolean isMultiValued() {
+ // TODO Auto-generated method stub
+ return super.isMultiValued();
+ }
+
+ @Override
+ public boolean isObjectMap() {
+ // TODO Auto-generated method stub
+ return super.isObjectMap();
+ }
+
+ @Override
+ public boolean isSetMOFValue(EObject emfObject) {
+ // TODO Auto-generated method stub
+ return super.isSetMOFValue(emfObject);
+ }
+
+ @Override
+ public boolean isShared() {
+ // TODO Auto-generated method stub
+ return super.isShared();
+ }
+
+ @Override
+ public boolean isTargetLinkMap() {
+ // TODO Auto-generated method stub
+ return super.isTargetLinkMap();
+ }
+
+ @Override
+ public boolean isUnsettable() {
+ // TODO Auto-generated method stub
+ return super.isUnsettable();
+ }
+
+ @Override
+ protected String[] parseDOMNames(String domNamesString) {
+ // TODO Auto-generated method stub
+ return super.parseDOMNames(domNamesString);
+ }
+
+ @Override
+ public void removeMOFValue(Notifier owner, Object value) {
+ // TODO Auto-generated method stub
+ super.removeMOFValue(owner, value);
+ }
+
+ @Override
+ protected void setEMFClass(EClass anEClass) {
+ // TODO Auto-generated method stub
+ super.setEMFClass(anEClass);
+ }
+
+ @Override
+ protected void setFeature(EStructuralFeature aFeature) {
+ // TODO Auto-generated method stub
+ super.setFeature(aFeature);
+ }
+
+ @Override
+ public void setMOFValue(EObject emfObject, Object value) {
+ // TODO Auto-generated method stub
+ super.setMOFValue(emfObject, value);
+ }
+
+ @Override
+ public void setMOFValue(Notifier owner, Object value, int newIndex) {
+ // TODO Auto-generated method stub
+ super.setMOFValue(owner, value, newIndex);
+ }
+
+ @Override
+ public void setMOFValue(Notifier owner, Object value) {
+ // TODO Auto-generated method stub
+ super.setMOFValue(owner, value);
+ }
+
+ @Override
+ public void setMOFValue(Resource res, Object value) {
+ // TODO Auto-generated method stub
+ super.setMOFValue(res, value);
+ }
+
+ @Override
+ public void setMOFValueFromEmptyDOMPath(EObject eObject) {
+ // TODO Auto-generated method stub
+ super.setMOFValueFromEmptyDOMPath(eObject);
+ }
+
+ @Override
+ public void setNameSpace(String string) {
+ // TODO Auto-generated method stub
+ super.setNameSpace(string);
+ }
+
+ @Override
+ public void setTextValueIfNecessary(String textValue, Notifier owner, int versionId) {
+ // TODO Auto-generated method stub
+ super.setTextValueIfNecessary(textValue, owner, versionId);
+ }
+
+ @Override
+ public boolean shouldIndentEndTag() {
+ // TODO Auto-generated method stub
+ return super.shouldIndentEndTag();
+ }
+
+ @Override
+ public boolean shouldRenderEmptyDOMPath(EObject eObject) {
+ // TODO Auto-generated method stub
+ return super.shouldRenderEmptyDOMPath(eObject);
+ }
+
+ @Override
+ public void unSetMOFValue(EObject emfObject) {
+ // TODO Auto-generated method stub
+ super.unSetMOFValue(emfObject);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DiscriminatorColumnTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DiscriminatorColumnTranslator.java
new file mode 100644
index 0000000000..bf081918f4
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DiscriminatorColumnTranslator.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class DiscriminatorColumnTranslator extends Translator
+ implements OrmXmlMapper
+{
+ private Translator[] children;
+
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+ protected static final OrmFactory JPA_CORE_XML_FACTORY =
+ OrmFactory.eINSTANCE;
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+
+ private IEntity entity;
+
+ public DiscriminatorColumnTranslator() {
+ super(ENTITY__DISCRIMINATOR_COLUMN, JPA_CORE_XML_PKG.getXmlEntityForXml_DiscriminatorColumnForXml(), END_TAG_NO_INDENT);
+ }
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+
+ protected IEntity getEntity() {
+ return this.entity;
+ }
+
+ void setEntity(IEntity entity) {
+ this.entity = entity;
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return getEntity().getDiscriminatorColumn();
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createDiscrminiatorTypeTranslator(),
+ createColumnDefinitationTranslator(),
+ createLengthTranslator(),
+ };
+ }
+
+ protected Translator createNameTranslator() {
+ return new Translator(DISCRIMINATOR_COLUMN__NAME, JPA_CORE_XML_PKG.getXmlDiscriminatorColumn_SpecifiedNameForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createDiscrminiatorTypeTranslator() {
+ return new EnumeratorTranslator(DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE, JPA_CORE_XML_PKG.getXmlDiscriminatorColumn_DiscriminatorTypeForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createColumnDefinitationTranslator() {
+ return new Translator(DISCRIMINATOR_COLUMN__COLUMN_DEFINITION, JPA_CORE_XML_PKG.getXmlDiscriminatorColumn_ColumnDefinitionForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createLengthTranslator() {
+ return new Translator(DISCRIMINATOR_COLUMN__LENGTH, JPA_CORE_XML_PKG.getXmlDiscriminatorColumn_SpecifiedLengthForXml(), DOM_ATTRIBUTE);
+ }
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddableTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddableTranslator.java
new file mode 100644
index 0000000000..2ea7194414
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddableTranslator.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class EmbeddableTranslator extends TypeMappingTranslator
+{
+ protected static final OrmPackage XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ public EmbeddableTranslator() {
+ super(EMBEDDABLE);
+ }
+
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return JPA_CORE_XML_FACTORY.createXmlEmbeddable();
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createJavaClassTranslator(),
+ createAccessTypeTranslator(),
+ createMetadataCompleteTranslator(),
+ createPlaceHolderTranslator(EMBEDDABLE__DESCRIPTION),
+ createPersistentAttributesTranslator()
+ };
+ }
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedIdTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedIdTranslator.java
new file mode 100644
index 0000000000..1874a2d58c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedIdTranslator.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class EmbeddedIdTranslator extends AttributeMappingTranslator
+{
+ public EmbeddedIdTranslator() {
+ super(EMBEDDED_ID, NO_STYLE);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return JPA_CORE_XML_FACTORY.createXmlEmbeddedId();
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createPlaceHolderTranslator(EMBEDDED_ID__ATTRIBUTE_OVERRIDE),
+ };
+ }
+ private Translator createPlaceHolderTranslator(String domNameAndPath) {
+ return new Translator(domNameAndPath, (EStructuralFeature) null);
+ }
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedTranslator.java
new file mode 100644
index 0000000000..0e20f58a5c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedTranslator.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.resource.AttributeOverrideTranslator.AttributeOverrideBuilder;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IEmbedded;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class EmbeddedTranslator extends AttributeMappingTranslator
+{
+ private IEmbedded embedded;
+
+ public EmbeddedTranslator() {
+ super(EMBEDDED, NO_STYLE);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ this.embedded = JPA_CORE_XML_FACTORY.createXmlEmbedded();
+ return this.embedded;
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createAttributeOverridesTranslator(),
+ };
+ }
+ private Translator createAttributeOverridesTranslator() {
+ return new AttributeOverrideTranslator(EMBEDDED__ATTRIBUTE_OVERRIDE, MAPPINGS_PKG.getIEmbedded_SpecifiedAttributeOverrides(), buildAttributeOverrideBuilder());
+ }
+
+ private AttributeOverrideBuilder buildAttributeOverrideBuilder() {
+ return new AttributeOverrideBuilder() {
+ public IAttributeOverride createAttributeOverride() {
+ return EmbeddedTranslator.this.embedded.createAttributeOverride(0);
+ }
+ };
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmptyTagBooleanTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmptyTagBooleanTranslator.java
new file mode 100644
index 0000000000..c96a39095d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmptyTagBooleanTranslator.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+/**
+ * This translator is to be used for empty xml tags that correspond
+ * to a boolean attribute in the emf model.
+ * cascade-persist is an example from the orm.xsd:
+ *
+ * <persistence-unit-defaults>
+ * <cascade-persist/>
+ * </persistence-unit-defaults> ==> cascadePersist == true
+ *
+ * vs.
+ *
+ * <persistence-unit-defaults>
+ * </persistence-unit-defaults> ==> cascadePersist == false
+ *
+ */
+public class EmptyTagBooleanTranslator extends Translator
+{
+ public EmptyTagBooleanTranslator(String domNameAndPath, EStructuralFeature feature) {
+ super(domNameAndPath, feature, EMPTY_TAG | BOOLEAN_FEATURE);
+ }
+
+ public EmptyTagBooleanTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) {
+ super(domNameAndPath, aFeature, style | EMPTY_TAG | BOOLEAN_FEATURE);
+ }
+
+ @Override
+ public Object getMOFValue(EObject mofObject) {
+ // I am overriding this method. This is so the tag will be removed when
+ // the value is false.
+ // I'm not sure if this is a bug in the ecore or maybe in the translators,
+ // but I really don't think that we should have to depend on the boolean
+ // being "unset" to remove the tag.
+ Boolean value = (Boolean) super.getMOFValue(mofObject);
+ return (value == true) ? value : null;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityMappingsTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityMappingsTranslator.java
new file mode 100644
index 0000000000..4be35f1db5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityMappingsTranslator.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.EntityMappings;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.wst.common.internal.emf.resource.ConstantAttributeTranslator;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.RootTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class EntityMappingsTranslator extends RootTranslator
+ implements OrmXmlMapper
+{
+ private Translator[] children;
+
+ private PersistenceUnitMetadataTranslator persistenceUnitMetadataTranslator;
+
+ public EntityMappingsTranslator() {
+ super(ENTITY_MAPPINGS, OrmPackage.eINSTANCE.getEntityMappingsInternal());
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ private Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ new ConstantAttributeTranslator(XML_NS, PERSISTENCE_NS_URL),
+ new ConstantAttributeTranslator(XML_NS_XSI, XSI_NS_URL),
+ new ConstantAttributeTranslator(XSI_SCHEMA_LOCATION, PERSISTENCE_NS_URL + ' ' + ORM_SCHEMA_LOC_1_0),
+ createVersionTranslator(),
+ createPlaceHolderTranslator(ENTITY_MAPPINGS__DESCRIPTION),
+ createPersistenceUnitMetadataTranslator(),
+ createPackageTranslator(),
+ createSchemaTranslator(),
+ createCatalogTranslator(),
+ createAccessTranslator(),
+ createSequenceGeneratorTranslator(),
+ createTableGeneratorTranslator(),
+ createNamedQueryTranslator(),
+ createNamedNativeQueryTranslator(),
+ createPlaceHolderTranslator(ENTITY_MAPPINGS__SQL_RESULT_SET_MAPPING),
+ createTypeMappingsTranslator()
+ };
+ }
+
+ private Translator createPlaceHolderTranslator(String domNameAndPath) {
+ return new Translator(domNameAndPath, (EStructuralFeature) null);
+ }
+
+ protected Translator createVersionTranslator() {
+ return new Translator(VERSION, OrmPackage.eINSTANCE.getEntityMappingsInternal_Version(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createPersistenceUnitMetadataTranslator() {
+ this.persistenceUnitMetadataTranslator = new PersistenceUnitMetadataTranslator();
+ return this.persistenceUnitMetadataTranslator;
+ }
+
+ protected Translator createPackageTranslator() {
+ return new Translator(ENTITY_MAPPINGS__PACKAGE, OrmPackage.eINSTANCE.getEntityMappingsForXml_PackageForXml());
+ }
+
+ protected Translator createSchemaTranslator() {
+ return new Translator(ENTITY_MAPPINGS__SCHEMA, OrmPackage.eINSTANCE.getEntityMappingsInternal_SpecifiedSchema());
+ }
+
+ protected Translator createCatalogTranslator() {
+ return new Translator(ENTITY_MAPPINGS__CATALOG, OrmPackage.eINSTANCE.getEntityMappingsInternal_SpecifiedCatalog());
+ }
+
+ protected Translator createAccessTranslator() {
+ return new AccessTypeElementTranslator(ENTITY_MAPPINGS__ACCESS, OrmPackage.eINSTANCE.getEntityMappingsInternal_SpecifiedAccess(), NO_STYLE);
+ }
+
+ protected Translator createTypeMappingsTranslator() {
+ return new TypeMappingsTranslator();
+ }
+
+ private Translator createTableGeneratorTranslator() {
+ return new TableGeneratorTranslator(TABLE_GENERATOR, OrmPackage.eINSTANCE.getEntityMappingsInternal_TableGenerators());
+ }
+
+ private Translator createSequenceGeneratorTranslator() {
+ return new SequenceGeneratorTranslator(SEQUENCE_GENERATOR, OrmPackage.eINSTANCE.getEntityMappingsInternal_SequenceGenerators());
+ }
+
+ private Translator createNamedQueryTranslator() {
+ return new NamedQueryTranslator(NAMED_QUERY, OrmPackage.eINSTANCE.getEntityMappingsInternal_NamedQueries());
+ }
+
+ private Translator createNamedNativeQueryTranslator() {
+ return new NamedNativeQueryTranslator(NAMED_NATIVE_QUERY, OrmPackage.eINSTANCE.getEntityMappingsInternal_NamedNativeQueries());
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ EntityMappings entityMappings = (EntityMappings) super.createEMFObject(nodeName, readAheadName);
+ this.persistenceUnitMetadataTranslator.setEntityMappings(entityMappings);
+ return entityMappings;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityTranslator.java
new file mode 100644
index 0000000000..bc4a1e0da1
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityTranslator.java
@@ -0,0 +1,179 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.resource.AssociationOverrideTranslator.AssociationOverrideBuilder;
+import org.eclipse.jpt.core.internal.content.orm.resource.AttributeOverrideTranslator.AttributeOverrideBuilder;
+import org.eclipse.jpt.core.internal.content.orm.resource.PrimaryKeyJoinColumnTranslator.PrimaryKeyJoinColumnBuilder;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class EntityTranslator extends TypeMappingTranslator
+{
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+
+ private TableTranslator tableTranslator;
+ private SecondaryTableTranslator secondaryTableTranslator;
+ private DiscriminatorColumnTranslator discriminatorColumnTranslator;
+
+ private IEntity entity;
+
+ public EntityTranslator() {
+ super(ENTITY);
+ this.tableTranslator = createTableTranslator();
+ this.secondaryTableTranslator = createSecondaryTableTranslator();
+ this.discriminatorColumnTranslator = createDiscriminatorColumnTranslator();
+ }
+
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ this.entity = JPA_CORE_XML_FACTORY.createXmlEntityInternal();
+ this.tableTranslator.setEntity(this.entity);
+ this.secondaryTableTranslator.setEntity(this.entity);
+ this.discriminatorColumnTranslator.setEntity(this.entity);
+ return this.entity;
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createJavaClassTranslator(),
+ createAccessTypeTranslator(),
+ createMetadataCompleteTranslator(),
+ createPlaceHolderTranslator(ENTITY__DESCRIPTION),
+ getTableTranslator(),
+ getSecondaryTableTranslator(),
+ createPrimaryKeyJoinColumnsTranslator(),
+ createPlaceHolderTranslator(ENTITY__ID_CLASS),
+ createInheritanceTranslator(),
+ createDiscriminatorValueTranslator(),
+ getDiscriminatorColumnTranslator(),
+ createSequenceGeneratorTranslator(),
+ createTableGeneratorTranslator(),
+ createNamedQueryTranslator(),
+ createNamedNativeQueryTranslator(),
+ createPlaceHolderTranslator(ENTITY__SQL_RESULT_SET_MAPPING),
+ createPlaceHolderTranslator(ENTITY__EXCLUDE_DEFAULT_LISTENERS),
+ createPlaceHolderTranslator(ENTITY__EXCLUDE_SUPERCLASS_LISTENERS),
+ createPlaceHolderTranslator(ENTITY__ENTITY_LISTENERS),
+ createPlaceHolderTranslator(ENTITY__PRE_PERSIST),
+ createPlaceHolderTranslator(ENTITY__POST_PERSIST),
+ createPlaceHolderTranslator(ENTITY__PRE_REMOVE),
+ createPlaceHolderTranslator(ENTITY__POST_REMOVE),
+ createPlaceHolderTranslator(ENTITY__PRE_UPDATE),
+ createPlaceHolderTranslator(ENTITY__POST_UPDATE),
+ createPlaceHolderTranslator(ENTITY__POST_LOAD),
+ createAttributeOverridesTranslator(),
+ createAssociationOverridesTranslator(),
+ createPersistentAttributesTranslator()
+ };
+ }
+
+ private Translator createNameTranslator() {
+ return new Translator(NAME, MAPPINGS_PKG.getIEntity_SpecifiedName(), DOM_ATTRIBUTE);
+ }
+
+ private Translator getTableTranslator() {
+ return this.tableTranslator;
+ }
+
+ private Translator getSecondaryTableTranslator() {
+ return this.secondaryTableTranslator;
+ }
+
+ private Translator getDiscriminatorColumnTranslator() {
+ return this.discriminatorColumnTranslator;
+ }
+
+ private TableTranslator createTableTranslator() {
+ return new TableTranslator();
+ }
+
+ private SecondaryTableTranslator createSecondaryTableTranslator() {
+ return new SecondaryTableTranslator();
+ }
+
+ private DiscriminatorColumnTranslator createDiscriminatorColumnTranslator() {
+ return new DiscriminatorColumnTranslator();
+ }
+
+ private Translator createTableGeneratorTranslator() {
+ return new TableGeneratorTranslator(TABLE_GENERATOR, JpaCoreMappingsPackage.eINSTANCE.getIEntity_TableGenerator());
+ }
+
+ private Translator createSequenceGeneratorTranslator() {
+ return new SequenceGeneratorTranslator(SEQUENCE_GENERATOR, JpaCoreMappingsPackage.eINSTANCE.getIEntity_SequenceGenerator());
+ }
+
+ private Translator createNamedQueryTranslator() {
+ return new NamedQueryTranslator(NAMED_QUERY, JpaCoreMappingsPackage.eINSTANCE.getIEntity_NamedQueries());
+ }
+
+ private Translator createNamedNativeQueryTranslator() {
+ return new NamedNativeQueryTranslator(NAMED_NATIVE_QUERY, JpaCoreMappingsPackage.eINSTANCE.getIEntity_NamedNativeQueries());
+ }
+
+ protected Translator createDiscriminatorValueTranslator() {
+ return new Translator(ENTITY__DISCRIMINATOR_VALUE, MAPPINGS_PKG.getIEntity_SpecifiedDiscriminatorValue(), NO_STYLE);
+ }
+
+ protected Translator createInheritanceTranslator() {
+ return new EnumeratorTranslator(ENTITY__INHERITANCE + "/" + STRATEGY, MAPPINGS_PKG.getIEntity_InheritanceStrategy(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createPrimaryKeyJoinColumnsTranslator() {
+ return new PrimaryKeyJoinColumnTranslator(
+ ENTITY__PRIMARY_KEY_JOIN_COLUMN,
+ JpaCoreMappingsPackage.eINSTANCE.getIEntity_SpecifiedPrimaryKeyJoinColumns(),
+ buildPrimaryKeyJoinColumnsBuilder());
+ }
+
+ private PrimaryKeyJoinColumnBuilder buildPrimaryKeyJoinColumnsBuilder() {
+ return new PrimaryKeyJoinColumnBuilder() {
+ public IPrimaryKeyJoinColumn createPrimaryKeyJoinColumn() {
+ return OrmFactory.eINSTANCE.createXmlPrimaryKeyJoinColumn(new IEntity.PrimaryKeyJoinColumnOwner(entity));
+ }
+ };
+ }
+
+ private Translator createAttributeOverridesTranslator() {
+ return new AttributeOverrideTranslator(ENTITY__ATTRIBUTE_OVERRIDE, MAPPINGS_PKG.getIEntity_SpecifiedAttributeOverrides(), buildAttributeOverrideBuilder());
+ }
+
+ private AttributeOverrideBuilder buildAttributeOverrideBuilder() {
+ return new AttributeOverrideBuilder() {
+ public IAttributeOverride createAttributeOverride() {
+ return EntityTranslator.this.entity.createAttributeOverride(0);
+ }
+ };
+ }
+
+ private Translator createAssociationOverridesTranslator() {
+ return new AssociationOverrideTranslator(ENTITY__ASSOCIATION_OVERRIDE, MAPPINGS_PKG.getIEntity_SpecifiedAssociationOverrides(), buildAssociationOverrideBuilder());
+ }
+
+ private AssociationOverrideBuilder buildAssociationOverrideBuilder() {
+ return new AssociationOverrideBuilder() {
+ public IAssociationOverride createAssociationOverride() {
+ return EntityTranslator.this.entity.createAssociationOverride(0);
+ }
+ };
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratedTypeElementTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratedTypeElementTranslator.java
new file mode 100644
index 0000000000..c926b883d7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratedTypeElementTranslator.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * 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.resource;
+
+import java.util.Collections;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.EnumType;
+
+/**
+ * There is a bug in the translator framework that causes
+ * enumerators in xml elements and enumerators in xml attributes
+ * to be treated differently. When the enumerator is an attribute
+ * setting the model to the default causes the attribute to be removed.
+ * With an element is causes the default literal to be placed in
+ * the tag.
+ *
+ * The problem is wrapped up in the emf unsettable attribute as well.
+ * For attributes the eIsSet method returns false for the default value
+ * For elements the eIsSet method returns true for the default value.
+ * I don't want to have to use the unsettable option in emf since that would
+ * require that I call different api. I am not sure yet what the bug is in
+ * the translator, so I have entered one ~KFM
+ */
+public class EnumeratedTypeElementTranslator extends EnumeratorTranslator
+{
+
+ public EnumeratedTypeElementTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) {
+ super(domNameAndPath, aFeature, style);
+ }
+
+ @Override
+ public Object getMOFValue(EObject mofObject) {
+ EnumType type = (EnumType) super.getMOFValue(mofObject);
+ if (type == EnumType.DEFAULT) {
+ return null;
+ }
+ return type;
+ }
+
+ @Override
+ public List getMOFChildren(EObject mofObject) {
+ List result = super.getMOFChildren(mofObject);
+ if(result != null && result.size() > 0) {
+ EnumType type = (EnumType) result.get(0);
+ if(type.getValue() == EnumType.DEFAULT_VALUE)
+ result = Collections.EMPTY_LIST;
+ }
+ return result;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratorTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratorTranslator.java
new file mode 100644
index 0000000000..2aed3cb282
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratorTranslator.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorPath;
+
+public class EnumeratorTranslator extends Translator
+{
+
+ public EnumeratorTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) {
+ super(domNameAndPath, aFeature, style);
+ }
+
+ public EnumeratorTranslator(String domNameAndPath, EStructuralFeature aFeature, TranslatorPath translatorPath) {
+ super(domNameAndPath, aFeature, translatorPath);
+ }
+
+ /**
+ * Overriding this because the default functionality is to return
+ * the toString of the Enumerator. This returns the literal value
+ * while we want to return the name instead.
+ *
+ * An example is fetchType where the literal value is going to be "Lazy"
+ * and the name is "LAZY". The xml needs "LAZY" to be placed in it
+ * while the ui wants to display "Lazy"
+ */
+ @Override
+ public String convertValueToString(Object value, EObject owner) {
+ Enumerator enumerator = (Enumerator) value;
+ return enumerator.getName();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratedValueTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratedValueTranslator.java
new file mode 100644
index 0000000000..64734dfd2e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratedValueTranslator.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class GeneratedValueTranslator extends Translator implements OrmXmlMapper
+{
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ private Translator[] children;
+
+ public GeneratedValueTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature);
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createStrategyTranslator(),
+ createGeneratorTranslator(),
+ };
+ }
+
+ protected Translator createStrategyTranslator() {
+ return new Translator(GENERATED_VALUE__STRATEGY, MAPPINGS_PKG.getIGeneratedValue_Strategy(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createGeneratorTranslator() {
+ return new Translator(GENERATED_VALUE__GENERATOR, MAPPINGS_PKG.getIGeneratedValue_Generator(), DOM_ATTRIBUTE);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return OrmFactory.eINSTANCE.createXmlGeneratedValue();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratorTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratorTranslator.java
new file mode 100644
index 0000000000..0ad1f08982
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratorTranslator.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class GeneratorTranslator extends Translator implements OrmXmlMapper
+{
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ private Translator[] children;
+
+ public GeneratorTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) {
+ super(domNameAndPath, aFeature, style);
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ protected abstract Translator[] createChildren();
+
+
+ protected Translator createNameTranslator() {
+ return new Translator(GENERATOR__NAME, MAPPINGS_PKG.getIGenerator_Name(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createInitialValueTranslator() {
+ return new Translator(GENERATOR__INITIAL_VALUE, MAPPINGS_PKG.getIGenerator_SpecifiedInitialValue(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createAllocationSizeTranslator() {
+ return new Translator(GENERATOR__ALLOCATION_SIZE, MAPPINGS_PKG.getIGenerator_SpecifiedAllocationSize(), DOM_ATTRIBUTE);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/IdTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/IdTranslator.java
new file mode 100644
index 0000000000..076c1aead3
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/IdTranslator.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.mappings.IId;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class IdTranslator extends AttributeMappingTranslator
+{
+ private ColumnTranslator columnTranslator;
+
+ public IdTranslator() {
+ super(ID, NO_STYLE);
+ this.columnTranslator = createColumnTranslator();
+ }
+
+ private ColumnTranslator createColumnTranslator() {
+ return new ColumnTranslator(COLUMN, JPA_CORE_XML_PKG.getIXmlColumnMapping_ColumnForXml());
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ IId xmlId = JPA_CORE_XML_FACTORY.createXmlId();
+ this.columnTranslator.setColumnMapping(xmlId);
+ return xmlId;
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ columnTranslator,
+ createGeneratedValueTranslator(),
+ createTemporalTranslator(),
+ createTableGeneratorTranslator(),
+ createSequenceGeneratorTranslator(),
+ };
+ }
+
+ private Translator createGeneratedValueTranslator() {
+ return new GeneratedValueTranslator(GENERATED_VALUE, JpaCoreMappingsPackage.eINSTANCE.getIId_GeneratedValue());
+ }
+
+ private Translator createTemporalTranslator() {
+ return new TemporalTypeElementTranslator(ID__TEMPORAL, JpaCoreMappingsPackage.eINSTANCE.getIId_Temporal(), NO_STYLE);
+ }
+
+ private Translator createTableGeneratorTranslator() {
+ return new TableGeneratorTranslator(TABLE_GENERATOR, JpaCoreMappingsPackage.eINSTANCE.getIId_TableGenerator());
+ }
+
+ private Translator createSequenceGeneratorTranslator() {
+ return new SequenceGeneratorTranslator(SEQUENCE_GENERATOR, JpaCoreMappingsPackage.eINSTANCE.getIId_SequenceGenerator());
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinColumnTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinColumnTranslator.java
new file mode 100644
index 0000000000..95472e4324
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinColumnTranslator.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class JoinColumnTranslator extends AbstractColumnTranslator
+ implements OrmXmlMapper
+{
+ private JoinColumnBuilder joinColumnBuilder;
+
+ public JoinColumnTranslator(String domNameAndPath, EStructuralFeature aFeature, JoinColumnBuilder joinColumnBuilder) {
+ super(domNameAndPath, aFeature);
+ this.joinColumnBuilder = joinColumnBuilder;
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return joinColumnBuilder.createJoinColumn();
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createReferencedColumnNameTranslator(),
+ createUniqueTranslator(),
+ createNullableTranslator(),
+ createInsertableTranslator(),
+ createUpdatableTranslator(),
+ createColumnDefinitionTranslator(),
+ createTableTranslator(),
+ };
+ }
+
+ protected Translator createReferencedColumnNameTranslator() {
+ return new Translator(REFERENCED_COLUMN_NAME, JPA_CORE_XML_PKG.getXmlJoinColumn_SpecifiedReferencedColumnNameForXml(), DOM_ATTRIBUTE);
+ }
+
+ public interface JoinColumnBuilder {
+ IJoinColumn createJoinColumn();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinTableTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinTableTranslator.java
new file mode 100644
index 0000000000..a84833a83d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinTableTranslator.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.resource.JoinColumnTranslator.JoinColumnBuilder;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable.InverseJoinColumnOwner;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable.JoinColumnOwner;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class JoinTableTranslator extends AbstractTableTranslator
+{
+
+ private IMultiRelationshipMapping mapping;
+
+
+ public JoinTableTranslator() {
+ super(JOIN_TABLE, JPA_CORE_XML_PKG.getXmlMultiRelationshipMappingForXml_JoinTableForXml());
+ }
+
+ protected IMultiRelationshipMapping getMapping() {
+ return this.mapping;
+ }
+
+ void setMapping(IMultiRelationshipMapping mapping) {
+ this.mapping = mapping;
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return getMapping().getJoinTable();
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createCatalogTranslator(),
+ createSchemaTranslator(),
+ createJoinColumnsTranslator(),
+ createInverseJoinColumnsTranslator(),
+ createUniqueConstraintTranslator(),
+ };
+ }
+
+ protected Translator createJoinColumnsTranslator() {
+ return new JoinColumnTranslator(
+ JOIN_COLUMN,
+ JpaCoreMappingsPackage.eINSTANCE.getIJoinTable_SpecifiedJoinColumns(),
+ buildJoinColumnsBuilder());
+ }
+
+ private JoinColumnBuilder buildJoinColumnsBuilder() {
+ return new JoinColumnBuilder() {
+ public IJoinColumn createJoinColumn() {
+ return OrmFactory.eINSTANCE.createXmlJoinColumn(new JoinColumnOwner(getMapping().getJoinTable()));
+ }
+ };
+ }
+
+ protected Translator createInverseJoinColumnsTranslator() {
+ return new JoinColumnTranslator(
+ INVERSE_JOIN_COLUMN,
+ JpaCoreMappingsPackage.eINSTANCE.getIJoinTable_SpecifiedInverseJoinColumns(),
+ buildInverseJoinColumnsBuilder());
+ }
+
+ private JoinColumnBuilder buildInverseJoinColumnsBuilder() {
+ return new JoinColumnBuilder() {
+ public IJoinColumn createJoinColumn() {
+ return OrmFactory.eINSTANCE.createXmlJoinColumn(new InverseJoinColumnOwner(getMapping().getJoinTable()));
+ }
+ };
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToManyTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToManyTranslator.java
new file mode 100644
index 0000000000..1321cf3537
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToManyTranslator.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.XmlManyToMany;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class ManyToManyTranslator extends MultiRelationshipTranslator
+{
+ public ManyToManyTranslator() {
+ super(MANY_TO_MANY);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ XmlManyToMany mapping = JPA_CORE_XML_FACTORY.createXmlManyToMany();
+ this.getJoinTableTranslator().setMapping(mapping);
+ //this.getOrderByTranslator().setMapping(mapping);
+ return mapping;
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createTargetEntityTranslator(),
+ createFetchTypeTranslator(),
+ createMappedByTranslator(),
+ createOrderByTranslator(),
+ //getOrderByTranslator(),
+ createMapKeyTranslator(),
+ getJoinTableTranslator(),
+ createCascadeTranslator()
+ };
+ }
+ protected Translator createMappedByTranslator() {
+ return new Translator(MAPPED_BY, JpaCoreMappingsPackage.eINSTANCE.getINonOwningMapping_MappedBy(), DOM_ATTRIBUTE);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToOneTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToOneTranslator.java
new file mode 100644
index 0000000000..73929fe56f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToOneTranslator.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class ManyToOneTranslator extends SingleRelationshipTranslator
+{
+ public ManyToOneTranslator() {
+ super(MANY_TO_ONE);
+ }
+
+ @Override
+ protected ISingleRelationshipMapping createMapping() {
+ return JPA_CORE_XML_FACTORY.createXmlManyToOne();
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createTargetEntityTranslator(),
+ createFetchTypeTranslator(),
+ createJoinColumnsTranslator(),
+ createCascadeTranslator()
+ };
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MappedSuperclassTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MappedSuperclassTranslator.java
new file mode 100644
index 0000000000..9851844640
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MappedSuperclassTranslator.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class MappedSuperclassTranslator extends TypeMappingTranslator
+{
+ protected static final OrmPackage XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ public MappedSuperclassTranslator() {
+ super(MAPPED_SUPERCLASS);
+ }
+
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return JPA_CORE_XML_FACTORY.createXmlMappedSuperclass();
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createJavaClassTranslator(),
+ createAccessTypeTranslator(),
+ createMetadataCompleteTranslator(),
+ createPlaceHolderTranslator(ENTITY__DESCRIPTION),
+ createPlaceHolderTranslator(ENTITY__ID_CLASS),
+ createPlaceHolderTranslator(ENTITY__EXCLUDE_DEFAULT_LISTENERS),
+ createPlaceHolderTranslator(ENTITY__EXCLUDE_SUPERCLASS_LISTENERS),
+ createPlaceHolderTranslator(ENTITY__ENTITY_LISTENERS),
+ createPlaceHolderTranslator(ENTITY__PRE_PERSIST),
+ createPlaceHolderTranslator(ENTITY__POST_PERSIST),
+ createPlaceHolderTranslator(ENTITY__PRE_REMOVE),
+ createPlaceHolderTranslator(ENTITY__POST_REMOVE),
+ createPlaceHolderTranslator(ENTITY__PRE_UPDATE),
+ createPlaceHolderTranslator(ENTITY__POST_UPDATE),
+ createPlaceHolderTranslator(ENTITY__POST_LOAD),
+ createPersistentAttributesTranslator()
+ };
+ }
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiObjectDependencyTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiObjectDependencyTranslator.java
new file mode 100644
index 0000000000..41d8845714
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiObjectDependencyTranslator.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 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.resource;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.wst.common.internal.emf.resource.DependencyTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class MultiObjectDependencyTranslator extends DependencyTranslator
+{
+ private static final Translator[] EMPTY_TRANSLATORS = new Translator[]{};
+
+
+ private Map<EObject, Translator> translatorMap;
+
+ public MultiObjectDependencyTranslator(String domNameAndPath, EStructuralFeature aFeature, EStructuralFeature aDependentFeature) {
+ super(domNameAndPath, aFeature, aDependentFeature);
+ this.translatorMap = new HashMap<EObject, Translator>();
+ }
+
+
+ public Translator getDelegateFor(EObject o) {
+ return translatorMap.get(o);
+ }
+
+ public abstract Translator getDelegateFor(String domName, String readAheadName);
+
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ Translator translator = getDelegateFor(nodeName, readAheadName);
+ EObject eObject = translator.createEMFObject(nodeName, readAheadName);
+ this.translatorMap.put(eObject, translator);
+ return eObject;
+ }
+
+ public Translator[] getChildren(Object o, int version) {
+ if (o == null) {
+ return EMPTY_TRANSLATORS;
+ }
+ Translator[] children = getDelegateFor((EObject) o).getChildren(o, version);
+ if (children == null) {
+ return EMPTY_TRANSLATORS;
+ }
+ return children;
+ }
+
+ public String getDOMName(Object value) {
+ return getDelegateFor((EObject) value).getDOMName(value);
+ }
+
+ public boolean isManagedByParent() {
+ return false;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiRelationshipTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiRelationshipTranslator.java
new file mode 100644
index 0000000000..3a7de3df71
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiRelationshipTranslator.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class MultiRelationshipTranslator extends RelationshipTranslator
+{
+ private JoinTableTranslator tableTranslator;
+
+ //private OrderByRefTranslator orderByTranslator;
+
+ public MultiRelationshipTranslator(String domNameAndPath) {
+ super(domNameAndPath);
+ this.tableTranslator = createTableTranslator();
+ //this.orderByTranslator = createOrderByTranslator();
+ }
+
+ protected Translator createFetchTypeTranslator() {
+ return new EnumeratorTranslator(FETCH, JpaCoreMappingsPackage.eINSTANCE.getIMultiRelationshipMapping_Fetch(), DOM_ATTRIBUTE);
+ }
+
+ protected JoinTableTranslator getJoinTableTranslator() {
+ return this.tableTranslator;
+ }
+
+ protected JoinTableTranslator createTableTranslator() {
+ this.tableTranslator = new JoinTableTranslator();
+ return this.tableTranslator;
+ }
+
+// protected OrderByRefTranslator getOrderByTranslator() {
+// return this.orderByTranslator;
+// }
+//
+// protected OrderByRefTranslator createOrderByTranslator() {
+// this.orderByTranslator = new OrderByRefTranslator();
+// return this.orderByTranslator;
+// }
+
+ protected Translator createOrderByTranslator() {
+ return new Translator(ORDER_BY , (EStructuralFeature) null);
+ }
+
+ //placeholder until we support in our model, this allow us
+ //to keep the elements in the proper order
+ protected Translator createMapKeyTranslator() {
+ return new Translator(MAP_KEY , (EStructuralFeature) null);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedNativeQueryTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedNativeQueryTranslator.java
new file mode 100644
index 0000000000..480a67f36b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedNativeQueryTranslator.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class NamedNativeQueryTranslator extends Translator implements OrmXmlMapper
+{
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ private Translator[] children;
+
+ public NamedNativeQueryTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature, NO_STYLE);
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createResultClassTranslator(),
+ createResultSetMappingTranslator(),
+ createQueryTranslator(),
+ createQueryHintTranslator(),
+ };
+ }
+
+ protected Translator createNameTranslator() {
+ return new Translator(NAMED_NATIVE_QUERY__NAME, MAPPINGS_PKG.getIQuery_Name(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createQueryTranslator() {
+ return new Translator(NAMED_NATIVE_QUERY__QUERY, MAPPINGS_PKG.getIQuery_Query(), NO_STYLE);
+ }
+
+ protected Translator createResultClassTranslator() {
+ return new Translator(NAMED_NATIVE_QUERY__RESULT_CLASS, MAPPINGS_PKG.getINamedNativeQuery_ResultClass(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createResultSetMappingTranslator() {
+ return new Translator(NAMED_NATIVE_QUERY__RESULT_SET_MAPPING, MAPPINGS_PKG.getINamedNativeQuery_ResultSetMapping(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createQueryHintTranslator() {
+ return new QueryHintTranslator(NAMED_NATIVE_QUERY__HINT, MAPPINGS_PKG.getIQuery_Hints());
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return OrmFactory.eINSTANCE.createXmlNamedQuery();
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedQueryTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedQueryTranslator.java
new file mode 100644
index 0000000000..44afa3ce69
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedQueryTranslator.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class NamedQueryTranslator extends Translator implements OrmXmlMapper
+{
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ private Translator[] children;
+
+ public NamedQueryTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature, NO_STYLE);
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createQueryTranslator(),
+ createQueryHintTranslator(),
+ };
+ }
+
+ protected Translator createNameTranslator() {
+ return new Translator(NAMED_QUERY__NAME, MAPPINGS_PKG.getIQuery_Name(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createQueryTranslator() {
+ return new Translator(NAMED_QUERY__QUERY, MAPPINGS_PKG.getIQuery_Query(), NO_STYLE);
+ }
+
+ protected Translator createQueryHintTranslator() {
+ return new QueryHintTranslator(NAMED_QUERY__HINT, MAPPINGS_PKG.getIQuery_Hints());
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return OrmFactory.eINSTANCE.createXmlNamedQuery();
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToManyTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToManyTranslator.java
new file mode 100644
index 0000000000..53857d8d6f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToManyTranslator.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.XmlOneToMany;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class OneToManyTranslator extends MultiRelationshipTranslator
+{
+ public OneToManyTranslator() {
+ super(ONE_TO_MANY);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ XmlOneToMany mapping = JPA_CORE_XML_FACTORY.createXmlOneToMany();
+ this.getJoinTableTranslator().setMapping(mapping);
+ //this.getOrderByTranslator().setMapping(mapping);
+ return mapping;
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createTargetEntityTranslator(),
+ createFetchTypeTranslator(),
+ createMappedByTranslator(),
+ createOrderByTranslator(),
+ //getOrderByTranslator(),
+ createMapKeyTranslator(),
+ getJoinTableTranslator(),
+ createCascadeTranslator()
+ };
+ }
+
+ protected Translator createMappedByTranslator() {
+ return new Translator(MAPPED_BY, JpaCoreMappingsPackage.eINSTANCE.getINonOwningMapping_MappedBy(), DOM_ATTRIBUTE);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToOneTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToOneTranslator.java
new file mode 100644
index 0000000000..6954e93e32
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToOneTranslator.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class OneToOneTranslator extends SingleRelationshipTranslator
+{
+ public OneToOneTranslator() {
+ super(ONE_TO_ONE);
+ }
+
+ @Override
+ protected ISingleRelationshipMapping createMapping() {
+ return JPA_CORE_XML_FACTORY.createXmlOneToOne();
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createTargetEntityTranslator(),
+ createFetchTypeTranslator(),
+ createPlaceHolderTranslator(ONE_TO_ONE__PRIMARY_KEY_JOIN_COLUMNS),
+ createJoinColumnsTranslator(),
+ createPlaceHolderTranslator(ONE_TO_ONE__JOIN_TABLE),
+ createCascadeTranslator()
+ };
+ }
+ private Translator createPlaceHolderTranslator(String domNameAndPath) {
+ return new Translator(domNameAndPath, (EStructuralFeature) null);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrderByRefTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrderByRefTranslator.java
new file mode 100644
index 0000000000..a2a282ec02
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrderByRefTranslator.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.OrderingType;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class OrderByRefTranslator extends Translator implements OrmXmlMapper
+{
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+ private static Translator[] children;
+
+ private IMultiRelationshipMapping mapping;
+
+ public OrderByRefTranslator() {
+ super(ORDER_BY, JPA_CORE_XML_PKG.getXmlMultiRelationshipMappingForXml_OrderByForXml());
+ this.fStyle = EMPTY_TAG;
+ }
+
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ private static Translator[] createChildren() {
+ return new Translator[] {
+ new Translator(TEXT_ATTRIBUTE_VALUE, JpaCoreMappingsPackage.eINSTANCE.getIOrderBy_Value())
+ };
+ }
+
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return this.mapping.getOrderBy();
+ }
+
+ protected IMultiRelationshipMapping getMapping() {
+ return this.mapping;
+ }
+
+ void setMapping(IMultiRelationshipMapping mapping) {
+ this.mapping = mapping;
+ }
+
+ @Override
+ public Object convertStringToValue(String strValue, EObject owner) {
+ if (strValue == null) {
+ if (mapping.getOrderBy().getType() == OrderingType.PRIMARY_KEY) {
+ return Boolean.TRUE;
+ }
+ }
+ return super.convertStringToValue(strValue, owner);
+ }
+
+ public boolean isSetMOFValue(EObject emfObject) {
+ boolean isSet = feature != null && emfObject.eIsSet(feature);
+ return isSet && (mapping.getOrderBy().getType() == OrderingType.PRIMARY_KEY);
+ }
+
+ @Override
+ public boolean isManagedByParent() {
+ return (mapping.getOrderBy().getType() == OrderingType.PRIMARY_KEY);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlMapper.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlMapper.java
new file mode 100644
index 0000000000..d45e5b3cec
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlMapper.java
@@ -0,0 +1,168 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+public interface OrmXmlMapper
+{
+ String XML_NS = "xmlns"; //$NON-NLS-1$
+ String XML_NS_XSI = "xmlns:xsi"; //$NON-NLS-1$
+ String XSI_SCHEMA_LOCATION = "xsi:schemaLocation"; //$NON-NLS-1$
+ String XSI_NS_URL = "http://www.w3.org/2001/XMLSchema-instance"; //$NON-NLS-1$
+ String PERSISTENCE_NS_URL = "http://java.sun.com/xml/ns/persistence/orm"; //$NON-NLS-1$
+ String ORM_SCHEMA_LOC_1_0 = "http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"; //$NON-NLS-1$
+
+ String FOO="foo"; //$NON-NLS-1$
+ String BAR="bar"; //$NON-NLS-1$
+
+ String ACCESS = "access"; //$NON-NLS-1$
+ String ATTRIBUTES = "attributes"; //$NON-NLS-1$
+ String ATTRIBUTE_OVERRIDE_NAME = "name"; //$NON-NLS-1$
+ String ATTRIBUTE_OVERRIDE_COLUMN = "column"; //$NON-NLS-1$
+ String ASSOCIATION_OVERRIDE_NAME = "name"; //$NON-NLS-1$
+ String ASSOCIATION_OVERRIDE_JOIN_COLUMN = "join-column"; //$NON-NLS-1$
+ String BASIC = "basic"; //$NON-NLS-1$
+ String BASIC__ENUMERATED = "enumerated"; //$NON-NLS-1$
+
+ String CASCADE = "cascade"; //$NON-NLS-1$
+ String CASCADE_PERSIST = "cascade-persist"; //$NON-NLS-1$
+ String CATALOG = "catalog"; //$NON-NLS-1$
+ String CLASS = "class"; //$NON-NLS-1$
+ String COLUMN = "column"; //$NON-NLS-1$
+ String COLUMN__LENGTH = "length"; //$NON-NLS-1$
+ String COLUMN__PRECISION= "precision"; //$NON-NLS-1$
+ String COLUMN__SCALE= "scale"; //$NON-NLS-1$
+ String COLUMN__COLUMN_DEFINITION= "column-definition"; //$NON-NLS-1$
+ String COLUMN__NULLABLE = "nullable"; //$NON-NLS-1$
+ String COLUMN__UNIQUE = "unique"; //$NON-NLS-1$
+ String COLUMN__UPDATABLE = "updatable"; //$NON-NLS-1$
+ String COLUMN__INSERTABLE = "insertable"; //$NON-NLS-1$
+ String COLUMN__TABLE = "table"; //$NON-NLS-1$
+ String COLUMN__NAME = "name"; //$NON-NLS-1$
+
+ String DISCRIMINATOR_COLUMN__NAME = "name"; //$NON-NLS-1$
+ String DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE = "discriminator-type"; //$NON-NLS-1$
+ String DISCRIMINATOR_COLUMN__COLUMN_DEFINITION = "column-definition"; //$NON-NLS-1$
+ String DISCRIMINATOR_COLUMN__LENGTH = "length"; //$NON-NLS-1$
+ String EMBEDDABLE = "embeddable"; //$NON-NLS-1$
+ String EMBEDDABLE__DESCRIPTION = "description"; //$NON-NLS-1$
+
+ String EMBEDDED = "embedded"; //$NON-NLS-1$
+ String EMBEDDED__ATTRIBUTE_OVERRIDE = "attribute-override"; //$NON-NLS-1$
+ String EMBEDDED_ID = "embedded-id"; //$NON-NLS-1$
+ String EMBEDDED_ID__ATTRIBUTE_OVERRIDE = "attribute-override"; //$NON-NLS-1$
+
+ String ENTITY = "entity"; //$NON-NLS-1$
+ String ENTITY__DESCRIPTION = "description"; //$NON-NLS-1$
+ String ENTITY__TABLE = "table"; //$NON-NLS-1$
+ String ENTITY__PRIMARY_KEY_JOIN_COLUMN = "primary-key-join-column"; //$NON-NLS-1$
+ String ENTITY__ID_CLASS = "id-class"; //$NON-NLS-1$
+ String ENTITY__INHERITANCE = "inheritance"; //$NON-NLS-1$
+ String ENTITY__DISCRIMINATOR_VALUE = "discriminator-value"; //$NON-NLS-1$
+ String ENTITY__DISCRIMINATOR_COLUMN = "discriminator-column"; //$NON-NLS-1$
+ String ENTITY__SEQUENCE_GENERATOR = "sequence-generator"; //$NON-NLS-1$
+ String ENTITY__TABLE_GENERATOR = "table-generator"; //$NON-NLS-1$
+ String ENTITY__NAMED_QUERY = "named-query"; //$NON-NLS-1$
+ String ENTITY__NAMED_NATIVE_QUERY = "named-native-query"; //$NON-NLS-1$
+ String ENTITY__SQL_RESULT_SET_MAPPING = "sql-result-set-mapping"; //$NON-NLS-1$
+ String ENTITY__EXCLUDE_DEFAULT_LISTENERS = "exclude-default-listeners"; //$NON-NLS-1$
+ String ENTITY__EXCLUDE_SUPERCLASS_LISTENERS = "exclude-superclass-listeners"; //$NON-NLS-1$
+ String ENTITY__ENTITY_LISTENERS = "entity-listeners"; //$NON-NLS-1$
+ String ENTITY__PRE_PERSIST = "pre-persist"; //$NON-NLS-1$
+ String ENTITY__POST_PERSIST = "post-persist"; //$NON-NLS-1$
+ String ENTITY__PRE_REMOVE = "pre-remove"; //$NON-NLS-1$
+ String ENTITY__POST_REMOVE = "post-remove"; //$NON-NLS-1$
+ String ENTITY__PRE_UPDATE = "pre-update"; //$NON-NLS-1$
+ String ENTITY__POST_UPDATE = "post-update"; //$NON-NLS-1$
+ String ENTITY__POST_LOAD = "post-load"; //$NON-NLS-1$
+ String ENTITY__ATTRIBUTE_OVERRIDE = "attribute-override"; //$NON-NLS-1$
+ String ENTITY__ASSOCIATION_OVERRIDE = "association-override"; //$NON-NLS-1$
+
+ String ENTITY_MAPPINGS = "entity-mappings"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__DESCRIPTION = "description"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__PERSISTENCE_UNIT_METADATA = "persistence-unit-metadata"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__PACKAGE = "package"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__SCHEMA = "schema"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__CATALOG = "catalog"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__ACCESS = "access"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__SEQUENCE_GENERATOR = "sequence-generator"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__TABLE_GENERATOR = "table-generator"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__NAMED_QUERY = "named-query"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__NAMED_NATIVE_QUERY = "named-native-query"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__SQL_RESULT_SET_MAPPING = "sql-result-set-mapping"; //$NON-NLS-1$
+
+ String FETCH = "fetch"; //$NON-NLS-1$
+ String JOIN_COLUMN = "join-column"; //$NON-NLS-1$
+ String JOIN_TABLE = "join-table"; //$NON-NLS-1$
+ String ID = "id"; //$NON-NLS-1$
+ String ID__TEMPORAL = "temporal"; //$NON-NLS-1$
+ String GENERATED_VALUE = "generated-value"; //$NON-NLS-1$
+ String GENERATED_VALUE__STRATEGY = "strategy"; //$NON-NLS-1$
+ String GENERATED_VALUE__GENERATOR = "generator"; //$NON-NLS-1$
+ String GENERATOR__NAME = "name"; //$NON-NLS-1$
+ String GENERATOR__INITIAL_VALUE = "initial-value"; //$NON-NLS-1$
+ String GENERATOR__ALLOCATION_SIZE = "allocation-size"; //$NON-NLS-1$
+
+ String INVERSE_JOIN_COLUMN = "inverse-join-column"; //$NON-NLS-1$
+ String LOB = "lob"; //$NON-NLS-1$
+ String MANY_TO_MANY = "many-to-many"; //$NON-NLS-1$
+ String MANY_TO_ONE = "many-to-one"; //$NON-NLS-1$
+ String MAP_KEY = "map-key"; //$NON-NLS-1$
+ String MAPPED_BY = "mapped-by"; //$NON-NLS-1$
+ String MAPPED_SUPERCLASS = "mapped-superclass"; //$NON-NLS-1$
+ String METADATA_COMPLETE = "metadata-complete"; //$NON-NLS-1$
+ String NAME = "name"; //$NON-NLS-1$
+
+ String NAMED_NATIVE_QUERY = "named-native-query"; //$NON-NLS-1$
+ String NAMED_NATIVE_QUERY__NAME = "name"; //$NON-NLS-1$
+ String NAMED_NATIVE_QUERY__QUERY = "query"; //$NON-NLS-1$
+ String NAMED_NATIVE_QUERY__RESULT_CLASS = "result-class"; //$NON-NLS-1$
+ String NAMED_NATIVE_QUERY__RESULT_SET_MAPPING = "result-set-mapping"; //$NON-NLS-1$
+ String NAMED_NATIVE_QUERY__HINT = "hint"; //$NON-NLS-1$
+
+ String NAMED_QUERY = "named-query"; //$NON-NLS-1$
+ String NAMED_QUERY__NAME = "name"; //$NON-NLS-1$
+ String NAMED_QUERY__QUERY = "query"; //$NON-NLS-1$
+ String NAMED_QUERY__HINT = "hint"; //$NON-NLS-1$
+
+ String QUERY_HINT__NAME = "name"; //$NON-NLS-1$
+ String QUERY_HINT__VALUE = "value"; //$NON-NLS-1$
+
+ String ONE_TO_MANY = "one-to-many"; //$NON-NLS-1$
+ String ONE_TO_ONE = "one-to-one"; //$NON-NLS-1$
+ String ONE_TO_ONE__PRIMARY_KEY_JOIN_COLUMNS = "primary-key-join-columns"; //$NON-NLS-1$
+ String ONE_TO_ONE__JOIN_TABLE = "join-table"; //$NON-NLS-1$
+
+ String OPTIONAL = "optional"; //$NON-NLS-1$
+ String ORDER_BY = "order-by"; //$NON-NLS-1$
+ String PACKAGE="package"; //$NON-NLS-1$
+ String PERSISTENCE_UNIT_DEFAULTS="persistence-unit-defaults"; //$NON-NLS-1$
+ String PERSISTENCE_UNIT_DEFAULTS__ENTITY_LISTENERS="entity-listeners"; //$NON-NLS-1$
+
+ String PERSISTENCE_UNIT_METADATA="persistence-unit-metadata"; //$NON-NLS-1$
+ String REFERENCED_COLUMN_NAME="referenced-column-name"; //$NON-NLS-1$
+ String SCHEMA="schema"; //$NON-NLS-1$
+ String SECONDARY_TABLE = "secondary-table"; //$NON-NLS-1$
+ String SECONDARY_TABLE__PRIMARY_KEY_JOIN_COLUMN = "primary-key-join-column"; //$NON-NLS-1$
+ String SEQUENCE_GENERATOR = "sequence-generator"; //$NON-NLS-1$
+ String SEQUENCE_GENERATOR__SEQUENCE_NAME = "sequence-name"; //$NON-NLS-1$
+ String STRATEGY = "strategy"; //$NON-NLS-1$
+ String TABLE_GENERATOR = "table-generator"; //$NON-NLS-1$
+ String TABLE_GENERATOR__TABLE = "table"; //$NON-NLS-1$
+ String TABLE_GENERATOR__CATALOG = "catalog"; //$NON-NLS-1$
+ String TABLE_GENERATOR__SCHEMA = "schema"; //$NON-NLS-1$
+ String TABLE_GENERATOR__PK_COLUMN_NAME = "pk-column-name"; //$NON-NLS-1$
+ String TABLE_GENERATOR__VALUE_COLUMN_NAME = "value-column-name"; //$NON-NLS-1$
+ String TABLE_GENERATOR__PK_COLUMN_VALUE = "pk-column-value"; //$NON-NLS-1$
+ String TARGET_ENTITY = "target-entity"; //$NON-NLS-1$
+ String TEMPORAL = "temporal"; //$NON-NLS-1$
+ String TRANSIENT = "transient"; //$NON-NLS-1$
+ String UNIQUE_CONSTRAINT = "unique-constraint"; //$NON-NLS-1$
+ String VERSION = "version"; //$NON-NLS-1$
+ String XML_MAPPING_METADATA_COMPLETE = "xml-mapping-metadata-complete"; //$NON-NLS-1$
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceFactory.java
new file mode 100644
index 0000000000..684c7d411c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceFactory.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.wst.common.componentcore.internal.impl.WTPResourceFactoryRegistry;
+import org.eclipse.wst.common.internal.emf.resource.Renderer;
+import org.eclipse.wst.common.internal.emf.resource.RendererFactory;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorResource;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorResourceFactory;
+import org.eclipse.wst.xml.core.internal.emf2xml.EMF2DOMSSERendererFactory;
+
+public class OrmXmlResourceFactory extends TranslatorResourceFactory
+{
+ public static final String ORM_XML_FILE_NAME = "orm.xml"; //$NON-NLS-1$
+ public static final URI ORM_XML_FILE_URI = URI.createURI(ORM_XML_FILE_NAME); //$NON-NLS-1$
+
+ /**
+ * Register myself with the Resource.Factory.Registry
+ */
+ public static void registerWith(RendererFactory rendererFactory) {
+ WTPResourceFactoryRegistry.INSTANCE.registerLastFileSegment(ORM_XML_FILE_NAME, new OrmXmlResourceFactory(rendererFactory));
+ }
+
+ /**
+ * Register myself using the default renderer factory.
+ * @see #registerWith(RendererFactory)
+ */
+ public static void register() {
+ registerWith(EMF2DOMSSERendererFactory.INSTANCE);
+ }
+
+ public static Resource.Factory getRegisteredFactory() {
+ return WTPResourceFactoryRegistry.INSTANCE.getFactory(ORM_XML_FILE_URI);
+ }
+
+
+ public OrmXmlResourceFactory(RendererFactory aRendererFactory, boolean listeningForUpdates) {
+ super(aRendererFactory, listeningForUpdates);
+ }
+
+ public OrmXmlResourceFactory(RendererFactory aRendererFactory) {
+ super(aRendererFactory);
+ }
+
+ /**
+ * @see TranslatorResourceFactory#createResource(URI, Renderer)
+ */
+ protected TranslatorResource createResource(URI uri, Renderer renderer) {
+ return new OrmXmlResourceImpl(uri, renderer);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceImpl.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceImpl.java
new file mode 100644
index 0000000000..517725393b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceImpl.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal;
+import org.eclipse.jpt.core.internal.content.orm.OrmXmlResource;
+import org.eclipse.wst.common.internal.emf.resource.Renderer;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorResource;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorResourceImpl;
+
+public class OrmXmlResourceImpl extends TranslatorResourceImpl
+ implements OrmXmlResource
+{
+
+ private Translator rootTranslator;
+
+ public OrmXmlResourceImpl(Renderer aRenderer) {
+ super(aRenderer);
+ }
+
+ public OrmXmlResourceImpl(URI uri, Renderer aRenderer) {
+ super(uri, aRenderer);
+ }
+
+ /**
+ * @see TranslatorResourceImpl#getDefaultPublicId()
+ */
+ protected String getDefaultPublicId() {
+ return null;
+ // only applicable for DTD-based files
+ }
+
+ /**
+ * @see TranslatorResourceImpl#getDefaultSystemId()
+ */
+ protected String getDefaultSystemId() {
+ return null;
+ // only applicable for DTD-based files
+ }
+
+ /**
+ * @see TranslatorResourceImpl#getDefaultVersionId()
+ */
+ protected int getDefaultVersionID() {
+ return 10;
+ // this seems to be the default version of the spec for this doc
+ // and the id 10 maps to the version 1.0
+ }
+
+ /**
+ * @see TranslatorResource#getDoctype()
+ */
+ public String getDoctype() {
+ return null;
+ // only applicable for DTD-based files
+ }
+
+ /**
+ * @see TranslatorResource#getRootTranslator()
+ */
+ public Translator getRootTranslator() {
+ if (this.rootTranslator == null) {
+ this.rootTranslator = buildRootTranslator();
+ }
+ return this.rootTranslator;
+ }
+
+ protected Translator buildRootTranslator() {
+ return new EntityMappingsTranslator();
+ }
+
+ /**
+ * @see OrmXmlResource#getXmlFileContent()
+ */
+ public EntityMappingsInternal getXmlFileContent() {
+ return (EntityMappingsInternal) getRootObject();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitDefaultsTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitDefaultsTranslator.java
new file mode 100644
index 0000000000..b21860381d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitDefaultsTranslator.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class PersistenceUnitDefaultsTranslator extends Translator implements OrmXmlMapper
+{
+ private Translator[] children;
+
+ private PersistenceUnitMetadata persistenceUnitMetadata;
+
+ public PersistenceUnitDefaultsTranslator() {
+ super(PERSISTENCE_UNIT_DEFAULTS, OrmPackage.eINSTANCE.getPersistenceUnitMetadataForXml_PersistenceUnitDefaultsForXml());
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (this.children == null) {
+ this.children = createChildren();
+ }
+ return this.children;
+ }
+
+ private Translator[] createChildren() {
+ return new Translator[] {
+ createSchemaTranslator(),
+ createCatalogTranslator(),
+ createAccessTranslator(),
+ createCascadePersistTranslator(),
+ createPlaceHolderTranslator(PERSISTENCE_UNIT_DEFAULTS__ENTITY_LISTENERS),
+ };
+ }
+
+ private Translator createPlaceHolderTranslator(String domNameAndPath) {
+ return new Translator(domNameAndPath, (EStructuralFeature) null);
+ }
+
+ private Translator createSchemaTranslator() {
+ return new Translator(SCHEMA, OrmPackage.eINSTANCE.getPersistenceUnitDefaultsForXml_SchemaForXml());
+ }
+
+ private Translator createCatalogTranslator() {
+ return new Translator(CATALOG, OrmPackage.eINSTANCE.getPersistenceUnitDefaultsForXml_CatalogForXml());
+ }
+
+ private Translator createAccessTranslator() {
+ return new AccessTypeElementTranslator(ACCESS, OrmPackage.eINSTANCE.getPersistenceUnitDefaultsForXml_AccessForXml(), NO_STYLE);
+ }
+
+ private Translator createCascadePersistTranslator() {
+ return new EmptyTagBooleanTranslator(CASCADE_PERSIST, OrmPackage.eINSTANCE.getPersistenceUnitDefaultsForXml_CascadePersistForXml());
+ }
+
+ @Override
+ //This is called when the persistence-unit-defaults tag is added
+ //by hand through the xml editor. In this situation PersistenceUnitMetaData.persistenceUnitDefaultsForXml
+ //is null and we don't want to create a new PersistenceUnitDefaults object, we just want to
+ //reuse the one already created by our internal model
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return getPersistenceUnitMetadata().getPersistenceUnitDefaults();
+ }
+
+ private PersistenceUnitMetadata getPersistenceUnitMetadata() {
+ return this.persistenceUnitMetadata;
+ }
+
+ void setPersistenceUnitMetadata(PersistenceUnitMetadata persistenceUnitMetadata) {
+ this.persistenceUnitMetadata = persistenceUnitMetadata;
+ }
+
+ @Override
+ //if my object has containtment = true then the translators clear out all adapters
+ //even the ones it didn't add. if i have containtment = false then the translators
+ //are not removing the adapter they added
+ // the shared flag gets set when containment=true. isShared() is called in
+ //EMF2DOMAdapterImpl.primUpdateMOFFeature which then calls removeMOFValue() if
+ //isShared() returns false. removeMOFValue() removes the EMF2DOMSSEAdapter
+ //and then since isContainment() = false the call to ExtendedEcoreUtil.unload(value);
+ // does not occur. In that method the adapters are all cleared out thus my UI
+ //no longer has listeners on the model. Talk to KFM about this and maybe
+ //she'll remember the details. \
+
+ //Need to enter a bug against the translators as well. Now one other
+ //adapter is not being removed, the AnnotationsAdapter, this is being added by the translators
+ //and never removed. not sure
+ public boolean isShared() {
+ return false;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitMetadataTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitMetadataTranslator.java
new file mode 100644
index 0000000000..16deb48060
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitMetadataTranslator.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.EntityMappings;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class PersistenceUnitMetadataTranslator extends Translator implements OrmXmlMapper
+{
+ private Translator[] children;
+
+ private PersistenceUnitDefaultsTranslator persistenceUnitDefaultsTranslator;
+ private EntityMappings entityMappings;
+
+ public PersistenceUnitMetadataTranslator() {
+ super(PERSISTENCE_UNIT_METADATA, OrmPackage.eINSTANCE.getEntityMappingsForXml_PersistenceUnitMetadataForXml());
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ private Translator[] createChildren() {
+ return new Translator[] {
+ createXmlMappingMetadataCompleteTranslator(),
+ createPersistenceUnitDefaultsTranslator(),
+ };
+ }
+
+ private Translator createXmlMappingMetadataCompleteTranslator() {
+ return new EmptyTagBooleanTranslator(XML_MAPPING_METADATA_COMPLETE, OrmPackage.eINSTANCE.getPersistenceUnitMetadataForXml_XmlMappingMetadataCompleteForXml());
+ }
+
+ private Translator createPersistenceUnitDefaultsTranslator() {
+ this.persistenceUnitDefaultsTranslator = new PersistenceUnitDefaultsTranslator();
+ return this.persistenceUnitDefaultsTranslator;
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ PersistenceUnitMetadata persistenceUnitMetadata = getEntityMappings().getPersistenceUnitMetadata();
+ this.persistenceUnitDefaultsTranslator.setPersistenceUnitMetadata(persistenceUnitMetadata);
+ return persistenceUnitMetadata;
+ }
+
+ private EntityMappings getEntityMappings() {
+ return this.entityMappings;
+ }
+
+ public void setEntityMappings(EntityMappings entityMappings) {
+ this.entityMappings = entityMappings;
+ }
+
+ @Override
+ //if my object has containtment = true then the translators clear out all adapters
+ //even the ones it didn't add. if i have containtment = false then the translators
+ //are not removing the adapter they added
+ // the shared flag gets set when containment=true. isShared() is called in
+ //EMF2DOMAdapterImpl.primUpdateMOFFeature which then calls removeMOFValue() if
+ //isShared() returns false. removeMOFValue() removes the EMF2DOMSSEAdapter
+ //and then since isContainment() = false the call to ExtendedEcoreUtil.unload(value);
+ // does not occur. In that method the adapters are all cleared out thus my UI
+ //no longer has listeners on the model. Talk to KFM about this and maybe
+ //she'll remember the details. \
+
+ //Need to enter a bug against the translators as well. Now one other
+ //adapter is not being removed, the AnnotationsAdapter, this is being added by the translators
+ //and never removed. not sure
+ public boolean isShared() {
+ return false;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PrimaryKeyJoinColumnTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PrimaryKeyJoinColumnTranslator.java
new file mode 100644
index 0000000000..74a14c07a8
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PrimaryKeyJoinColumnTranslator.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class PrimaryKeyJoinColumnTranslator extends AbstractColumnTranslator
+ implements OrmXmlMapper
+{
+ private PrimaryKeyJoinColumnBuilder joinColumnBuilder;
+
+ public PrimaryKeyJoinColumnTranslator(String domNameAndPath, EStructuralFeature aFeature, PrimaryKeyJoinColumnBuilder joinColumnBuilder) {
+ super(domNameAndPath, aFeature);
+ this.joinColumnBuilder = joinColumnBuilder;
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return joinColumnBuilder.createPrimaryKeyJoinColumn();
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createReferencedColumnNameTranslator(),
+ createColumnDefinitionTranslator(),
+ };
+ }
+
+ protected Translator createReferencedColumnNameTranslator() {
+ return new Translator(REFERENCED_COLUMN_NAME, JPA_CORE_XML_PKG.getXmlPrimaryKeyJoinColumn_SpecifiedReferencedColumnNameForXml(), DOM_ATTRIBUTE);
+ }
+
+ public interface PrimaryKeyJoinColumnBuilder {
+ IPrimaryKeyJoinColumn createPrimaryKeyJoinColumn();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/QueryHintTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/QueryHintTranslator.java
new file mode 100644
index 0000000000..502440429f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/QueryHintTranslator.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class QueryHintTranslator extends Translator implements OrmXmlMapper
+{
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ private Translator[] children;
+
+ public QueryHintTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature, NO_STYLE);
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createValueTranslator(),
+ };
+ }
+
+ protected Translator createNameTranslator() {
+ return new Translator(QUERY_HINT__NAME, MAPPINGS_PKG.getIQueryHint_Name(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createValueTranslator() {
+ return new Translator(QUERY_HINT__VALUE, MAPPINGS_PKG.getIQueryHint_Value(), DOM_ATTRIBUTE);
+ }
+
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return OrmFactory.eINSTANCE.createXmlQueryHint();
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/RelationshipTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/RelationshipTranslator.java
new file mode 100644
index 0000000000..bddf4eb67a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/RelationshipTranslator.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class RelationshipTranslator extends AttributeMappingTranslator
+{
+ public RelationshipTranslator(String domNameAndPath) {
+ super(domNameAndPath, NO_STYLE);
+ }
+
+ protected Translator createTargetEntityTranslator() {
+ return new Translator(TARGET_ENTITY, JpaCoreMappingsPackage.eINSTANCE.getIRelationshipMapping_SpecifiedTargetEntity(), DOM_ATTRIBUTE);
+ }
+
+ //placeholder until we support in our model, this allow us
+ //to keep the elements in the proper order
+ protected Translator createCascadeTranslator() {
+ return new Translator(CASCADE , (EStructuralFeature) null);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SecondaryTableTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SecondaryTableTranslator.java
new file mode 100644
index 0000000000..169dc17ef3
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SecondaryTableTranslator.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class SecondaryTableTranslator extends AbstractTableTranslator
+{
+
+ private IEntity entity;
+
+ public SecondaryTableTranslator() {
+ super(SECONDARY_TABLE, JPA_CORE_XML_PKG.getXmlEntity_SpecifiedSecondaryTables());
+ }
+
+
+ protected IEntity getEntity() {
+ return this.entity;
+ }
+
+ void setEntity(IEntity entity) {
+ this.entity = entity;
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return getEntity().createSecondaryTable(0);
+ }
+
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createCatalogTranslator(),
+ createSchemaTranslator(),
+ createPrimaryKeyJoinColumnTranslator(),
+ createUniqueConstraintTranslator(),
+ };
+ }
+
+ //placeholder until we support primaryKeyJoinColumns
+ protected Translator createPrimaryKeyJoinColumnTranslator() {
+ return new Translator(SECONDARY_TABLE__PRIMARY_KEY_JOIN_COLUMN, (EStructuralFeature) null);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SequenceGeneratorTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SequenceGeneratorTranslator.java
new file mode 100644
index 0000000000..e9b3d69c4a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SequenceGeneratorTranslator.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class SequenceGeneratorTranslator extends GeneratorTranslator
+{
+
+ public SequenceGeneratorTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature, NO_STYLE);
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createSequenceNameTranslator(),
+ createInitialValueTranslator(),
+ createAllocationSizeTranslator(),
+ };
+ }
+
+ protected Translator createSequenceNameTranslator() {
+ return new Translator(SEQUENCE_GENERATOR__SEQUENCE_NAME, MAPPINGS_PKG.getISequenceGenerator_SpecifiedSequenceName(), DOM_ATTRIBUTE);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return OrmFactory.eINSTANCE.createXmlSequenceGenerator();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SingleRelationshipTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SingleRelationshipTranslator.java
new file mode 100644
index 0000000000..97851092f0
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SingleRelationshipTranslator.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.resource.JoinColumnTranslator.JoinColumnBuilder;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class SingleRelationshipTranslator extends RelationshipTranslator
+{
+ private ISingleRelationshipMapping singleRelationshipMapping;
+
+ public SingleRelationshipTranslator(String domNameAndPath) {
+ super(domNameAndPath);
+ }
+
+ @Override
+ public final EObject createEMFObject(String nodeName, String readAheadName) {
+ this.singleRelationshipMapping = createMapping();
+ return this.singleRelationshipMapping;
+ }
+
+ protected abstract ISingleRelationshipMapping createMapping();
+
+ protected Translator createFetchTypeTranslator() {
+ return new EnumeratorTranslator(FETCH, JpaCoreMappingsPackage.eINSTANCE.getISingleRelationshipMapping_Fetch(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createJoinColumnsTranslator() {
+ return new JoinColumnTranslator(
+ JOIN_COLUMN,
+ JpaCoreMappingsPackage.eINSTANCE.getISingleRelationshipMapping_SpecifiedJoinColumns(),
+ buildJoinColumnsCreator());
+ }
+
+ private JoinColumnBuilder buildJoinColumnsCreator() {
+ return new JoinColumnBuilder() {
+ public IJoinColumn createJoinColumn() {
+ return OrmFactory.eINSTANCE.createXmlJoinColumn(new ISingleRelationshipMapping.JoinColumnOwner(singleRelationshipMapping));
+ }
+ };
+ }
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableGeneratorTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableGeneratorTranslator.java
new file mode 100644
index 0000000000..ab1e478805
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableGeneratorTranslator.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class TableGeneratorTranslator extends GeneratorTranslator
+{
+
+ public TableGeneratorTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature, NO_STYLE);
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createTableTranslator(),
+ createCatalogTranslator(),
+ createSchemaTranslator(),
+ createPkColumnNameTranslator(),
+ createValueColumnNameTranslator(),
+ createPkColumnValueTranslator(),
+ createInitialValueTranslator(),
+ createAllocationSizeTranslator(),
+ };
+ }
+
+ protected Translator createTableTranslator() {
+ return new Translator(TABLE_GENERATOR__TABLE, MAPPINGS_PKG.getITableGenerator_SpecifiedTable(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createCatalogTranslator() {
+ return new Translator(TABLE_GENERATOR__CATALOG, MAPPINGS_PKG.getITableGenerator_SpecifiedCatalog(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createSchemaTranslator() {
+ return new Translator(TABLE_GENERATOR__SCHEMA, MAPPINGS_PKG.getITableGenerator_SpecifiedSchema(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createPkColumnNameTranslator() {
+ return new Translator(TABLE_GENERATOR__PK_COLUMN_NAME, MAPPINGS_PKG.getITableGenerator_SpecifiedPkColumnName(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createValueColumnNameTranslator() {
+ return new Translator(TABLE_GENERATOR__VALUE_COLUMN_NAME, MAPPINGS_PKG.getITableGenerator_SpecifiedValueColumnName(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createPkColumnValueTranslator() {
+ return new Translator(TABLE_GENERATOR__PK_COLUMN_VALUE, MAPPINGS_PKG.getITableGenerator_SpecifiedPkColumnValue(), DOM_ATTRIBUTE);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return OrmFactory.eINSTANCE.createXmlTableGenerator();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableTranslator.java
new file mode 100644
index 0000000000..2ee679f310
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableTranslator.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class TableTranslator extends AbstractTableTranslator
+ implements OrmXmlMapper
+{
+
+ private IEntity entity;
+
+
+ public TableTranslator() {
+ super(ENTITY__TABLE, JPA_CORE_XML_PKG.getXmlEntityForXml_TableForXml());
+ }
+
+ protected IEntity getEntity() {
+ return this.entity;
+ }
+
+ void setEntity(IEntity entity) {
+ this.entity = entity;
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return getEntity().getTable();
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createCatalogTranslator(),
+ createSchemaTranslator(),
+ createUniqueConstraintTranslator(),
+ };
+ }
+
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TemporalTypeElementTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TemporalTypeElementTranslator.java
new file mode 100644
index 0000000000..2a6a50a61b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TemporalTypeElementTranslator.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import java.util.Collections;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.TemporalType;
+
+/**
+ * There is a bug in the translator framework that causes
+ * enumerators in xml elements and enumerators in xml attributes
+ * to be treated differently. When the enumerator is an attribute
+ * setting the model to the default causes the attribute to be removed.
+ * With an element is causes the default literal to be placed in
+ * the tag.
+ *
+ * The problem is wrapped up in the emf unsettable attribute as well.
+ * For attributes the eIsSet method returns false for the default value
+ * For elements the eIsSet method returns true for the default value.
+ * I don't want to have to use the unsettable option in emf since that would
+ * require that I call different api. I am not sure yet what the bug is in
+ * the translator, so I have entered one ~KFM
+ */
+public class TemporalTypeElementTranslator extends EnumeratorTranslator
+{
+
+ public TemporalTypeElementTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) {
+ super(domNameAndPath, aFeature, style);
+ }
+
+ @Override
+ public Object getMOFValue(EObject mofObject) {
+ TemporalType type = (TemporalType) super.getMOFValue(mofObject);
+ if (type == TemporalType.NULL) {
+ return null;
+ }
+ return type;
+ }
+
+ @Override
+ public List getMOFChildren(EObject mofObject) {
+ List result = super.getMOFChildren(mofObject);
+ if(result != null && result.size() > 0) {
+ TemporalType type = (TemporalType) result.get(0);
+ if(type.getValue() == TemporalType.NULL_VALUE)
+ result = Collections.EMPTY_LIST;
+ }
+ return result;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TransientTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TransientTranslator.java
new file mode 100644
index 0000000000..461c9babf1
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TransientTranslator.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class TransientTranslator extends AttributeMappingTranslator
+{
+ public TransientTranslator() {
+ super(TRANSIENT, END_TAG_NO_INDENT);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return JPA_CORE_XML_FACTORY.createXmlTransient();
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ };
+ }
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeJavaClassTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeJavaClassTranslator.java
new file mode 100644
index 0000000000..cd392a6556
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeJavaClassTranslator.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 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.resource;
+
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.wst.common.internal.emf.resource.DependencyTranslator;
+
+public class TypeJavaClassTranslator extends DependencyTranslator
+ implements OrmXmlMapper
+{
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ public TypeJavaClassTranslator() {
+ super(CLASS, JPA_CORE_XML_PKG.getXmlPersistentType_Class(),
+ JPA_CORE_XML_PKG.getXmlTypeMapping_PersistentType());
+ fStyle = DOM_ATTRIBUTE;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingTranslator.java
new file mode 100644
index 0000000000..5b582c3b2b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingTranslator.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class TypeMappingTranslator extends Translator
+ implements OrmXmlMapper
+{
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+ protected static final OrmFactory JPA_CORE_XML_FACTORY =
+ OrmFactory.eINSTANCE;
+
+
+ private Translator[] children;
+
+
+ public TypeMappingTranslator(String domNameAndPath) {
+ super(domNameAndPath, JPA_CORE_XML_PKG.getEntityMappingsInternal_TypeMappings());
+ dependencyFeature = JPA_CORE_XML_PKG.getXmlTypeMapping_PersistentType();
+ }
+
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ protected abstract Translator[] createChildren();
+
+ protected Translator createJavaClassTranslator() {
+ return new TypeJavaClassTranslator();
+ }
+
+ protected Translator createMetadataCompleteTranslator() {
+ return new BooleanEnumeratorTranslator(METADATA_COMPLETE, JPA_CORE_XML_PKG.getXmlTypeMapping_MetadataComplete(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createAccessTypeTranslator() {
+ return new EnumeratorTranslator(ACCESS, JPA_CORE_XML_PKG.getXmlTypeMapping_SpecifiedAccess(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createPersistentAttributesTranslator() {
+ return new AttributeMappingsTranslator();
+ }
+
+
+ protected Translator createPlaceHolderTranslator(String domNameAndPath) {
+ return new Translator(domNameAndPath, (EStructuralFeature) null);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingsTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingsTranslator.java
new file mode 100644
index 0000000000..b08ff5e9cc
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingsTranslator.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 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.resource;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.wst.common.internal.emf.resource.MultiObjectTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class TypeMappingsTranslator extends MultiObjectTranslator
+ implements OrmXmlMapper
+{
+ public static final String ENTITY_MAPPINGS_PATH =
+ MAPPED_SUPERCLASS + ',' + ENTITY + ',' + EMBEDDABLE;
+
+ private static final OrmPackage JPA_CORE_XML_PKG = OrmPackage.eINSTANCE;
+
+ private Map<EObject, Translator> translatorMap;
+
+ public TypeMappingsTranslator() {
+ super(ENTITY_MAPPINGS_PATH, JPA_CORE_XML_PKG.getEntityMappingsInternal_TypeMappings());
+ this.translatorMap = new HashMap<EObject, Translator>();
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ Translator translator = getDelegateFor(nodeName, readAheadName);
+ EObject eObject = translator.createEMFObject(nodeName, readAheadName);
+ this.translatorMap.put(eObject, translator);
+ return eObject;
+ }
+ /* (non-Javadoc)
+ * @see MultiObjectTranslator#getDelegateFor(EObject)
+ */
+ @Override
+ public Translator getDelegateFor(EObject o) {
+ Translator translator = translatorMap.get(o);
+ if (translator != null) {
+ return translator;
+ }
+
+ switch (o.eClass().getClassifierID()) {
+ case OrmPackage.XML_ENTITY_INTERNAL :
+ return new EntityTranslator();
+ case OrmPackage.XML_MAPPED_SUPERCLASS:
+ return new MappedSuperclassTranslator();
+ case OrmPackage.XML_EMBEDDABLE:
+ return new EmbeddableTranslator();
+ }
+
+ return null;
+ }
+
+ @Override
+ public Translator getDelegateFor(String domName, String readAheadName) {
+ if (domName.equals(ENTITY)) {
+ return new EntityTranslator();
+ }
+ if (domName.equals(MAPPED_SUPERCLASS)) {
+ return new MappedSuperclassTranslator();
+ }
+ if (domName.equals(EMBEDDABLE)) {
+ return new EmbeddableTranslator();
+ }
+ throw new IllegalStateException("Illegal dom name: " + domName); //$NON-NLS-1$
+ }
+
+ @Override
+ public boolean isDependencyParent() {
+ return true;
+ }
+
+ @Override
+ public EObject basicGetDependencyObject(EObject parent) {
+ Translator delegate = getDelegateFor(parent);
+
+ if (delegate != null) {
+ return delegate.basicGetDependencyObject(parent);
+ }
+ else {
+ return super.basicGetDependencyObject(parent);
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/VersionTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/VersionTranslator.java
new file mode 100644
index 0000000000..b34af52439
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/VersionTranslator.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * 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.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class VersionTranslator extends AttributeMappingTranslator
+{
+ public VersionTranslator() {
+ super(VERSION, NO_STYLE);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return JPA_CORE_XML_FACTORY.createXmlVersion();
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ };
+ }
+
+
+}

Back to the top