Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkmoore2007-07-19 15:08:01 +0000
committerkmoore2007-07-19 15:08:01 +0000
commit398a2ff209301bc006328eda3f7b88c69d66bc72 (patch)
tree7853ae5df1baa24b83bb0e6a4b7af67c83bf794d
parentd1b5566b23879759a2f1583712e7b6d4c550233c (diff)
downloadwebtools.dali-398a2ff209301bc006328eda3f7b88c69d66bc72.tar.gz
webtools.dali-398a2ff209301bc006328eda3f7b88c69d66bc72.tar.xz
webtools.dali-398a2ff209301bc006328eda3f7b88c69d66bc72.zip
moved attributeMappingUiProviders to IJpaPlatformUi
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentAttribute.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java11
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentAttribute.java12
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/BaseJpaPlatformUi.java65
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/IJpaPlatformUi.java14
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/PersistentAttributeDetailsPage.java110
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/details/JavaPersistentAttributeDetailsPage.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/xml/details/XmlPersistentAttributeDetailsPage.java61
8 files changed, 206 insertions, 132 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentAttribute.java
index 88bbd80811..a9c3a8e268 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentAttribute.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentAttribute.java
@@ -9,7 +9,6 @@
******************************************************************************/
package org.eclipse.jpt.core.internal;
-import java.util.Iterator;
import org.eclipse.jpt.core.internal.jdtutility.Attribute;
/**
@@ -85,11 +84,6 @@ public interface IPersistentAttribute extends IJpaContentNode
void setSpecifiedMappingKey(String key);
/**
- * Return all the attribute's mapping keys.
- */
- Iterator<String> candidateMappingKeys();
-
- /**
* Return the attribute's Java attribute.
*/
Attribute getAttribute();
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java
index 073e2d83f1..977a741ac4 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java
@@ -40,8 +40,6 @@ import org.eclipse.jpt.core.internal.jdtutility.Attribute;
import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
import org.eclipse.jpt.core.internal.platform.DefaultsContext;
import org.eclipse.jpt.utility.internal.Filter;
-import org.eclipse.jpt.utility.internal.iterators.ArrayIterator;
-import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
/**
* <!-- begin-user-doc -->
@@ -499,15 +497,6 @@ public class JavaPersistentAttribute extends JavaEObject
throw new IllegalArgumentException("Unsupported attribute mapping key: " + attributeMappingKey);
}
- public Iterator<String> candidateMappingKeys() {
- return new TransformationIterator<IJavaAttributeMappingProvider, String>(new ArrayIterator<IJavaAttributeMappingProvider>(this.attributeMappingProviders)) {
- @Override
- protected String transform(IJavaAttributeMappingProvider provider) {
- return provider.key();
- }
- };
- }
-
public Object getId() {
return IJavaContentNodes.PERSISTENT_ATTRIBUTE_ID;
}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentAttribute.java
index b17c58319f..2bf4687338 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentAttribute.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentAttribute.java
@@ -24,7 +24,6 @@ import org.eclipse.jpt.core.internal.XmlEObject;
import org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute;
import org.eclipse.jpt.core.internal.content.java.JavaPersistentType;
import org.eclipse.jpt.core.internal.jdtutility.Attribute;
-import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
/**
* <!-- begin-user-doc -->
@@ -285,15 +284,6 @@ public class XmlPersistentAttribute extends XmlEObject
return IXmlContentNodes.PERSISTENT_ATTRIBUTE_ID;
}
- public Iterator<String> candidateMappingKeys() {
- return new TransformationIterator<IXmlAttributeMappingProvider, String>(this.attributeMappingProviders.iterator()) {
- @Override
- protected String transform(IXmlAttributeMappingProvider provider) {
- return provider.key();
- }
- };
- }
-
public Collection<IXmlAttributeMappingProvider> attributeMappingProviders() {
return this.attributeMappingProviders;
}
@@ -315,7 +305,7 @@ public class XmlPersistentAttribute extends XmlEObject
}
public Attribute getAttribute() {
- JavaPersistentType javaPersistentType = ((XmlPersistentType) typeMapping().getPersistentType()).findJavaPersistentType();
+ JavaPersistentType javaPersistentType = typeMapping().getPersistentType().findJavaPersistentType();
if (javaPersistentType == null) {
return null;
}
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/BaseJpaPlatformUi.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/BaseJpaPlatformUi.java
index ec679d6217..3bb3643f44 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/BaseJpaPlatformUi.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/BaseJpaPlatformUi.java
@@ -17,12 +17,25 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jpt.core.internal.IJpaProject;
import org.eclipse.jpt.ui.internal.details.IJpaDetailsProvider;
import org.eclipse.jpt.ui.internal.generic.EntitiesGenerator;
+import org.eclipse.jpt.ui.internal.java.details.IAttributeMappingUiProvider;
import org.eclipse.jpt.ui.internal.java.details.ITypeMappingUiProvider;
import org.eclipse.jpt.ui.internal.java.details.JavaDetailsProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.BasicMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.DefaultBasicMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.DefaultEmbeddedMappingUiProvider;
import org.eclipse.jpt.ui.internal.java.mappings.properties.EmbeddableUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.EmbeddedIdMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.EmbeddedMappingUiProvider;
import org.eclipse.jpt.ui.internal.java.mappings.properties.EntityUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.IdMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.ManyToManyMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.ManyToOneMappingUiProvider;
import org.eclipse.jpt.ui.internal.java.mappings.properties.MappedSuperclassUiProvider;
import org.eclipse.jpt.ui.internal.java.mappings.properties.NullTypeMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.OneToManyMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.OneToOneMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.TransientMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.VersionMappingUiProvider;
import org.eclipse.jpt.ui.internal.java.structure.JavaStructureProvider;
import org.eclipse.jpt.ui.internal.structure.IJpaStructureProvider;
import org.eclipse.jpt.ui.internal.xml.details.XmlDetailsProvider;
@@ -34,6 +47,8 @@ public abstract class BaseJpaPlatformUi implements IJpaPlatformUi
private Collection<IJpaStructureProvider> structureProviders;
private List<ITypeMappingUiProvider> javaTypeMappingUiProviders;
+ private List<IAttributeMappingUiProvider> javaAttributeMappingUiProviders;
+ private List<IAttributeMappingUiProvider> defaultJavaAttributeMappingUiProviders;
protected BaseJpaPlatformUi() {
super();
@@ -84,17 +99,63 @@ public abstract class BaseJpaPlatformUi implements IJpaPlatformUi
}
/**
- * Override this to specify more or different structure providers.
+ * Override this to specify more or different type mapping ui providers
* The default includes the JPA spec-defined entity, mapped superclass, embeddable,
* and null (when the others don't apply)
*/
- protected void addJavaTypeMappingUiProvidersTo(Collection<ITypeMappingUiProvider> providers) {
+ protected void addJavaTypeMappingUiProvidersTo(List<ITypeMappingUiProvider> providers) {
providers.add(NullTypeMappingUiProvider.instance());
providers.add(EntityUiProvider.instance());
providers.add(MappedSuperclassUiProvider.instance());
providers.add(EmbeddableUiProvider.instance());
}
+ public List<IAttributeMappingUiProvider> javaAttributeMappingUiProviders() {
+ if (this.javaAttributeMappingUiProviders == null) {
+ this.javaAttributeMappingUiProviders = new ArrayList<IAttributeMappingUiProvider>();
+ this.addJavaAttributeMappingUiProvidersTo(this.javaAttributeMappingUiProviders);
+ }
+ return this.javaAttributeMappingUiProviders;
+
+ }
+
+ /**
+ * Override this to specify more or different java attribute mapping ui providers.
+ * The default includes the JPA spec-defined basic, embedded, embeddedId, id,
+ * manyToMany, manyToOne, oneToMany, transient, and version
+ */
+ protected void addJavaAttributeMappingUiProvidersTo(List<IAttributeMappingUiProvider> providers) {
+ providers.add(BasicMappingUiProvider.instance());
+ providers.add(EmbeddedMappingUiProvider.instance());
+ providers.add(EmbeddedIdMappingUiProvider.instance());
+ providers.add(IdMappingUiProvider.instance());
+ providers.add(ManyToManyMappingUiProvider.instance());
+ providers.add(ManyToOneMappingUiProvider.instance());
+ providers.add(OneToManyMappingUiProvider.instance());
+ providers.add(OneToOneMappingUiProvider.instance());
+ providers.add(TransientMappingUiProvider.instance());
+ providers.add(VersionMappingUiProvider.instance());
+ }
+
+ public List<IAttributeMappingUiProvider> defaultJavaAttributeMappingUiProviders() {
+ if (this.defaultJavaAttributeMappingUiProviders == null) {
+ this.defaultJavaAttributeMappingUiProviders = new ArrayList<IAttributeMappingUiProvider>();
+ this.addDefaultJavaAttributeMappingUiProvidersTo(this.defaultJavaAttributeMappingUiProviders);
+ }
+ return this.defaultJavaAttributeMappingUiProviders;
+
+ }
+
+ /**
+ * Override this to specify more or different default java attribute mapping ui providers.
+ * The default includes the JPA spec-defined basic, embedded
+ */
+ protected void addDefaultJavaAttributeMappingUiProvidersTo(List<IAttributeMappingUiProvider> providers) {
+ providers.add(DefaultBasicMappingUiProvider.instance());
+ providers.add(DefaultEmbeddedMappingUiProvider.instance());
+ }
+
+
public void generateEntities(IJpaProject project, IStructuredSelection selection) {
EntitiesGenerator.generate(project, selection);
}
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/IJpaPlatformUi.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/IJpaPlatformUi.java
index e0a39cebc0..c74dea5e73 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/IJpaPlatformUi.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/IJpaPlatformUi.java
@@ -15,6 +15,7 @@ import java.util.List;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jpt.core.internal.IJpaProject;
import org.eclipse.jpt.ui.internal.details.IJpaDetailsProvider;
+import org.eclipse.jpt.ui.internal.java.details.IAttributeMappingUiProvider;
import org.eclipse.jpt.ui.internal.java.details.ITypeMappingUiProvider;
import org.eclipse.jpt.ui.internal.structure.IJpaStructureProvider;
@@ -35,6 +36,19 @@ public interface IJpaPlatformUi
*/
List<ITypeMappingUiProvider> javaTypeMappingUiProviders();
+ /**
+ * Return the attribute mapping UI providers for java. This will populate
+ * the attribute mapping combo box in order and display IAttributeMappingUiProvider.label().
+ * It will also be used to create the appropriate composite given an attribute mapping.
+ */
+ List<IAttributeMappingUiProvider> javaAttributeMappingUiProviders();
+
+ /**
+ * Return the default attribute mapping UI providers for java. These will be used
+ * to provide a default mapping option if one applies in java.
+ */
+ List<IAttributeMappingUiProvider> defaultJavaAttributeMappingUiProviders();
+
void generateDDL(IJpaProject project, IStructuredSelection selection);
void generateEntities(IJpaProject project, IStructuredSelection selection);
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/PersistentAttributeDetailsPage.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/PersistentAttributeDetailsPage.java
index fb2a312eef..3da13f1301 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/PersistentAttributeDetailsPage.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/PersistentAttributeDetailsPage.java
@@ -13,6 +13,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import org.eclipse.emf.common.command.BasicCommandStack;
import org.eclipse.emf.common.notify.Adapter;
@@ -33,14 +34,11 @@ import org.eclipse.jpt.core.internal.JpaCorePackage;
import org.eclipse.jpt.ui.internal.JptUiMessages;
import org.eclipse.jpt.ui.internal.java.details.IAttributeMappingUiProvider;
import org.eclipse.jpt.ui.internal.java.mappings.properties.BasicMappingUiProvider;
-import org.eclipse.jpt.ui.internal.java.mappings.properties.DefaultBasicMappingUiProvider;
-import org.eclipse.jpt.ui.internal.java.mappings.properties.DefaultEmbeddedMappingUiProvider;
import org.eclipse.jpt.ui.internal.java.mappings.properties.EmbeddedIdMappingUiProvider;
import org.eclipse.jpt.ui.internal.java.mappings.properties.EmbeddedMappingUiProvider;
import org.eclipse.jpt.ui.internal.java.mappings.properties.IdMappingUiProvider;
import org.eclipse.jpt.ui.internal.java.mappings.properties.ManyToManyMappingUiProvider;
import org.eclipse.jpt.ui.internal.java.mappings.properties.ManyToOneMappingUiProvider;
-import org.eclipse.jpt.ui.internal.java.mappings.properties.NullAttributeMappingUiProvider;
import org.eclipse.jpt.ui.internal.java.mappings.properties.OneToManyMappingUiProvider;
import org.eclipse.jpt.ui.internal.java.mappings.properties.OneToOneMappingUiProvider;
import org.eclipse.jpt.ui.internal.java.mappings.properties.TransientMappingUiProvider;
@@ -59,7 +57,6 @@ public abstract class PersistentAttributeDetailsPage extends BaseJpaDetailsPage
private IPersistentAttribute attribute;
private IAttributeMapping attributeMapping;
private Adapter persistentAttributeListener;
- private Adapter attributeMappingListener;
private String currentMappingKey;
@@ -67,32 +64,14 @@ public abstract class PersistentAttributeDetailsPage extends BaseJpaDetailsPage
private Map<String, IJpaComposite<IAttributeMapping>> mappingComposites;
protected PageBook mappingPageBook;
- private IJpaComposite<IAttributeMapping> currentMappingComposite;
-
- /**
- * These IAtttributeMappingUiProviders will be used as elements in the attributeMapping combo
- * The first element in the combo will be one of the defaultAttributemappingUiProviders or
- * if none of those apply the nullAttriubteMappingUiProvider will be used. The rest of the elements
- * will be the attributeMappingUiProviders. The defaultAttributeMappingUiProvider is
- * determined by matching its key with the key of the current attriubteMapping.
- */
- private Collection<IAttributeMappingUiProvider> attributeMappingUiProviders;
- private Collection<IAttributeMappingUiProvider> defaultAttributeMappingUiProviders;
- private IAttributeMappingUiProvider nullAttributeMappingUiProvider;
+ private IJpaComposite<IAttributeMapping> currentMappingComposite;
public PersistentAttributeDetailsPage(Composite parent, TabbedPropertySheetWidgetFactory widgetFactory) {
super(parent, SWT.NONE, new BasicCommandStack(), widgetFactory);
persistentAttributeListener = buildAttributeListener();
- attributeMappingListener = buildAttributeMappingListener();
mappingComposites = new HashMap<String, IJpaComposite<IAttributeMapping>>();
- this.attributeMappingUiProviders = buildAttributeMappingUiProviders();
- this.defaultAttributeMappingUiProviders = buildDefaultAttributeMappingUiProviders();
- this.nullAttributeMappingUiProvider = buildNullAttributeMappingUiProvider();
}
- protected IAttributeMappingUiProvider buildNullAttributeMappingUiProvider() {
- return NullAttributeMappingUiProvider.instance();
- }
protected Collection<IAttributeMappingUiProvider> buildAttributeMappingUiProviders() {
Collection<IAttributeMappingUiProvider> providers = new ArrayList<IAttributeMappingUiProvider>();
@@ -109,38 +88,21 @@ public abstract class PersistentAttributeDetailsPage extends BaseJpaDetailsPage
return providers;
}
- protected Collection<IAttributeMappingUiProvider> attributeMappingUiProviders() {
- return this.attributeMappingUiProviders;
- }
-
- protected Collection<IAttributeMappingUiProvider> buildDefaultAttributeMappingUiProviders() {
- Collection<IAttributeMappingUiProvider> providers = new ArrayList<IAttributeMappingUiProvider>();
- providers.add(DefaultBasicMappingUiProvider.instance());
- providers.add(DefaultEmbeddedMappingUiProvider.instance());
- return providers;
- }
-
- protected Collection<IAttributeMappingUiProvider> defaultAttributeMappingUiProviders() {
- return this.defaultAttributeMappingUiProviders;
- }
+ protected abstract List<IAttributeMappingUiProvider> attributeMappingUiProviders();
- private IAttributeMappingUiProvider attributeMappingUiProvider(String key) {
+ protected abstract List<IAttributeMappingUiProvider> defaultAttributeMappingUiProviders();
+
+ protected IAttributeMappingUiProvider attributeMappingUiProvider(String key) {
for (IAttributeMappingUiProvider provider : attributeMappingUiProviders()) {
if (provider.key() == key) {
return provider;
}
}
- return this.nullAttributeMappingUiProvider;
- }
- private IAttributeMappingUiProvider defaultAttributeMappingUiProvider(String key) {
- for (IAttributeMappingUiProvider provider : defaultAttributeMappingUiProviders()) {
- if (provider.key() == key) {
- return provider;
- }
- }
- return this.nullAttributeMappingUiProvider;
+ throw new IllegalArgumentException();
}
+ protected abstract IAttributeMappingUiProvider defaultAttributeMappingUiProvider(String key);
+
private Adapter buildAttributeListener() {
return new AdapterImpl() {
@Override
@@ -150,7 +112,7 @@ public abstract class PersistentAttributeDetailsPage extends BaseJpaDetailsPage
};
}
- void persistentAttributeChanged(Notification notification) {
+ protected void persistentAttributeChanged(Notification notification) {
switch (notification.getFeatureID(IPersistentAttribute.class)) {
case JpaCorePackage.IPERSISTENT_ATTRIBUTE__MAPPING:
Display.getDefault().asyncExec(
@@ -162,28 +124,6 @@ public abstract class PersistentAttributeDetailsPage extends BaseJpaDetailsPage
break;
}
}
-
- private Adapter buildAttributeMappingListener() {
- return new AdapterImpl() {
- @Override
- public void notifyChanged(Notification notification) {
- attributeMappingChanged(notification);
- }
- };
- }
-
- void attributeMappingChanged(Notification notification) {
-// switch (notification.getFeatureID(IAttributeMapping.class)) {
-// case JpaCorePackage.IATTRIBUTE_MAPPING__DEFAULT:
-// Display.getDefault().asyncExec(
-// new Runnable() {
-// public void run() {
-// populate();
-// }
-// });
-// break;
-// }
- }
protected Label buildMappingLabel(Composite parent) {
return getWidgetFactory().createLabel(parent, JptUiMessages.PersistentAttributePage_mapAs);
@@ -212,7 +152,7 @@ public abstract class PersistentAttributeDetailsPage extends BaseJpaDetailsPage
if (inputElement == null) {
return new Object[]{};
}
- return uiProvidersFor((IPersistentAttribute) inputElement);
+ return attributeMappingUiProvidersFor((IPersistentAttribute) inputElement);
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
@@ -221,22 +161,8 @@ public abstract class PersistentAttributeDetailsPage extends BaseJpaDetailsPage
};
}
- protected IAttributeMappingUiProvider[] uiProvidersFor(IPersistentAttribute persistentAttribute) {
- IAttributeMappingUiProvider[] providers = new IAttributeMappingUiProvider[attributeMappingUiProviders().size() +1];
- providers[0] = this.nullAttributeMappingUiProvider;
- for (IAttributeMappingUiProvider uiProvider : defaultAttributeMappingUiProviders()) {
- if (uiProvider.key() == persistentAttribute.defaultMappingKey()) {
- providers[0] = uiProvider;
- break;
- }
- }
- int i = 1;
- for (IAttributeMappingUiProvider uiProvider : attributeMappingUiProviders()) {
- providers[i++] = uiProvider;
- }
- return providers;
- }
-
+ protected abstract IAttributeMappingUiProvider[] attributeMappingUiProvidersFor(IPersistentAttribute persistentAttribute);
+
private IBaseLabelProvider buildLabelProvider() {
return new LabelProvider() {
@Override
@@ -285,9 +211,6 @@ public abstract class PersistentAttributeDetailsPage extends BaseJpaDetailsPage
protected void engageListeners() {
if (attribute != null) {
attribute.eAdapters().add(persistentAttributeListener);
- if (attributeMapping != null) {
- attributeMapping.eAdapters().add(attributeMappingListener);
- }
}
}
@@ -295,9 +218,6 @@ public abstract class PersistentAttributeDetailsPage extends BaseJpaDetailsPage
protected void disengageListeners() {
if (attribute != null) {
attribute.eAdapters().remove(persistentAttributeListener);
- if (attributeMapping != null) {
- attributeMapping.eAdapters().remove(attributeMappingListener);
- }
}
}
@@ -316,7 +236,7 @@ public abstract class PersistentAttributeDetailsPage extends BaseJpaDetailsPage
return;
}
attributeMapping = attribute.getMapping();
- setComboData(attribute.candidateMappingKeys());
+ setComboData();
populateMappingPage(attributeMapping == null ? null : attributeMapping.getKey());
}
@@ -344,7 +264,7 @@ public abstract class PersistentAttributeDetailsPage extends BaseJpaDetailsPage
currentMappingComposite.populate(attributeMapping);
}
- private void setComboData(Iterator<String> availableMappingKeys) {
+ private void setComboData() {
if (attribute != mappingCombo.getInput()) {
mappingCombo.setInput(attribute);
}
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/details/JavaPersistentAttributeDetailsPage.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/details/JavaPersistentAttributeDetailsPage.java
index b249b9b1f9..59c2c7a5e3 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/details/JavaPersistentAttributeDetailsPage.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/details/JavaPersistentAttributeDetailsPage.java
@@ -9,7 +9,12 @@
******************************************************************************/
package org.eclipse.jpt.ui.internal.java.details;
+import java.util.List;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.ui.internal.IJpaPlatformUi;
+import org.eclipse.jpt.ui.internal.PlatformRegistry;
import org.eclipse.jpt.ui.internal.details.PersistentAttributeDetailsPage;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.NullAttributeMappingUiProvider;
import org.eclipse.jpt.ui.internal.widgets.CComboViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
@@ -25,6 +30,60 @@ public class JavaPersistentAttributeDetailsPage
super(parent, widgetFactory);
}
+ protected IJpaPlatformUi getJpaPlatformUi() {
+ String platformId = getAttribute().getJpaProject().getPlatform().getId();
+ return PlatformRegistry.instance().getJpaPlatform(platformId);
+ }
+
+ @Override
+ protected List<IAttributeMappingUiProvider> attributeMappingUiProviders() {
+ return getJpaPlatformUi().javaAttributeMappingUiProviders();
+ }
+
+ protected IAttributeMappingUiProvider nullAttributeMappingUiProvider() {
+ return NullAttributeMappingUiProvider.instance();
+ }
+
+ @Override
+ protected List<IAttributeMappingUiProvider> defaultAttributeMappingUiProviders() {
+ return getJpaPlatformUi().defaultJavaAttributeMappingUiProviders();
+ }
+
+
+ /**
+ * These IAtttributeMappingUiProviders will be used as elements in the attributeMapping combo
+ * The first element in the combo will be one of the defaultAttributeMappingUiProviders or
+ * if none of those apply the nullAttributeMappingUiProvider will be used. The rest of the elements
+ * will be the attributeMappingUiProviders. The defaultAttributeMappingUiProvider is
+ * determined by matching its key with the key of the current attributeMapping.
+ */
+ @Override
+ protected IAttributeMappingUiProvider[] attributeMappingUiProvidersFor(IPersistentAttribute persistentAttribute) {
+ IAttributeMappingUiProvider[] providers = new IAttributeMappingUiProvider[attributeMappingUiProviders().size() +1];
+ providers[0] = this.nullAttributeMappingUiProvider();
+ for (IAttributeMappingUiProvider uiProvider : defaultAttributeMappingUiProviders()) {
+ if (uiProvider.key() == persistentAttribute.defaultMappingKey()) {
+ providers[0] = uiProvider;
+ break;
+ }
+ }
+ int i = 1;
+ for (IAttributeMappingUiProvider uiProvider : attributeMappingUiProviders()) {
+ providers[i++] = uiProvider;
+ }
+ return providers;
+ }
+
+ @Override
+ protected IAttributeMappingUiProvider defaultAttributeMappingUiProvider(String key) {
+ for (IAttributeMappingUiProvider provider : defaultAttributeMappingUiProviders()) {
+ if (provider.key() == key) {
+ return provider;
+ }
+ }
+ return this.nullAttributeMappingUiProvider();
+ }
+
@Override
protected void initializeLayout(Composite composite) {
composite.setLayout(new GridLayout(2, false));
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/xml/details/XmlPersistentAttributeDetailsPage.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/xml/details/XmlPersistentAttributeDetailsPage.java
index 7940f5503e..d2d9deb29a 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/xml/details/XmlPersistentAttributeDetailsPage.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/xml/details/XmlPersistentAttributeDetailsPage.java
@@ -9,7 +9,10 @@
******************************************************************************/
package org.eclipse.jpt.ui.internal.xml.details;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
+import java.util.List;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.impl.AdapterImpl;
@@ -22,6 +25,16 @@ import org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute;
import org.eclipse.jpt.core.internal.content.orm.XmlPersistentType;
import org.eclipse.jpt.ui.internal.details.PersistentAttributeDetailsPage;
import org.eclipse.jpt.ui.internal.java.details.IAttributeMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.BasicMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.EmbeddedIdMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.EmbeddedMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.IdMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.ManyToManyMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.ManyToOneMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.OneToManyMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.OneToOneMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.TransientMappingUiProvider;
+import org.eclipse.jpt.ui.internal.java.mappings.properties.VersionMappingUiProvider;
import org.eclipse.jpt.ui.internal.widgets.CComboViewer;
import org.eclipse.jpt.utility.internal.iterators.ArrayIterator;
import org.eclipse.swt.SWT;
@@ -42,6 +55,8 @@ public class XmlPersistentAttributeDetailsPage
private IPersistentType persistentType;
+ private List<IAttributeMappingUiProvider> attributeMappingUiProviders;
+
public XmlPersistentAttributeDetailsPage(Composite parent, TabbedPropertySheetWidgetFactory widgetFactory) {
super(parent, widgetFactory);
buildPersistentTypeListener();
@@ -67,8 +82,47 @@ public class XmlPersistentAttributeDetailsPage
});
}
}
+
+ @Override
+ public List<IAttributeMappingUiProvider> attributeMappingUiProviders() {
+ if (this.attributeMappingUiProviders == null) {
+ this.attributeMappingUiProviders = new ArrayList<IAttributeMappingUiProvider>();
+ this.addAttributeMappingUiProvidersTo(this.attributeMappingUiProviders);
+ }
+ return this.attributeMappingUiProviders;
+
+ }
+
+ protected void addAttributeMappingUiProvidersTo(List<IAttributeMappingUiProvider> providers) {
+ providers.add(BasicMappingUiProvider.instance());
+ providers.add(EmbeddedMappingUiProvider.instance());
+ providers.add(EmbeddedIdMappingUiProvider.instance());
+ providers.add(IdMappingUiProvider.instance());
+ providers.add(ManyToManyMappingUiProvider.instance());
+ providers.add(ManyToOneMappingUiProvider.instance());
+ providers.add(OneToManyMappingUiProvider.instance());
+ providers.add(OneToOneMappingUiProvider.instance());
+ providers.add(TransientMappingUiProvider.instance());
+ providers.add(VersionMappingUiProvider.instance());
+ }
+
+ @Override
+ protected List<IAttributeMappingUiProvider> defaultAttributeMappingUiProviders() {
+ return Collections.emptyList();
+ }
@Override
+ protected IAttributeMappingUiProvider defaultAttributeMappingUiProvider(String key) {
+ throw new UnsupportedOperationException("Xml attributeMappings should not be default");
+ }
+
+ @Override
+ //bug 192035 - no default mapping option in xml
+ protected IAttributeMappingUiProvider[] attributeMappingUiProvidersFor(IPersistentAttribute persistentAttribute) {
+ return attributeMappingUiProviders().toArray(new IAttributeMappingUiProvider[attributeMappingUiProviders().size()]);
+ }
+
+ @Override
protected void initializeLayout(Composite composite) {
composite.setLayout(new GridLayout(2, false));
@@ -163,11 +217,4 @@ public class XmlPersistentAttributeDetailsPage
}
}
}
-
- @Override
- //TODO Not really how I would want to implement this, but it is low risk fix for bug 192035 for 1.0RC3
- protected IAttributeMappingUiProvider[] uiProvidersFor(IPersistentAttribute persistentAttribute) {
- return attributeMappingUiProviders().toArray(new IAttributeMappingUiProvider[attributeMappingUiProviders().size()]);
- }
-
} \ No newline at end of file

Back to the top