Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkmoore2008-11-06 22:46:19 +0000
committerkmoore2008-11-06 22:46:19 +0000
commit82113344e4a68b4a1df86cb58a8d992a66dd8d14 (patch)
treed53e8f34f2703361923f6225745c46cfd48dc8e8
parente49e29e8a347c86625e7cc16911dc66a909e22dd (diff)
downloadwebtools.dali-82113344e4a68b4a1df86cb58a8d992a66dd8d14.tar.gz
webtools.dali-82113344e4a68b4a1df86cb58a8d992a66dd8d14.tar.xz
webtools.dali-82113344e4a68b4a1df86cb58a8d992a66dd8d14.zip
yet another fix for converters support on eclipselink orm attribute mappings
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkBasicMappingComposite.java7
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkIdMappingComposite.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkVersionMappingComposite.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmBasicMappingComposite.java55
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmIdMappingComposite.java7
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmVersionMappingComposite.java36
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/OrmConvertComposite.java220
7 files changed, 255 insertions, 82 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkBasicMappingComposite.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkBasicMappingComposite.java
index ace9453677..a7d0bd79d1 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkBasicMappingComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkBasicMappingComposite.java
@@ -28,6 +28,7 @@ import org.eclipse.jpt.ui.internal.mappings.details.FetchTypeComposite;
import org.eclipse.jpt.ui.internal.mappings.details.OptionalComposite;
import org.eclipse.jpt.ui.internal.mappings.details.TemporalTypeComposite;
import org.eclipse.jpt.ui.internal.widgets.FormPane;
+import org.eclipse.jpt.ui.internal.widgets.Pane;
import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter;
import org.eclipse.jpt.utility.internal.model.value.TransformationPropertyValueModel;
import org.eclipse.jpt.utility.model.value.PropertyValueModel;
@@ -178,13 +179,17 @@ public class EclipseLinkBasicMappingComposite extends FormPane<BasicMapping>
null);
((GridData) elConverterButton.getLayoutData()).horizontalSpan = 2;
- ConvertComposite convertComposite = new ConvertComposite(buildEclipseLinkConverterHolder(specifiedConverterHolder), container, getWidgetFactory());
+ Pane<Convert> convertComposite = buildConvertComposite(buildEclipseLinkConverterHolder(specifiedConverterHolder), container);
GridData gridData = (GridData) convertComposite.getControl().getLayoutData();
gridData.horizontalSpan = 2;
gridData.horizontalIndent = 20;
registerSubPane(convertComposite);
}
+ protected Pane<Convert> buildConvertComposite(PropertyValueModel<Convert> convertHolder, Composite container) {
+ return new ConvertComposite(convertHolder, container, getWidgetFactory());
+ }
+
private PropertyValueModel<Column> buildColumnHolder() {
return new TransformationPropertyValueModel<BasicMapping, Column>(getSubjectHolder()) {
@Override
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkIdMappingComposite.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkIdMappingComposite.java
index bac5a4e643..57a2f9dbaf 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkIdMappingComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkIdMappingComposite.java
@@ -25,6 +25,7 @@ import org.eclipse.jpt.ui.internal.mappings.details.ColumnComposite;
import org.eclipse.jpt.ui.internal.mappings.details.GenerationComposite;
import org.eclipse.jpt.ui.internal.mappings.details.TemporalTypeComposite;
import org.eclipse.jpt.ui.internal.widgets.FormPane;
+import org.eclipse.jpt.ui.internal.widgets.Pane;
import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter;
import org.eclipse.jpt.utility.internal.model.value.TransformationPropertyValueModel;
import org.eclipse.jpt.utility.model.value.PropertyValueModel;
@@ -145,13 +146,16 @@ public class EclipseLinkIdMappingComposite extends FormPane<IdMapping>
null);
((GridData) elConverterButton.getLayoutData()).horizontalSpan = 2;
- ConvertComposite convertComposite = new ConvertComposite(buildEclipseLinkConverterHolder(specifiedConverterHolder), container, getWidgetFactory());
+ Pane<Convert> convertComposite = buildConvertComposite(buildEclipseLinkConverterHolder(specifiedConverterHolder), container);
GridData gridData = (GridData) convertComposite.getControl().getLayoutData();
gridData.horizontalSpan = 2;
gridData.horizontalIndent = 20;
registerSubPane(convertComposite);
}
+ protected Pane<Convert> buildConvertComposite(PropertyValueModel<Convert> convertHolder, Composite container) {
+ return new ConvertComposite(convertHolder, container, getWidgetFactory());
+ }
protected WritablePropertyValueModel<Boolean> buildNoConverterHolder() {
return new PropertyAspectAdapter<IdMapping, Boolean>(getSubjectHolder(), ConvertibleMapping.SPECIFIED_CONVERTER_PROPERTY) {
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkVersionMappingComposite.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkVersionMappingComposite.java
index 7f1900d6d5..8f0dff27b5 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkVersionMappingComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkVersionMappingComposite.java
@@ -24,6 +24,7 @@ import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
import org.eclipse.jpt.ui.internal.mappings.details.ColumnComposite;
import org.eclipse.jpt.ui.internal.mappings.details.TemporalTypeComposite;
import org.eclipse.jpt.ui.internal.widgets.FormPane;
+import org.eclipse.jpt.ui.internal.widgets.Pane;
import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter;
import org.eclipse.jpt.utility.internal.model.value.TransformationPropertyValueModel;
import org.eclipse.jpt.utility.model.value.PropertyValueModel;
@@ -140,13 +141,16 @@ public class EclipseLinkVersionMappingComposite extends FormPane<VersionMapping>
null);
((GridData) elConverterButton.getLayoutData()).horizontalSpan = 2;
- ConvertComposite convertComposite = new ConvertComposite(buildEclipseLinkConverterHolder(specifiedConverterHolder), container, getWidgetFactory());
+ Pane<Convert> convertComposite = buildConvertComposite(buildEclipseLinkConverterHolder(specifiedConverterHolder), container);
GridData gridData = (GridData) convertComposite.getControl().getLayoutData();
gridData.horizontalSpan = 2;
gridData.horizontalIndent = 20;
registerSubPane(convertComposite);
}
+ protected Pane<Convert> buildConvertComposite(PropertyValueModel<Convert> convertHolder, Composite container) {
+ return new ConvertComposite(convertHolder, container, getWidgetFactory());
+ }
protected WritablePropertyValueModel<Boolean> buildNoConverterHolder() {
return new PropertyAspectAdapter<VersionMapping, Boolean>(getSubjectHolder(), ConvertibleMapping.SPECIFIED_CONVERTER_PROPERTY) {
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmBasicMappingComposite.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmBasicMappingComposite.java
index 7e9310fed9..0c30f3e226 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmBasicMappingComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmBasicMappingComposite.java
@@ -10,16 +10,11 @@
package org.eclipse.jpt.eclipselink.ui.internal.orm.details;
import org.eclipse.jpt.core.context.BasicMapping;
-import org.eclipse.jpt.core.context.Converter;
+import org.eclipse.jpt.eclipselink.core.context.Convert;
import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipseLinkBasicMappingComposite;
import org.eclipse.jpt.ui.WidgetFactory;
-import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
-import org.eclipse.jpt.ui.internal.mappings.details.EnumTypeComposite;
-import org.eclipse.jpt.ui.internal.mappings.details.TemporalTypeComposite;
+import org.eclipse.jpt.ui.internal.widgets.Pane;
import org.eclipse.jpt.utility.model.value.PropertyValueModel;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
//Temporary to remove the Converters section from orm basic mapping.
@@ -41,47 +36,9 @@ public class EclipseLinkOrmBasicMappingComposite extends EclipseLinkBasicMapping
}
@Override
- //everything but the eclipseLink Converter option (@Convert). This is not supported in eclipselink 1.0, but is in 1.1
- protected void initializeTypePane(Composite container) {
-
- container = addCollapsableSection(
- container,
- JptUiMappingsMessages.TypeSection_type
- );
- ((GridLayout) container.getLayout()).numColumns = 2;
-
- // No converter
- Button noConverterButton = addRadioButton(
- container,
- JptUiMappingsMessages.TypeSection_default,
- buildNoConverterHolder(),
- null);
- ((GridData) noConverterButton.getLayoutData()).horizontalSpan = 2;
-
- // Lob
- Button lobButton = addRadioButton(
- container,
- JptUiMappingsMessages.TypeSection_lob,
- buildConverterBooleanHolder(Converter.LOB_CONVERTER),
- null);
- ((GridData) lobButton.getLayoutData()).horizontalSpan = 2;
-
- PropertyValueModel<Converter> specifiedConverterHolder = buildSpecifiedConverterHolder();
- // Temporal
- addRadioButton(
- container,
- JptUiMappingsMessages.TypeSection_temporal,
- buildConverterBooleanHolder(Converter.TEMPORAL_CONVERTER),
- null);
- registerSubPane(new TemporalTypeComposite(buildTemporalConverterHolder(specifiedConverterHolder), container, getWidgetFactory()));
-
-
- // Enumerated
- addRadioButton(
- container,
- JptUiMappingsMessages.TypeSection_enumerated,
- buildConverterBooleanHolder(Converter.ENUMERATED_CONVERTER),
- null);
- registerSubPane(new EnumTypeComposite(buildEnumeratedConverterHolder(specifiedConverterHolder), container, getWidgetFactory()));
+ //everything but the 'Defaine Converter' section. This is not supported in eclipselink 1.0, but is in 1.1
+ protected Pane<Convert> buildConvertComposite(PropertyValueModel<Convert> convertHolder, Composite container) {
+ return new OrmConvertComposite(convertHolder, container, getWidgetFactory());
}
+
} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmIdMappingComposite.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmIdMappingComposite.java
index 2a915270ea..aac38728fc 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmIdMappingComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmIdMappingComposite.java
@@ -11,11 +11,13 @@ package org.eclipse.jpt.eclipselink.ui.internal.orm.details;
import org.eclipse.jpt.core.context.Converter;
import org.eclipse.jpt.core.context.IdMapping;
+import org.eclipse.jpt.eclipselink.core.context.Convert;
import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipseLinkIdMappingComposite;
import org.eclipse.jpt.ui.WidgetFactory;
import org.eclipse.jpt.ui.details.JpaComposite;
import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
import org.eclipse.jpt.ui.internal.mappings.details.TemporalTypeComposite;
+import org.eclipse.jpt.ui.internal.widgets.Pane;
import org.eclipse.jpt.utility.model.value.PropertyValueModel;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -67,4 +69,9 @@ public class EclipseLinkOrmIdMappingComposite extends EclipseLinkIdMappingCompos
registerSubPane(new TemporalTypeComposite(buildTemporalConverterHolder(specifiedConverterHolder), container, getWidgetFactory()));
}
+ @Override
+ //everything but the 'Define Converter' section. This is not supported in eclipselink 1.0, but is in 1.1
+ protected Pane<Convert> buildConvertComposite(PropertyValueModel<Convert> convertHolder, Composite container) {
+ return new OrmConvertComposite(convertHolder, container, getWidgetFactory());
+ }
} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmVersionMappingComposite.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmVersionMappingComposite.java
index b64d25cedb..233f7a996c 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmVersionMappingComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkOrmVersionMappingComposite.java
@@ -9,17 +9,13 @@
******************************************************************************/
package org.eclipse.jpt.eclipselink.ui.internal.orm.details;
-import org.eclipse.jpt.core.context.Converter;
import org.eclipse.jpt.core.context.VersionMapping;
+import org.eclipse.jpt.eclipselink.core.context.Convert;
import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.EclipseLinkVersionMappingComposite;
import org.eclipse.jpt.ui.WidgetFactory;
import org.eclipse.jpt.ui.details.JpaComposite;
-import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
-import org.eclipse.jpt.ui.internal.mappings.details.TemporalTypeComposite;
+import org.eclipse.jpt.ui.internal.widgets.Pane;
import org.eclipse.jpt.utility.model.value.PropertyValueModel;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
//Temporary to remove the Converters section from orm basic mapping.
@@ -40,30 +36,10 @@ public class EclipseLinkOrmVersionMappingComposite extends EclipseLinkVersionMap
super(subjectHolder, parent, widgetFactory);
}
- @Override
- protected void initializeTypePane(Composite container) {
-
- container = addCollapsableSection(
- container,
- JptUiMappingsMessages.TypeSection_type
- );
- ((GridLayout) container.getLayout()).numColumns = 2;
- // No converter
- Button noConverterButton = addRadioButton(
- container,
- JptUiMappingsMessages.TypeSection_default,
- buildNoConverterHolder(),
- null);
- ((GridData) noConverterButton.getLayoutData()).horizontalSpan = 2;
-
- PropertyValueModel<Converter> specifiedConverterHolder = buildSpecifiedConverterHolder();
- // Temporal
- addRadioButton(
- container,
- JptUiMappingsMessages.TypeSection_temporal,
- buildTemporalBooleanHolder(),
- null);
- registerSubPane(new TemporalTypeComposite(buildTemporalConverterHolder(specifiedConverterHolder), container, getWidgetFactory()));
+ @Override
+ //everything but the 'Defaine Converter' section. This is not supported in eclipselink 1.0, but is in 1.1
+ protected Pane<Convert> buildConvertComposite(PropertyValueModel<Convert> convertHolder, Composite container) {
+ return new OrmConvertComposite(convertHolder, container, getWidgetFactory());
}
} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/OrmConvertComposite.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/OrmConvertComposite.java
new file mode 100644
index 0000000000..21376dd8f7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/OrmConvertComposite.java
@@ -0,0 +1,220 @@
+/*******************************************************************************
+ * 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.ArrayList;
+import java.util.ListIterator;
+import org.eclipse.jpt.eclipselink.core.context.Convert;
+import org.eclipse.jpt.eclipselink.core.internal.context.persistence.EclipseLinkPersistenceUnit;
+import org.eclipse.jpt.eclipselink.ui.internal.mappings.EclipseLinkUiMappingsMessages;
+import org.eclipse.jpt.ui.WidgetFactory;
+import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
+import org.eclipse.jpt.ui.internal.util.PaneEnabler;
+import org.eclipse.jpt.ui.internal.util.SWTUtil;
+import org.eclipse.jpt.ui.internal.widgets.FormPane;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.jpt.utility.internal.StringConverter;
+import org.eclipse.jpt.utility.internal.model.value.CompositeListValueModel;
+import org.eclipse.jpt.utility.internal.model.value.ListAspectAdapter;
+import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter;
+import org.eclipse.jpt.utility.internal.model.value.PropertyListValueModelAdapter;
+import org.eclipse.jpt.utility.internal.model.value.StaticListValueModel;
+import org.eclipse.jpt.utility.internal.model.value.TransformationPropertyValueModel;
+import org.eclipse.jpt.utility.model.value.ListValueModel;
+import org.eclipse.jpt.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Here the layout of this pane:
+ * <pre>
+ * -----------------------------------------------------------------------------
+ * | -------------------------------------------------------------- |
+ * | Converter: | |v| |
+ * | -------------------------------------------------------------- |
+ * -----------------------------------------------------------------------------</pre>
+ *
+ * @see EclipseLinkConvert
+ * @see EclipseLinkBasicMappingComposite - A container of this widget
+ *
+ * @version 2.1
+ * @since 2.1
+ */
+
+//Temporary to remove the Define Converters section from orm basic, id, version mapping.
+//This is supported in EclipseLink in version 1.1, but not 1.0
+public class OrmConvertComposite extends FormPane<Convert>
+{
+
+ /**
+ * A key used to represent the default value, this is required to convert
+ * the selected item from a combo to <code>null</code>. This key is most
+ * likely never typed the user and it will help to convert the value to
+ * <code>null</code> when it's time to set the new selected value into the
+ * model.
+ */
+ protected static String DEFAULT_KEY = "?!#!?#?#?default?#?!#?!#?"; //$NON-NLS-1$
+
+
+ /**
+ * Creates a new <code>EnumTypeComposite</code>.
+ *
+ * @param parentPane The parent container of this one
+ * @param parent The parent container
+ */
+ public OrmConvertComposite(PropertyValueModel<? extends Convert> subjectHolder,
+ Composite parent,
+ WidgetFactory widgetFactory) {
+
+ super(subjectHolder, parent, widgetFactory);
+ }
+
+ @Override
+ protected void initializeLayout(Composite container) {
+ CCombo combo = addLabeledEditableCCombo(
+ container,
+ EclipseLinkUiMappingsMessages.ConvertComposite_converterNameLabel,
+ buildConvertNameListHolder(),
+ buildConvertNameHolder(),
+ buildNameConverter(),
+ null
+ );
+ SWTUtil.attachDefaultValueHandler(combo);
+
+ new PaneEnabler(buildBooleanHolder(), this);
+ }
+
+ protected final WritablePropertyValueModel<String> buildConvertNameHolder() {
+ return new PropertyAspectAdapter<Convert, String>(getSubjectHolder(), Convert.SPECIFIED_CONVERTER_NAME_PROPERTY) {
+ @Override
+ protected String buildValue_() {
+ return this.subject.getSpecifiedConverterName();
+ }
+
+ @Override
+ protected void setValue_(String value) {
+ // Convert the default value or an empty string to null
+ if ((value != null) &&
+ ((value.length() == 0) || value.startsWith(DEFAULT_KEY))) {
+
+ value = null;
+ }
+ this.subject.setSpecifiedConverterName(value);
+ }
+ };
+ }
+ private ListValueModel<String> buildConvertNameListHolder() {
+ java.util.List<ListValueModel<String>> list = new ArrayList<ListValueModel<String>>();
+ list.add(buildDefaultNameListHolder());
+ list.add(buildReservedConverterNameListHolder());
+ list.add(buildConverterNameListHolder());
+ return new CompositeListValueModel<ListValueModel<String>, String>(list);
+ }
+
+ protected ListValueModel<String> buildDefaultNameListHolder() {
+ return new PropertyListValueModelAdapter<String>(
+ buildDefaultNameHolder()
+ );
+ }
+
+ private WritablePropertyValueModel<String> buildDefaultNameHolder() {
+ return new PropertyAspectAdapter<Convert, String>(getSubjectHolder(), Convert.DEFAULT_CONVERTER_NAME_PROPERTY) {
+ @Override
+ protected String buildValue_() {
+ String name = this.subject.getDefaultConverterName();
+
+ if (name == null) {
+ name = DEFAULT_KEY;
+ }
+ else {
+ name = DEFAULT_KEY + name;
+ }
+
+ return name;
+ }
+ };
+ }
+
+ private StringConverter<String> buildNameConverter() {
+ return new StringConverter<String>() {
+ public String convertToString(String value) {
+
+ if (getSubject() == null) {
+ return value;
+ }
+
+ if (value == null) {
+ value = getSubject().getDefaultConverterName();
+
+ if (value != null) {
+ value = DEFAULT_KEY + value;
+ }
+ else {
+ value = DEFAULT_KEY;
+ }
+ }
+
+ if (value.startsWith(DEFAULT_KEY)) {
+ String defaultName = value.substring(DEFAULT_KEY.length());
+
+ if (defaultName.length() > 0) {
+ value = NLS.bind(
+ JptUiMappingsMessages.DefaultWithValue,
+ defaultName
+ );
+ }
+ else {
+ value = JptUiMappingsMessages.DefaultWithoutValue;
+ }
+ }
+
+ return value;
+ }
+ };
+ }
+
+ protected ListValueModel<String> buildReservedConverterNameListHolder() {
+ return new StaticListValueModel<String>(CollectionTools.list(Convert.RESERVED_CONVERTER_NAMES));
+ }
+
+ protected ListValueModel<String> buildConverterNameListHolder() {
+ return new ListAspectAdapter<EclipseLinkPersistenceUnit, String>(
+ buildPersistenceUnitHolder(),
+ EclipseLinkPersistenceUnit.CONVERTERS_LIST)//TODO need EclipseLinkPersistenceUnit interface
+ {
+ @Override
+ protected ListIterator<String> listIterator_() {
+ return CollectionTools.listIterator(CollectionTools.sort(this.subject.uniqueConverterNames()));
+ }
+ };
+ }
+
+ protected PropertyValueModel<EclipseLinkPersistenceUnit> buildPersistenceUnitHolder() {
+ return new PropertyAspectAdapter<Convert, EclipseLinkPersistenceUnit>(getSubjectHolder()) {
+ @Override
+ protected EclipseLinkPersistenceUnit buildValue_() {
+ return (EclipseLinkPersistenceUnit) getSubject().getPersistenceUnit();
+ }
+ };
+ }
+
+ protected PropertyValueModel<Boolean> buildBooleanHolder() {
+ return new TransformationPropertyValueModel<Convert, Boolean>(getSubjectHolder()) {
+ @Override
+ protected Boolean transform(Convert value) {
+ if (getSubject() != null && getSubject().getParent().getPersistentAttribute().isVirtual()) {
+ return Boolean.FALSE;
+ }
+ return Boolean.valueOf(value != null);
+ }
+ };
+ }
+}

Back to the top