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/TemporalTypeElementTranslator.java')
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TemporalTypeElementTranslator.java58
1 files changed, 58 insertions, 0 deletions
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;
+ }
+}

Back to the top