diff options
46 files changed, 1286 insertions, 1109 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/EclipseLink1_1JpaFactory.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/EclipseLink1_1JpaFactory.java index e9f5219965..db5b89b56b 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/EclipseLink1_1JpaFactory.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/EclipseLink1_1JpaFactory.java @@ -23,6 +23,7 @@ import org.eclipse.jpt.core.context.java.JavaOneToManyMapping; import org.eclipse.jpt.core.context.java.JavaOneToOneMapping; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.core.context.java.JavaPersistentType; +import org.eclipse.jpt.core.context.java.JavaTransientMapping; import org.eclipse.jpt.core.context.java.JavaVersionMapping; import org.eclipse.jpt.core.context.orm.EntityMappings; import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; @@ -66,6 +67,7 @@ import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLink1_1Virtu import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLink1_1VirtualXmlOneToMany; import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLink1_1VirtualXmlOneToOne; import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLink1_1VirtualXmlTransformation; +import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLink1_1VirtualXmlTransient; import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLink1_1VirtualXmlVariableOneToOne; import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLink1_1VirtualXmlVersion; import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLinkEntityMappings; @@ -88,6 +90,7 @@ import org.eclipse.jpt.eclipselink.core.resource.orm.XmlVariableOneToOne; import org.eclipse.jpt.eclipselink.core.resource.orm.XmlVersion; import org.eclipse.jpt.eclipselink1_1.core.resource.orm.XmlAttributeMapping; import org.eclipse.jpt.eclipselink1_1.core.resource.orm.XmlEntityMappings; +import org.eclipse.jpt.eclipselink1_1.core.resource.orm.XmlTransient; public class EclipseLink1_1JpaFactory extends EclipseLinkJpaFactory @@ -174,6 +177,10 @@ public class EclipseLink1_1JpaFactory return new EclipseLink1_1VirtualXmlTransformation(ormTypeMapping, javaTransformationMapping); } + public XmlTransient buildEclipseLink1_1VirtualXmlTransient(OrmTypeMapping ormTypeMapping, JavaTransientMapping javaTransientMapping) { + return new EclipseLink1_1VirtualXmlTransient(ormTypeMapping, javaTransientMapping); + } + public XmlVariableOneToOne buildEclipseLink1_1VirtualXmlVariableOneToOne(OrmTypeMapping ormTypeMapping, JavaVariableOneToOneMapping javaVariableOneToOneMapping) { return new EclipseLink1_1VirtualXmlVariableOneToOne(ormTypeMapping, javaVariableOneToOneMapping); } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLink1_1OrmTransientMappingProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLink1_1OrmTransientMappingProvider.java index 1b4dc792af..ace4443de5 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLink1_1OrmTransientMappingProvider.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLink1_1OrmTransientMappingProvider.java @@ -20,6 +20,7 @@ import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; import org.eclipse.jpt.core.context.orm.OrmTypeMapping; import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; import org.eclipse.jpt.core.resource.orm.XmlTransient; +import org.eclipse.jpt.eclipselink.core.internal.EclipseLink1_1JpaFactory; import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin; import org.eclipse.jpt.eclipselink1_1.core.resource.orm.EclipseLink1_1OrmFactory; @@ -60,7 +61,7 @@ public class EclipseLink1_1OrmTransientMappingProvider } public XmlAttributeMapping buildVirtualResourceMapping(OrmTypeMapping ormTypeMapping, JavaAttributeMapping javaAttributeMapping, JpaFactory factory) { - return factory.buildVirtualXmlTransient(ormTypeMapping, (JavaTransientMapping) javaAttributeMapping); + return ((EclipseLink1_1JpaFactory) factory).buildEclipseLink1_1VirtualXmlTransient(ormTypeMapping, (JavaTransientMapping) javaAttributeMapping); } } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLink1_1VirtualXmlTransient.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLink1_1VirtualXmlTransient.java new file mode 100644 index 0000000000..c08b8c4a01 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLink1_1VirtualXmlTransient.java @@ -0,0 +1,37 @@ +/******************************************************************************* + * Copyright (c) 2009 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.eclipselink.core.internal.context.orm; + +import org.eclipse.jpt.core.context.java.JavaTransientMapping; +import org.eclipse.jpt.core.context.orm.OrmTypeMapping; +import org.eclipse.jpt.core.internal.context.orm.VirtualXmlTransient; +import org.eclipse.jpt.core.resource.orm.AccessType; +import org.eclipse.jpt.eclipselink1_1.core.resource.orm.XmlTransient; + +/** + * VirtualBasic is an implementation of Basic used when there is + * no tag in the orm.xml and an underlying javaBasicMapping exists. + */ +public class EclipseLink1_1VirtualXmlTransient extends VirtualXmlTransient implements XmlTransient +{ + + public EclipseLink1_1VirtualXmlTransient(OrmTypeMapping ormTypeMapping, JavaTransientMapping javaTransientMapping) { + super(ormTypeMapping, javaTransientMapping); + } + + public AccessType getAccess() { + return org.eclipse.jpt.core.context.AccessType.toOrmResourceModel(this.javaAttributeMapping.getPersistentAttribute().getAccess()); + } + + public void setAccess(AccessType value) { + throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/java/details/EclipseLinkJavaBasicCollectionMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/java/details/EclipseLinkJavaBasicCollectionMappingUiProvider.java new file mode 100644 index 0000000000..4952321b4f --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/java/details/EclipseLinkJavaBasicCollectionMappingUiProvider.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * Copyright (c) 2009 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.eclipselink.ui.internal.java.details; + +import org.eclipse.core.runtime.content.IContentType; +import org.eclipse.jpt.core.JptCorePlugin; +import org.eclipse.jpt.eclipselink.core.context.BasicCollectionMapping; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.BasicCollectionMappingComposite; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipseLinkBasicCollectionMappingUiProvider; +import org.eclipse.jpt.ui.JpaUiFactory; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.JpaComposite; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.widgets.Composite; + +public class EclipseLinkJavaBasicCollectionMappingUiProvider extends EclipseLinkBasicCollectionMappingUiProvider<BasicCollectionMapping> +{ + // singleton + private static final EclipseLinkJavaBasicCollectionMappingUiProvider INSTANCE = + new EclipseLinkJavaBasicCollectionMappingUiProvider(); + + /** + * Return the singleton. + */ + public static AttributeMappingUiProvider<BasicCollectionMapping> instance() { + return INSTANCE; + } + + + /** + * Ensure single instance. + */ + private EclipseLinkJavaBasicCollectionMappingUiProvider() { + super(); + } + + public IContentType getContentType() { + return JptCorePlugin.JAVA_SOURCE_CONTENT_TYPE; + } + + public JpaComposite buildAttributeMappingComposite( + JpaUiFactory factory, + PropertyValueModel<BasicCollectionMapping> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + return new BasicCollectionMappingComposite(subjectHolder, parent, widgetFactory); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/java/details/EclipseLinkJavaBasicMapMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/java/details/EclipseLinkJavaBasicMapMappingUiProvider.java new file mode 100644 index 0000000000..3c3c004900 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/java/details/EclipseLinkJavaBasicMapMappingUiProvider.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * Copyright (c) 2009 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.eclipselink.ui.internal.java.details; + +import org.eclipse.core.runtime.content.IContentType; +import org.eclipse.jpt.core.JptCorePlugin; +import org.eclipse.jpt.eclipselink.core.context.BasicMapMapping; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.BasicMapMappingComposite; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipseLinkBasicMapMappingUiProvider; +import org.eclipse.jpt.ui.JpaUiFactory; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.JpaComposite; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.widgets.Composite; + +public class EclipseLinkJavaBasicMapMappingUiProvider extends EclipseLinkBasicMapMappingUiProvider<BasicMapMapping> +{ + // singleton + private static final EclipseLinkJavaBasicMapMappingUiProvider INSTANCE = + new EclipseLinkJavaBasicMapMappingUiProvider(); + + /** + * Return the singleton. + */ + public static AttributeMappingUiProvider<BasicMapMapping> instance() { + return INSTANCE; + } + + + /** + * Ensure single instance. + */ + private EclipseLinkJavaBasicMapMappingUiProvider() { + super(); + } + + public IContentType getContentType() { + return JptCorePlugin.JAVA_SOURCE_CONTENT_TYPE; + } + + public JpaComposite buildAttributeMappingComposite( + JpaUiFactory factory, + PropertyValueModel<BasicMapMapping> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + return new BasicMapMappingComposite(subjectHolder, parent, widgetFactory); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/java/details/EclipseLinkJavaTransformationMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/java/details/EclipseLinkJavaTransformationMappingUiProvider.java new file mode 100644 index 0000000000..6fa7ad013c --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/java/details/EclipseLinkJavaTransformationMappingUiProvider.java @@ -0,0 +1,57 @@ +/******************************************************************************* + * Copyright (c) 2009 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.eclipselink.ui.internal.java.details; + +import org.eclipse.core.runtime.content.IContentType; +import org.eclipse.jpt.core.JptCorePlugin; +import org.eclipse.jpt.eclipselink.core.context.TransformationMapping; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipseLinkTransformationMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.TransformationMappingComposite; +import org.eclipse.jpt.ui.JpaUiFactory; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.JpaComposite; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.widgets.Composite; + +public class EclipseLinkJavaTransformationMappingUiProvider extends EclipseLinkTransformationMappingUiProvider<TransformationMapping> +{ + // singleton + private static final EclipseLinkJavaTransformationMappingUiProvider INSTANCE = + new EclipseLinkJavaTransformationMappingUiProvider(); + + /** + * Return the singleton. + */ + public static AttributeMappingUiProvider<TransformationMapping> instance() { + return INSTANCE; + } + + + /** + * Ensure single instance. + */ + private EclipseLinkJavaTransformationMappingUiProvider() { + super(); + } + + public IContentType getContentType() { + return JptCorePlugin.JAVA_SOURCE_CONTENT_TYPE; + } + + public JpaComposite buildAttributeMappingComposite( + JpaUiFactory factory, + PropertyValueModel<TransformationMapping> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + + return new TransformationMappingComposite(subjectHolder, parent, widgetFactory); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/java/details/EclipseLinkJavaVariableOneToOneMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/java/details/EclipseLinkJavaVariableOneToOneMappingUiProvider.java new file mode 100644 index 0000000000..32de38ec64 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/java/details/EclipseLinkJavaVariableOneToOneMappingUiProvider.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * Copyright (c) 2009 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.eclipselink.ui.internal.java.details; + +import org.eclipse.core.runtime.content.IContentType; +import org.eclipse.jpt.core.JptCorePlugin; +import org.eclipse.jpt.eclipselink.core.context.VariableOneToOneMapping; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipseLinkVariableOneToOneMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.VariableOneToOneMappingComposite; +import org.eclipse.jpt.ui.JpaUiFactory; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.JpaComposite; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.widgets.Composite; + +public class EclipseLinkJavaVariableOneToOneMappingUiProvider extends EclipseLinkVariableOneToOneMappingUiProvider<VariableOneToOneMapping> +{ + // singleton + private static final EclipseLinkJavaVariableOneToOneMappingUiProvider INSTANCE = + new EclipseLinkJavaVariableOneToOneMappingUiProvider(); + + /** + * Return the singleton. + */ + public static AttributeMappingUiProvider<VariableOneToOneMapping> instance() { + return INSTANCE; + } + + + /** + * Ensure single instance. + */ + private EclipseLinkJavaVariableOneToOneMappingUiProvider() { + super(); + } + + public IContentType getContentType() { + return JptCorePlugin.JAVA_SOURCE_CONTENT_TYPE; + } + + public JpaComposite buildAttributeMappingComposite( + JpaUiFactory factory, + PropertyValueModel<VariableOneToOneMapping> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + return new VariableOneToOneMappingComposite(subjectHolder, parent, widgetFactory); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkBasicCollectionMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkBasicCollectionMappingUiProvider.java index 3c27d81161..4bf9f9f487 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkBasicCollectionMappingUiProvider.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkBasicCollectionMappingUiProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 Oracle. All rights reserved. + * Copyright (c) 2008, 2009 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. @@ -9,47 +9,20 @@ ******************************************************************************/ package org.eclipse.jpt.eclipselink.ui.internal.mappings.details; -import org.eclipse.core.runtime.content.IContentType; import org.eclipse.jpt.eclipselink.core.EclipseLinkMappingKeys; import org.eclipse.jpt.eclipselink.core.context.BasicCollectionMapping; -import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin; import org.eclipse.jpt.eclipselink.ui.internal.mappings.EclipseLinkUiMappingsMessages; -import org.eclipse.jpt.ui.JpaUiFactory; import org.eclipse.jpt.ui.JptUiPlugin; -import org.eclipse.jpt.ui.WidgetFactory; import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; -import org.eclipse.jpt.ui.details.JpaComposite; import org.eclipse.jpt.ui.internal.JptUiIcons; -import org.eclipse.jpt.utility.model.value.PropertyValueModel; import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Composite; -public class EclipseLinkBasicCollectionMappingUiProvider - implements AttributeMappingUiProvider<BasicCollectionMapping> +public abstract class EclipseLinkBasicCollectionMappingUiProvider<T extends BasicCollectionMapping> + implements AttributeMappingUiProvider<T> { - // singleton - private static final EclipseLinkBasicCollectionMappingUiProvider INSTANCE = - new EclipseLinkBasicCollectionMappingUiProvider(); - - /** - * Return the singleton. - */ - public static AttributeMappingUiProvider<BasicCollectionMapping> instance() { - return INSTANCE; - } - - - /** - * Ensure single instance. - */ - private EclipseLinkBasicCollectionMappingUiProvider() { - super(); - } - - public IContentType getContentType() { - return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE; - } - + + protected EclipseLinkBasicCollectionMappingUiProvider() {} + public Image getImage() { return JptUiPlugin.getImage(JptUiIcons.JPA_CONTENT); } @@ -65,12 +38,5 @@ public class EclipseLinkBasicCollectionMappingUiProvider public String getKey() { return EclipseLinkMappingKeys.BASIC_COLLECTION_ATTRIBUTE_MAPPING_KEY; } - - public JpaComposite buildAttributeMappingComposite( - JpaUiFactory factory, - PropertyValueModel<BasicCollectionMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - return new BasicCollectionMappingComposite(subjectHolder, parent, widgetFactory); - } + } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkBasicMapMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkBasicMapMappingUiProvider.java index d2e068ddcf..e0890f7a03 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkBasicMapMappingUiProvider.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkBasicMapMappingUiProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 Oracle. All rights reserved. + * Copyright (c) 2008, 2009 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. @@ -9,47 +9,22 @@ ******************************************************************************/ package org.eclipse.jpt.eclipselink.ui.internal.mappings.details; -import org.eclipse.core.runtime.content.IContentType; import org.eclipse.jpt.eclipselink.core.EclipseLinkMappingKeys; import org.eclipse.jpt.eclipselink.core.context.BasicMapMapping; -import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin; import org.eclipse.jpt.eclipselink.ui.internal.mappings.EclipseLinkUiMappingsMessages; -import org.eclipse.jpt.ui.JpaUiFactory; import org.eclipse.jpt.ui.JptUiPlugin; -import org.eclipse.jpt.ui.WidgetFactory; import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; -import org.eclipse.jpt.ui.details.JpaComposite; import org.eclipse.jpt.ui.internal.JptUiIcons; -import org.eclipse.jpt.utility.model.value.PropertyValueModel; import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Composite; -public class EclipseLinkBasicMapMappingUiProvider - implements AttributeMappingUiProvider<BasicMapMapping> +public abstract class EclipseLinkBasicMapMappingUiProvider<T extends BasicMapMapping> + implements AttributeMappingUiProvider<T> { - // singleton - private static final EclipseLinkBasicMapMappingUiProvider INSTANCE = - new EclipseLinkBasicMapMappingUiProvider(); - /** - * Return the singleton. - */ - public static AttributeMappingUiProvider<BasicMapMapping> instance() { - return INSTANCE; - } - - - /** - * Ensure single instance. - */ - private EclipseLinkBasicMapMappingUiProvider() { + protected EclipseLinkBasicMapMappingUiProvider() { super(); } - public IContentType getContentType() { - return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE; - } - public Image getImage() { return JptUiPlugin.getImage(JptUiIcons.JPA_CONTENT); } @@ -65,12 +40,5 @@ public class EclipseLinkBasicMapMappingUiProvider public String getKey() { return EclipseLinkMappingKeys.BASIC_MAP_ATTRIBUTE_MAPPING_KEY; } - - public JpaComposite buildAttributeMappingComposite( - JpaUiFactory factory, - PropertyValueModel<BasicMapMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - return new BasicMapMappingComposite(subjectHolder, parent, widgetFactory); - } + } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkTransformationMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkTransformationMappingUiProvider.java index 302725714f..0d768daabe 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkTransformationMappingUiProvider.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkTransformationMappingUiProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 Oracle. All rights reserved. + * Copyright (c) 2008, 2009 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. @@ -9,47 +9,22 @@ ******************************************************************************/ package org.eclipse.jpt.eclipselink.ui.internal.mappings.details; -import org.eclipse.core.runtime.content.IContentType; import org.eclipse.jpt.eclipselink.core.EclipseLinkMappingKeys; import org.eclipse.jpt.eclipselink.core.context.TransformationMapping; -import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin; import org.eclipse.jpt.eclipselink.ui.internal.mappings.EclipseLinkUiMappingsMessages; -import org.eclipse.jpt.ui.JpaUiFactory; import org.eclipse.jpt.ui.JptUiPlugin; -import org.eclipse.jpt.ui.WidgetFactory; import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; -import org.eclipse.jpt.ui.details.JpaComposite; import org.eclipse.jpt.ui.internal.JptUiIcons; -import org.eclipse.jpt.utility.model.value.PropertyValueModel; import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Composite; -public class EclipseLinkTransformationMappingUiProvider - implements AttributeMappingUiProvider<TransformationMapping> +public abstract class EclipseLinkTransformationMappingUiProvider<T extends TransformationMapping> + implements AttributeMappingUiProvider<T> { - // singleton - private static final EclipseLinkTransformationMappingUiProvider INSTANCE = - new EclipseLinkTransformationMappingUiProvider(); - /** - * Return the singleton. - */ - public static AttributeMappingUiProvider<TransformationMapping> instance() { - return INSTANCE; - } - - - /** - * Ensure single instance. - */ - private EclipseLinkTransformationMappingUiProvider() { + protected EclipseLinkTransformationMappingUiProvider() { super(); } - public IContentType getContentType() { - return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE; - } - public Image getImage() { return JptUiPlugin.getImage(JptUiIcons.JPA_CONTENT); } @@ -65,13 +40,4 @@ public class EclipseLinkTransformationMappingUiProvider public String getKey() { return EclipseLinkMappingKeys.TRANSFORMATION_ATTRIBUTE_MAPPING_KEY; } - - public JpaComposite buildAttributeMappingComposite( - JpaUiFactory factory, - PropertyValueModel<TransformationMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - - return new TransformationMappingComposite(subjectHolder, parent, widgetFactory); - } } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkVariableOneToOneMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkVariableOneToOneMappingUiProvider.java index 57fa2396af..58ce196648 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkVariableOneToOneMappingUiProvider.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkVariableOneToOneMappingUiProvider.java @@ -9,47 +9,21 @@ ******************************************************************************/ package org.eclipse.jpt.eclipselink.ui.internal.mappings.details; -import org.eclipse.core.runtime.content.IContentType; import org.eclipse.jpt.eclipselink.core.EclipseLinkMappingKeys; import org.eclipse.jpt.eclipselink.core.context.VariableOneToOneMapping; -import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin; import org.eclipse.jpt.eclipselink.ui.internal.mappings.EclipseLinkUiMappingsMessages; -import org.eclipse.jpt.ui.JpaUiFactory; import org.eclipse.jpt.ui.JptUiPlugin; -import org.eclipse.jpt.ui.WidgetFactory; import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; -import org.eclipse.jpt.ui.details.JpaComposite; import org.eclipse.jpt.ui.internal.JptUiIcons; -import org.eclipse.jpt.utility.model.value.PropertyValueModel; import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Composite; -public class EclipseLinkVariableOneToOneMappingUiProvider - implements AttributeMappingUiProvider<VariableOneToOneMapping> -{ - // singleton - private static final EclipseLinkVariableOneToOneMappingUiProvider INSTANCE = - new EclipseLinkVariableOneToOneMappingUiProvider(); - - /** - * Return the singleton. - */ - public static AttributeMappingUiProvider<VariableOneToOneMapping> instance() { - return INSTANCE; - } - - - /** - * Ensure single instance. - */ - private EclipseLinkVariableOneToOneMappingUiProvider() { +public abstract class EclipseLinkVariableOneToOneMappingUiProvider<T extends VariableOneToOneMapping> + implements AttributeMappingUiProvider<T> +{ + protected EclipseLinkVariableOneToOneMappingUiProvider() { super(); } - - public IContentType getContentType() { - return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE; - } - + public Image getImage() { return JptUiPlugin.getImage(JptUiIcons.JPA_CONTENT); } @@ -65,12 +39,4 @@ public class EclipseLinkVariableOneToOneMappingUiProvider public String getKey() { return EclipseLinkMappingKeys.VARIABLE_ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY; } - - public JpaComposite buildAttributeMappingComposite( - JpaUiFactory factory, - PropertyValueModel<VariableOneToOneMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - return new VariableOneToOneMappingComposite(subjectHolder, parent, widgetFactory); - } } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmBasicCollectionMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmBasicCollectionMappingUiProvider.java new file mode 100644 index 0000000000..da586ead21 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmBasicCollectionMappingUiProvider.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * Copyright (c) 2009 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.eclipselink.ui.internal.orm.details; + +import org.eclipse.core.runtime.content.IContentType; +import org.eclipse.jpt.eclipselink.core.context.BasicCollectionMapping; +import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.BasicCollectionMappingComposite; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipseLinkBasicCollectionMappingUiProvider; +import org.eclipse.jpt.ui.JpaUiFactory; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.JpaComposite; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.widgets.Composite; + +public class EclipseLinkOrmBasicCollectionMappingUiProvider extends EclipseLinkBasicCollectionMappingUiProvider<BasicCollectionMapping> +{ + // singleton + private static final EclipseLinkOrmBasicCollectionMappingUiProvider INSTANCE = + new EclipseLinkOrmBasicCollectionMappingUiProvider(); + + /** + * Return the singleton. + */ + public static AttributeMappingUiProvider<BasicCollectionMapping> instance() { + return INSTANCE; + } + + + /** + * Ensure single instance. + */ + private EclipseLinkOrmBasicCollectionMappingUiProvider() { + super(); + } + + public IContentType getContentType() { + return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE; + } + + public JpaComposite buildAttributeMappingComposite( + JpaUiFactory factory, + PropertyValueModel<BasicCollectionMapping> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + return new BasicCollectionMappingComposite(subjectHolder, parent, widgetFactory); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmBasicMapMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmBasicMapMappingUiProvider.java new file mode 100644 index 0000000000..7a74315372 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmBasicMapMappingUiProvider.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * Copyright (c) 2009 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.eclipselink.ui.internal.orm.details; + +import org.eclipse.core.runtime.content.IContentType; +import org.eclipse.jpt.eclipselink.core.context.BasicMapMapping; +import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.BasicMapMappingComposite; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipseLinkBasicMapMappingUiProvider; +import org.eclipse.jpt.ui.JpaUiFactory; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.JpaComposite; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.widgets.Composite; + +public class EclipseLinkOrmBasicMapMappingUiProvider extends EclipseLinkBasicMapMappingUiProvider<BasicMapMapping> +{ + // singleton + private static final EclipseLinkOrmBasicMapMappingUiProvider INSTANCE = + new EclipseLinkOrmBasicMapMappingUiProvider(); + + /** + * Return the singleton. + */ + public static AttributeMappingUiProvider<BasicMapMapping> instance() { + return INSTANCE; + } + + + /** + * Ensure single instance. + */ + private EclipseLinkOrmBasicMapMappingUiProvider() { + super(); + } + + public IContentType getContentType() { + return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE; + } + + public JpaComposite buildAttributeMappingComposite( + JpaUiFactory factory, + PropertyValueModel<BasicMapMapping> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + return new BasicMapMappingComposite(subjectHolder, parent, widgetFactory); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmEmbeddedIdMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmEmbeddedIdMappingUiProvider.java new file mode 100644 index 0000000000..c395af16e5 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmEmbeddedIdMappingUiProvider.java @@ -0,0 +1,57 @@ +/******************************************************************************* + * Copyright (c) 2009 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.eclipselink.ui.internal.orm.details; + +import org.eclipse.core.runtime.content.IContentType; +import org.eclipse.jpt.core.context.orm.OrmEmbeddedIdMapping; +import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin; +import org.eclipse.jpt.ui.JpaUiFactory; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.JpaComposite; +import org.eclipse.jpt.ui.internal.details.AbstractEmbeddedIdMappingUiProvider; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.widgets.Composite; + +public class EclipseLinkOrmEmbeddedIdMappingUiProvider + extends AbstractEmbeddedIdMappingUiProvider<OrmEmbeddedIdMapping> +{ + // singleton + private static final EclipseLinkOrmEmbeddedIdMappingUiProvider INSTANCE = + new EclipseLinkOrmEmbeddedIdMappingUiProvider(); + + /** + * Return the singleton. + */ + public static AttributeMappingUiProvider<OrmEmbeddedIdMapping> instance() { + return INSTANCE; + } + + + /** + * Ensure single instance. + */ + private EclipseLinkOrmEmbeddedIdMappingUiProvider() { + super(); + } + + public IContentType getContentType() { + return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE; + } + + public JpaComposite buildAttributeMappingComposite( + JpaUiFactory factory, + PropertyValueModel<OrmEmbeddedIdMapping> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + return factory.createOrmEmbeddedIdMappingComposite(subjectHolder, parent, widgetFactory); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmEmbeddedMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmEmbeddedMappingUiProvider.java new file mode 100644 index 0000000000..a1eeea0b32 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmEmbeddedMappingUiProvider.java @@ -0,0 +1,57 @@ +/******************************************************************************* + * Copyright (c) 2009 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.eclipselink.ui.internal.orm.details; + +import org.eclipse.core.runtime.content.IContentType; +import org.eclipse.jpt.core.context.orm.OrmEmbeddedMapping; +import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin; +import org.eclipse.jpt.ui.JpaUiFactory; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.JpaComposite; +import org.eclipse.jpt.ui.internal.details.AbstractEmbeddedMappingUiProvider; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.widgets.Composite; + +public class EclipseLinkOrmEmbeddedMappingUiProvider + extends AbstractEmbeddedMappingUiProvider<OrmEmbeddedMapping> +{ + // singleton + private static final EclipseLinkOrmEmbeddedMappingUiProvider INSTANCE = + new EclipseLinkOrmEmbeddedMappingUiProvider(); + + /** + * Return the singleton. + */ + public static AttributeMappingUiProvider<OrmEmbeddedMapping> instance() { + return INSTANCE; + } + + + /** + * Ensure single instance. + */ + private EclipseLinkOrmEmbeddedMappingUiProvider() { + super(); + } + + public IContentType getContentType() { + return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE; + } + + public JpaComposite buildAttributeMappingComposite( + JpaUiFactory factory, + PropertyValueModel<OrmEmbeddedMapping> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + return factory.createOrmEmbeddedMappingComposite(subjectHolder, parent, widgetFactory); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmPersistentAttributeDetailsPage.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmPersistentAttributeDetailsPage.java deleted file mode 100644 index 00924c509c..0000000000 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmPersistentAttributeDetailsPage.java +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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.eclipselink.ui.internal.orm.details; - -import java.util.Iterator; -import org.eclipse.jpt.core.context.AttributeMapping; -import org.eclipse.jpt.eclipselink.ui.internal.platform.EclipseLinkJpaPlatformUi; -import org.eclipse.jpt.ui.WidgetFactory; -import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; -import org.eclipse.jpt.ui.internal.orm.details.OrmPersistentAttributeDetailsPage; -import org.eclipse.jpt.ui.internal.widgets.Pane; -import org.eclipse.swt.widgets.Composite; - -public class EclipseLinkOrmPersistentAttributeDetailsPage - extends OrmPersistentAttributeDetailsPage -{ - /** - * Creates a new <code>EclipseLinkOrmPersistentAttributeDetailsPage</code>. - * - * @param parent The parent container - * @param widgetFactory The factory used to create various common widgets - */ - public EclipseLinkOrmPersistentAttributeDetailsPage( - Composite parent, - WidgetFactory widgetFactory) { - super(parent, widgetFactory); - } - - - @Override - protected EclipseLinkJpaPlatformUi getJpaPlatformUi() { - return (EclipseLinkJpaPlatformUi) super.getJpaPlatformUi(); - } - - @Override - public Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> attributeMappingUiProviders() { - return getJpaPlatformUi().eclipseLinkOrmAttributeMappingUiProviders(); - } - - @Override - protected Pane buildMapAsPane(Composite parent) { - return new EclipseLinkOrmPersistentAttributeMapAsComposite(this, parent); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmPersistentAttributeDetailsProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmPersistentAttributeDetailsProvider.java deleted file mode 100644 index b739193f86..0000000000 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmPersistentAttributeDetailsProvider.java +++ /dev/null @@ -1,64 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 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.eclipselink.ui.internal.orm.details; - -import org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaStructureNode; -import org.eclipse.jpt.core.context.orm.OrmStructureNodes; -import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin; -import org.eclipse.jpt.ui.WidgetFactory; -import org.eclipse.jpt.ui.details.JpaDetailsPage; -import org.eclipse.jpt.ui.details.JpaDetailsProvider; -import org.eclipse.swt.widgets.Composite; - -/** - * This provider is responsible for creating the {@link JpaDetailsPage} - * when the information comes from the XML file (either from the persistence - * configuration or from the Mappings Descriptor). - * - * @version 2.2 - * @since 2.2 - */ -public class EclipseLinkOrmPersistentAttributeDetailsProvider - implements JpaDetailsProvider -{ - // singleton - private static final JpaDetailsProvider INSTANCE = new EclipseLinkOrmPersistentAttributeDetailsProvider(); - - /** - * Return the singleton. - */ - public static JpaDetailsProvider instance() { - return INSTANCE; - } - - /** - * Ensure single instance. - */ - private EclipseLinkOrmPersistentAttributeDetailsProvider() { - super(); - } - - public String getId() { - return OrmStructureNodes.PERSISTENT_ATTRIBUTE_ID; - } - - public IContentType getContentType() { - return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE; - } - - public JpaDetailsPage<? extends JpaStructureNode> buildDetailsPage( - Composite parent, - WidgetFactory widgetFactory) { - - return new EclipseLinkOrmPersistentAttributeDetailsPage(parent, widgetFactory); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmPersistentAttributeMapAsComposite.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmPersistentAttributeMapAsComposite.java deleted file mode 100644 index 044ca7fa6d..0000000000 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmPersistentAttributeMapAsComposite.java +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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.eclipselink.ui.internal.orm.details; - -import java.util.Iterator; -import org.eclipse.jpt.core.context.AttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.eclipselink.ui.internal.platform.EclipseLinkJpaPlatformUi; -import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; -import org.eclipse.jpt.ui.details.DefaultAttributeMappingUiProvider; -import org.eclipse.jpt.ui.internal.mappings.details.OrmPersistentAttributeMapAsComposite; -import org.eclipse.jpt.ui.internal.widgets.Pane; -import org.eclipse.swt.widgets.Composite; - -public class EclipseLinkOrmPersistentAttributeMapAsComposite - extends OrmPersistentAttributeMapAsComposite -{ - /** - * Creates a new <code>EclipseLinkOrmPersistentAttributeMapAsComposite</code>. - * - * @param parentPane The parent pane of this one - * @param parent The parent container - */ - public EclipseLinkOrmPersistentAttributeMapAsComposite( - Pane<? extends OrmPersistentAttribute> parentPane, Composite parent) { - super(parentPane, parent); - } - - - @Override - protected Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> attributeMappingUiProviders() { - return ((EclipseLinkJpaPlatformUi) getJpaPlatformUi()).eclipseLinkOrmAttributeMappingUiProviders(); - } - - @Override - protected Iterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> defaultAttributeMappingUiProviders() { - return ((EclipseLinkJpaPlatformUi) getJpaPlatformUi()).defaultEclipseLinkOrmAttributeMappingUiProviders(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmTransformationMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmTransformationMappingUiProvider.java new file mode 100644 index 0000000000..854c7b6b63 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmTransformationMappingUiProvider.java @@ -0,0 +1,57 @@ +/******************************************************************************* + * Copyright (c) 2009 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.eclipselink.ui.internal.orm.details; + +import org.eclipse.core.runtime.content.IContentType; +import org.eclipse.jpt.eclipselink.core.context.TransformationMapping; +import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipseLinkTransformationMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.TransformationMappingComposite; +import org.eclipse.jpt.ui.JpaUiFactory; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.JpaComposite; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.widgets.Composite; + +public class EclipseLinkOrmTransformationMappingUiProvider extends EclipseLinkTransformationMappingUiProvider<TransformationMapping> +{ + // singleton + private static final EclipseLinkOrmTransformationMappingUiProvider INSTANCE = + new EclipseLinkOrmTransformationMappingUiProvider(); + + /** + * Return the singleton. + */ + public static AttributeMappingUiProvider<TransformationMapping> instance() { + return INSTANCE; + } + + + /** + * Ensure single instance. + */ + private EclipseLinkOrmTransformationMappingUiProvider() { + super(); + } + + public IContentType getContentType() { + return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE; + } + + public JpaComposite buildAttributeMappingComposite( + JpaUiFactory factory, + PropertyValueModel<TransformationMapping> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + + return new TransformationMappingComposite(subjectHolder, parent, widgetFactory); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmTransientMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmTransientMappingUiProvider.java new file mode 100644 index 0000000000..47dd82a524 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmTransientMappingUiProvider.java @@ -0,0 +1,57 @@ +/******************************************************************************* + * Copyright (c) 2009 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.eclipselink.ui.internal.orm.details; + +import org.eclipse.core.runtime.content.IContentType; +import org.eclipse.jpt.core.context.orm.OrmTransientMapping; +import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin; +import org.eclipse.jpt.ui.JpaUiFactory; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.JpaComposite; +import org.eclipse.jpt.ui.internal.details.AbstractTransientMappingUiProvider; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.widgets.Composite; + +public class EclipseLinkOrmTransientMappingUiProvider + extends AbstractTransientMappingUiProvider<OrmTransientMapping> +{ + // singleton + private static final EclipseLinkOrmTransientMappingUiProvider INSTANCE = + new EclipseLinkOrmTransientMappingUiProvider(); + + /** + * Return the singleton. + */ + public static AttributeMappingUiProvider<OrmTransientMapping> instance() { + return INSTANCE; + } + + + /** + * Ensure single instance. + */ + private EclipseLinkOrmTransientMappingUiProvider() { + super(); + } + + public IContentType getContentType() { + return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE; + } + + public JpaComposite buildAttributeMappingComposite( + JpaUiFactory factory, + PropertyValueModel<OrmTransientMapping> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + return factory.createOrmTransientMappingComposite(subjectHolder, parent, widgetFactory); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmVariableOneToOneMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmVariableOneToOneMappingUiProvider.java new file mode 100644 index 0000000000..7e0f297074 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmVariableOneToOneMappingUiProvider.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * Copyright (c) 2009 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.eclipselink.ui.internal.orm.details; + +import org.eclipse.core.runtime.content.IContentType; +import org.eclipse.jpt.eclipselink.core.context.VariableOneToOneMapping; +import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipseLinkVariableOneToOneMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.VariableOneToOneMappingComposite; +import org.eclipse.jpt.ui.JpaUiFactory; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.JpaComposite; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.widgets.Composite; + +public class EclipseLinkOrmVariableOneToOneMappingUiProvider extends EclipseLinkVariableOneToOneMappingUiProvider<VariableOneToOneMapping> +{ + // singleton + private static final EclipseLinkOrmVariableOneToOneMappingUiProvider INSTANCE = + new EclipseLinkOrmVariableOneToOneMappingUiProvider(); + + /** + * Return the singleton. + */ + public static AttributeMappingUiProvider<VariableOneToOneMapping> instance() { + return INSTANCE; + } + + + /** + * Ensure single instance. + */ + private EclipseLinkOrmVariableOneToOneMappingUiProvider() { + super(); + } + + public IContentType getContentType() { + return JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE; + } + + public JpaComposite buildAttributeMappingComposite( + JpaUiFactory factory, + PropertyValueModel<VariableOneToOneMapping> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + return new VariableOneToOneMappingComposite(subjectHolder, parent, widgetFactory); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/platform/EclipseLink1_1JpaPlatformUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/platform/EclipseLink1_1JpaPlatformUiProvider.java index c57615ee3e..be053b0c02 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/platform/EclipseLink1_1JpaPlatformUiProvider.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/platform/EclipseLink1_1JpaPlatformUiProvider.java @@ -10,8 +10,11 @@ package org.eclipse.jpt.eclipselink.ui.internal.platform; import java.util.List; +import org.eclipse.jpt.core.context.AttributeMapping; import org.eclipse.jpt.eclipselink.ui.internal.structure.EclipseLink1_1OrmResourceModelStructureProvider; import org.eclipse.jpt.ui.JpaPlatformUiProvider; +import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.DefaultAttributeMappingUiProvider; import org.eclipse.jpt.ui.details.DefaultTypeMappingUiProvider; import org.eclipse.jpt.ui.details.JpaDetailsProvider; import org.eclipse.jpt.ui.details.TypeMappingUiProvider; @@ -66,4 +69,16 @@ public class EclipseLink1_1JpaPlatformUiProvider extends AbstractJpaPlatformUiPr //none specific to EclipseLink 1.1 } + + // ********** attribute mapping ui providers ********** + + @Override + protected void addAttributeMappingUiProvidersTo(List<AttributeMappingUiProvider<? extends AttributeMapping>> providers) { + //none specific to EclipseLink 1.1 + } + + @Override + protected void addDefaultAttributeMappingUiProvidersTo(List<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> providers) { + //none specific to EclipseLink 1.1 + } } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/platform/EclipseLinkJpaPlatformUi.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/platform/EclipseLinkJpaPlatformUi.java index fc40017b7e..5ceaa9e93e 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/platform/EclipseLinkJpaPlatformUi.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/platform/EclipseLinkJpaPlatformUi.java @@ -9,59 +9,18 @@ *******************************************************************************/ package org.eclipse.jpt.eclipselink.ui.internal.platform; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jpt.core.JpaProject; -import org.eclipse.jpt.core.context.AttributeMapping; -import org.eclipse.jpt.core.context.PersistentAttribute; -import org.eclipse.jpt.eclipselink.core.internal.JptEclipseLinkCorePlugin; import org.eclipse.jpt.eclipselink.ui.internal.ddlgen.EclipseLinkDDLGeneratorUi; -import org.eclipse.jpt.eclipselink.ui.internal.java.details.DefaultOneToManyMappingUiProvider; -import org.eclipse.jpt.eclipselink.ui.internal.java.details.DefaultOneToOneMappingUiProvider; -import org.eclipse.jpt.eclipselink.ui.internal.java.details.DefaultVariableOneToOneMappingUiProvider; -import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipseLinkBasicCollectionMappingUiProvider; -import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipseLinkBasicMapMappingUiProvider; -import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipseLinkTransformationMappingUiProvider; -import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipseLinkVariableOneToOneMappingUiProvider; -import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmBasicMappingUiProvider; -import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmIdMappingUiProvider; -import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmManyToManyMappingUiProvider; -import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmManyToOneMappingUiProvider; -import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmOneToManyMappingUiProvider; -import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmOneToOneMappingUiProvider; -import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmVersionMappingUiProvider; import org.eclipse.jpt.ui.JpaPlatformUiProvider; import org.eclipse.jpt.ui.JpaUiFactory; -import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; -import org.eclipse.jpt.ui.details.DefaultAttributeMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaBasicMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaEmbeddedIdMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaEmbeddedMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaIdMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaManyToManyMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaManyToOneMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaOneToManyMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaOneToOneMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaTransientMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaVersionMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.NullAttributeMappingUiProvider; -import org.eclipse.jpt.ui.internal.orm.details.OrmEmbeddedIdMappingUiProvider; -import org.eclipse.jpt.ui.internal.orm.details.OrmEmbeddedMappingUiProvider; -import org.eclipse.jpt.ui.internal.orm.details.OrmTransientMappingUiProvider; import org.eclipse.jpt.ui.internal.platform.base.BaseJpaPlatformUi; import org.eclipse.jpt.ui.navigator.JpaNavigatorProvider; import org.eclipse.jpt.ui.structure.JpaStructureProvider; -import org.eclipse.jpt.utility.internal.iterators.ArrayListIterator; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; public class EclipseLinkJpaPlatformUi extends BaseJpaPlatformUi { - private AttributeMappingUiProvider<? extends AttributeMapping>[] eclipseLinkOrmAttributeMappingUiProviders; - public EclipseLinkJpaPlatformUi( JpaUiFactory jpaUiFactory, JpaNavigatorProvider navigatorProvider, @@ -72,91 +31,10 @@ public class EclipseLinkJpaPlatformUi super(jpaUiFactory, navigatorProvider, persistenceStructureProvider, javaStructureProvider, platformUiProviders); } - - // ********** Java attribute mapping UI providers ********** - - @Override - protected void addJavaAttributeMappingUiProvidersTo(List<AttributeMappingUiProvider<? extends AttributeMapping>> providers) { - providers.add(JavaIdMappingUiProvider.instance()); - providers.add(JavaEmbeddedIdMappingUiProvider.instance()); - providers.add(JavaBasicMappingUiProvider.instance()); - providers.add(EclipseLinkBasicCollectionMappingUiProvider.instance()); - providers.add(EclipseLinkBasicMapMappingUiProvider.instance()); - providers.add(JavaVersionMappingUiProvider.instance()); - providers.add(JavaManyToOneMappingUiProvider.instance()); - providers.add(JavaOneToManyMappingUiProvider.instance()); - providers.add(JavaOneToOneMappingUiProvider.instance()); - providers.add(EclipseLinkVariableOneToOneMappingUiProvider.instance()); - providers.add(JavaManyToManyMappingUiProvider.instance()); - providers.add(JavaEmbeddedMappingUiProvider.instance()); - providers.add(EclipseLinkTransformationMappingUiProvider.instance()); - providers.add(JavaTransientMappingUiProvider.instance()); - providers.add(NullAttributeMappingUiProvider.instance()); - } - - - // ********** default Java attribute mapping UI providers ********** - - @Override - protected void addDefaultJavaAttributeMappingUiProvidersTo(List<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> providers) { - super.addDefaultJavaAttributeMappingUiProvidersTo(providers); - providers.add(DefaultOneToOneMappingUiProvider.instance()); - providers.add(DefaultOneToManyMappingUiProvider.instance()); - providers.add(DefaultVariableOneToOneMappingUiProvider.instance()); - } - - // ********** DDL generation ********** public void generateDDL(JpaProject project, IStructuredSelection selection) { EclipseLinkDDLGeneratorUi.generate(project); } - - // ********** ORM attribute mapping UI providers ********** - - @Override - public Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> attributeMappingUiProviders(PersistentAttribute attribute) { - if (attribute.getContentType().equals(JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE)) { - return eclipseLinkOrmAttributeMappingUiProviders(); - } - return super.attributeMappingUiProviders(attribute); - } - - public Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> eclipseLinkOrmAttributeMappingUiProviders() { - if (this.eclipseLinkOrmAttributeMappingUiProviders == null) { - this.eclipseLinkOrmAttributeMappingUiProviders = this.buildEclipseLinkOrmAttributeMappingUiProviders(); - } - return new ArrayListIterator<AttributeMappingUiProvider<? extends AttributeMapping>>(this.eclipseLinkOrmAttributeMappingUiProviders); - } - - protected AttributeMappingUiProvider<? extends AttributeMapping>[] buildEclipseLinkOrmAttributeMappingUiProviders() { - ArrayList<AttributeMappingUiProvider<? extends AttributeMapping>> providers = new ArrayList<AttributeMappingUiProvider<? extends AttributeMapping>>(); - this.addEclipseLinkOrmAttributeMappingUiProvidersTo(providers); - @SuppressWarnings("unchecked") - AttributeMappingUiProvider<? extends AttributeMapping>[] providerArray = providers.toArray(new AttributeMappingUiProvider[providers.size()]); - return providerArray; - } - - protected void addEclipseLinkOrmAttributeMappingUiProvidersTo(List<AttributeMappingUiProvider<? extends AttributeMapping>> providers) { - providers.add(EclipseLinkOrmIdMappingUiProvider.instance()); - providers.add(OrmEmbeddedIdMappingUiProvider.instance()); - providers.add(EclipseLinkOrmBasicMappingUiProvider.instance()); - providers.add(EclipseLinkBasicCollectionMappingUiProvider.instance()); - providers.add(EclipseLinkBasicMapMappingUiProvider.instance()); - providers.add(EclipseLinkOrmVersionMappingUiProvider.instance()); - providers.add(EclipseLinkOrmManyToOneMappingUiProvider.instance()); - providers.add(EclipseLinkOrmOneToManyMappingUiProvider.instance()); - providers.add(EclipseLinkOrmOneToOneMappingUiProvider.instance()); - providers.add(EclipseLinkVariableOneToOneMappingUiProvider.instance()); - providers.add(EclipseLinkOrmManyToManyMappingUiProvider.instance()); - providers.add(OrmEmbeddedMappingUiProvider.instance()); - providers.add(EclipseLinkTransformationMappingUiProvider.instance()); - providers.add(OrmTransientMappingUiProvider.instance()); - } - - public Iterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> defaultEclipseLinkOrmAttributeMappingUiProviders() { - return EmptyIterator.instance(); - } - } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/platform/EclipseLinkJpaPlatformUiProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/platform/EclipseLinkJpaPlatformUiProvider.java index 7a821a7e88..0bae1c3443 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/platform/EclipseLinkJpaPlatformUiProvider.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/platform/EclipseLinkJpaPlatformUiProvider.java @@ -10,13 +10,36 @@ package org.eclipse.jpt.eclipselink.ui.internal.platform; import java.util.List; +import org.eclipse.jpt.core.context.AttributeMapping; +import org.eclipse.jpt.eclipselink.ui.internal.java.details.DefaultOneToManyMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.java.details.DefaultOneToOneMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.java.details.DefaultVariableOneToOneMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.java.details.EclipseLinkJavaBasicCollectionMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.java.details.EclipseLinkJavaBasicMapMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.java.details.EclipseLinkJavaTransformationMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.java.details.EclipseLinkJavaVariableOneToOneMappingUiProvider; import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkEntityMappingsDetailsProvider; +import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmBasicCollectionMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmBasicMapMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmBasicMappingUiProvider; import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmEmbeddableUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmEmbeddedIdMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmEmbeddedMappingUiProvider; import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmEntityUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmIdMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmManyToManyMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmManyToOneMappingUiProvider; import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmMappedSuperclassUiProvider; -import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmPersistentAttributeDetailsProvider; +import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmOneToManyMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmOneToOneMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmTransformationMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmTransientMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmVariableOneToOneMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmVersionMappingUiProvider; import org.eclipse.jpt.eclipselink.ui.internal.structure.EclipseLinkOrmResourceModelStructureProvider; import org.eclipse.jpt.ui.JpaPlatformUiProvider; +import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.DefaultAttributeMappingUiProvider; import org.eclipse.jpt.ui.details.DefaultTypeMappingUiProvider; import org.eclipse.jpt.ui.details.JpaDetailsProvider; import org.eclipse.jpt.ui.details.TypeMappingUiProvider; @@ -49,7 +72,6 @@ public class EclipseLinkJpaPlatformUiProvider extends AbstractJpaPlatformUiProvi @Override protected void addDetailsProvidersTo(List<JpaDetailsProvider> providers) { providers.add(EclipseLinkEntityMappingsDetailsProvider.instance()); - providers.add(EclipseLinkOrmPersistentAttributeDetailsProvider.instance()); } @@ -74,4 +96,37 @@ public class EclipseLinkJpaPlatformUiProvider extends AbstractJpaPlatformUiProvi protected void addDefaultTypeMappingUiProvidersTo(List<DefaultTypeMappingUiProvider<?>> providers) { //none specific to EclipseLink } + + + // ********** attribute mapping ui providers ********** + + @Override + protected void addAttributeMappingUiProvidersTo(List<AttributeMappingUiProvider<? extends AttributeMapping>> providers) { + providers.add(EclipseLinkJavaBasicCollectionMappingUiProvider.instance()); + providers.add(EclipseLinkJavaBasicMapMappingUiProvider.instance()); + providers.add(EclipseLinkJavaVariableOneToOneMappingUiProvider.instance()); + providers.add(EclipseLinkJavaTransformationMappingUiProvider.instance()); + + providers.add(EclipseLinkOrmIdMappingUiProvider.instance()); + providers.add(EclipseLinkOrmEmbeddedIdMappingUiProvider.instance()); + providers.add(EclipseLinkOrmBasicMappingUiProvider.instance()); + providers.add(EclipseLinkOrmBasicCollectionMappingUiProvider.instance()); + providers.add(EclipseLinkOrmBasicMapMappingUiProvider.instance()); + providers.add(EclipseLinkOrmVersionMappingUiProvider.instance()); + providers.add(EclipseLinkOrmManyToOneMappingUiProvider.instance()); + providers.add(EclipseLinkOrmOneToManyMappingUiProvider.instance()); + providers.add(EclipseLinkOrmEmbeddedMappingUiProvider.instance()); + providers.add(EclipseLinkOrmOneToOneMappingUiProvider.instance()); + providers.add(EclipseLinkOrmVariableOneToOneMappingUiProvider.instance()); + providers.add(EclipseLinkOrmManyToManyMappingUiProvider.instance()); + providers.add(EclipseLinkOrmTransformationMappingUiProvider.instance()); + providers.add(EclipseLinkOrmTransientMappingUiProvider.instance()); + } + + @Override + protected void addDefaultAttributeMappingUiProvidersTo(List<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> providers) { + providers.add(DefaultOneToOneMappingUiProvider.instance()); + providers.add(DefaultOneToManyMappingUiProvider.instance()); + providers.add(DefaultVariableOneToOneMappingUiProvider.instance()); + } } diff --git a/jpa/plugins/org.eclipse.jpt.ui/plugin.properties b/jpa/plugins/org.eclipse.jpt.ui/plugin.properties index 1d667717e9..9f6eb213dd 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/plugin.properties +++ b/jpa/plugins/org.eclipse.jpt.ui/plugin.properties @@ -42,7 +42,8 @@ addPersistentAttributeToXmlAndMap = Add Attribute to XML and Map ... removePersistentAttributeFromXml = Remove Attribute from XML mapAs=Map As mapAsMnemonic=M -mapAsParameterName=mapping key +mapAsSpecifiedMappingParameterName=specified mapping key +mapAsDefaultMappingParameterName=default mapping key jpaMenuName = JPA Tools generateEntities = Generate Entities from Tables... diff --git a/jpa/plugins/org.eclipse.jpt.ui/plugin.xml b/jpa/plugins/org.eclipse.jpt.ui/plugin.xml index 22e754e07e..d56dd0bea8 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/plugin.xml +++ b/jpa/plugins/org.eclipse.jpt.ui/plugin.xml @@ -158,10 +158,15 @@ name="%mapAs" categoryId="org.eclipse.jpt.ui.jpaStructureViewCommands"> <commandParameter - id="persistentAttributeMappingKey" - name="%mapAsParameterName" + id="specifiedPersistentAttributeMappingKey" + name="%mapAsSpecifiedMappingParameterName" optional="false"> </commandParameter> + <commandParameter + id="defaultPersistentAttributeMappingKey" + name="%mapAsDefaultMappingParameterName" + optional="false"> + </commandParameter> </command> </extension> diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/JpaPlatformUi.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/JpaPlatformUi.java index 33d32eeb0e..db898291c0 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/JpaPlatformUi.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/JpaPlatformUi.java @@ -16,7 +16,6 @@ import org.eclipse.jpt.core.JpaFile; import org.eclipse.jpt.core.JpaProject; import org.eclipse.jpt.core.JpaStructureNode; import org.eclipse.jpt.core.context.AttributeMapping; -import org.eclipse.jpt.core.context.PersistentAttribute; import org.eclipse.jpt.core.context.TypeMapping; import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; import org.eclipse.jpt.ui.details.DefaultAttributeMappingUiProvider; @@ -68,36 +67,35 @@ public interface JpaPlatformUi /** * Return a default type mapping ui provider for the given content type or null */ - DefaultTypeMappingUiProvider<? extends TypeMapping> getDefaultTypeMappingProvider(IContentType contentType); - - + DefaultTypeMappingUiProvider<? extends TypeMapping> getDefaultTypeMappingUiProvider(IContentType contentType); + /** - * Return an iterator of mapping ui providers appropriate for the given persistent attribute + * Return an type mapping ui provider for the given content type */ - Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> attributeMappingUiProviders(PersistentAttribute attribute); - - + TypeMappingUiProvider<? extends TypeMapping> getTypeMappingUiProvider(String key, IContentType contentType); - // ********** Java attribute mapping UI providers ********** + /** + * Return an iterator of mapping ui providers appropriate for the given persistent attribute + */ + Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> attributeMappingUiProviders(IContentType contentType); - Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> javaAttributeMappingUiProviders(); // ********** default Java attribute mapping UI providers ********** - Iterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> defaultJavaAttributeMappingUiProviders(); - - - // ********** ORM attribute mapping UI providers ********** - - Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> ormAttributeMappingUiProviders(); - - - // ********** default ORM attribute mapping UI providers ********** - - Iterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> defaultOrmAttributeMappingUiProviders(); + Iterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> defaultAttributeMappingUiProviders(IContentType contentType); + /** + * Return a default attribute mapping ui provider for the given content type or null + */ + DefaultAttributeMappingUiProvider<? extends AttributeMapping> getDefaultAttributeMappingUiProvider(String key, IContentType contentType); + /** + * Return an attribute mapping ui provider for the given content type + */ + AttributeMappingUiProvider<? extends AttributeMapping> getAttributeMappingUiProvider(String key, IContentType contentType); + + // ********** structure providers ********** /** diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/JpaPlatformUiProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/JpaPlatformUiProvider.java index d3b1d3f985..a16e07f8bb 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/JpaPlatformUiProvider.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/JpaPlatformUiProvider.java @@ -10,7 +10,10 @@ package org.eclipse.jpt.ui; import java.util.ListIterator; +import org.eclipse.jpt.core.context.AttributeMapping; import org.eclipse.jpt.core.context.TypeMapping; +import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.DefaultAttributeMappingUiProvider; import org.eclipse.jpt.ui.details.DefaultTypeMappingUiProvider; import org.eclipse.jpt.ui.details.JpaDetailsProvider; import org.eclipse.jpt.ui.details.TypeMappingUiProvider; @@ -59,4 +62,9 @@ public interface JpaPlatformUiProvider */ ListIterator<DefaultTypeMappingUiProvider<? extends TypeMapping>> defaultTypeMappingUiProviders(); + + ListIterator<AttributeMappingUiProvider<? extends AttributeMapping>> attributeMappingUiProviders(); + + ListIterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> defaultAttributeMappingUiProviders(); + } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/AbstractJpaPlatformUiProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/AbstractJpaPlatformUiProvider.java index e5a614cc69..8d82fc247b 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/AbstractJpaPlatformUiProvider.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/AbstractJpaPlatformUiProvider.java @@ -13,7 +13,10 @@ import java.util.ArrayList; import java.util.List; import java.util.ListIterator; +import org.eclipse.jpt.core.context.AttributeMapping; import org.eclipse.jpt.ui.JpaPlatformUiProvider; +import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.DefaultAttributeMappingUiProvider; import org.eclipse.jpt.ui.details.DefaultTypeMappingUiProvider; import org.eclipse.jpt.ui.details.JpaDetailsProvider; import org.eclipse.jpt.ui.details.TypeMappingUiProvider; @@ -33,6 +36,10 @@ public abstract class AbstractJpaPlatformUiProvider implements JpaPlatformUiProv private TypeMappingUiProvider<?>[] typeMappingUiProviders; private DefaultTypeMappingUiProvider<?>[] defaultTypeMappingUiProviders; + + private AttributeMappingUiProvider<? extends AttributeMapping>[] attributeMappingUiProviders; + + private DefaultAttributeMappingUiProvider<? extends AttributeMapping>[] defaultAttributeMappingUiProviders; /** * zero-argument constructor @@ -142,4 +149,48 @@ public abstract class AbstractJpaPlatformUiProvider implements JpaPlatformUiProv */ protected abstract void addDefaultTypeMappingUiProvidersTo(List<DefaultTypeMappingUiProvider<?>> providers); + + + // ********** attribute mapping ui providers ********** + + + public ListIterator<AttributeMappingUiProvider<? extends AttributeMapping>> attributeMappingUiProviders() { + if (this.attributeMappingUiProviders == null) { + this.attributeMappingUiProviders = this.buildAttributeMappingUiProviders(); + } + return new ArrayListIterator<AttributeMappingUiProvider<? extends AttributeMapping>>(this.attributeMappingUiProviders); + } + + protected AttributeMappingUiProvider<? extends AttributeMapping>[] buildAttributeMappingUiProviders() { + ArrayList<AttributeMappingUiProvider<? extends AttributeMapping>> providers = new ArrayList<AttributeMappingUiProvider<? extends AttributeMapping>>(); + this.addAttributeMappingUiProvidersTo(providers); + @SuppressWarnings("unchecked") + AttributeMappingUiProvider<? extends AttributeMapping>[] providerArray = providers.toArray(new AttributeMappingUiProvider[providers.size()]); + return providerArray; + } + + + protected abstract void addAttributeMappingUiProvidersTo(List<AttributeMappingUiProvider<? extends AttributeMapping>> providers); + + + // ********** default Java attribute mapping UI providers ********** + + public ListIterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> defaultAttributeMappingUiProviders() { + if (this.defaultAttributeMappingUiProviders == null) { + this.defaultAttributeMappingUiProviders = this.buildDefaultAttributeMappingUiProviders(); + } + return new ArrayListIterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>>(this.defaultAttributeMappingUiProviders); + } + + protected DefaultAttributeMappingUiProvider<? extends AttributeMapping>[] buildDefaultAttributeMappingUiProviders() { + ArrayList<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> providers = new ArrayList<DefaultAttributeMappingUiProvider<? extends AttributeMapping>>(); + this.addDefaultAttributeMappingUiProvidersTo(providers); + @SuppressWarnings("unchecked") + DefaultAttributeMappingUiProvider<? extends AttributeMapping>[] providerArray = providers.toArray(new DefaultAttributeMappingUiProvider[providers.size()]); + return providerArray; + } + + + protected abstract void addDefaultAttributeMappingUiProvidersTo(List<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> providers); + } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/GenericJpaPlatformUiProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/GenericJpaPlatformUiProvider.java index fe89fcdf7c..87b12db3f9 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/GenericJpaPlatformUiProvider.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/GenericJpaPlatformUiProvider.java @@ -10,22 +10,48 @@ package org.eclipse.jpt.ui.internal; import java.util.List; +import org.eclipse.jpt.core.context.AttributeMapping; import org.eclipse.jpt.ui.JpaPlatformUiProvider; +import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.DefaultAttributeMappingUiProvider; import org.eclipse.jpt.ui.details.DefaultTypeMappingUiProvider; import org.eclipse.jpt.ui.details.JpaDetailsProvider; import org.eclipse.jpt.ui.details.TypeMappingUiProvider; +import org.eclipse.jpt.ui.internal.java.details.DefaultBasicMappingUiProvider; +import org.eclipse.jpt.ui.internal.java.details.DefaultEmbeddedMappingUiProvider; +import org.eclipse.jpt.ui.internal.java.details.JavaBasicMappingUiProvider; import org.eclipse.jpt.ui.internal.java.details.JavaDefaultTypeMappingUiProvider; import org.eclipse.jpt.ui.internal.java.details.JavaEmbeddableUiProvider; +import org.eclipse.jpt.ui.internal.java.details.JavaEmbeddedIdMappingUiProvider; +import org.eclipse.jpt.ui.internal.java.details.JavaEmbeddedMappingUiProvider; import org.eclipse.jpt.ui.internal.java.details.JavaEntityUiProvider; +import org.eclipse.jpt.ui.internal.java.details.JavaIdMappingUiProvider; +import org.eclipse.jpt.ui.internal.java.details.JavaManyToManyMappingUiProvider; +import org.eclipse.jpt.ui.internal.java.details.JavaManyToOneMappingUiProvider; import org.eclipse.jpt.ui.internal.java.details.JavaMappedSuperclassUiProvider; +import org.eclipse.jpt.ui.internal.java.details.JavaOneToManyMappingUiProvider; +import org.eclipse.jpt.ui.internal.java.details.JavaOneToOneMappingUiProvider; import org.eclipse.jpt.ui.internal.java.details.JavaPersistentAttributeDetailsProvider; import org.eclipse.jpt.ui.internal.java.details.JavaPersistentTypeDetailsProvider; +import org.eclipse.jpt.ui.internal.java.details.JavaTransientMappingUiProvider; +import org.eclipse.jpt.ui.internal.java.details.JavaVersionMappingUiProvider; +import org.eclipse.jpt.ui.internal.java.details.NullAttributeMappingUiProvider; import org.eclipse.jpt.ui.internal.orm.details.EntityMappingsDetailsProvider; +import org.eclipse.jpt.ui.internal.orm.details.OrmBasicMappingUiProvider; import org.eclipse.jpt.ui.internal.orm.details.OrmEmbeddableUiProvider; +import org.eclipse.jpt.ui.internal.orm.details.OrmEmbeddedIdMappingUiProvider; +import org.eclipse.jpt.ui.internal.orm.details.OrmEmbeddedMappingUiProvider; import org.eclipse.jpt.ui.internal.orm.details.OrmEntityUiProvider; +import org.eclipse.jpt.ui.internal.orm.details.OrmIdMappingUiProvider; +import org.eclipse.jpt.ui.internal.orm.details.OrmManyToManyMappingUiProvider; +import org.eclipse.jpt.ui.internal.orm.details.OrmManyToOneMappingUiProvider; import org.eclipse.jpt.ui.internal.orm.details.OrmMappedSuperclassUiProvider; +import org.eclipse.jpt.ui.internal.orm.details.OrmOneToManyMappingUiProvider; +import org.eclipse.jpt.ui.internal.orm.details.OrmOneToOneMappingUiProvider; import org.eclipse.jpt.ui.internal.orm.details.OrmPersistentAttributeDetailsProvider; import org.eclipse.jpt.ui.internal.orm.details.OrmPersistentTypeDetailsProvider; +import org.eclipse.jpt.ui.internal.orm.details.OrmTransientMappingUiProvider; +import org.eclipse.jpt.ui.internal.orm.details.OrmVersionMappingUiProvider; import org.eclipse.jpt.ui.internal.structure.OrmResourceModelStructureProvider; import org.eclipse.jpt.ui.structure.JpaStructureProvider; @@ -90,4 +116,39 @@ public class GenericJpaPlatformUiProvider extends AbstractJpaPlatformUiProvider protected void addDefaultTypeMappingUiProvidersTo(List<DefaultTypeMappingUiProvider<?>> providers) { providers.add(JavaDefaultTypeMappingUiProvider.instance()); } + + + // ********** attribute mapping ui providers ********** + + @Override + protected void addAttributeMappingUiProvidersTo(List<AttributeMappingUiProvider<? extends AttributeMapping>> providers) { + providers.add(JavaIdMappingUiProvider.instance()); + providers.add(JavaEmbeddedIdMappingUiProvider.instance()); + providers.add(JavaBasicMappingUiProvider.instance()); + providers.add(JavaVersionMappingUiProvider.instance()); + providers.add(JavaManyToOneMappingUiProvider.instance()); + providers.add(JavaOneToManyMappingUiProvider.instance()); + providers.add(JavaOneToOneMappingUiProvider.instance()); + providers.add(JavaManyToManyMappingUiProvider.instance()); + providers.add(JavaEmbeddedMappingUiProvider.instance()); + providers.add(JavaTransientMappingUiProvider.instance()); + + providers.add(OrmIdMappingUiProvider.instance()); + providers.add(OrmEmbeddedIdMappingUiProvider.instance()); + providers.add(OrmBasicMappingUiProvider.instance()); + providers.add(OrmVersionMappingUiProvider.instance()); + providers.add(OrmManyToOneMappingUiProvider.instance()); + providers.add(OrmOneToManyMappingUiProvider.instance()); + providers.add(OrmOneToOneMappingUiProvider.instance()); + providers.add(OrmManyToManyMappingUiProvider.instance()); + providers.add(OrmEmbeddedMappingUiProvider.instance()); + providers.add(OrmTransientMappingUiProvider.instance()); + } + + @Override + protected void addDefaultAttributeMappingUiProvidersTo(List<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> providers) { + providers.add(DefaultBasicMappingUiProvider.instance()); + providers.add(DefaultEmbeddedMappingUiProvider.instance()); + providers.add(NullAttributeMappingUiProvider.instance()); + } } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/commands/PersistentAttributeMapAsHandler.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/commands/PersistentAttributeMapAsHandler.java index cefbbcd031..0b829e7ac8 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/commands/PersistentAttributeMapAsHandler.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/commands/PersistentAttributeMapAsHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 Oracle. All rights reserved. + * Copyright (c) 2008, 2009 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. @@ -9,14 +9,12 @@ ******************************************************************************/ package org.eclipse.jpt.ui.internal.commands; -import java.util.Iterator; import java.util.Map; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jpt.core.context.PersistentAttribute; -import org.eclipse.jpt.ui.internal.menus.PersistentAttributeMapAsContribution; import org.eclipse.ui.ISources; import org.eclipse.ui.IViewPart; import org.eclipse.ui.commands.IElementUpdater; @@ -51,8 +49,9 @@ public class PersistentAttributeMapAsHandler extends AbstractHandler * The unique identifier of the Map As command parameter used for <code>PersistentAttribute</code> * defined in the <code>JptUiPlugin</code> plugin.xml. */ - public static final String COMMAND_PARAMETER_ID = "persistentAttributeMappingKey"; + public static final String SPECIFIED_MAPPING_COMMAND_PARAMETER_ID = "specifiedPersistentAttributeMappingKey"; + public static final String DEFAULT_MAPPING_COMMAND_PARAMETER_ID = "defaultPersistentAttributeMappingKey"; /** * Creates a new <code>PersistentAttributeMapAsHandler</code>. @@ -68,7 +67,7 @@ public class PersistentAttributeMapAsHandler extends AbstractHandler HandlerUtil.getCurrentSelectionChecked(event); // Retrieve the value of the unique parameter passed to the command - String mappingKey = event.getParameter(COMMAND_PARAMETER_ID); + String mappingKey = event.getParameter(SPECIFIED_MAPPING_COMMAND_PARAMETER_ID); // Change the mapping key for all the selected items for (Object item : selection.toArray()) { @@ -79,8 +78,7 @@ public class PersistentAttributeMapAsHandler extends AbstractHandler return null; } - @SuppressWarnings("unchecked") - public void updateElement(UIElement element, Map parameters) { + public void updateElement(UIElement element, @SuppressWarnings("unchecked") Map parameters) { // Retrieve the selection for the UIElement // Due to Bug 226746, we have to use API workaround to retrieve current @@ -92,33 +90,54 @@ public class PersistentAttributeMapAsHandler extends AbstractHandler IStructuredSelection selection = (IStructuredSelection) part.getSite().getSelectionProvider().getSelection(); - String commonMappingKey = commonMappingKey(selection); - - String handlerMappingKey = (String) parameters.get(COMMAND_PARAMETER_ID); - if (handlerMappingKey != null) { - element.setChecked(handlerMappingKey.equals(commonMappingKey)); - } + element.setChecked(selectedElementsMappingKeysMatch(selection, parameters)); } - @SuppressWarnings("unchecked") - protected String commonMappingKey(IStructuredSelection selection) { - String commonKey = null; - for (Iterator stream = selection.iterator(); stream.hasNext(); ) { - Object obj = stream.next(); - + //Check all the selected persistent attribute and verify that they have the same mapping type. + //They must all be either default mappings or specified mappings as well. + protected boolean selectedElementsMappingKeysMatch(IStructuredSelection selection, @SuppressWarnings("unchecked") Map parameters) { + String handlerSpecifiedMappingKey = (String) parameters.get(SPECIFIED_MAPPING_COMMAND_PARAMETER_ID); + String handlerDefaultMappingKey = (String) parameters.get(DEFAULT_MAPPING_COMMAND_PARAMETER_ID); + + String commonDefaultKey = null; + String commonSpecifiedKey = null; + for (Object obj : selection.toArray()) { if (! (obj instanceof PersistentAttribute)) { - return null; + //oddly enough, you have to check instanceof here, seems like a bug in the framework + return false; } PersistentAttribute persistentAttribute = (PersistentAttribute) obj; - - if (commonKey == null) { - commonKey = persistentAttribute.getMappingKey(); + if (persistentAttribute.getSpecifiedMapping() == null) { + if (commonSpecifiedKey != null) { + return false; + } + if (commonDefaultKey == null) { + commonDefaultKey = persistentAttribute.getMappingKey(); + } + else if (!commonDefaultKey.equals(persistentAttribute.getMappingKey())) { + return false; + } } - else if (! commonKey.equals(persistentAttribute.getMappingKey())) { - return null; + else { + if (commonDefaultKey != null) { + return false; + } + if (commonSpecifiedKey == null) { + commonSpecifiedKey = persistentAttribute.getMappingKey(); + } + else if (!commonSpecifiedKey.equals(persistentAttribute.getMappingKey())) { + return false; + } } } - return commonKey; + if (handlerSpecifiedMappingKey != null) { + return handlerSpecifiedMappingKey.equals(commonSpecifiedKey); + } + else if (handlerDefaultMappingKey != null) { + return handlerDefaultMappingKey.equals(commonDefaultKey); + } + return false; } + } 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 eb19d6920d..d352f95edc 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 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 Oracle. All rights reserved. + * Copyright (c) 2006, 2009 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. @@ -11,8 +11,8 @@ package org.eclipse.jpt.ui.internal.details; import java.util.Collection; import java.util.HashMap; -import java.util.Iterator; import java.util.Map; +import org.eclipse.core.runtime.content.IContentType; import org.eclipse.jpt.core.context.AttributeMapping; import org.eclipse.jpt.core.context.PersistentAttribute; import org.eclipse.jpt.ui.JptUiPlugin; @@ -27,6 +27,7 @@ import org.eclipse.jpt.utility.internal.model.value.FilteringPropertyValueModel; import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.utility.model.value.PropertyValueModel; import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.ui.part.PageBook; @@ -37,10 +38,9 @@ import org.eclipse.ui.part.PageBook; * * @see PersistentAttribute * - * @version 2.0 + * @version 2.2 * @since 1.0 */ -@SuppressWarnings("nls") public abstract class PersistentAttributeDetailsPage<T extends PersistentAttribute> extends AbstractJpaDetailsPage<T> { private JpaComposite currentMappingComposite; @@ -61,47 +61,69 @@ public abstract class PersistentAttributeDetailsPage<T extends PersistentAttribu } @Override + protected void initialize() { + super.initialize(); + this.mappingComposites = new HashMap<String, JpaComposite>(); + } + + @Override protected void addPropertyNames(Collection<String> propertyNames) { super.addPropertyNames(propertyNames); propertyNames.add(PersistentAttribute.DEFAULT_MAPPING_PROPERTY); propertyNames.add(PersistentAttribute.SPECIFIED_MAPPING_PROPERTY); } - protected AttributeMappingUiProvider<? extends AttributeMapping> getAttributeMappingUiProvider(String key) { - for (Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> i = attributeMappingUiProviders(); i.hasNext(); ) { - AttributeMappingUiProvider<? extends AttributeMapping> provider = i.next(); - if (provider.getKey() == key) { - return provider; - } + @Override + protected void propertyChanged(String propertyName) { + super.propertyChanged(propertyName); + + if (propertyName == PersistentAttribute.DEFAULT_MAPPING_PROPERTY || + propertyName == PersistentAttribute.SPECIFIED_MAPPING_PROPERTY) { + + updateMappingPage(); } - throw new IllegalArgumentException("Unsupported attribute mapping UI provider key: "); } - protected abstract Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> - attributeMappingUiProviders(); + protected Label buildMappingLabel(Composite parent) { + return addLabel(parent, JptUiMessages.PersistentAttributePage_mapAs); + } - protected abstract AttributeMappingUiProvider<? extends AttributeMapping>[] - attributeMappingUiProvidersFor(PersistentAttribute persistentAttribute); + protected PageBook buildMappingPageBook(Composite parent) { + this.mappingPageBook = new PageBook(parent, SWT.NONE); + this.mappingPageBook.showPage(this.addLabel(this.mappingPageBook, "")); //$NON-NLS-1$ - private PropertyAspectAdapter<PersistentAttribute, AttributeMapping> buildGenericMappingHolder() { - return new PropertyAspectAdapter<PersistentAttribute, AttributeMapping>( - getSubjectHolder(), - PersistentAttribute.DEFAULT_MAPPING_PROPERTY, - PersistentAttribute.SPECIFIED_MAPPING_PROPERTY) - { - @Override - protected AttributeMapping buildValue_() { - return subject.getMapping(); - } - }; + GridData gridData = new GridData(); + gridData.horizontalAlignment = SWT.FILL; + gridData.verticalAlignment = SWT.TOP; + gridData.grabExcessHorizontalSpace = true; + gridData.grabExcessVerticalSpace = true; + + this.mappingPageBook.setLayoutData(gridData); + + return this.mappingPageBook; } + private JpaComposite getMappingComposite(String key) { + JpaComposite composite = this.mappingComposites.get(key); + if (composite != null) { + return composite; + } + + composite = buildMappingComposite(this.mappingPageBook, key, getSubject().getContentType()); + + if (composite != null) { + this.mappingComposites.put(key, composite); + } + + return composite; + } + @SuppressWarnings("unchecked") protected JpaComposite buildMappingComposite(PageBook pageBook, - String mappingKey) { + String mappingKey, IContentType contentType) { AttributeMappingUiProvider<AttributeMapping> uiProvider = - (AttributeMappingUiProvider<AttributeMapping>) getMappingUIProvider(mappingKey); + (AttributeMappingUiProvider<AttributeMapping>) getMappingUIProvider(mappingKey, contentType); return uiProvider.buildAttributeMappingComposite( getJpaUiFactory(), @@ -110,11 +132,7 @@ public abstract class PersistentAttributeDetailsPage<T extends PersistentAttribu getWidgetFactory() ); } - - private Filter<AttributeMapping> buildMappingFilter(String mappingKey) { - return new MappingFilter(mappingKey); - } - + private PropertyValueModel<AttributeMapping> buildMappingHolder(final String key) { return new FilteringPropertyValueModel<AttributeMapping>( buildGenericMappingHolder(), @@ -122,83 +140,51 @@ public abstract class PersistentAttributeDetailsPage<T extends PersistentAttribu ); } - protected Label buildMappingLabel(Composite parent) { - return addLabel(parent, JptUiMessages.PersistentAttributePage_mapAs); + private PropertyAspectAdapter<PersistentAttribute, AttributeMapping> buildGenericMappingHolder() { + return new PropertyAspectAdapter<PersistentAttribute, AttributeMapping>( + getSubjectHolder(), + PersistentAttribute.DEFAULT_MAPPING_PROPERTY, + PersistentAttribute.SPECIFIED_MAPPING_PROPERTY) + { + @Override + protected AttributeMapping buildValue_() { + return this.subject.getMapping(); + } + }; } - protected PageBook buildMappingPageBook(Composite parent) { - this.mappingPageBook = new PageBook(parent, SWT.NONE); - this.mappingPageBook.showPage(this.addLabel(this.mappingPageBook, "")); - return this.mappingPageBook; + private Filter<AttributeMapping> buildMappingFilter(String mappingKey) { + return new MappingFilter(mappingKey); } - protected abstract DefaultAttributeMappingUiProvider<? extends AttributeMapping> getDefaultAttributeMappingUiProvider(String key); - - protected abstract Iterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> defaultAttributeMappingUiProviders(); + private AttributeMappingUiProvider<? extends AttributeMapping> getMappingUIProvider(String key, IContentType contentType) { - @Override - protected void doDispose() { - log(Tracing.UI_DETAILS_VIEW, "PersistentAttributeDetailsPage.doDispose()"); + if (this.getSubject().getMapping() == null || + this.getSubject().getMapping().isDefault()) { - if (this.currentMappingComposite != null) { - this.currentMappingComposite.dispose(); - this.currentMappingComposite = null; + return getDefaultAttributeMappingUiProvider(key, contentType); } - this.mappingComposites.clear(); - super.doDispose(); + return getAttributeMappingUiProvider(key, contentType); } - @Override - protected void doPopulate() { - super.doPopulate(); - updateMappingPage(); + protected AttributeMappingUiProvider<? extends AttributeMapping> getAttributeMappingUiProvider(String key, IContentType contentType) { + return getJpaPlatformUi().getAttributeMappingUiProvider(key, contentType); } - @Override - protected void initialize() { - super.initialize(); - this.mappingComposites = new HashMap<String, JpaComposite>(); + protected DefaultAttributeMappingUiProvider<? extends AttributeMapping> getDefaultAttributeMappingUiProvider(String key, IContentType contentType) { + return getJpaPlatformUi().getDefaultAttributeMappingUiProvider(key, contentType); } @Override - protected void log(String flag, String message) { - super.log(flag, message); - - if (Tracing.UI_DETAILS_VIEW.equals(flag) && - Tracing.booleanDebugOption(Tracing.UI_DETAILS_VIEW)) - { - Tracing.log(message); - } - } - - private JpaComposite getMappingComposite(String key) { - JpaComposite composite = this.mappingComposites.get(key); - if (composite != null) { - return composite; - } - - composite = buildMappingComposite(this.mappingPageBook, key); - - if (composite != null) { - this.mappingComposites.put(key, composite); - } - - return composite; - } - - protected void mappingPageChanged(JpaComposite mappingComposite) { + protected void doPopulate() { + super.doPopulate(); + updateMappingPage(); } - private AttributeMappingUiProvider<? extends AttributeMapping> getMappingUIProvider(String key) { - - if (this.getSubject().getMapping() == null || - this.getSubject().getMapping().isDefault()) { - - return getDefaultAttributeMappingUiProvider(key); - } - - return getAttributeMappingUiProvider(key); + private void updateMappingPage() { + AttributeMapping mapping = (this.getSubject() != null) ? this.getSubject().getMapping() : null; + populateMappingPage(mapping == null ? null : mapping.getKey()); } private void populateMappingPage(String mappingKey) { @@ -212,7 +198,7 @@ public abstract class PersistentAttributeDetailsPage<T extends PersistentAttribu else if (this.currentMappingComposite != null) { this.log( Tracing.UI_DETAILS_VIEW, - "PersistentAttributeDetailsPage.populateMappingPage() disposing of current page: " + this.currentMappingKey + "PersistentAttributeDetailsPage.populateMappingPage() disposing of current page: " + this.currentMappingKey //$NON-NLS-1$ ); try { @@ -233,7 +219,7 @@ public abstract class PersistentAttributeDetailsPage<T extends PersistentAttribu try { this.log( Tracing.UI_DETAILS_VIEW, - "PersistentAttributeDetailsPage.populateMappingPage() populating new page: " + this.currentMappingKey + "PersistentAttributeDetailsPage.populateMappingPage() populating new page: " + this.currentMappingKey //$NON-NLS-1$ ); this.currentMappingComposite.populate(); @@ -245,7 +231,7 @@ public abstract class PersistentAttributeDetailsPage<T extends PersistentAttribu this.log( Tracing.UI_DETAILS_VIEW, - "PersistentAttributeDetailsPage.populateMappingPage() error encountered" + "PersistentAttributeDetailsPage.populateMappingPage() error encountered" //$NON-NLS-1$ ); // An error was encountered either during the population, dispose it @@ -261,42 +247,50 @@ public abstract class PersistentAttributeDetailsPage<T extends PersistentAttribu // Show an error message // TODO: Replace the blank label with the error page - this.mappingPageBook.showPage(this.addLabel(this.mappingPageBook, "")); + this.mappingPageBook.showPage(this.addLabel(this.mappingPageBook, "")); //$NON-NLS-1$ } } else { this.log( Tracing.UI_DETAILS_VIEW, - "PersistentAttributeDetailsPage.populateMappingPage() no page to show" + "PersistentAttributeDetailsPage.populateMappingPage() no page to show" //$NON-NLS-1$ ); - this.mappingPageBook.showPage(this.addLabel(this.mappingPageBook, "")); + this.mappingPageBook.showPage(this.addLabel(this.mappingPageBook, "")); //$NON-NLS-1$ } this.repaintDetailsView(this.mappingPageBook); } - /* - * (non-Javadoc) - */ + protected void mappingPageChanged(JpaComposite mappingComposite) { + } + @Override - protected void propertyChanged(String propertyName) { - super.propertyChanged(propertyName); + protected boolean repopulateWithNullSubject() { + return false; + } - if (propertyName == PersistentAttribute.DEFAULT_MAPPING_PROPERTY || - propertyName == PersistentAttribute.SPECIFIED_MAPPING_PROPERTY) { + @Override + protected void doDispose() { + log(Tracing.UI_DETAILS_VIEW, "PersistentAttributeDetailsPage.doDispose()"); //$NON-NLS-1$ - updateMappingPage(); + if (this.currentMappingComposite != null) { + this.currentMappingComposite.dispose(); + this.currentMappingComposite = null; } + + this.mappingComposites.clear(); + super.doDispose(); } @Override - protected boolean repopulateWithNullSubject() { - return false; - } + protected void log(String flag, String message) { + super.log(flag, message); - private void updateMappingPage() { - AttributeMapping mapping = (this.getSubject() != null) ? this.getSubject().getMapping() : null; - populateMappingPage(mapping == null ? null : mapping.getKey()); + if (Tracing.UI_DETAILS_VIEW.equals(flag) && + Tracing.booleanDebugOption(Tracing.UI_DETAILS_VIEW)) + { + Tracing.log(message); + } } private class MappingFilter implements Filter<AttributeMapping> { diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/PersistentTypeDetailsPage.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/PersistentTypeDetailsPage.java index 539d5e4ce9..d66db1979c 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/PersistentTypeDetailsPage.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/details/PersistentTypeDetailsPage.java @@ -11,7 +11,6 @@ package org.eclipse.jpt.ui.internal.details; import java.util.Collection; import java.util.HashMap; -import java.util.Iterator; import java.util.Map; import org.eclipse.jpt.core.context.PersistentType; import org.eclipse.jpt.core.context.TypeMapping; @@ -94,18 +93,8 @@ public class PersistentTypeDetailsPage extends AbstractJpaDetailsPage<Persistent return this.typeMappingPageBook; } - private TypeMappingUiProvider<? extends TypeMapping> typeMappingUiProvider(String key) { - for (Iterator<TypeMappingUiProvider<? extends TypeMapping>> iter = this.typeMappingUiProviders(); iter.hasNext();) { - TypeMappingUiProvider<? extends TypeMapping> provider = iter.next(); - if (provider.getKey() == key) { - return provider; - } - } - throw new IllegalArgumentException("Unsupported type mapping UI provider key: " + key); - } - - protected Iterator<TypeMappingUiProvider<? extends TypeMapping>> typeMappingUiProviders() { - return getJpaPlatformUi().typeMappingUiProviders(getSubject().getContentType()); + private TypeMappingUiProvider<? extends TypeMapping> getTypeMappingUiProvider(String key) { + return getJpaPlatformUi().getTypeMappingUiProvider(key, getSubject().getContentType()); } private PropertyValueModel<TypeMapping> buildMappingHolder(String key) { @@ -230,12 +219,8 @@ public class PersistentTypeDetailsPage extends AbstractJpaDetailsPage<Persistent @SuppressWarnings("unchecked") protected JpaComposite buildMappingComposite(PageBook pageBook, String key) { -// return getJpaPlatformUi().buildPersistentTypeMappingComposite( -// buildMappingHolder(key), -// pageBook, -// getWidgetFactory()); TypeMappingUiProvider<TypeMapping> uiProvider = - (TypeMappingUiProvider<TypeMapping>) typeMappingUiProvider(key); + (TypeMappingUiProvider<TypeMapping>) getTypeMappingUiProvider(key); return uiProvider.buildPersistentTypeMappingComposite( getJpaUiFactory(), diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/dialogs/AddPersistentAttributeToXmlAndMapDialog.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/dialogs/AddPersistentAttributeToXmlAndMapDialog.java index 7a181585e7..9609512ded 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/dialogs/AddPersistentAttributeToXmlAndMapDialog.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/dialogs/AddPersistentAttributeToXmlAndMapDialog.java @@ -9,6 +9,8 @@ ******************************************************************************/ package org.eclipse.jpt.ui.internal.dialogs; +import java.text.Collator; +import java.util.Comparator; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.StatusDialog; @@ -23,6 +25,7 @@ import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; import org.eclipse.jpt.ui.JpaPlatformUi; import org.eclipse.jpt.ui.JptUiPlugin; import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.MappingUiProvider; import org.eclipse.jpt.ui.internal.JptUiMessages; import org.eclipse.jpt.utility.internal.CollectionTools; import org.eclipse.swt.SWT; @@ -77,7 +80,10 @@ public class AddPersistentAttributeToXmlAndMapDialog extends StatusDialog public void dispose() {} public Object[] getElements(Object inputElement) { - return CollectionTools.array(((JpaPlatformUi) inputElement).attributeMappingUiProviders(unmappedPersistentAttribute)); + return CollectionTools.array( + CollectionTools.sort( + ((JpaPlatformUi) inputElement).attributeMappingUiProviders(unmappedPersistentAttribute.getContentType()), + getProvidersComparator())); } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {} @@ -108,6 +114,16 @@ public class AddPersistentAttributeToXmlAndMapDialog extends StatusDialog return dialogArea; } + + protected Comparator<MappingUiProvider<?>> getProvidersComparator() { + return new Comparator<MappingUiProvider<?>>() { + public int compare(MappingUiProvider<?> item1, MappingUiProvider<?> item2) { + String displayString1 = item1.getLabel(); + String displayString2 = item2.getLabel(); + return Collator.getInstance().compare(displayString1, displayString2); + } + }; + } private Label createLabel(Composite container, int span, String text) { Label label = new Label(container, SWT.NONE); 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 a7ff6dfe03..a0de016858 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 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 Oracle. All rights reserved. + * Copyright (c) 2006, 2009 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. @@ -9,19 +9,11 @@ ******************************************************************************/ package org.eclipse.jpt.ui.internal.java.details; -import java.util.Iterator; -import org.eclipse.jpt.core.context.AttributeMapping; -import org.eclipse.jpt.core.context.PersistentAttribute; import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.ui.WidgetFactory; -import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; -import org.eclipse.jpt.ui.details.DefaultAttributeMappingUiProvider; import org.eclipse.jpt.ui.internal.details.PersistentAttributeDetailsPage; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; +import org.eclipse.jpt.ui.internal.mappings.details.PersistentAttributeMapAsComposite; import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.part.PageBook; /** * The default implementation of the details page used for the Java persistent @@ -45,7 +37,7 @@ import org.eclipse.ui.part.PageBook; * @see JavaPersistentAttribute * @see JavaPersistentTypeMapAsComposite * - * @version 2.0 + * @version 2.2 * @since 2.0 */ public class JavaPersistentAttributeDetailsPage extends PersistentAttributeDetailsPage<JavaPersistentAttribute> @@ -63,68 +55,14 @@ public class JavaPersistentAttributeDetailsPage extends PersistentAttributeDetai } @Override - protected Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> attributeMappingUiProviders() { - return getJpaPlatformUi().javaAttributeMappingUiProviders(); - } - - /** - * These AtttributeMappingUiProviders 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 AttributeMappingUiProvider<? extends AttributeMapping>[] attributeMappingUiProvidersFor(PersistentAttribute persistentAttribute) { - AttributeMappingUiProvider<? extends AttributeMapping>[] providers = new AttributeMappingUiProvider<?>[CollectionTools.size(attributeMappingUiProviders()) + 1]; - providers[0] = getDefaultAttributeMappingUiProvider(persistentAttribute.getDefaultMappingKey()); - int i = 1; - for (Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> iterator = attributeMappingUiProviders(); iterator.hasNext(); ) { - providers[i++] = iterator.next(); - } - return providers; - } - - @Override - protected DefaultAttributeMappingUiProvider<? extends AttributeMapping> getDefaultAttributeMappingUiProvider(String key) { - for (Iterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> i = defaultAttributeMappingUiProviders(); i.hasNext(); ) { - DefaultAttributeMappingUiProvider<? extends AttributeMapping> provider = i.next(); - - if (provider.getDefaultKey() == key) { - return provider; - } - } - - return this.nullAttributeMappingUiProvider(); - } - - @Override - protected Iterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> defaultAttributeMappingUiProviders() { - return getJpaPlatformUi().defaultJavaAttributeMappingUiProviders(); - } - - @Override protected void initializeLayout(Composite container) { // Map as composite - new JavaPersistentAttributeMapAsComposite( + new PersistentAttributeMapAsComposite( this, addSubPane(container, 0, 0, 5, 0) ); - // Mapping properties page - PageBook mappingPane = buildMappingPageBook(container); - - GridData gridData = new GridData(); - gridData.horizontalAlignment = SWT.FILL; - gridData.verticalAlignment = SWT.TOP; - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - - mappingPane.setLayoutData(gridData); - } - - protected DefaultAttributeMappingUiProvider<AttributeMapping> nullAttributeMappingUiProvider() { - return NullAttributeMappingUiProvider.instance(); + buildMappingPageBook(container); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/details/JavaPersistentAttributeMapAsComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/details/JavaPersistentAttributeMapAsComposite.java deleted file mode 100644 index 3607b9826e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/details/JavaPersistentAttributeMapAsComposite.java +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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.ui.internal.java.details; - -import java.util.Iterator; -import org.eclipse.jpt.core.context.AttributeMapping; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; -import org.eclipse.jpt.ui.details.DefaultAttributeMappingUiProvider; -import org.eclipse.jpt.ui.internal.mappings.details.PersistentAttributeMapAsComposite; -import org.eclipse.jpt.ui.internal.widgets.Pane; -import org.eclipse.swt.widgets.Composite; - -/** - * This "Map As" composite is responsible for showing the mapping name and - * mapping type for an attribute declared in a Java type. - * - * @see JavaPersistentAttribute - * @see JavaPersistentAttributeDetailsPage - The parent container - * - * @version 2.0 - * @since 2.0 - */ -public class JavaPersistentAttributeMapAsComposite extends PersistentAttributeMapAsComposite<JavaPersistentAttribute> { - - /** - * Creates a new <code>JavaPersistentAttributeMapAsComposite</code>. - * - * @param parentPane The parent pane of this one - * @param parent The parent container - */ - public JavaPersistentAttributeMapAsComposite(Pane<? extends JavaPersistentAttribute> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - @Override - protected Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> attributeMappingUiProviders() { - return getJpaPlatformUi().javaAttributeMappingUiProviders(); - } - - @Override - protected Iterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> defaultAttributeMappingUiProviders() { - return getJpaPlatformUi().defaultJavaAttributeMappingUiProviders(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/details/NullAttributeMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/details/NullAttributeMappingUiProvider.java index dfcfedf2d5..47ad4ca506 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/details/NullAttributeMappingUiProvider.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/details/NullAttributeMappingUiProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 Oracle. All rights reserved. + * Copyright (c) 2006, 2009 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. @@ -10,8 +10,9 @@ package org.eclipse.jpt.ui.internal.java.details; import org.eclipse.core.runtime.content.IContentType; +import org.eclipse.jpt.core.JptCorePlugin; import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.AttributeMapping; +import org.eclipse.jpt.core.context.java.JavaAttributeMapping; import org.eclipse.jpt.ui.JpaUiFactory; import org.eclipse.jpt.ui.WidgetFactory; import org.eclipse.jpt.ui.details.DefaultAttributeMappingUiProvider; @@ -24,7 +25,7 @@ import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; public class NullAttributeMappingUiProvider - implements DefaultAttributeMappingUiProvider<AttributeMapping> + implements DefaultAttributeMappingUiProvider<JavaAttributeMapping> { // singleton private static final NullAttributeMappingUiProvider INSTANCE = @@ -33,7 +34,7 @@ public class NullAttributeMappingUiProvider /** * Return the singleton. */ - public static DefaultAttributeMappingUiProvider<AttributeMapping> instance() { + public static DefaultAttributeMappingUiProvider<JavaAttributeMapping> instance() { return INSTANCE; } @@ -46,7 +47,7 @@ public class NullAttributeMappingUiProvider } public IContentType getContentType() { - throw new UnsupportedOperationException(); + return JptCorePlugin.JAVA_SOURCE_CONTENT_TYPE; } public Image getImage() { @@ -71,18 +72,18 @@ public class NullAttributeMappingUiProvider public JpaComposite buildAttributeMappingComposite( JpaUiFactory factory, - PropertyValueModel<AttributeMapping> subjectHolder, + PropertyValueModel<JavaAttributeMapping> subjectHolder, Composite parent, WidgetFactory widgetFactory) { return new NullComposite(subjectHolder, parent, widgetFactory); } - public static class NullComposite extends FormPane<AttributeMapping> + public static class NullComposite extends FormPane<JavaAttributeMapping> implements JpaComposite { NullComposite( - PropertyValueModel<AttributeMapping> subjectHolder, + PropertyValueModel<JavaAttributeMapping> subjectHolder, Composite parent, WidgetFactory widgetFactory) { super(subjectHolder, parent, widgetFactory); diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/MapAsComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/MapAsComposite.java index c10dda56f8..d35ec1af1a 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/MapAsComposite.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/MapAsComposite.java @@ -114,14 +114,7 @@ public abstract class MapAsComposite<T extends JpaNode> extends Pane<T> { */ protected abstract DefaultMappingUiProvider<?> getDefaultProvider(); - protected DefaultMappingUiProvider<?> getDefaultProvider(String mappingKey) { - for (DefaultMappingUiProvider<?> provider : CollectionTools.iterable(this.mappingChangeHandler.defaultProviders())) { - if (provider.getDefaultKey() == mappingKey) { - return provider; - } - } - return null; - } + protected abstract DefaultMappingUiProvider<?> getDefaultProvider(String mappingKey); protected MappingUiProvider<?> getProvider(String mappingKey) { for (MappingUiProvider<?> provider : CollectionTools.iterable(this.mappingChangeHandler.providers())) { @@ -467,13 +460,6 @@ public abstract class MapAsComposite<T extends JpaNode> extends Pane<T> { * @return The supported types of mapping */ Iterator<? extends MappingUiProvider<?>> providers(); - - /** - * Returns the list of default providers that are registered with the JPT plugin. - * - * @return The supported types of mapping - */ - Iterator<? extends DefaultMappingUiProvider<?>> defaultProviders(); } /** diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/OrmPersistentAttributeMapAsComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/OrmPersistentAttributeMapAsComposite.java deleted file mode 100644 index fb130aaacf..0000000000 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/OrmPersistentAttributeMapAsComposite.java +++ /dev/null @@ -1,53 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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.ui.internal.mappings.details; - -import java.util.Iterator; -import org.eclipse.jpt.core.context.AttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; -import org.eclipse.jpt.ui.details.DefaultAttributeMappingUiProvider; -import org.eclipse.jpt.ui.internal.widgets.Pane; -import org.eclipse.swt.widgets.Composite; - -/** - * This "Map As" composite is responsible for showing the mapping name and - * mapping type for an attribute declared within a JPA mapping descriptor file. - * - * @see OrmPersistentAttribute - * @see OrmPersistentAttributeDetailsPage - The parent container - * - * @version 2.0 - * @since 2.0 - */ -public class OrmPersistentAttributeMapAsComposite extends PersistentAttributeMapAsComposite<OrmPersistentAttribute> -{ - /** - * Creates a new <code>OrmPersistentAttributeMapAsComposite</code>. - * - * @param parentPane The parent pane of this one - * @param parent The parent container - */ - public OrmPersistentAttributeMapAsComposite(Pane<? extends OrmPersistentAttribute> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - @Override - protected Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> attributeMappingUiProviders() { - return getJpaPlatformUi().ormAttributeMappingUiProviders(); - } - - @Override - protected Iterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> defaultAttributeMappingUiProviders() { - return getJpaPlatformUi().defaultOrmAttributeMappingUiProviders(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/PersistentAttributeMapAsComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/PersistentAttributeMapAsComposite.java index 403dca019d..6702dd2739 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/PersistentAttributeMapAsComposite.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/PersistentAttributeMapAsComposite.java @@ -32,7 +32,7 @@ import org.eclipse.swt.widgets.Composite; * @version 2.2 * @since 2.0 */ -public abstract class PersistentAttributeMapAsComposite<T extends PersistentAttribute> extends MapAsComposite<T> { +public class PersistentAttributeMapAsComposite extends MapAsComposite<PersistentAttribute> { /** * Creates a new <code>PersistentAttributeMapAsComposite</code>. @@ -40,7 +40,7 @@ public abstract class PersistentAttributeMapAsComposite<T extends PersistentAttr * @param parentPane The parent pane of this one * @param parent The parent container */ - public PersistentAttributeMapAsComposite(Pane<? extends T> parentPane, + public PersistentAttributeMapAsComposite(Pane<? extends PersistentAttribute> parentPane, Composite parent) { super(parentPane, parent); @@ -93,11 +93,6 @@ public abstract class PersistentAttributeMapAsComposite<T extends PersistentAttr public Iterator<? extends MappingUiProvider<?>> providers() { return attributeMappingUiProviders(); } - - public Iterator<? extends DefaultMappingUiProvider<?>> defaultProviders() { - return defaultAttributeMappingUiProviders(); - } - }; } @@ -106,26 +101,29 @@ public abstract class PersistentAttributeMapAsComposite<T extends PersistentAttr * * @return The supported types of mapping */ - protected abstract Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> attributeMappingUiProviders(); + protected Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> attributeMappingUiProviders() { + return getJpaPlatformUi().attributeMappingUiProviders(getSubject().getContentType()); + } @Override protected DefaultMappingUiProvider<?> getDefaultProvider() { - String mappingKey = getSubject().getDefaultMappingKey(); + return getDefaultProvider(getSubject().getDefaultMappingKey()); - if (mappingKey == null) { - return null; - } - - return getDefaultProvider(mappingKey); } - + + @Override + protected DefaultMappingUiProvider<?> getDefaultProvider(String mappingKey) { + return getJpaPlatformUi().getDefaultAttributeMappingUiProvider(mappingKey, getSubject().getContentType()); + } + /** * Returns the list of providers that are registered with the JPT plugin. * * @return The supported default types of mapping */ - protected abstract Iterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> - defaultAttributeMappingUiProviders(); + protected Iterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> defaultAttributeMappingUiProviders() { + return getJpaPlatformUi().defaultAttributeMappingUiProviders(getSubject().getContentType()); + } @Override diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/PersistentTypeMapAsComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/PersistentTypeMapAsComposite.java index bd0f9ca7ee..1ce3b86fcb 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/PersistentTypeMapAsComposite.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/PersistentTypeMapAsComposite.java @@ -19,7 +19,6 @@ import org.eclipse.jpt.ui.details.MappingUiProvider; import org.eclipse.jpt.ui.details.TypeMappingUiProvider; import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages; import org.eclipse.jpt.ui.internal.widgets.Pane; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; import org.eclipse.swt.widgets.Composite; /** @@ -86,10 +85,6 @@ public class PersistentTypeMapAsComposite extends MapAsComposite<PersistentType> public Iterator<? extends MappingUiProvider<?>> providers() { return typeMappingUiProviders(getSubject().getContentType()); } - - public Iterator<? extends DefaultMappingUiProvider<?>> defaultProviders() { - return EmptyIterator.instance(); - } }; } @@ -104,7 +99,12 @@ public class PersistentTypeMapAsComposite extends MapAsComposite<PersistentType> @Override protected DefaultMappingUiProvider<?> getDefaultProvider() { - return getJpaPlatformUi().getDefaultTypeMappingProvider(getSubject().getContentType()); + return getJpaPlatformUi().getDefaultTypeMappingUiProvider(getSubject().getContentType()); + } + + @Override + protected DefaultMappingUiProvider<?> getDefaultProvider(String mappingKey) { + return getDefaultProvider(); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/menus/MapAsContribution.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/menus/MapAsContribution.java index 235d8977bc..a8052c0f8a 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/menus/MapAsContribution.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/menus/MapAsContribution.java @@ -9,9 +9,12 @@ ******************************************************************************/ package org.eclipse.jpt.ui.internal.menus; +import java.text.Collator; +import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import org.eclipse.core.runtime.content.IContentType; import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jpt.core.JpaPlatform; @@ -70,7 +73,7 @@ public abstract class MapAsContribution extends CompoundContributionItem // Retrieve the selection from the handler service // which should be an IStructuredSelection of JpaStructureNodes IHandlerService handlerService = - (IHandlerService) serviceLocator.getService(IHandlerService.class); + (IHandlerService) this.serviceLocator.getService(IHandlerService.class); IStructuredSelection currentSelection = (IStructuredSelection) handlerService.getCurrentState().getVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME); @@ -78,16 +81,28 @@ public abstract class MapAsContribution extends CompoundContributionItem // and retrieve the mapping UI providers just from the first item JpaStructureNode node = (JpaStructureNode) currentSelection.getFirstElement(); - return CollectionTools.array( - new TransformationIterator<MappingUiProvider<?>, IContributionItem>(mappingUiProviders(node)) { - @Override - protected IContributionItem transform(MappingUiProvider<?> next) { - return contributionItem(next); - } - }, - new IContributionItem[0]); + return + CollectionTools.array( + new TransformationIterator<MappingUiProvider<?>, IContributionItem>(mappingUiProviders(node)) { + @Override + protected IContributionItem transform(MappingUiProvider<?> next) { + return createContributionItem(next); + } + }, + new IContributionItem[0]); } + + protected Comparator<MappingUiProvider<?>> getProvidersComparator() { + return new Comparator<MappingUiProvider<?>>() { + public int compare(MappingUiProvider<?> item1, MappingUiProvider<?> item2) { + String displayString1 = item1.getLabel(); + String displayString2 = item2.getLabel(); + return Collator.getInstance().compare(displayString1, displayString2); + } + }; + } + /** * Retrieves the registered {@link MappingUiProvider}s from the given node, * using its {@link JpaPlatformUi}. @@ -100,13 +115,18 @@ public abstract class MapAsContribution extends CompoundContributionItem JpaPlatform jpaPlatform = node.getJpaProject().getJpaPlatform(); JpaPlatformUi jpaPlatformUi = JptUiPlugin.instance().getJpaPlatformUi(jpaPlatform); + Iterator<? extends MappingUiProvider<?>> sortedMappingUiProviders = + CollectionTools.sort( + mappingUiProviders(jpaPlatformUi, node.getContentType()), + getProvidersComparator()); + DefaultMappingUiProvider<?> defaultProvider = getDefaultProvider(jpaPlatformUi, node); if (defaultProvider != null) { - return new CompositeIterator<MappingUiProvider<?>>(defaultProvider, mappingUiProviders(jpaPlatformUi, node)); + return new CompositeIterator<MappingUiProvider<?>>(defaultProvider, sortedMappingUiProviders); } - return mappingUiProviders(jpaPlatformUi, node); + return sortedMappingUiProviders; } - + /** * Retrieves the registered {@link MappingUiProvider}s from the given * {@link JpaPlatformUi} and {@link JpaStructureNode} (to determine type of @@ -118,7 +138,7 @@ public abstract class MapAsContribution extends CompoundContributionItem * @return The list of registered {@link MappingUiProvider}s */ protected abstract Iterator<? extends MappingUiProvider<?>> - mappingUiProviders(JpaPlatformUi platformUi, JpaStructureNode node); + mappingUiProviders(JpaPlatformUi platformUi, IContentType contentType); /** * Creates the default provider responsible for clearing the mapping type. @@ -126,25 +146,22 @@ public abstract class MapAsContribution extends CompoundContributionItem * * @return A provider that acts as a default mapping provider */ - //TODO change to IContentType instead of JpaStructureNode protected abstract DefaultMappingUiProvider<?> getDefaultProvider(JpaPlatformUi platformUi, JpaStructureNode node); - protected IContributionItem contributionItem(MappingUiProvider<?> mappingUiProvider) { - CommandContributionItem item = - new CommandContributionItem(parameter(mappingUiProvider)); - return item; + protected IContributionItem createContributionItem(MappingUiProvider<?> mappingUiProvider) { + return new CommandContributionItem(createParameter(mappingUiProvider)); } - protected CommandContributionItemParameter parameter(MappingUiProvider<?> mappingUiProvider) { + protected CommandContributionItemParameter createParameter(MappingUiProvider<?> mappingUiProvider) { CommandContributionItemParameter parameter = new CommandContributionItemParameter( serviceLocator, createCommandContributionItemId(mappingUiProvider), - commandId(), + getCommandId(), CommandContributionItem.STYLE_CHECK); parameter.label = mappingUiProvider.getLabel(); Map<String, String> parameters = new HashMap<String, String>(); - parameters.put(commandParameterId(), mappingUiProvider.getKey()); + parameters.put(getCommandParameterId(), mappingUiProvider.getKey()); parameter.parameters = parameters; parameter.icon = new ImageImageDescriptor(mappingUiProvider.getImage()); parameter.visibleEnabled = true; @@ -157,7 +174,7 @@ public abstract class MapAsContribution extends CompoundContributionItem * * @return The unique identifier of the "map as" command */ - protected abstract String commandId(); + protected abstract String getCommandId(); /** * Retrieves the unique identifier of the mapping key command parameter that @@ -165,7 +182,7 @@ public abstract class MapAsContribution extends CompoundContributionItem * * @return The unique identifier of the "map as" command parameter */ - protected abstract String commandParameterId(); + protected abstract String getCommandParameterId(); /** * Returns an id for a {@link CommandContributionItem} in the form of @@ -173,6 +190,6 @@ public abstract class MapAsContribution extends CompoundContributionItem * (for example "org.eclipse.jpt.core.ui.persistentTypeMapAs.entity") */ protected String createCommandContributionItemId(MappingUiProvider<?> mappingUiProvider) { - return commandId() + "." + mappingUiProvider.getKey(); + return getCommandId() + "." + mappingUiProvider.getKey(); } } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/menus/PersistentAttributeMapAsContribution.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/menus/PersistentAttributeMapAsContribution.java index 0c73058e46..fcc608a220 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/menus/PersistentAttributeMapAsContribution.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/menus/PersistentAttributeMapAsContribution.java @@ -10,21 +10,26 @@ package org.eclipse.jpt.ui.internal.menus; import java.util.Iterator; +import org.eclipse.core.runtime.content.IContentType; import org.eclipse.jpt.core.JpaStructureNode; import org.eclipse.jpt.core.context.PersistentAttribute; import org.eclipse.jpt.ui.JpaPlatformUi; +import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; +import org.eclipse.jpt.ui.details.DefaultAttributeMappingUiProvider; import org.eclipse.jpt.ui.details.DefaultMappingUiProvider; import org.eclipse.jpt.ui.details.MappingUiProvider; import org.eclipse.jpt.ui.internal.commands.PersistentAttributeMapAsHandler; +import org.eclipse.ui.menus.CommandContributionItemParameter; /** * This menu contribution is responsible to populate the Map As menu with the * registered attribute mapping types defined in the <code>JptPlatformUi</code> * for <code>PersistentAttribute</code> objects. * + * @see PersistentAttributeMapAsHandler * @see PersistentAttribute * - * @version 2.0 + * @version 2.2 * @since 2.0 */ public class PersistentAttributeMapAsContribution extends MapAsContribution @@ -36,27 +41,39 @@ public class PersistentAttributeMapAsContribution extends MapAsContribution super(); } - /* - * (non-Javadoc) - */ @Override - protected String commandId() { + protected String getCommandId() { return PersistentAttributeMapAsHandler.COMMAND_ID; } @Override - protected String commandParameterId() { - return PersistentAttributeMapAsHandler.COMMAND_PARAMETER_ID; + protected String getCommandParameterId() { + return PersistentAttributeMapAsHandler.SPECIFIED_MAPPING_COMMAND_PARAMETER_ID; } - + + @Override + protected CommandContributionItemParameter createParameter(MappingUiProvider<?> mappingUiProvider) { + CommandContributionItemParameter parameter = super.createParameter(mappingUiProvider); + String defaultKey = null; + if (mappingUiProvider instanceof DefaultMappingUiProvider<?>) { + defaultKey = ((DefaultMappingUiProvider<?>) mappingUiProvider).getDefaultKey(); + } + parameter.parameters.put(PersistentAttributeMapAsHandler.DEFAULT_MAPPING_COMMAND_PARAMETER_ID, defaultKey); + return parameter; + } + @Override - protected Iterator<? extends MappingUiProvider<?>> - mappingUiProviders(JpaPlatformUi jpaPlatformUi, JpaStructureNode node) { - return jpaPlatformUi.attributeMappingUiProviders((PersistentAttribute) node); + protected Iterator<? extends AttributeMappingUiProvider<?>> + mappingUiProviders(JpaPlatformUi jpaPlatformUi, IContentType contentType) { + return jpaPlatformUi.attributeMappingUiProviders(contentType); } @Override - protected DefaultMappingUiProvider<?> getDefaultProvider(JpaPlatformUi platformUi, JpaStructureNode node) { - return null; //TODO + protected DefaultAttributeMappingUiProvider<?> getDefaultProvider(JpaPlatformUi jpaPlatformUi, JpaStructureNode node) { + return getDefaultProvider(jpaPlatformUi, ((PersistentAttribute) node).getDefaultMappingKey(), node.getContentType()); + } + + protected DefaultAttributeMappingUiProvider<?> getDefaultProvider(JpaPlatformUi jpaPlatformUi, String defaultKey, IContentType contentType) { + return jpaPlatformUi.getDefaultAttributeMappingUiProvider(defaultKey, contentType); } } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/menus/PersistentTypeMapAsContribution.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/menus/PersistentTypeMapAsContribution.java index 693f7f810e..fff536aa97 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/menus/PersistentTypeMapAsContribution.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/menus/PersistentTypeMapAsContribution.java @@ -10,10 +10,11 @@ package org.eclipse.jpt.ui.internal.menus; import java.util.Iterator; +import org.eclipse.core.runtime.content.IContentType; import org.eclipse.jpt.core.JpaStructureNode; import org.eclipse.jpt.ui.JpaPlatformUi; -import org.eclipse.jpt.ui.details.DefaultMappingUiProvider; -import org.eclipse.jpt.ui.details.MappingUiProvider; +import org.eclipse.jpt.ui.details.DefaultTypeMappingUiProvider; +import org.eclipse.jpt.ui.details.TypeMappingUiProvider; import org.eclipse.jpt.ui.internal.commands.PersistentTypeMapAsHandler; /** @@ -38,24 +39,24 @@ public class PersistentTypeMapAsContribution extends MapAsContribution } @Override - protected String commandId() { + protected String getCommandId() { return PersistentTypeMapAsHandler.COMMAND_ID; } @Override - protected String commandParameterId() { + protected String getCommandParameterId() { return PersistentTypeMapAsHandler.COMMAND_PARAMETER_ID; } @Override - protected Iterator<? extends MappingUiProvider<?>> - mappingUiProviders(JpaPlatformUi jpaPlatformUi, JpaStructureNode node) { - return jpaPlatformUi.typeMappingUiProviders(node.getContentType()); + protected Iterator<? extends TypeMappingUiProvider<?>> + mappingUiProviders(JpaPlatformUi jpaPlatformUi, IContentType contentType) { + return jpaPlatformUi.typeMappingUiProviders(contentType); } @Override - protected DefaultMappingUiProvider<?> getDefaultProvider(JpaPlatformUi platformUi, JpaStructureNode node) { - return platformUi.getDefaultTypeMappingProvider(node.getContentType()); + protected DefaultTypeMappingUiProvider<?> getDefaultProvider(JpaPlatformUi platformUi, JpaStructureNode node) { + return platformUi.getDefaultTypeMappingUiProvider(node.getContentType()); } } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmPersistentAttributeDetailsPage.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmPersistentAttributeDetailsPage.java index 9563169a78..122d59b18a 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmPersistentAttributeDetailsPage.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmPersistentAttributeDetailsPage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2008 Oracle. All rights reserved. + * Copyright (c) 2006, 2009 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. @@ -10,26 +10,21 @@ package org.eclipse.jpt.ui.internal.orm.details; import java.util.ArrayList; -import java.util.Iterator; +import org.eclipse.core.runtime.content.IContentType; import org.eclipse.jpt.core.context.AttributeMapping; import org.eclipse.jpt.core.context.PersistentAttribute; import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; import org.eclipse.jpt.ui.WidgetFactory; -import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; import org.eclipse.jpt.ui.details.DefaultAttributeMappingUiProvider; import org.eclipse.jpt.ui.details.JpaComposite; import org.eclipse.jpt.ui.internal.details.PersistentAttributeDetailsPage; -import org.eclipse.jpt.ui.internal.mappings.details.OrmPersistentAttributeMapAsComposite; +import org.eclipse.jpt.ui.internal.mappings.details.PersistentAttributeMapAsComposite; import org.eclipse.jpt.ui.internal.util.PaneEnabler; import org.eclipse.jpt.ui.internal.widgets.Pane; -import org.eclipse.jpt.utility.internal.CollectionTools; import org.eclipse.jpt.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.utility.model.value.PropertyValueModel; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.part.PageBook; /** * The default implementation of the details page used for the XML persistent @@ -56,7 +51,6 @@ import org.eclipse.ui.part.PageBook; * @version 2.0 * @since 2.0 */ -@SuppressWarnings("nls") public class OrmPersistentAttributeDetailsPage extends PersistentAttributeDetailsPage<OrmPersistentAttribute> { /** @@ -70,54 +64,14 @@ public class OrmPersistentAttributeDetailsPage extends PersistentAttributeDetail super(parent, widgetFactory); } - - @Override - public Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> attributeMappingUiProviders() { - return getJpaPlatformUi().ormAttributeMappingUiProviders(); - } - - @Override - @SuppressWarnings("unchecked") - protected AttributeMappingUiProvider<? extends AttributeMapping>[] attributeMappingUiProvidersFor(PersistentAttribute persistentAttribute) { - //bug 192035 - no default mapping option in xml - return CollectionTools.array(attributeMappingUiProviders(), new AttributeMappingUiProvider[CollectionTools.size(attributeMappingUiProviders())]); - } - private PropertyValueModel<Boolean> buildPaneEnablerHolder() { - return new TransformationPropertyValueModel<OrmPersistentAttribute, Boolean>(getSubjectHolder()) { - @Override - protected Boolean transform_(OrmPersistentAttribute value) { - return !value.isVirtual(); - } - }; - } - - @Override - protected DefaultAttributeMappingUiProvider<AttributeMapping> getDefaultAttributeMappingUiProvider(String key) { - throw new UnsupportedOperationException("Xml attributeMappings should not be default"); - } - - @Override - protected Iterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> defaultAttributeMappingUiProviders() { - return getJpaPlatformUi().defaultOrmAttributeMappingUiProviders(); - } - - private PropertyValueModel<OrmAttributeMapping> getMappingHolder() { - return new TransformationPropertyValueModel<PersistentAttribute, OrmAttributeMapping>(getSubjectHolder()) { - @Override - protected OrmAttributeMapping transform_(PersistentAttribute value) { - return (OrmAttributeMapping) value.getMapping(); - } - }; - } - @Override protected void initializeLayout(Composite container) { ArrayList<Pane<?>> panes = new ArrayList<Pane<?>>(2); // Map As composite - Pane mapAsPane = buildMapAsPane(addSubPane(container, 0, 0, 5, 0)); + Pane<?> mapAsPane = buildMapAsPane(addSubPane(container, 0, 0, 5, 0)); panes.add(mapAsPane); // Entity type widgets @@ -126,27 +80,41 @@ public class OrmPersistentAttributeDetailsPage extends PersistentAttributeDetail panes.add(javaAttributePane); - // Mapping properties pane - PageBook attributePane = buildMappingPageBook(container); - - GridData gridData = new GridData(); - gridData.horizontalAlignment = SWT.FILL; - gridData.verticalAlignment = SWT.TOP; - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - - attributePane.setLayoutData(gridData); + buildMappingPageBook(container); installPaneEnabler(panes); } - protected Pane buildMapAsPane(Composite parent) { - return new OrmPersistentAttributeMapAsComposite(this, parent); + protected Pane<PersistentAttribute> buildMapAsPane(Composite parent) { + return new PersistentAttributeMapAsComposite(this, parent); } private void installPaneEnabler(ArrayList<Pane<?>> panes) { new PaneEnabler(buildPaneEnablerHolder(), panes); } + + private PropertyValueModel<Boolean> buildPaneEnablerHolder() { + return new TransformationPropertyValueModel<OrmPersistentAttribute, Boolean>(getSubjectHolder()) { + @Override + protected Boolean transform_(OrmPersistentAttribute value) { + return Boolean.valueOf(!value.isVirtual()); + } + }; + } + + @Override + protected DefaultAttributeMappingUiProvider<AttributeMapping> getDefaultAttributeMappingUiProvider(String key, IContentType contentType) { + throw new UnsupportedOperationException("Xml attributeMappings should not be default"); //$NON-NLS-1$ + } + + private PropertyValueModel<OrmAttributeMapping> getMappingHolder() { + return new TransformationPropertyValueModel<PersistentAttribute, OrmAttributeMapping>(getSubjectHolder()) { + @Override + protected OrmAttributeMapping transform_(PersistentAttribute value) { + return (OrmAttributeMapping) value.getMapping(); + } + }; + } @Override protected void mappingPageChanged(JpaComposite mappingComposite) { diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/base/BaseJpaPlatformUi.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/base/BaseJpaPlatformUi.java index 348f160612..c3660a1368 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/base/BaseJpaPlatformUi.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/base/BaseJpaPlatformUi.java @@ -9,9 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.ui.internal.platform.base; -import java.util.ArrayList; import java.util.Iterator; -import java.util.List; import java.util.ListIterator; import org.eclipse.core.runtime.content.IContentType; import org.eclipse.jface.dialogs.MessageDialog; @@ -20,10 +18,7 @@ import org.eclipse.jpt.core.JpaFile; import org.eclipse.jpt.core.JpaProject; import org.eclipse.jpt.core.JpaStructureNode; import org.eclipse.jpt.core.context.AttributeMapping; -import org.eclipse.jpt.core.context.PersistentAttribute; import org.eclipse.jpt.core.context.TypeMapping; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; import org.eclipse.jpt.ui.JpaPlatformUi; import org.eclipse.jpt.ui.JpaPlatformUiProvider; import org.eclipse.jpt.ui.JpaUiFactory; @@ -34,35 +29,11 @@ import org.eclipse.jpt.ui.details.DefaultTypeMappingUiProvider; import org.eclipse.jpt.ui.details.JpaDetailsPage; import org.eclipse.jpt.ui.details.JpaDetailsProvider; import org.eclipse.jpt.ui.details.TypeMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.DefaultBasicMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.DefaultEmbeddedMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaBasicMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaEmbeddedIdMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaEmbeddedMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaIdMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaManyToManyMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaManyToOneMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaOneToManyMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaOneToOneMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaTransientMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaVersionMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.NullAttributeMappingUiProvider; -import org.eclipse.jpt.ui.internal.orm.details.OrmBasicMappingUiProvider; -import org.eclipse.jpt.ui.internal.orm.details.OrmEmbeddedIdMappingUiProvider; -import org.eclipse.jpt.ui.internal.orm.details.OrmEmbeddedMappingUiProvider; -import org.eclipse.jpt.ui.internal.orm.details.OrmIdMappingUiProvider; -import org.eclipse.jpt.ui.internal.orm.details.OrmManyToManyMappingUiProvider; -import org.eclipse.jpt.ui.internal.orm.details.OrmManyToOneMappingUiProvider; -import org.eclipse.jpt.ui.internal.orm.details.OrmOneToManyMappingUiProvider; -import org.eclipse.jpt.ui.internal.orm.details.OrmOneToOneMappingUiProvider; -import org.eclipse.jpt.ui.internal.orm.details.OrmTransientMappingUiProvider; -import org.eclipse.jpt.ui.internal.orm.details.OrmVersionMappingUiProvider; import org.eclipse.jpt.ui.navigator.JpaNavigatorProvider; import org.eclipse.jpt.ui.structure.JpaStructureProvider; import org.eclipse.jpt.utility.internal.CollectionTools; import org.eclipse.jpt.utility.internal.iterators.ArrayListIterator; import org.eclipse.jpt.utility.internal.iterators.CompositeListIterator; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; import org.eclipse.jpt.utility.internal.iterators.TransformationListIterator; import org.eclipse.swt.widgets.Composite; @@ -82,12 +53,6 @@ public abstract class BaseJpaPlatformUi private JpaStructureProvider javaStructureProvider; - private AttributeMappingUiProvider<? extends AttributeMapping>[] javaAttributeMappingUiProviders; - private DefaultAttributeMappingUiProvider<? extends AttributeMapping>[] defaultJavaAttributeMappingUiProviders; - - private AttributeMappingUiProvider<? extends AttributeMapping>[] ormAttributeMappingUiProviders; - private DefaultAttributeMappingUiProvider<? extends AttributeMapping>[] defaultOrmAttributeMappingUiProviders; - protected BaseJpaPlatformUi( JpaUiFactory jpaUiFactory, JpaNavigatorProvider navigatorProvider, @@ -170,7 +135,7 @@ public abstract class BaseJpaPlatformUi return new FilteringIterator<TypeMappingUiProvider<? extends TypeMapping>, TypeMappingUiProvider<? extends TypeMapping>>(typeMappingUiProviders()) { @Override protected boolean accept(TypeMappingUiProvider<? extends TypeMapping> provider) { - return provider.getContentType().equals(contentType); + return contentType.isKindOf(provider.getContentType()); } }; } @@ -186,7 +151,7 @@ public abstract class BaseJpaPlatformUi ); } - public DefaultTypeMappingUiProvider<? extends TypeMapping> getDefaultTypeMappingProvider(IContentType contentType) { + public DefaultTypeMappingUiProvider<? extends TypeMapping> getDefaultTypeMappingUiProvider(IContentType contentType) { for (DefaultTypeMappingUiProvider<? extends TypeMapping> provider : CollectionTools.iterable(defaultTypeMappingUiProviders())) { if (provider.getContentType().equals(contentType)) { return provider; @@ -196,6 +161,17 @@ public abstract class BaseJpaPlatformUi } + public TypeMappingUiProvider<? extends TypeMapping> getTypeMappingUiProvider(String key, IContentType contentType) { + for (TypeMappingUiProvider<? extends TypeMapping> provider : CollectionTools.iterable(typeMappingUiProviders(contentType))) { + if (key == provider.getKey()) { + return provider; + } + } + throw new IllegalArgumentException("Unsupported type mapping UI provider key: " + key); //$NON-NLS-1$ + } + + + protected ListIterator<DefaultTypeMappingUiProvider<? extends TypeMapping>> defaultTypeMappingUiProviders() { return new CompositeListIterator<DefaultTypeMappingUiProvider<? extends TypeMapping>> ( new TransformationListIterator<JpaPlatformUiProvider, ListIterator<DefaultTypeMappingUiProvider<? extends TypeMapping>>>(this.platformUiProviders()) { @@ -209,127 +185,64 @@ public abstract class BaseJpaPlatformUi // ********** Java attribute mapping UI providers ********** - public ListIterator<AttributeMappingUiProvider<? extends AttributeMapping>> javaAttributeMappingUiProviders() { - if (this.javaAttributeMappingUiProviders == null) { - this.javaAttributeMappingUiProviders = this.buildJavaAttributeMappingUiProviders(); - } - return new ArrayListIterator<AttributeMappingUiProvider<? extends AttributeMapping>>(this.javaAttributeMappingUiProviders); - } - - protected AttributeMappingUiProvider<? extends AttributeMapping>[] buildJavaAttributeMappingUiProviders() { - ArrayList<AttributeMappingUiProvider<? extends AttributeMapping>> providers = new ArrayList<AttributeMappingUiProvider<? extends AttributeMapping>>(); - this.addJavaAttributeMappingUiProvidersTo(providers); - @SuppressWarnings("unchecked") - AttributeMappingUiProvider<? extends AttributeMapping>[] providerArray = providers.toArray(new AttributeMappingUiProvider[providers.size()]); - return providerArray; + public Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> attributeMappingUiProviders(final IContentType contentType) { + return new FilteringIterator<AttributeMappingUiProvider<? extends AttributeMapping>, AttributeMappingUiProvider<? extends AttributeMapping>>(attributeMappingUiProviders()) { + @Override + protected boolean accept(AttributeMappingUiProvider<? extends AttributeMapping> provider) { + return contentType.isKindOf(provider.getContentType()); + } + }; } - /** - * 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, oneToOne, transient, and version - */ - protected void addJavaAttributeMappingUiProvidersTo(List<AttributeMappingUiProvider<? extends AttributeMapping>> providers) { - providers.add(JavaIdMappingUiProvider.instance()); - providers.add(JavaEmbeddedIdMappingUiProvider.instance()); - providers.add(JavaBasicMappingUiProvider.instance()); - providers.add(JavaVersionMappingUiProvider.instance()); - providers.add(JavaManyToOneMappingUiProvider.instance()); - providers.add(JavaOneToManyMappingUiProvider.instance()); - providers.add(JavaOneToOneMappingUiProvider.instance()); - providers.add(JavaManyToManyMappingUiProvider.instance()); - providers.add(JavaEmbeddedMappingUiProvider.instance()); - providers.add(JavaTransientMappingUiProvider.instance()); - providers.add(NullAttributeMappingUiProvider.instance()); + protected ListIterator<AttributeMappingUiProvider<? extends AttributeMapping>> attributeMappingUiProviders() { + return new CompositeListIterator<AttributeMappingUiProvider<? extends AttributeMapping>> ( + new TransformationListIterator<JpaPlatformUiProvider, ListIterator<AttributeMappingUiProvider<? extends AttributeMapping>>>(this.platformUiProviders()) { + @Override + protected ListIterator<AttributeMappingUiProvider<? extends AttributeMapping>> transform(JpaPlatformUiProvider platformProvider) { + return platformProvider.attributeMappingUiProviders(); + } + } + ); } - // ********** default Java attribute mapping UI providers ********** - public ListIterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> defaultJavaAttributeMappingUiProviders() { - if (this.defaultJavaAttributeMappingUiProviders == null) { - this.defaultJavaAttributeMappingUiProviders = this.buildDefaultJavaAttributeMappingUiProviders(); - } - return new ArrayListIterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>>(this.defaultJavaAttributeMappingUiProviders); - } - - protected DefaultAttributeMappingUiProvider<? extends AttributeMapping>[] buildDefaultJavaAttributeMappingUiProviders() { - ArrayList<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> providers = new ArrayList<DefaultAttributeMappingUiProvider<? extends AttributeMapping>>(); - this.addDefaultJavaAttributeMappingUiProvidersTo(providers); - @SuppressWarnings("unchecked") - DefaultAttributeMappingUiProvider<? extends AttributeMapping>[] providerArray = providers.toArray(new DefaultAttributeMappingUiProvider[providers.size()]); - return providerArray; - } - - /** - * 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<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> providers) { - providers.add(DefaultBasicMappingUiProvider.instance()); - providers.add(DefaultEmbeddedMappingUiProvider.instance()); + public Iterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> defaultAttributeMappingUiProviders(final IContentType contentType) { + return new FilteringIterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>, DefaultAttributeMappingUiProvider<? extends AttributeMapping>>(defaultAttributeMappingUiProviders()) { + @Override + protected boolean accept(DefaultAttributeMappingUiProvider<? extends AttributeMapping> provider) { + return provider.getContentType().equals(contentType); + } + }; } - - // ********** ORM attribute mapping UI providers ********** - - public Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> ormAttributeMappingUiProviders() { - if (this.ormAttributeMappingUiProviders == null) { - this.ormAttributeMappingUiProviders = this.buildOrmAttributeMappingUiProviders(); + + public DefaultAttributeMappingUiProvider<? extends AttributeMapping> getDefaultAttributeMappingUiProvider(String key, IContentType contentType) { + for (DefaultAttributeMappingUiProvider<?> provider : CollectionTools.iterable(defaultAttributeMappingUiProviders(contentType))) { + if (key == provider.getDefaultKey()) { + return provider; + } } - return new ArrayListIterator<AttributeMappingUiProvider<? extends AttributeMapping>>(this.ormAttributeMappingUiProviders); - } - - protected AttributeMappingUiProvider<? extends AttributeMapping>[] buildOrmAttributeMappingUiProviders() { - ArrayList<AttributeMappingUiProvider<? extends AttributeMapping>> providers = new ArrayList<AttributeMappingUiProvider<? extends AttributeMapping>>(); - this.addOrmAttributeMappingUiProvidersTo(providers); - @SuppressWarnings("unchecked") - AttributeMappingUiProvider<? extends AttributeMapping>[] providerArray = providers.toArray(new AttributeMappingUiProvider[providers.size()]); - return providerArray; - } - - /** - * Override this to specify more or different ORM attribute mapping ui - * providers. The default includes the JPA spec-defined basic, embedded, - * embeddedId, id, manyToMany, manyToOne, oneToMany, oneToOne, transient, - * and version. - */ - protected void addOrmAttributeMappingUiProvidersTo(List<AttributeMappingUiProvider<? extends AttributeMapping>> providers) { - providers.add(OrmBasicMappingUiProvider.instance()); - providers.add(OrmEmbeddedMappingUiProvider.instance()); - providers.add(OrmEmbeddedIdMappingUiProvider.instance()); - providers.add(OrmIdMappingUiProvider.instance()); - providers.add(OrmManyToManyMappingUiProvider.instance()); - providers.add(OrmManyToOneMappingUiProvider.instance()); - providers.add(OrmOneToManyMappingUiProvider.instance()); - providers.add(OrmOneToOneMappingUiProvider.instance()); - providers.add(OrmTransientMappingUiProvider.instance()); - providers.add(OrmVersionMappingUiProvider.instance()); + return null; } - - - // ********** default ORM attribute mapping UI providers ********** - - public Iterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> defaultOrmAttributeMappingUiProviders() { - if (this.defaultOrmAttributeMappingUiProviders == null) { - this.defaultOrmAttributeMappingUiProviders = this.buildDefaultOrmAttributeMappingUiProviders(); + + public AttributeMappingUiProvider<? extends AttributeMapping> getAttributeMappingUiProvider(String key, IContentType contentType) { + for (AttributeMappingUiProvider<?> provider : CollectionTools.iterable(attributeMappingUiProviders(contentType))) { + if (key == provider.getKey()) { + return provider; + } } - return new ArrayListIterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>>(this.defaultOrmAttributeMappingUiProviders); + throw new IllegalArgumentException("Unsupported attribute mapping UI provider key: "); //$NON-NLS-1$ } - protected DefaultAttributeMappingUiProvider<? extends AttributeMapping>[] buildDefaultOrmAttributeMappingUiProviders() { - ArrayList<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> providers = new ArrayList<DefaultAttributeMappingUiProvider<? extends AttributeMapping>>(); - this.addDefaultOrmAttributeMappingUiProvidersTo(providers); - @SuppressWarnings("unchecked") - DefaultAttributeMappingUiProvider<? extends AttributeMapping>[] providerArray = providers.toArray(new DefaultAttributeMappingUiProvider[providers.size()]); - return providerArray; - } - - /** - * Override this to specify more or different default ORM attribute mapping - * ui providers. The default has no specific mappings. - */ - protected void addDefaultOrmAttributeMappingUiProvidersTo(@SuppressWarnings("unused") List<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> providers) { - // nothing by default + protected ListIterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> defaultAttributeMappingUiProviders() { + return new CompositeListIterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> ( + new TransformationListIterator<JpaPlatformUiProvider, ListIterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>>>(this.platformUiProviders()) { + @Override + protected ListIterator<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> transform(JpaPlatformUiProvider platformProvider) { + return platformProvider.defaultAttributeMappingUiProviders(); + } + } + ); } @@ -381,15 +294,5 @@ public abstract class BaseJpaPlatformUi Shell currentShell = Display.getCurrent().getActiveShell(); MessageDialog.openInformation(currentShell, title, message); } - - public Iterator<AttributeMappingUiProvider<? extends AttributeMapping>> attributeMappingUiProviders(PersistentAttribute attribute) { - if (attribute instanceof JavaPersistentAttribute) { - return javaAttributeMappingUiProviders(); - } - if (attribute instanceof OrmPersistentAttribute) { - return ormAttributeMappingUiProviders(); - } - return EmptyIterator.instance(); - } } |