diff options
author | kmoore | 2008-11-06 22:46:19 +0000 |
---|---|---|
committer | kmoore | 2008-11-06 22:46:19 +0000 |
commit | 82113344e4a68b4a1df86cb58a8d992a66dd8d14 (patch) | |
tree | d53e8f34f2703361923f6225745c46cfd48dc8e8 | |
parent | e49e29e8a347c86625e7cc16911dc66a909e22dd (diff) | |
download | webtools.dali-82113344e4a68b4a1df86cb58a8d992a66dd8d14.tar.gz webtools.dali-82113344e4a68b4a1df86cb58a8d992a66dd8d14.tar.xz webtools.dali-82113344e4a68b4a1df86cb58a8d992a66dd8d14.zip |
yet another fix for converters support on eclipselink orm attribute mappings
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); + } + }; + } +} |