Skip to main content
summaryrefslogtreecommitdiffstats
path: root/jpa
diff options
context:
space:
mode:
authorkmoore2011-10-21 18:24:03 +0000
committerkmoore2011-10-21 18:24:03 +0000
commite7b7d664b69a4187e1376d9c629f0d5bf21c61da (patch)
treed895994591a7347f870df0db9daefd6298f7f506 /jpa
parenta195430b46e4634fa41e65c8a782b4ec5445061b (diff)
downloadwebtools.dali-e7b7d664b69a4187e1376d9c629f0d5bf21c61da.tar.gz
webtools.dali-e7b7d664b69a4187e1376d9c629f0d5bf21c61da.tar.xz
webtools.dali-e7b7d664b69a4187e1376d9c629f0d5bf21c61da.zip
360594 - EclipseLink multitenancy UI
Diffstat (limited to 'jpa')
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/EclipseLinkMultitenancy2_3.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/orm/EclipseLinkEntityMappings.java7
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/orm/EclipseLinkPersistenceUnitDefaults.java70
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/persistence/EclipseLinkPersistenceUnit.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/JavaEclipseLinkMultitenancyImpl2_3.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/NullJavaEclipseLinkMultitenancy2_3.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/EclipseLinkEntityMappingsImpl.java5
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/NullOrmEclipseLinkMultitenancy2_3.java3
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkMultitenancyImpl2_3.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkPersistenceUnitDefaults.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkPersistenceUnitMetadata.java5
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/property_files/eclipselink_ui_details.properties20
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/EclipseLinkHelpContextIds.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkMultitenancyComposite.java322
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkUiDetailsMessages.java22
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/TenantDiscriminatorColumnComposite.java395
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/TenantDiscriminatorColumnsComposite.java290
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkEntity2_xComposite.java93
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/EclipseLink2_3JavaResourceUiDefinition.java109
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/EclipseLink2_3JavaUiFactory.java48
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEntity2_0Composite.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEntity2_3Composite.java72
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkMappedSuperclass2_3Composite.java103
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractOrmEclipseLinkEntity2_xComposite.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLink2_3PersistenceUnitMetadataComposite.java218
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_0DetailsProvider.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_3DetailsPage.java114
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_3DetailsProvider.java64
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite.java247
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_1UiDefinition.java5
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_1UiFactory.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_2UiDefinition.java63
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_3UiDefinition.java19
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_3UiFactory.java37
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_4UiDefinition.java7
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEntity2_0Composite.java28
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEntity2_3Composite.java64
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_1Composite.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_1UiDefinition.java47
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_3Composite.java91
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/platform/EclipseLink2_3JpaPlatformUiProvider.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/platform/EclipseLink2_4JpaPlatformUiProvider.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/PersistenceUnitMetadataComposite.java38
-rw-r--r--jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/context/java/EclipseLink2_3JavaMultitenancyTests.java8
-rw-r--r--jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/context/orm/EclipseLink2_3OrmMultitenancyTests.java8
45 files changed, 2587 insertions, 265 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/EclipseLinkMultitenancy2_3.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/EclipseLinkMultitenancy2_3.java
index 474fb73e18..e85b27812e 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/EclipseLinkMultitenancy2_3.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/EclipseLinkMultitenancy2_3.java
@@ -144,4 +144,12 @@ public interface EclipseLinkMultitenancy2_3
*/
int getDefaultTenantDiscriminatorColumnsSize();
+ /**
+ * Return whether a TenantDiscriminatorColumn is allowed for this type mapping.
+ * It is allowed if it is a mapped-superclass, the root entity in the inheritance hierarchy,
+ * or the inheritance strategy is table-per-class
+ */
+ boolean specifiedTenantDiscriminatorColumnsAllowed();
+ String SPECIFIED_TENANT_DISCRIMINATOR_COLUMNS_ALLOWED_PROPERTY = "specifiedTenantDiscriminatorColumnsAllowed"; //$NON-NLS-1$
+
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/orm/EclipseLinkEntityMappings.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/orm/EclipseLinkEntityMappings.java
index 5691d7419f..2c19a1b843 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/orm/EclipseLinkEntityMappings.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/orm/EclipseLinkEntityMappings.java
@@ -13,7 +13,6 @@ import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
import org.eclipse.jpt.jpa.core.context.orm.EntityMappings;
import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConverter;
import org.eclipse.jpt.jpa.eclipselink.core.context.ReadOnlyTenantDiscriminatorColumn2_3;
-import org.eclipse.jpt.jpa.eclipselink.core.context.TenantDiscriminatorColumn2_3;
public interface EclipseLinkEntityMappings
extends EntityMappings
@@ -63,18 +62,18 @@ public interface EclipseLinkEntityMappings
* Add a specified tenant discriminator column and return the object
* representing it.
*/
- TenantDiscriminatorColumn2_3 addSpecifiedTenantDiscriminatorColumn();
+ OrmTenantDiscriminatorColumn2_3 addSpecifiedTenantDiscriminatorColumn();
/**
* Add a specified tenant discriminator column and return the object
* representing it.
*/
- TenantDiscriminatorColumn2_3 addSpecifiedTenantDiscriminatorColumn(int index);
+ OrmTenantDiscriminatorColumn2_3 addSpecifiedTenantDiscriminatorColumn(int index);
/**
* Remove the specified tenant discriminator column.
*/
- void removeSpecifiedTenantDiscriminatorColumn(TenantDiscriminatorColumn2_3 tenantDiscriminatorColumn);
+ void removeSpecifiedTenantDiscriminatorColumn(OrmTenantDiscriminatorColumn2_3 tenantDiscriminatorColumn);
/**
* Remove the specified tenant discriminator column at the index.
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/orm/EclipseLinkPersistenceUnitDefaults.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/orm/EclipseLinkPersistenceUnitDefaults.java
new file mode 100644
index 0000000000..3f8a4c548a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/orm/EclipseLinkPersistenceUnitDefaults.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.eclipselink.core.context.orm;
+
+import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmPersistenceUnitDefaults2_0;
+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmTenantDiscriminatorColumn2_3;
+
+/**
+ * EclipseLink <code>orm.xml</code> file
+ * <br>
+ * <code>persistence-unit-defaults</code> element
+ */
+public interface EclipseLinkPersistenceUnitDefaults
+ extends OrmPersistenceUnitDefaults2_0
+{
+
+ // ********** tenant discriminator columns **********
+
+ /**
+ * Return a list iterable of the tenant discriminator columns.
+ * This will not be null.
+ */
+ ListIterable<OrmTenantDiscriminatorColumn2_3> getTenantDiscriminatorColumns();
+ String TENANT_DISCRIMINATOR_COLUMNS_LIST = "tenantDiscriminatorColumns"; //$NON-NLS-1$
+
+ /**
+ * Return the number of tenant discriminator columns.
+ */
+ int getTenantDiscriminatorColumnsSize();
+
+ /**
+ * Return whether there are any tenant discriminator columns.
+ */
+ boolean hasTenantDiscriminatorColumns();
+
+ /**
+ * Add a tenant discriminator column and return the object
+ * representing it.
+ */
+ OrmTenantDiscriminatorColumn2_3 addTenantDiscriminatorColumn();
+
+ /**
+ * Add a tenant discriminator column and return the object
+ * representing it.
+ */
+ OrmTenantDiscriminatorColumn2_3 addTenantDiscriminatorColumn(int index);
+
+ /**
+ * Remove the tenant discriminator column.
+ */
+ void removeTenantDiscriminatorColumn(OrmTenantDiscriminatorColumn2_3 tenantDiscriminatorColumn);
+
+ /**
+ * Remove the tenant discriminator column at the index.
+ */
+ void removeTenantDiscriminatorColumn(int index);
+
+ /**
+ * Move the tenant discriminator column from the source index to the target index.
+ */
+ void moveTenantDiscriminatorColumn(int targetIndex, int sourceIndex);
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/persistence/EclipseLinkPersistenceUnit.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/persistence/EclipseLinkPersistenceUnit.java
index 67d6b388d5..a1676ad1ec 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/persistence/EclipseLinkPersistenceUnit.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/context/persistence/EclipseLinkPersistenceUnit.java
@@ -51,11 +51,11 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConverter;
import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkTypeMapping;
import org.eclipse.jpt.jpa.eclipselink.core.context.ReadOnlyTenantDiscriminatorColumn2_3;
import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkEntityMappings;
+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkPersistenceUnitDefaults;
import org.eclipse.jpt.jpa.eclipselink.core.internal.DefaultEclipseLinkJpaValidationMessages;
import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaValidationMessages;
import org.eclipse.jpt.jpa.eclipselink.core.internal.context.java.JavaEclipseLinkConverter;
import org.eclipse.jpt.jpa.eclipselink.core.internal.context.orm.OrmEclipseLinkConverter;
-import org.eclipse.jpt.jpa.eclipselink.core.internal.context.orm.OrmEclipseLinkPersistenceUnitDefaults;
import org.eclipse.jpt.jpa.eclipselink.core.internal.context.orm.OrmEclipseLinkPersistenceUnitMetadata;
import org.eclipse.jpt.jpa.eclipselink.core.internal.context.persistence.EclipseLinkCaching;
import org.eclipse.jpt.jpa.eclipselink.core.internal.context.persistence.EclipseLinkCustomization;
@@ -103,7 +103,7 @@ public class EclipseLinkPersistenceUnit
OrmEclipseLinkPersistenceUnitMetadata metadata = this.getEclipseLinkMetadata();
- OrmEclipseLinkPersistenceUnitDefaults defaults = (metadata == null) ? null : metadata.getPersistenceUnitDefaults();
+ EclipseLinkPersistenceUnitDefaults defaults = (metadata == null) ? null : metadata.getPersistenceUnitDefaults();
this.setDefaultTenantDiscriminatorColumns(this.buildDefaultTenantDiscriminatorColumns(defaults));
}
@@ -343,7 +343,7 @@ public class EclipseLinkPersistenceUnit
this.synchronizeList(tenantDiscriminatorColumns, this.defaultTenantDiscriminatorColumns, DEFAULT_TENANT_DISCRIMINATOR_COLUMNS_LIST);
}
- protected ListIterable<ReadOnlyTenantDiscriminatorColumn2_3> buildDefaultTenantDiscriminatorColumns(OrmEclipseLinkPersistenceUnitDefaults defaults) {
+ protected ListIterable<ReadOnlyTenantDiscriminatorColumn2_3> buildDefaultTenantDiscriminatorColumns(EclipseLinkPersistenceUnitDefaults defaults) {
return (defaults == null) ? EmptyListIterable.<ReadOnlyTenantDiscriminatorColumn2_3> instance() : new SuperListIterableWrapper<ReadOnlyTenantDiscriminatorColumn2_3>(defaults.getTenantDiscriminatorColumns());
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/JavaEclipseLinkMultitenancyImpl2_3.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/JavaEclipseLinkMultitenancyImpl2_3.java
index b397ad2af5..f0f2cd2bea 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/JavaEclipseLinkMultitenancyImpl2_3.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/JavaEclipseLinkMultitenancyImpl2_3.java
@@ -72,6 +72,8 @@ public class JavaEclipseLinkMultitenancyImpl2_3
protected final JavaReadOnlyTenantDiscriminatorColumn2_3 defaultTenantDiscriminatorColumn;
+ protected boolean specifiedTenantDiscriminatorColumnsAllowed;
+
public JavaEclipseLinkMultitenancyImpl2_3(JavaEclipseLinkNonEmbeddableTypeMapping parent) {
super(parent);
@@ -105,6 +107,7 @@ public class JavaEclipseLinkMultitenancyImpl2_3
this.setSpecifiedMultitenant_(this.isMultitenantAnnotationSpecified());
this.setDefaultMultitenant(this.buildDefaultMultitenant());
this.setDefaultType(this.buildDefaultType());
+ this.setSpecifiedTenantDiscriminatorColumnsAllowed(this.buildSpecifiedTenantDiscriminatorColumnsAllowed());
this.updateDefaultTenantDiscriminatorColumns();
}
@@ -397,6 +400,20 @@ public class JavaEclipseLinkMultitenancyImpl2_3
return (entityMappings != null) ? entityMappings.getTenantDiscriminatorColumns() : this.getPersistenceUnit().getDefaultTenantDiscriminatorColumns();
}
+ public boolean specifiedTenantDiscriminatorColumnsAllowed() {
+ return this.specifiedTenantDiscriminatorColumnsAllowed;
+ }
+
+ public void setSpecifiedTenantDiscriminatorColumnsAllowed(boolean allowed) {
+ boolean old = this.specifiedTenantDiscriminatorColumnsAllowed;
+ this.specifiedTenantDiscriminatorColumnsAllowed = allowed;
+ this.firePropertyChanged(SPECIFIED_TENANT_DISCRIMINATOR_COLUMNS_ALLOWED_PROPERTY, old, allowed);
+ }
+
+ protected boolean buildSpecifiedTenantDiscriminatorColumnsAllowed() {
+ return this.getParent().isMultitenantMetadataAllowed();
+ }
+
/**
* default tenant discriminator column container
@@ -562,10 +579,6 @@ public class JavaEclipseLinkMultitenancyImpl2_3
return (EclipseLinkPersistenceUnit) super.getPersistenceUnit();
}
- protected boolean isSpecifiedMultitenantMetadataAllowed() {
- return this.getParent().isMultitenantMetadataAllowed();
- }
-
protected boolean isMultitenantInheritanceHierarchy() {
if (this.isInheritanceStrategyTablePerClass()) {
return false;
@@ -636,7 +649,7 @@ public class JavaEclipseLinkMultitenancyImpl2_3
//TODO validate 2.3 eclipselink does not use TABLE_PER_CLASS (and the new PROTECTED?? this wouldn't be in the 2.3 source)
super.validate(messages, reporter, astRoot);
if (this.getSpecifiedTenantDiscriminatorColumnsSize() > 0) {
- if (!this.isSpecifiedMultitenantMetadataAllowed()) {
+ if (!this.specifiedTenantDiscriminatorColumnsAllowed()) {
messages.add(
DefaultEclipseLinkJpaValidationMessages.buildMessage(
IMessage.NORMAL_SEVERITY,
@@ -664,7 +677,7 @@ public class JavaEclipseLinkMultitenancyImpl2_3
);
}
}
- if (this.isSpecifiedMultitenantMetadataAllowed()) {
+ if (this.specifiedTenantDiscriminatorColumnsAllowed()) {
//bug 360731 no need to validate, they will be validated where they are specified
for (JavaVirtualTenantDiscriminatorColumn2_3 column : this.getDefaultTenantDiscriminatorColumns()) {
column.validate(messages, reporter, astRoot);
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/NullJavaEclipseLinkMultitenancy2_3.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/NullJavaEclipseLinkMultitenancy2_3.java
index a83ff19b80..df32a009e6 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/NullJavaEclipseLinkMultitenancy2_3.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/java/NullJavaEclipseLinkMultitenancy2_3.java
@@ -135,4 +135,8 @@ public class NullJavaEclipseLinkMultitenancy2_3
public TextRange getValidationTextRange(CompilationUnit astRoot) {
throw new UnsupportedOperationException("Multitenancy is only supported in EclipseLink version 2.3 and higher"); //$NON-NLS-1$
}
+
+ public boolean specifiedTenantDiscriminatorColumnsAllowed() {
+ return false;
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/EclipseLinkEntityMappingsImpl.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/EclipseLinkEntityMappingsImpl.java
index e6ed174cc1..e72e20ad68 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/EclipseLinkEntityMappingsImpl.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/EclipseLinkEntityMappingsImpl.java
@@ -34,7 +34,6 @@ import org.eclipse.jpt.jpa.eclipselink.core.JptJpaEclipseLinkCorePlugin;
import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConverter;
import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkTypeMapping;
import org.eclipse.jpt.jpa.eclipselink.core.context.ReadOnlyTenantDiscriminatorColumn2_3;
-import org.eclipse.jpt.jpa.eclipselink.core.context.TenantDiscriminatorColumn2_3;
import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkEntityMappings;
import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkConverterContainer;
import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmReadOnlyTenantDiscriminatorColumn2_3;
@@ -174,8 +173,8 @@ public class EclipseLinkEntityMappingsImpl
return EclipseLinkOrmFactory.eINSTANCE.createXmlTenantDiscriminatorColumn();
}
- public void removeSpecifiedTenantDiscriminatorColumn(TenantDiscriminatorColumn2_3 tenantDiscriminatorColumn) {
- this.removeSpecifiedTenantDiscriminatorColumn(this.specifiedTenantDiscriminatorColumnContainer.indexOfContextElement((OrmTenantDiscriminatorColumn2_3) tenantDiscriminatorColumn));
+ public void removeSpecifiedTenantDiscriminatorColumn(OrmTenantDiscriminatorColumn2_3 tenantDiscriminatorColumn) {
+ this.removeSpecifiedTenantDiscriminatorColumn(this.specifiedTenantDiscriminatorColumnContainer.indexOfContextElement(tenantDiscriminatorColumn));
}
public void removeSpecifiedTenantDiscriminatorColumn(int index) {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/NullOrmEclipseLinkMultitenancy2_3.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/NullOrmEclipseLinkMultitenancy2_3.java
index 2acc422c62..d8428431e6 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/NullOrmEclipseLinkMultitenancy2_3.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/NullOrmEclipseLinkMultitenancy2_3.java
@@ -143,4 +143,7 @@ public class NullOrmEclipseLinkMultitenancy2_3
return 0;
}
+ public boolean specifiedTenantDiscriminatorColumnsAllowed() {
+ return false;
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkMultitenancyImpl2_3.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkMultitenancyImpl2_3.java
index 7e44a93ecb..2511fcf2da 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkMultitenancyImpl2_3.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkMultitenancyImpl2_3.java
@@ -75,6 +75,8 @@ public class OrmEclipseLinkMultitenancyImpl2_3
protected final OrmReadOnlyTenantDiscriminatorColumn2_3 defaultTenantDiscriminatorColumn;
+ protected boolean specifiedTenantDiscriminatorColumnsAllowed;
+
public OrmEclipseLinkMultitenancyImpl2_3(OrmEclipseLinkNonEmbeddableTypeMapping parent) {
super(parent);
@@ -112,6 +114,7 @@ public class OrmEclipseLinkMultitenancyImpl2_3
this.setDefaultMultitenant(useJavaValue ? javaMultitenantPolicy.isMultitenant() : this.buildDefaultMultitenant());
this.setDefaultType(useJavaValue ? javaMultitenantPolicy.getType() : this.buildDefaultType());
// this.setDefaultIncludeCriteria(useJavaValue ? javaMultitenantPolicy.isIncludeCriteria() : DEFAULT_INCLUDE_CRITERIA);
+ this.setSpecifiedTenantDiscriminatorColumnsAllowed(this.buildSpecifiedTenantDiscriminatorColumnsAllowed());
this.updateDefaultTenantDiscriminatorColumns();
}
@@ -458,6 +461,20 @@ public class OrmEclipseLinkMultitenancyImpl2_3
return new DefaultTenantDiscriminatorColumnContainer();
}
+ public boolean specifiedTenantDiscriminatorColumnsAllowed() {
+ return this.specifiedTenantDiscriminatorColumnsAllowed;
+ }
+
+ public void setSpecifiedTenantDiscriminatorColumnsAllowed(boolean allowed) {
+ boolean old = this.specifiedTenantDiscriminatorColumnsAllowed;
+ this.specifiedTenantDiscriminatorColumnsAllowed = allowed;
+ this.firePropertyChanged(SPECIFIED_TENANT_DISCRIMINATOR_COLUMNS_ALLOWED_PROPERTY, old, allowed);
+ }
+
+ protected boolean buildSpecifiedTenantDiscriminatorColumnsAllowed() {
+ return this.getParent().isMultitenantMetadataAllowed();
+ }
+
/**
* default tenant discriminator column container
@@ -609,10 +626,6 @@ public class OrmEclipseLinkMultitenancyImpl2_3
return (javaTypeMapping == null) ? null : javaTypeMapping.getMultitenancy();
}
- protected boolean isSpecifiedMultitenantMetadataAllowed() {
- return this.getParent().isMultitenantMetadataAllowed();
- }
-
protected boolean isMultitenantInheritanceHierarchy() {
if (this.isInheritanceStrategyTablePerClass()) {
return false;
@@ -663,7 +676,7 @@ public class OrmEclipseLinkMultitenancyImpl2_3
public void validate(List<IMessage> messages, IReporter reporter) {
super.validate(messages, reporter);
if (getSpecifiedTenantDiscriminatorColumnsSize() > 0) {
- if (!this.isSpecifiedMultitenantMetadataAllowed()) {
+ if (!this.specifiedTenantDiscriminatorColumnsAllowed()) {
messages.add(
DefaultEclipseLinkJpaValidationMessages.buildMessage(
IMessage.NORMAL_SEVERITY,
@@ -680,7 +693,7 @@ public class OrmEclipseLinkMultitenancyImpl2_3
}
}
}
- if (this.isSpecifiedMultitenantMetadataAllowed()) {
+ if (this.specifiedTenantDiscriminatorColumnsAllowed()) {
//bug 360731 no need to validate, they will be validated where they are specified
for (OrmVirtualTenantDiscriminatorColumn2_3 column : this.getDefaultTenantDiscriminatorColumns()) {
column.validate(messages, reporter);
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkPersistenceUnitDefaults.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkPersistenceUnitDefaults.java
index 4ebed54d64..9d92c05a31 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkPersistenceUnitDefaults.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkPersistenceUnitDefaults.java
@@ -23,7 +23,7 @@ import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.orm.AbstractOrmPersistenceUnitDefaults;
import org.eclipse.jpt.jpa.db.Table;
import org.eclipse.jpt.jpa.eclipselink.core.context.ReadOnlyTenantDiscriminatorColumn2_3;
-import org.eclipse.jpt.jpa.eclipselink.core.context.TenantDiscriminatorColumn2_3;
+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkPersistenceUnitDefaults;
import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmReadOnlyTenantDiscriminatorColumn2_3;
import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmTenantDiscriminatorColumn2_3;
import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.EclipseLinkOrmFactory;
@@ -38,11 +38,11 @@ import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.v2_3.XmlTenantDiscrimin
*/
public class OrmEclipseLinkPersistenceUnitDefaults
extends AbstractOrmPersistenceUnitDefaults
+ implements EclipseLinkPersistenceUnitDefaults
{
protected final ContextListContainer<OrmTenantDiscriminatorColumn2_3, XmlTenantDiscriminatorColumn_2_3> tenantDiscriminatorColumnContainer;
protected final OrmReadOnlyTenantDiscriminatorColumn2_3.Owner tenantDiscriminatorColumnOwner;
- public static final String TENANT_DISCRIMINATOR_COLUMNS_LIST = "tenantDiscriminatorColumns"; //$NON-NLS-1$
// ********** constructor/initialization **********
@@ -115,8 +115,8 @@ public class OrmEclipseLinkPersistenceUnitDefaults
return EclipseLinkOrmFactory.eINSTANCE.createXmlTenantDiscriminatorColumn();
}
- public void removeTenantDiscriminatorColumn(TenantDiscriminatorColumn2_3 tenantDiscriminatorColumn) {
- this.removeTenantDiscriminatorColumn(this.tenantDiscriminatorColumnContainer.indexOfContextElement((OrmTenantDiscriminatorColumn2_3) tenantDiscriminatorColumn));
+ public void removeTenantDiscriminatorColumn(OrmTenantDiscriminatorColumn2_3 tenantDiscriminatorColumn) {
+ this.removeTenantDiscriminatorColumn(this.tenantDiscriminatorColumnContainer.indexOfContextElement(tenantDiscriminatorColumn));
}
public void removeTenantDiscriminatorColumn(int index) {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkPersistenceUnitMetadata.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkPersistenceUnitMetadata.java
index bccba8c4ac..c80019d987 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkPersistenceUnitMetadata.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkPersistenceUnitMetadata.java
@@ -12,6 +12,7 @@ package org.eclipse.jpt.jpa.eclipselink.core.internal.context.orm;
import org.eclipse.jpt.jpa.core.context.orm.EntityMappings;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.orm.AbstractOrmPersistenceUnitMetadata;
import org.eclipse.jpt.jpa.core.resource.xml.EmfTools;
+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkPersistenceUnitDefaults;
import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.EclipseLinkOrmPackage;
import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.XmlPersistenceUnitMetadata;
@@ -29,8 +30,8 @@ public class OrmEclipseLinkPersistenceUnitMetadata
}
@Override
- public OrmEclipseLinkPersistenceUnitDefaults getPersistenceUnitDefaults() {
- return (OrmEclipseLinkPersistenceUnitDefaults) super.getPersistenceUnitDefaults();
+ public EclipseLinkPersistenceUnitDefaults getPersistenceUnitDefaults() {
+ return (EclipseLinkPersistenceUnitDefaults) super.getPersistenceUnitDefaults();
}
@Override
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/property_files/eclipselink_ui_details.properties b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/property_files/eclipselink_ui_details.properties
index 4d85ff076a..32c588d5f8 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/property_files/eclipselink_ui_details.properties
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/property_files/eclipselink_ui_details.properties
@@ -77,6 +77,7 @@ TypeSection_converted = Converted
EclipseLinkTypeMappingComposite_advanced = Advanced
EclipseLinkTypeMappingComposite_caching = Caching
EclipseLinkTypeMappingComposite_converters = Converters
+EclipseLinkTypeMappingComposite_multitenancy = Multitenancy
EclipseLinkExistenceCheckingComposite_label = Existence checking:
JavaEclipseLinkExistenceCheckingComposite_check_cache = Check Cache
@@ -153,3 +154,22 @@ EclipseLinkConverterStateObject_nameMustBeSpecified = A name must be specified.
EclipseLinkConverterStateObject_typeMustBeSpecified = A converter type must be specified.
EclipseLinkMappedSuperclassComposite_queries=Queries
+
+TenantDiscriminatorColumns_groupLabel=Tenant discriminator columns
+TenantDiscriminatorColumnComposite_nameLabel=Name:
+TenantDiscriminatorColumnComposite_defaultTenantDiscriminatorColumnNameLabel=Default ({0})
+TenantDiscriminatorColumnComposite_tableLabel=Table:
+TenantDiscriminatorColumnComposite_contextPropertyLabel=Context property:
+TenantDiscriminatorColumnComposite_discriminatorTypeLabel=Discriminator type:
+TenantDiscriminatorColumnComposite_lengthLabel=Length:
+TenantDiscriminatorColumnComposite_columnDefinitionLabel=Column definition:
+TenantDiscriminatorColumnComposite_primaryKeyWithDefault=Primary key ({0})
+TenantDiscriminatorColumnComposite_primaryKey=Primary key
+
+EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite_collapsibleSection=Tenant Discriminator Columns
+EclipseLinkMultitenancy_overrideDefaultTenantDiscriminatorColumns=Override default
+
+EclipseLinkMultitenancyComposite_strategy=Multitenant strategy:
+EclipseLinkMultitenancyComposite_single_table=Single Table
+EclipseLinkMultitenancyComposite_table_per_tenant=Table Per Tenant
+EclipseLinkMultitenancyComposite_vpd=VPD
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/EclipseLinkHelpContextIds.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/EclipseLinkHelpContextIds.java
index c0eeff4bab..3849e23dad 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/EclipseLinkHelpContextIds.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/EclipseLinkHelpContextIds.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -54,4 +54,12 @@ public interface EclipseLinkHelpContextIds {
public static final String PERSISTENCE_OPTIONS_TARGET_DATABASE = PREFIX + "options_targetDatabase";
public static final String PERSISTENCE_OPTIONS_TARGET_SERVER = PREFIX + "options_targetServer";
+ public static final String MULTITENANCY_STRATEGY = PREFIX + "multitenancy_strategy";
+ public static final String MULTITENANCY_TENANT_DISCRIMINATOR_COLUMNS = PREFIX + "multitenancy_tenantDiscriminatorColumns";
+ public static final String TENANT_DISCRIMINATOR_COLUMN_NAME = PREFIX + "tenantDiscriminatorColumn_name";
+ public static final String TENANT_DISCRIMINATOR_COLUMN_TABLE = PREFIX + "tenantDiscriminatorColumn_table";
+ public static final String TENANT_DISCRIMINATOR_COLUMN_CONTEXT_PROPERTY = PREFIX + "tenantDiscriminatorColumn_contextProperty";
+ public static final String TENANT_DISCRIMINATOR_COLUMN_DISCRIMINATOR_TYPE = PREFIX + "tenantDiscriminatorColumn_discriminatorType";
+ public static final String TENANT_DISCRIMINATOR_COLUMN_PRIMARY_KEY = PREFIX + "tenantDiscriminatorColumn_primaryKey";
+ public static final String TENANT_DISCRIMINATOR_COLUMN_LENGTH = PREFIX + "tenantDiscriminatorColumn_length";
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkMultitenancyComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkMultitenancyComposite.java
new file mode 100644
index 0000000000..27d2b52af1
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkMultitenancyComposite.java
@@ -0,0 +1,322 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.eclipselink.ui.internal.details;
+
+import java.util.Collection;
+import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer;
+import org.eclipse.jpt.common.ui.internal.widgets.Pane;
+import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
+import org.eclipse.jpt.common.utility.internal.iterables.SuperListIterableWrapper;
+import org.eclipse.jpt.common.utility.internal.model.value.CachingTransformationPropertyValueModel;
+import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter;
+import org.eclipse.jpt.common.utility.internal.model.value.ListPropertyValueModelAdapter;
+import org.eclipse.jpt.common.utility.internal.model.value.ReadOnlyWritablePropertyValueModelWrapper;
+import org.eclipse.jpt.common.utility.internal.model.value.ValueListAdapter;
+import org.eclipse.jpt.common.utility.model.event.StateChangeEvent;
+import org.eclipse.jpt.common.utility.model.listener.StateChangeListener;
+import org.eclipse.jpt.common.utility.model.value.ListValueModel;
+import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.common.utility.model.value.WritablePropertyValueModel;
+import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkMultitenancy2_3;
+import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkMultitenantType2_3;
+import org.eclipse.jpt.jpa.eclipselink.core.context.ReadOnlyTenantDiscriminatorColumn2_3;
+import org.eclipse.jpt.jpa.eclipselink.core.context.TenantDiscriminatorColumn2_3;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.TenantDiscriminatorColumnsComposite.TenantDiscriminatorColumnsEditor;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+
+/**
+ * Here is the layout of this pane:
+ * <pre>
+ * -----------------------------------------------------------------------------
+ * | ----------------------------------------------- | |
+ * | Multitenant strategy: | EnumComboViewer |v| | |
+ * | ----------------------------------------------- | |
+ * | |
+ * | - Tenant discriminator columns ---------------------------------------- | |
+ * | | | |
+ * | | x Override Default | |
+ * | | --------------------------------------------------------------------- | |
+ * | | | | | |
+ * | | | TenantDiscriminatorColumnsComposite | | |
+ * | | | | | |
+ * | | --------------------------------------------------------------------- | |
+ * | ------------------------------------------------------------------------- |
+ * -----------------------------------------------------------------------------</pre>
+ *
+ *
+ * @version 3.1
+ * @since 3.1
+ */
+public class EclipseLinkMultitenancyComposite extends Pane<EclipseLinkMultitenancy2_3>
+{
+ private TenantDiscriminatorColumnsComposite<EclipseLinkMultitenancy2_3> tenantDiscriminatorColumnsComposite;
+
+ public EclipseLinkMultitenancyComposite(Pane<?> parentPane,
+ PropertyValueModel<? extends EclipseLinkMultitenancy2_3> subjectHolder,
+ Composite parent) {
+
+ super(parentPane, subjectHolder, parent, false);
+ }
+
+ @Override
+ protected void initializeLayout(Composite container) {
+ int groupBoxMargin = getGroupBoxMargin();
+
+ Composite subPane = addSubPane(
+ container, 0, groupBoxMargin, 0, groupBoxMargin
+ );
+
+ // Strategy widgets
+ addLabeledComposite(
+ subPane,
+ EclipseLinkUiDetailsMessages.EclipseLinkMultitenancyComposite_strategy,
+ addMultitenantStrategyCombo(subPane),
+ EclipseLinkHelpContextIds.MULTITENANCY_STRATEGY
+ );
+
+
+ // Tenant discriminator columns group pane
+ Group tenantDiscriminatorColumnGroupPane = addTitledGroup(
+ container,
+ EclipseLinkUiDetailsMessages.TenantDiscriminatorColumns_groupLabel
+ );
+
+ // Override Default Tenant Discriminator Columns check box
+ addCheckBox(
+ addSubPane(tenantDiscriminatorColumnGroupPane, 8),
+ EclipseLinkUiDetailsMessages.EclipseLinkMultitenancy_overrideDefaultTenantDiscriminatorColumns,
+ buildOverrideDefaultTenantDiscriminatorColumnHolder(),
+ null
+ );
+
+ this.tenantDiscriminatorColumnsComposite = this.buildTenantDiscriminatorColumnsComposite(tenantDiscriminatorColumnGroupPane);
+
+ this.tenantDiscriminatorColumnsComposite.installListPaneEnabler(new TenantDiscriminatorColumnPaneEnablerHolder());
+ }
+
+ private EnumFormComboViewer<EclipseLinkMultitenancy2_3, EclipseLinkMultitenantType2_3> addMultitenantStrategyCombo(Composite container) {
+
+ return new EnumFormComboViewer<EclipseLinkMultitenancy2_3, EclipseLinkMultitenantType2_3>(this, container) {
+
+ @Override
+ protected void addPropertyNames(Collection<String> propertyNames) {
+ super.addPropertyNames(propertyNames);
+ propertyNames.add(EclipseLinkMultitenancy2_3.DEFAULT_TYPE_PROPERTY);
+ propertyNames.add(EclipseLinkMultitenancy2_3.SPECIFIED_TYPE_PROPERTY);
+ }
+
+ @Override
+ protected EclipseLinkMultitenantType2_3[] getChoices() {
+ return EclipseLinkMultitenantType2_3.values();
+ }
+
+ @Override
+ protected EclipseLinkMultitenantType2_3 getDefaultValue() {
+ return getSubject().getDefaultType();
+ }
+
+ @Override
+ protected String displayString(EclipseLinkMultitenantType2_3 value) {
+ return buildDisplayString(
+ EclipseLinkUiDetailsMessages.class,
+ EclipseLinkMultitenancyComposite.class,
+ value
+ );
+ }
+
+ @Override
+ protected EclipseLinkMultitenantType2_3 getValue() {
+ return getSubject().getSpecifiedType();
+ }
+
+ @Override
+ protected void setValue(EclipseLinkMultitenantType2_3 value) {
+ getSubject().setSpecifiedType(value);
+ }
+ };
+ }
+
+ protected TenantDiscriminatorColumnsComposite<EclipseLinkMultitenancy2_3> buildTenantDiscriminatorColumnsComposite(Composite container) {
+ return new TenantDiscriminatorColumnsComposite<EclipseLinkMultitenancy2_3>(
+ getSubjectHolder(),
+ container,
+ getWidgetFactory(),
+ buildTenantDiscriminatorColumnsEditor());
+ }
+
+
+ protected TenantDiscriminatorColumnsEditor<EclipseLinkMultitenancy2_3> buildTenantDiscriminatorColumnsEditor() {
+ return new TenantDiscriminatorColumnsProvider();
+ }
+
+ class TenantDiscriminatorColumnsProvider implements TenantDiscriminatorColumnsEditor<EclipseLinkMultitenancy2_3> {
+
+ public void addTenantDiscriminatorColumn(EclipseLinkMultitenancy2_3 subject) {
+ TenantDiscriminatorColumn2_3 column = subject.addSpecifiedTenantDiscriminatorColumn();
+ column.setSpecifiedName(ReadOnlyTenantDiscriminatorColumn2_3.DEFAULT_NAME);
+ }
+
+ public ListIterable<ReadOnlyTenantDiscriminatorColumn2_3> getDefaultTenantDiscriminatorColumns(EclipseLinkMultitenancy2_3 subject) {
+ return new SuperListIterableWrapper<ReadOnlyTenantDiscriminatorColumn2_3>(subject.getDefaultTenantDiscriminatorColumns());
+ }
+
+ public int getDefaultTenantDiscriminatorColumnsSize(EclipseLinkMultitenancy2_3 subject) {
+ return subject.getDefaultTenantDiscriminatorColumnsSize();
+ }
+
+ public String getDefaultTenantDiscriminatorsListPropertyName() {
+ return EclipseLinkMultitenancy2_3.DEFAULT_TENANT_DISCRIMINATOR_COLUMNS_LIST;
+ }
+
+ public ListIterable<ReadOnlyTenantDiscriminatorColumn2_3> getSpecifiedTenantDiscriminatorColumns(EclipseLinkMultitenancy2_3 subject) {
+ return new SuperListIterableWrapper<ReadOnlyTenantDiscriminatorColumn2_3>(subject.getSpecifiedTenantDiscriminatorColumns());
+ }
+
+ public int getSpecifiedTenantDiscriminatorColumnsSize(EclipseLinkMultitenancy2_3 subject) {
+ return subject.getSpecifiedTenantDiscriminatorColumnsSize();
+ }
+
+ public String getSpecifiedTenantDiscriminatorsListPropertyName() {
+ return EclipseLinkMultitenancy2_3.SPECIFIED_TENANT_DISCRIMINATOR_COLUMNS_LIST;
+ }
+
+ public boolean hasSpecifiedTenantDiscriminatorColumns(EclipseLinkMultitenancy2_3 subject) {
+ return subject.hasSpecifiedTenantDiscriminatorColumns();
+ }
+
+ public void removeTenantDiscriminatorColumns(EclipseLinkMultitenancy2_3 subject, int[] selectedIndices) {
+ for (int index = selectedIndices.length; index-- > 0; ) {
+ subject.removeSpecifiedTenantDiscriminatorColumn(selectedIndices[index]);
+ }
+ }
+ }
+
+ void setSelectedTenantDiscriminatorColumn(ReadOnlyTenantDiscriminatorColumn2_3 tenantDiscriminatorColumn) {
+ this.tenantDiscriminatorColumnsComposite.setSelectedTenantDiscriminatorColumn(tenantDiscriminatorColumn);
+ }
+
+ private WritablePropertyValueModel<Boolean> buildOverrideDefaultTenantDiscriminatorColumnHolder() {
+ return new OverrideDefaultTenantDiscriminatorColumnHolder();
+ }
+
+ ListValueModel<ReadOnlyTenantDiscriminatorColumn2_3> buildSpecifiedTenantDiscriminatorColumnsListHolder() {
+ return new ListAspectAdapter<EclipseLinkMultitenancy2_3, ReadOnlyTenantDiscriminatorColumn2_3>(
+ getSubjectHolder(), EclipseLinkMultitenancy2_3.SPECIFIED_TENANT_DISCRIMINATOR_COLUMNS_LIST) {
+ @Override
+ protected ListIterable<ReadOnlyTenantDiscriminatorColumn2_3> getListIterable() {
+ return new SuperListIterableWrapper<ReadOnlyTenantDiscriminatorColumn2_3>(this.subject.getSpecifiedTenantDiscriminatorColumns());
+ }
+ @Override
+ protected int size_() {
+ return this.subject.getSpecifiedTenantDiscriminatorColumnsSize();
+ }
+ };
+ }
+
+ private class OverrideDefaultTenantDiscriminatorColumnHolder
+ extends ListPropertyValueModelAdapter<Boolean>
+ implements WritablePropertyValueModel<Boolean>
+ {
+ public OverrideDefaultTenantDiscriminatorColumnHolder() {
+ super(buildSpecifiedTenantDiscriminatorColumnsListHolder());
+ }
+
+ @Override
+ protected Boolean buildValue() {
+ return Boolean.valueOf(this.listHolder.size() > 0);
+ }
+
+ public void setValue(Boolean value) {
+ updateTenantDiscriminatorColumns(value.booleanValue());
+ }
+
+ private void updateTenantDiscriminatorColumns(boolean selected) {
+ if (isPopulating()) {
+ return;
+ }
+
+ setPopulating(true);
+
+ try {
+ EclipseLinkMultitenancy2_3 subject = getSubject();
+
+ if (selected) {
+ TenantDiscriminatorColumn2_3 newTenantDiscriminatorColumn = subject.addSpecifiedTenantDiscriminatorColumn();
+ newTenantDiscriminatorColumn.setSpecifiedName(ReadOnlyTenantDiscriminatorColumn2_3.DEFAULT_NAME);
+ }
+ // Remove all the specified tenant discriminator columns
+ else {
+ for (int index = subject.getSpecifiedTenantDiscriminatorColumnsSize(); --index >= 0; ) {
+ subject.removeSpecifiedTenantDiscriminatorColumn(index);
+ }
+ }
+ }
+ finally {
+ setPopulating(false);
+ }
+ }
+ }
+
+ private class TenantDiscriminatorColumnPaneEnablerHolder
+ extends CachingTransformationPropertyValueModel<EclipseLinkMultitenancy2_3, Boolean>
+ {
+ private StateChangeListener stateChangeListener;
+
+
+ public TenantDiscriminatorColumnPaneEnablerHolder() {
+ super(
+ new ValueListAdapter<EclipseLinkMultitenancy2_3>(
+ new ReadOnlyWritablePropertyValueModelWrapper<EclipseLinkMultitenancy2_3>(getSubjectHolder()),
+ EclipseLinkMultitenancy2_3.SPECIFIED_TENANT_DISCRIMINATOR_COLUMNS_LIST));
+ this.stateChangeListener = buildStateChangeListener();
+ }
+
+ private StateChangeListener buildStateChangeListener() {
+ return new StateChangeListener() {
+ public void stateChanged(StateChangeEvent event) {
+ valueStateChanged();
+ }
+ };
+ }
+
+ void valueStateChanged() {
+ Object oldValue = this.cachedValue;
+ Object newValue = transformNew(this.valueHolder.getValue());
+ firePropertyChanged(VALUE, oldValue, newValue);
+ }
+
+ @Override
+ protected Boolean transform(EclipseLinkMultitenancy2_3 value) {
+ if (value == null) {
+ return Boolean.FALSE;
+ }
+ return super.transform(value);
+ }
+
+ @Override
+ protected Boolean transform_(EclipseLinkMultitenancy2_3 value) {
+ return Boolean.valueOf(value.getSpecifiedTenantDiscriminatorColumnsSize() > 0);
+ }
+
+ @Override
+ protected void engageModel() {
+ super.engageModel();
+ this.valueHolder.addStateChangeListener(this.stateChangeListener);
+ }
+
+ @Override
+ protected void disengageModel() {
+ this.valueHolder.removeStateChangeListener(this.stateChangeListener);
+ super.disengageModel();
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkUiDetailsMessages.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkUiDetailsMessages.java
index 6673cd8486..e954fe3dec 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkUiDetailsMessages.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkUiDetailsMessages.java
@@ -43,6 +43,7 @@ public class EclipseLinkUiDetailsMessages extends NLS {
public static String EclipseLinkTypeMappingComposite_advanced;
public static String EclipseLinkTypeMappingComposite_caching;
public static String EclipseLinkTypeMappingComposite_converters;
+ public static String EclipseLinkTypeMappingComposite_multitenancy;
public static String EclipseLinkCacheSizeComposite_size;
public static String EclipseLinkCacheCoordinationTypeComposite_label;
@@ -159,9 +160,28 @@ public class EclipseLinkUiDetailsMessages extends NLS {
public static String EclipseLinkConverterStateObject_nameIsReserved;
public static String EclipseLinkConverterStateObject_nameMustBeSpecified;
public static String EclipseLinkConverterStateObject_typeMustBeSpecified;
-
+
public static String EclipseLinkMappedSuperclassComposite_queries;
+ public static String TenantDiscriminatorColumns_groupLabel;
+ public static String TenantDiscriminatorColumnComposite_nameLabel;
+ public static String TenantDiscriminatorColumnComposite_defaultTenantDiscriminatorColumnNameLabel;
+ public static String TenantDiscriminatorColumnComposite_tableLabel;
+ public static String TenantDiscriminatorColumnComposite_contextPropertyLabel;
+ public static String TenantDiscriminatorColumnComposite_discriminatorTypeLabel;
+ public static String TenantDiscriminatorColumnComposite_lengthLabel;
+ public static String TenantDiscriminatorColumnComposite_columnDefinitionLabel;
+ public static String TenantDiscriminatorColumnComposite_primaryKeyWithDefault;
+ public static String TenantDiscriminatorColumnComposite_primaryKey;
+
+ public static String EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite_collapsibleSection;
+ public static String EclipseLinkMultitenancy_overrideDefaultTenantDiscriminatorColumns;
+
+ public static String EclipseLinkMultitenancyComposite_strategy;
+ public static String EclipseLinkMultitenancyComposite_single_table;
+ public static String EclipseLinkMultitenancyComposite_table_per_tenant;
+ public static String EclipseLinkMultitenancyComposite_vpd;
+
static {
NLS.initializeMessages("eclipselink_ui_details", EclipseLinkUiDetailsMessages.class);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/TenantDiscriminatorColumnComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/TenantDiscriminatorColumnComposite.java
new file mode 100644
index 0000000000..f7935d3ffb
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/TenantDiscriminatorColumnComposite.java
@@ -0,0 +1,395 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.eclipselink.ui.internal.details;
+
+import java.util.Collection;
+import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages;
+import org.eclipse.jpt.common.ui.internal.widgets.ComboPane;
+import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer;
+import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo;
+import org.eclipse.jpt.common.ui.internal.widgets.Pane;
+import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable;
+import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter;
+import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel;
+import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.common.utility.model.value.WritablePropertyValueModel;
+import org.eclipse.jpt.jpa.core.context.DiscriminatorType;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedDiscriminatorColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTableColumn;
+import org.eclipse.jpt.jpa.db.Table;
+import org.eclipse.jpt.jpa.eclipselink.core.context.ReadOnlyTenantDiscriminatorColumn2_3;
+import org.eclipse.jpt.jpa.eclipselink.core.context.TenantDiscriminatorColumn2_3;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds;
+import org.eclipse.jpt.jpa.ui.internal.details.DiscriminatorColumnComposite;
+import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages;
+import org.eclipse.jpt.jpa.ui.internal.details.db.ColumnCombo;
+import org.eclipse.jpt.jpa.ui.internal.details.db.DatabaseObjectCombo;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.widgets.Composite;
+
+public class TenantDiscriminatorColumnComposite extends Pane<ReadOnlyTenantDiscriminatorColumn2_3> {
+
+ public TenantDiscriminatorColumnComposite(Pane<?> parentPane,
+ PropertyValueModel<ReadOnlyTenantDiscriminatorColumn2_3> subjectHolder,
+ Composite parent) {
+
+ super(parentPane, subjectHolder, parent);
+ }
+
+
+ @Override
+ protected void initializeLayout(Composite container) {
+
+ // Name widgets
+ addLabeledComposite(
+ container,
+ EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_nameLabel,
+ addNameCombo(container),
+ EclipseLinkHelpContextIds.TENANT_DISCRIMINATOR_COLUMN_NAME);
+
+ // Table widgets
+ addLabeledComposite(
+ container,
+ EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_tableLabel,
+ addTableCombo(container),
+ EclipseLinkHelpContextIds.TENANT_DISCRIMINATOR_COLUMN_TABLE);
+
+ // Context property widgets
+ addLabeledComposite(
+ container,
+ EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_contextPropertyLabel,
+ addContextPropertyCombo(container),
+ EclipseLinkHelpContextIds.TENANT_DISCRIMINATOR_COLUMN_CONTEXT_PROPERTY);
+
+ // Discriminator Type widgets
+ addLabeledComposite(
+ container,
+ EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_discriminatorTypeLabel,
+ addDiscriminatorTypeCombo(container),
+ EclipseLinkHelpContextIds.TENANT_DISCRIMINATOR_COLUMN_DISCRIMINATOR_TYPE
+ );
+ // Length widgets
+ addLengthCombo(container);
+
+ // Column Definition widgets
+ addLabeledText(
+ container,
+ EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_columnDefinitionLabel,
+ buildColumnDefinitionHolder(getSubjectHolder())
+ );
+
+ // Primary key tri-state check box
+ addTriStateCheckBoxWithDefault(
+ addSubPane(container, 4),
+ EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_primaryKey,
+ buildPrimaryKeyHolder(),
+ buildPrimaryKeyStringHolder(),
+ EclipseLinkHelpContextIds.TENANT_DISCRIMINATOR_COLUMN_PRIMARY_KEY);
+ }
+
+ private ColumnCombo<ReadOnlyTenantDiscriminatorColumn2_3> addNameCombo(Composite container) {
+
+ return new ColumnCombo<ReadOnlyTenantDiscriminatorColumn2_3>(this, container) {
+ @Override
+ protected void addPropertyNames(Collection<String> propertyNames) {
+ super.addPropertyNames(propertyNames);
+ propertyNames.add(ReadOnlyNamedColumn.DEFAULT_NAME_PROPERTY);
+ propertyNames.add(ReadOnlyNamedColumn.SPECIFIED_NAME_PROPERTY);
+ propertyNames.add(ReadOnlyTableColumn.DEFAULT_TABLE_PROPERTY);
+ propertyNames.add(ReadOnlyTableColumn.SPECIFIED_TABLE_PROPERTY);
+ }
+
+ @Override
+ protected void propertyChanged(String propertyName) {
+ if (propertyName == ReadOnlyTableColumn.DEFAULT_TABLE_PROPERTY ||
+ propertyName == ReadOnlyTableColumn.SPECIFIED_TABLE_PROPERTY) {
+ this.doPopulate();
+ } else {
+ super.propertyChanged(propertyName);
+ }
+ }
+
+ @Override
+ protected String getDefaultValue() {
+ return getSubject().getDefaultName();
+ }
+
+ @Override
+ protected void setValue(String value) {
+ ((TenantDiscriminatorColumn2_3) this.getSubject()).setSpecifiedName(value);
+ }
+
+ @Override
+ protected Table getDbTable_() {
+ ReadOnlyTenantDiscriminatorColumn2_3 column = this.getSubject();
+ return (column == null) ? null : column.getDbTable();
+ }
+
+ @Override
+ protected String getValue() {
+ return getSubject().getSpecifiedName();
+ }
+
+ @Override
+ protected String buildNullDefaultValueEntry() {
+ return NLS.bind(
+ JptCommonUiMessages.DefaultWithOneParam,
+ JptCommonUiMessages.NoneSelected);
+ }
+
+ @Override
+ public String toString() {
+ return "TenantDiscriminatorColumnComposite.nameCombo"; //$NON-NLS-1$
+ }
+ };
+ }
+
+ private Pane<ReadOnlyTenantDiscriminatorColumn2_3> addTableCombo(Composite container) {
+
+ return new DatabaseObjectCombo<ReadOnlyTenantDiscriminatorColumn2_3>(this, container) {
+
+ @Override
+ protected void addPropertyNames(Collection<String> propertyNames) {
+ super.addPropertyNames(propertyNames);
+ propertyNames.add(ReadOnlyTableColumn.DEFAULT_TABLE_PROPERTY);
+ propertyNames.add(ReadOnlyTableColumn.SPECIFIED_TABLE_PROPERTY);
+ }
+
+ @Override
+ protected String getDefaultValue() {
+ return this.getSubject().getDefaultTable();
+ }
+
+ @Override
+ protected void setValue(String value) {
+ ((TenantDiscriminatorColumn2_3) this.getSubject()).setSpecifiedTable(value);
+ }
+
+ @Override
+ protected String getValue() {
+ return this.getSubject().getSpecifiedTable();
+ }
+
+ // TODO we need to listen for this list to change...
+ @Override
+ protected Iterable<String> getValues_() {
+ ReadOnlyTenantDiscriminatorColumn2_3 column = this.getSubject();
+ return (column != null) ? column.getCandidateTableNames() : EmptyIterable.<String> instance();
+ }
+
+ @Override
+ protected String buildNullDefaultValueEntry() {
+ return NLS.bind(
+ JptCommonUiMessages.DefaultWithOneParam,
+ JptCommonUiMessages.NoneSelected);
+ }
+
+ @Override
+ public String toString() {
+ return "TenantDiscriminatorColumnComposite.tableCombo"; //$NON-NLS-1$
+ }
+ };
+ }
+
+ private Pane<ReadOnlyTenantDiscriminatorColumn2_3> addContextPropertyCombo(Composite container) {
+
+ return new ComboPane<ReadOnlyTenantDiscriminatorColumn2_3>(this, container) {
+
+ @Override
+ protected void addPropertyNames(Collection<String> propertyNames) {
+ super.addPropertyNames(propertyNames);
+ propertyNames.add(ReadOnlyTenantDiscriminatorColumn2_3.DEFAULT_CONTEXT_PROPERTY);
+ propertyNames.add(ReadOnlyTenantDiscriminatorColumn2_3.SPECIFIED_CONTEXT_PROPERTY_PROPERTY);
+ }
+
+ @Override
+ protected String getDefaultValue() {
+ return this.getSubject().getDefaultContextProperty();
+ }
+
+ @Override
+ protected void setValue(String value) {
+ ((TenantDiscriminatorColumn2_3) this.getSubject()).setSpecifiedContextProperty(value);
+ }
+
+ @Override
+ protected String getValue() {
+ return this.getSubject().getSpecifiedContextProperty();
+ }
+
+ @Override
+ protected Iterable<String> getValues() {
+ return EmptyIterable.<String> instance();
+ }
+
+ @Override
+ protected String buildNullDefaultValueEntry() {
+ return NLS.bind(
+ JptCommonUiMessages.DefaultWithOneParam,
+ JptCommonUiMessages.NoneSelected);
+ }
+
+ @Override
+ public String toString() {
+ return "TenantDiscriminatorColumnComposite.contextPropertyCombo"; //$NON-NLS-1$
+ }
+ };
+ }
+
+ private EnumFormComboViewer<ReadOnlyTenantDiscriminatorColumn2_3, DiscriminatorType> addDiscriminatorTypeCombo(Composite container) {
+
+ return new EnumFormComboViewer<ReadOnlyTenantDiscriminatorColumn2_3, DiscriminatorType>(
+ this,
+ getSubjectHolder(),
+ container)
+ {
+ @Override
+ protected void addPropertyNames(Collection<String> propertyNames) {
+ super.addPropertyNames(propertyNames);
+ propertyNames.add(ReadOnlyNamedDiscriminatorColumn.DEFAULT_DISCRIMINATOR_TYPE_PROPERTY);
+ propertyNames.add(ReadOnlyNamedDiscriminatorColumn.SPECIFIED_DISCRIMINATOR_TYPE_PROPERTY);
+ }
+
+ @Override
+ protected DiscriminatorType[] getChoices() {
+ return DiscriminatorType.values();
+ }
+
+ @Override
+ protected DiscriminatorType getDefaultValue() {
+ return getSubject().getDefaultDiscriminatorType();
+ }
+
+ @Override
+ protected String displayString(DiscriminatorType value) {
+ return buildDisplayString(
+ JptUiDetailsMessages.class,
+ DiscriminatorColumnComposite.class,
+ value
+ );
+ }
+
+ @Override
+ protected String nullDisplayString() {
+ return JptCommonUiMessages.NoneSelected;
+ }
+
+ @Override
+ protected DiscriminatorType getValue() {
+ return getSubject().getSpecifiedDiscriminatorType();
+ }
+
+ @Override
+ protected void setValue(DiscriminatorType value) {
+ ((TenantDiscriminatorColumn2_3) this.getSubject()).setSpecifiedDiscriminatorType(value);
+ }
+ };
+ }
+
+ private void addLengthCombo(Composite container) {
+ new IntegerCombo<ReadOnlyTenantDiscriminatorColumn2_3>(this, container) {
+
+ @Override
+ protected String getLabelText() {
+ return JptUiDetailsMessages.ColumnComposite_length;
+ }
+
+ @Override
+ protected String getHelpId() {
+ return EclipseLinkHelpContextIds.TENANT_DISCRIMINATOR_COLUMN_LENGTH;
+ }
+
+ @Override
+ protected PropertyValueModel<Integer> buildDefaultHolder() {
+ return new PropertyAspectAdapter<ReadOnlyTenantDiscriminatorColumn2_3, Integer>(getSubjectHolder(), ReadOnlyNamedDiscriminatorColumn.DEFAULT_LENGTH_PROPERTY) {
+ @Override
+ protected Integer buildValue_() {
+ return Integer.valueOf(this.subject.getDefaultLength());
+ }
+ };
+ }
+
+ @Override
+ protected WritablePropertyValueModel<Integer> buildSelectedItemHolder() {
+ return new PropertyAspectAdapter<ReadOnlyTenantDiscriminatorColumn2_3, Integer>(getSubjectHolder(), ReadOnlyNamedDiscriminatorColumn.SPECIFIED_LENGTH_PROPERTY) {
+ @Override
+ protected Integer buildValue_() {
+ return this.subject.getSpecifiedLength();
+ }
+
+ @Override
+ protected void setValue_(Integer value) {
+ ((TenantDiscriminatorColumn2_3) this.subject).setSpecifiedLength(value);
+ }
+ };
+ }
+ };
+ }
+
+ private WritablePropertyValueModel<String> buildColumnDefinitionHolder(PropertyValueModel<ReadOnlyTenantDiscriminatorColumn2_3> discriminatorColumnHolder) {
+ return new PropertyAspectAdapter<ReadOnlyTenantDiscriminatorColumn2_3, String>(discriminatorColumnHolder, ReadOnlyNamedColumn.COLUMN_DEFINITION_PROPERTY) {
+ @Override
+ protected String buildValue_() {
+ return this.subject.getColumnDefinition();
+ }
+ @Override
+ protected void setValue_(String value) {
+ if (value.length() == 0) {
+ value = null;
+ }
+ ((TenantDiscriminatorColumn2_3) this.subject).setColumnDefinition(value);
+ }
+ };
+ }
+
+ WritablePropertyValueModel<Boolean> buildPrimaryKeyHolder() {
+ return new PropertyAspectAdapter<ReadOnlyTenantDiscriminatorColumn2_3, Boolean>(getSubjectHolder(), ReadOnlyTenantDiscriminatorColumn2_3.SPECIFIED_PRIMARY_KEY_PROPERTY) {
+ @Override
+ protected Boolean buildValue_() {
+ return this.subject.getSpecifiedPrimaryKey();
+ }
+
+ @Override
+ protected void setValue_(Boolean value) {
+ ((TenantDiscriminatorColumn2_3) this.subject).setSpecifiedPrimaryKey(value);
+ }
+ };
+ }
+
+ PropertyValueModel<String> buildPrimaryKeyStringHolder() {
+ return new TransformationPropertyValueModel<Boolean, String>(buildDefaultPrimaryKeyHolder()) {
+ @Override
+ protected String transform(Boolean value) {
+ if (value != null) {
+ String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False;
+ return NLS.bind(EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_primaryKeyWithDefault, defaultStringValue);
+ }
+ return EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_primaryKey;
+ }
+ };
+ }
+
+ PropertyValueModel<Boolean> buildDefaultPrimaryKeyHolder() {
+ return new PropertyAspectAdapter<ReadOnlyTenantDiscriminatorColumn2_3, Boolean>(
+ getSubjectHolder(),
+ ReadOnlyTenantDiscriminatorColumn2_3.SPECIFIED_PRIMARY_KEY_PROPERTY,
+ ReadOnlyTenantDiscriminatorColumn2_3.DEFAULT_PRIMARY_KEY_PROPERTY) {
+
+ @Override
+ protected Boolean buildValue_() {
+ if (this.subject.getSpecifiedPrimaryKey() != null) {
+ return null;
+ }
+ return Boolean.valueOf(this.subject.isPrimaryKey());
+ }
+ };
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/TenantDiscriminatorColumnsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/TenantDiscriminatorColumnsComposite.java
new file mode 100644
index 0000000000..4777e881ab
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/TenantDiscriminatorColumnsComposite.java
@@ -0,0 +1,290 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.eclipselink.ui.internal.details;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jpt.common.ui.WidgetFactory;
+import org.eclipse.jpt.common.ui.internal.util.ControlSwitcher;
+import org.eclipse.jpt.common.ui.internal.util.PaneEnabler;
+import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane;
+import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.AbstractAdapter;
+import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.Adapter;
+import org.eclipse.jpt.common.ui.internal.widgets.Pane;
+import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
+import org.eclipse.jpt.common.utility.internal.model.value.CompositeListValueModel;
+import org.eclipse.jpt.common.utility.internal.model.value.ItemPropertyListValueModelAdapter;
+import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter;
+import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel;
+import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel;
+import org.eclipse.jpt.common.utility.model.value.ListValueModel;
+import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.common.utility.model.value.WritablePropertyValueModel;
+import org.eclipse.jpt.jpa.core.JpaNode;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.eclipselink.core.context.ReadOnlyTenantDiscriminatorColumn2_3;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.part.PageBook;
+
+/**
+ * Here is the layout of this pane:
+ * <pre>
+ * -----------------------------------------------------------------------------
+ * | ------------------------------------------------------------------------- |
+ * | | | |
+ * | | AddRemoveListPane | |
+ * | | | |
+ * | ------------------------------------------------------------------------- |
+ * -----------------------------------------------------------------------------</pre>
+
+ *
+ * @version 3.1
+ * @since 3.1
+ */
+public class TenantDiscriminatorColumnsComposite<T extends JpaNode> extends Pane<T>
+{
+ /**
+ * The editor used to perform the common behaviors defined in the list pane.
+ */
+ TenantDiscriminatorColumnsEditor<T> tenantDiscriminatorColumnsEditor;
+
+ private AddRemoveListPane<T> listPane;
+ private Pane<ReadOnlyTenantDiscriminatorColumn2_3> tenantDiscriminatorColumnPane;
+ private WritablePropertyValueModel<ReadOnlyTenantDiscriminatorColumn2_3> tenantDiscriminatorColumnHolder;
+
+ public TenantDiscriminatorColumnsComposite(Pane<? extends T> parentPane,
+ Composite parent,
+ TenantDiscriminatorColumnsEditor<T> tenantDiscriminatorColumnsEditor) {
+
+ super(parentPane, parent);
+ this.tenantDiscriminatorColumnsEditor = tenantDiscriminatorColumnsEditor;
+ initializeLayout2();
+ }
+
+ public TenantDiscriminatorColumnsComposite(Pane<?> parentPane,
+ PropertyValueModel<? extends T> subjectHolder,
+ Composite parent,
+ TenantDiscriminatorColumnsEditor<T> tenantDiscriminatorColumnsEditor,
+ boolean automaticallyAlignWidgets) {
+
+ super(parentPane, subjectHolder, parent, automaticallyAlignWidgets);
+ this.tenantDiscriminatorColumnsEditor = tenantDiscriminatorColumnsEditor;
+ initializeLayout2();
+ }
+
+ public TenantDiscriminatorColumnsComposite(PropertyValueModel<? extends T> subjectHolder,
+ Composite parent,
+ WidgetFactory widgetFactory,
+ TenantDiscriminatorColumnsEditor<T> tenantDiscriminatorColumnsEditor) {
+
+ super(subjectHolder, parent, widgetFactory);
+ this.tenantDiscriminatorColumnsEditor = tenantDiscriminatorColumnsEditor;
+ initializeLayout2();
+ }
+
+ @Override
+ protected void initialize() {
+ super.initialize();
+ this.tenantDiscriminatorColumnHolder = buildTenantDiscriminatorColumnHolder();
+ }
+
+ private WritablePropertyValueModel<ReadOnlyTenantDiscriminatorColumn2_3> buildTenantDiscriminatorColumnHolder() {
+ return new SimplePropertyValueModel<ReadOnlyTenantDiscriminatorColumn2_3>();
+ }
+
+ @Override
+ protected void initializeLayout(Composite container) {
+ //see intiailizeLayout2()
+ }
+
+ private void initializeLayout2() {
+ this.listPane = new AddRemoveListPane<T>(
+ this,
+ getControl(),
+ buildTenantDiscriminatorColumnsAdapter(),
+ buildTenantDiscriminatorColumnsListModel(),
+ this.tenantDiscriminatorColumnHolder,
+ buildTenantDiscriminatorColumnsListLabelProvider(),
+ EclipseLinkHelpContextIds.MULTITENANCY_TENANT_DISCRIMINATOR_COLUMNS,
+ false
+ );
+
+ // Property pane
+ PageBook pageBook = new PageBook(getControl(), SWT.NULL);
+ pageBook.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ //Tenant Discriminator Column property pane
+ this.tenantDiscriminatorColumnPane = this.buildTenantDiscriminatorColumnComposite(pageBook);
+
+
+ installPaneSwitcher(pageBook);
+ }
+
+ protected Pane<ReadOnlyTenantDiscriminatorColumn2_3> buildTenantDiscriminatorColumnComposite(PageBook pageBook) {
+ return new TenantDiscriminatorColumnComposite(
+ this,
+ this.tenantDiscriminatorColumnHolder,
+ pageBook
+ );
+ }
+
+ private void installPaneSwitcher(PageBook pageBook) {
+ new ControlSwitcher(this.tenantDiscriminatorColumnHolder, this.tenantDiscriminatorColumnPane.getControl(), pageBook);
+ }
+
+ String buildTenantDiscriminatorColumnLabel(ReadOnlyTenantDiscriminatorColumn2_3 tenantDiscriminatorColumn) {
+ if (tenantDiscriminatorColumn.isVirtual() || tenantDiscriminatorColumn.getSpecifiedName() == null) {
+ return NLS.bind(
+ EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_defaultTenantDiscriminatorColumnNameLabel,
+ tenantDiscriminatorColumn.getName()
+ );
+ }
+ return tenantDiscriminatorColumn.getName();
+ }
+
+ private Adapter buildTenantDiscriminatorColumnsAdapter() {
+ return new AbstractAdapter() {
+
+ public void addNewItem(ObjectListSelectionModel listSelectionModel) {
+ TenantDiscriminatorColumnsComposite.this.tenantDiscriminatorColumnsEditor.addTenantDiscriminatorColumn(getSubject());
+ }
+
+ @Override
+ public boolean hasOptionalButton() {
+ return false;
+ }
+
+ public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) {
+ TenantDiscriminatorColumnsComposite.this.tenantDiscriminatorColumnsEditor.removeTenantDiscriminatorColumns(getSubject(), listSelectionModel.selectedIndices());
+ }
+ };
+ }
+
+ private ListValueModel<ReadOnlyTenantDiscriminatorColumn2_3> buildTenantDiscriminatorColumnsListModel() {
+ return new ItemPropertyListValueModelAdapter<ReadOnlyTenantDiscriminatorColumn2_3>(buildTenantDiscriminatorColumnsListHolder(),
+ ReadOnlyNamedColumn.SPECIFIED_NAME_PROPERTY,
+ ReadOnlyNamedColumn.DEFAULT_NAME_PROPERTY);
+ }
+
+ private ListValueModel<ReadOnlyTenantDiscriminatorColumn2_3> buildTenantDiscriminatorColumnsListHolder() {
+ List<ListValueModel<ReadOnlyTenantDiscriminatorColumn2_3>> list = new ArrayList<ListValueModel<ReadOnlyTenantDiscriminatorColumn2_3>>();
+ list.add(buildDefaultTenantDiscriminatorColumnListHolder());
+ list.add(buildSpecifiedTenantDiscriminatorColumnsListHolder());
+ return new CompositeListValueModel<ListValueModel<ReadOnlyTenantDiscriminatorColumn2_3>, ReadOnlyTenantDiscriminatorColumn2_3>(list);
+ }
+
+ private ListValueModel<ReadOnlyTenantDiscriminatorColumn2_3> buildSpecifiedTenantDiscriminatorColumnsListHolder() {
+ return new ListAspectAdapter<T, ReadOnlyTenantDiscriminatorColumn2_3>(getSubjectHolder(), this.tenantDiscriminatorColumnsEditor.getSpecifiedTenantDiscriminatorsListPropertyName()) {
+ @Override
+ protected ListIterable<ReadOnlyTenantDiscriminatorColumn2_3> getListIterable() {
+ return TenantDiscriminatorColumnsComposite.this.tenantDiscriminatorColumnsEditor.getSpecifiedTenantDiscriminatorColumns(this.subject);
+ }
+
+ @Override
+ protected int size_() {
+ return TenantDiscriminatorColumnsComposite.this.tenantDiscriminatorColumnsEditor.getSpecifiedTenantDiscriminatorColumnsSize(this.subject);
+ }
+ };
+ }
+
+ private ListValueModel<ReadOnlyTenantDiscriminatorColumn2_3> buildDefaultTenantDiscriminatorColumnListHolder() {
+ return new ListAspectAdapter<T, ReadOnlyTenantDiscriminatorColumn2_3>(getSubjectHolder(), this.tenantDiscriminatorColumnsEditor.getDefaultTenantDiscriminatorsListPropertyName()) {
+ @Override
+ protected ListIterable<ReadOnlyTenantDiscriminatorColumn2_3> getListIterable() {
+ return TenantDiscriminatorColumnsComposite.this.tenantDiscriminatorColumnsEditor.getDefaultTenantDiscriminatorColumns(this.subject);
+ }
+
+ @Override
+ protected int size_() {
+ return TenantDiscriminatorColumnsComposite.this.tenantDiscriminatorColumnsEditor.getDefaultTenantDiscriminatorColumnsSize(this.subject);
+ }
+ };
+ }
+
+ private ILabelProvider buildTenantDiscriminatorColumnsListLabelProvider() {
+ return new LabelProvider() {
+ @Override
+ public String getText(Object element) {
+ return buildTenantDiscriminatorColumnLabel((ReadOnlyTenantDiscriminatorColumn2_3) element);
+ }
+ };
+ }
+
+ public void installListPaneEnabler(PropertyValueModel<Boolean> paneEnablerHolder) {
+ new PaneEnabler(paneEnablerHolder, this.listPane);
+ }
+
+ @Override
+ public void enableWidgets(boolean enabled) {
+ super.enableWidgets(enabled);
+ this.listPane.enableWidgets(enabled);
+ }
+
+ public void setSelectedTenantDiscriminatorColumn(ReadOnlyTenantDiscriminatorColumn2_3 tenantDiscriminatorColumn) {
+ this.listPane.setSelectedItem(tenantDiscriminatorColumn);
+ }
+
+ /**
+ * The editor is used to complete the behavior of this pane.
+ */
+ public static interface TenantDiscriminatorColumnsEditor<T> {
+
+ /**
+ * Add a tenant discriminator column to the given subject
+ */
+ void addTenantDiscriminatorColumn(T subject);
+
+ /**
+ * Return whether the subject has specified tenant discriminator columns
+ */
+ boolean hasSpecifiedTenantDiscriminatorColumns(T subject);
+
+ /**
+ * Return the specified tenant discriminator from the given subject
+ */
+ ListIterable<ReadOnlyTenantDiscriminatorColumn2_3> getSpecifiedTenantDiscriminatorColumns(T subject);
+
+ /**
+ * Return the number of specified join columns on the given subject
+ */
+ int getSpecifiedTenantDiscriminatorColumnsSize(T subject);
+
+ /**
+ * Return the default tenant discriminator columns from the given subject or null.
+ */
+ ListIterable<ReadOnlyTenantDiscriminatorColumn2_3> getDefaultTenantDiscriminatorColumns(T subject);
+
+ /**
+ * Return the number of default tenant discriminator on the given subject
+ */
+ int getDefaultTenantDiscriminatorColumnsSize(T subject);
+
+ /**
+ * Return the property name of the specified tenant discriminator columns list
+ */
+ String getSpecifiedTenantDiscriminatorsListPropertyName();
+
+ /**
+ * Return the property name of the default tenant discriminator columns list
+ */
+ String getDefaultTenantDiscriminatorsListPropertyName();
+
+ /**
+ * Remove the tenant discriminator columns at the specified indices from the subject
+ */
+ void removeTenantDiscriminatorColumns(T subject, int[] selectedIndices);
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkEntity2_xComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkEntity2_xComposite.java
new file mode 100644
index 0000000000..ba5b700720
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkEntity2_xComposite.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.eclipselink.ui.internal.details.java;
+
+import org.eclipse.jpt.common.ui.WidgetFactory;
+import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter;
+import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.jpa.core.context.AccessHolder;
+import org.eclipse.jpt.jpa.core.context.GeneratorContainer;
+import org.eclipse.jpt.jpa.core.context.QueryContainer;
+import org.eclipse.jpt.jpa.core.context.java.JavaEntity;
+import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkCaching;
+import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkEntity;
+import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite;
+import org.eclipse.jpt.jpa.ui.internal.details.EntityNameComposite;
+import org.eclipse.jpt.jpa.ui.internal.details.IdClassComposite;
+import org.eclipse.jpt.jpa.ui.internal.details.TableComposite;
+import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Entity2_0OverridesComposite;
+import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Generation2_0Composite;
+import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Queries2_0Composite;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * The pane used for an EclipseLink 2.x Java entity.
+ *
+ * @see JavaEclipseLinkEntity
+ * @see EclipselinkJpaUiFactory - The factory creating this pane
+ *
+ * @version 3.1
+ * @since 3.1
+ */
+public abstract class AbstractJavaEclipseLinkEntity2_xComposite
+ extends AbstractJavaEclipseLinkEntityComposite<JavaEntity>
+{
+ /**
+ * Creates a new <code>EclipseLinkJavaEntityComposite</code>.
+ *
+ * @param subjectHolder The holder of the subject <code>JavaEntity</code>
+ * @param parent The parent container
+ * @param widgetFactory The factory used to create various common widgets
+ */
+ protected AbstractJavaEclipseLinkEntity2_xComposite(
+ PropertyValueModel<? extends JavaEntity> subjectHolder,
+ Composite parent,
+ WidgetFactory widgetFactory) {
+
+ super(subjectHolder, parent, widgetFactory);
+ }
+
+ @Override
+ protected void initializeEntitySection(Composite container) {
+ new TableComposite(this, container);
+ new EntityNameComposite(this, container);
+ new AccessTypeComposite(this, buildAccessHolder(), container);
+ new IdClassComposite(this, buildIdClassReferenceHolder(), container);
+ }
+
+ protected PropertyValueModel<AccessHolder> buildAccessHolder() {
+ return new PropertyAspectAdapter<JavaEntity, AccessHolder>(getSubjectHolder()) {
+ @Override
+ protected AccessHolder buildValue_() {
+ return this.subject.getPersistentType();
+ }
+ };
+ }
+
+ @Override
+ protected void initializeAttributeOverridesSection(Composite container) {
+ new Entity2_0OverridesComposite(this, container);
+ }
+
+ @Override
+ protected void initializeGeneratorsSection(Composite container, PropertyValueModel<GeneratorContainer> generatorContainerHolder) {
+ new Generation2_0Composite(this, generatorContainerHolder, container);
+ }
+
+ @Override
+ protected void initializeCachingSection(Composite container, PropertyValueModel<JavaEclipseLinkCaching> cachingHolder) {
+ new JavaEclipseLinkCaching2_0Composite(this, cachingHolder, container);
+ }
+
+ @Override
+ protected void initializeQueriesSection(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) {
+ new Queries2_0Composite(this, queryContainerHolder, container);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/EclipseLink2_3JavaResourceUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/EclipseLink2_3JavaResourceUiDefinition.java
new file mode 100644
index 0000000000..c77c674341
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/EclipseLink2_3JavaResourceUiDefinition.java
@@ -0,0 +1,109 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.eclipselink.ui.internal.details.java;
+
+import java.util.List;
+import org.eclipse.jpt.jpa.core.context.AttributeMapping;
+import org.eclipse.jpt.jpa.core.context.TypeMapping;
+import org.eclipse.jpt.jpa.ui.ResourceUiDefinition;
+import org.eclipse.jpt.jpa.ui.details.java.DefaultJavaAttributeMappingUiDefinition;
+import org.eclipse.jpt.jpa.ui.details.java.JavaAttributeMappingUiDefinition;
+import org.eclipse.jpt.jpa.ui.details.java.JavaTypeMappingUiDefinition;
+import org.eclipse.jpt.jpa.ui.details.java.JavaUiFactory;
+import org.eclipse.jpt.jpa.ui.internal.details.java.AbstractJavaResourceUiDefinition;
+import org.eclipse.jpt.jpa.ui.internal.details.java.DefaultBasicMappingUiDefinition;
+import org.eclipse.jpt.jpa.ui.internal.details.java.DefaultEmbeddedMappingUiDefinition;
+import org.eclipse.jpt.jpa.ui.internal.details.java.JavaBasicMappingUiDefinition;
+import org.eclipse.jpt.jpa.ui.internal.details.java.JavaEmbeddableUiDefinition;
+import org.eclipse.jpt.jpa.ui.internal.details.java.JavaEmbeddedIdMappingUDefinition;
+import org.eclipse.jpt.jpa.ui.internal.details.java.JavaEmbeddedMappingUiDefinition;
+import org.eclipse.jpt.jpa.ui.internal.details.java.JavaEntityUiDefinition;
+import org.eclipse.jpt.jpa.ui.internal.details.java.JavaManyToManyMappingUiDefinition;
+import org.eclipse.jpt.jpa.ui.internal.details.java.JavaManyToOneMappingUiDefinition;
+import org.eclipse.jpt.jpa.ui.internal.details.java.JavaMappedSuperclassUiDefinition;
+import org.eclipse.jpt.jpa.ui.internal.details.java.JavaOneToManyMappingUiDefinition;
+import org.eclipse.jpt.jpa.ui.internal.details.java.JavaOneToOneMappingUiDefinition;
+import org.eclipse.jpt.jpa.ui.internal.details.java.JavaTransientMappingUiDefinition;
+import org.eclipse.jpt.jpa.ui.internal.details.java.JavaVersionMappingUiDefinition;
+import org.eclipse.jpt.jpa.ui.internal.details.java.NullJavaAttributeMappingUiDefinition;
+import org.eclipse.jpt.jpa.ui.internal.jpa2.details.java.JavaElementCollectionMapping2_0UiDefinition;
+
+public class EclipseLink2_3JavaResourceUiDefinition
+ extends AbstractJavaResourceUiDefinition
+{
+ // singleton
+ private static final ResourceUiDefinition INSTANCE = new EclipseLink2_3JavaResourceUiDefinition();
+
+
+ /**
+ * Return the singleton.
+ */
+ public static ResourceUiDefinition instance() {
+ return INSTANCE;
+ }
+
+
+ /**
+ * zero-argument constructor
+ */
+ protected EclipseLink2_3JavaResourceUiDefinition() {
+ super();
+ }
+
+
+ @Override
+ protected JavaUiFactory buildJavaUiFactory() {
+ return new EclipseLink2_3JavaUiFactory();
+ }
+
+ @Override
+ protected void addSpecifiedAttributeMappingUiDefinitionsTo(
+ List<JavaAttributeMappingUiDefinition<? extends AttributeMapping>> definitions) {
+
+ definitions.add(JavaEclipseLinkIdMapping2_0UiDefinition.instance());
+ definitions.add(JavaEmbeddedIdMappingUDefinition.instance());
+ definitions.add(JavaBasicMappingUiDefinition.instance());
+ definitions.add(JavaVersionMappingUiDefinition.instance());
+ definitions.add(JavaManyToOneMappingUiDefinition.instance());
+ definitions.add(JavaOneToManyMappingUiDefinition.instance());
+ definitions.add(JavaOneToOneMappingUiDefinition.instance());
+ definitions.add(JavaManyToManyMappingUiDefinition.instance());
+ definitions.add(JavaEmbeddedMappingUiDefinition.instance());
+ definitions.add(JavaTransientMappingUiDefinition.instance());
+
+ definitions.add(JavaEclipseLinkBasicCollectionMappingUiDefinition.instance());
+ definitions.add(JavaEclipseLinkBasicMapMappingUiDefinition.instance());
+ definitions.add(JavaEclipseLinkVariableOneToOneMappingUiDefinition.instance());
+ definitions.add(JavaEclipseLinkTransformationMappingUiDefinition.instance());
+
+ definitions.add(JavaElementCollectionMapping2_0UiDefinition.instance());
+ }
+
+ @Override
+ protected void addDefaultAttributeMappingUiDefinitionsTo(
+ List<DefaultJavaAttributeMappingUiDefinition<?>> definitions) {
+
+ definitions.add(DefaultBasicMappingUiDefinition.instance());
+ definitions.add(DefaultEmbeddedMappingUiDefinition.instance());
+ definitions.add(NullJavaAttributeMappingUiDefinition.instance());
+ definitions.add(DefaultJavaEclipseLinkOneToOneMappingUiDefinition.instance());
+ definitions.add(DefaultJavaEclipseLinkOneToManyMappingUiDefinition.instance());
+ definitions.add(DefaultJavaEclipseLinkVariableOneToOneMappingUiDefinition.instance());
+ }
+
+ @Override
+ protected void addSpecifiedTypeMappingUiDefinitionsTo(
+ List<JavaTypeMappingUiDefinition<? extends TypeMapping>> definitions) {
+
+ definitions.add(JavaEntityUiDefinition.instance());
+ definitions.add(JavaMappedSuperclassUiDefinition.instance());
+ definitions.add(JavaEmbeddableUiDefinition.instance());
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/EclipseLink2_3JavaUiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/EclipseLink2_3JavaUiFactory.java
new file mode 100644
index 0000000000..044d308da8
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/EclipseLink2_3JavaUiFactory.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+* Copyright (c) 2011 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.jpa.eclipselink.ui.internal.details.java;
+
+import org.eclipse.jpt.common.ui.WidgetFactory;
+import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.jpa.core.context.java.JavaEntity;
+import org.eclipse.jpt.jpa.core.context.java.JavaMappedSuperclass;
+import org.eclipse.jpt.jpa.ui.details.JpaComposite;
+import org.eclipse.jpt.jpa.ui.jpa2.details.java.JavaUiFactory2_0;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * EclipseLink2_0JpaUiFactory
+ */
+public class EclipseLink2_3JavaUiFactory
+ extends EclipseLink2_0JavaUiFactory
+ implements JavaUiFactory2_0
+{
+ public EclipseLink2_3JavaUiFactory() {
+ super();
+ }
+
+
+ // **************** java type mapping composites ***************************
+
+ @Override
+ public JpaComposite createJavaEntityComposite(
+ PropertyValueModel<JavaEntity> subjectHolder,
+ Composite parent, WidgetFactory widgetFactory) {
+ return new JavaEclipseLinkEntity2_3Composite(subjectHolder, parent, widgetFactory);
+ }
+
+ @Override
+ public JpaComposite createJavaMappedSuperclassComposite(
+ PropertyValueModel<JavaMappedSuperclass> subjectHolder,
+ Composite parent, WidgetFactory widgetFactory) {
+ return new JavaEclipseLinkMappedSuperclass2_3Composite(subjectHolder, parent, widgetFactory);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEntity2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEntity2_0Composite.java
index 257bab7af2..6bdc55c5bc 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEntity2_0Composite.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEntity2_0Composite.java
@@ -10,34 +10,22 @@
package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.java;
import org.eclipse.jpt.common.ui.WidgetFactory;
-import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter;
import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
-import org.eclipse.jpt.jpa.core.context.AccessHolder;
-import org.eclipse.jpt.jpa.core.context.GeneratorContainer;
-import org.eclipse.jpt.jpa.core.context.QueryContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaEntity;
-import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkCaching;
import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkEntity;
-import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite;
-import org.eclipse.jpt.jpa.ui.internal.details.EntityNameComposite;
-import org.eclipse.jpt.jpa.ui.internal.details.IdClassComposite;
-import org.eclipse.jpt.jpa.ui.internal.details.TableComposite;
-import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Entity2_0OverridesComposite;
-import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Generation2_0Composite;
-import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Queries2_0Composite;
import org.eclipse.swt.widgets.Composite;
/**
- * The pane used for an EclipseLink1.1 Java entity.
+ * The pane used for an EclipseLink 2.0 Java entity.
*
* @see JavaEclipseLinkEntity
* @see EclipselinkJpaUiFactory - The factory creating this pane
*
- * @version 2.3
+ * @version 3.1
* @since 2.2
*/
public class JavaEclipseLinkEntity2_0Composite
- extends AbstractJavaEclipseLinkEntityComposite<JavaEntity>
+ extends AbstractJavaEclipseLinkEntity2_xComposite
{
/**
* Creates a new <code>EclipseLinkJavaEntityComposite</code>.
@@ -50,44 +38,8 @@ public class JavaEclipseLinkEntity2_0Composite
PropertyValueModel<? extends JavaEntity> subjectHolder,
Composite parent,
WidgetFactory widgetFactory) {
-
- super(subjectHolder, parent, widgetFactory);
- }
-
- @Override
- protected void initializeEntitySection(Composite container) {
- new TableComposite(this, container);
- new EntityNameComposite(this, container);
- new AccessTypeComposite(this, buildAccessHolder(), container);
- new IdClassComposite(this, buildIdClassReferenceHolder(), container);
- }
-
- protected PropertyValueModel<AccessHolder> buildAccessHolder() {
- return new PropertyAspectAdapter<JavaEntity, AccessHolder>(getSubjectHolder()) {
- @Override
- protected AccessHolder buildValue_() {
- return this.subject.getPersistentType();
- }
- };
- }
-
- @Override
- protected void initializeAttributeOverridesSection(Composite container) {
- new Entity2_0OverridesComposite(this, container);
- }
-
- @Override
- protected void initializeGeneratorsSection(Composite container, PropertyValueModel<GeneratorContainer> generatorContainerHolder) {
- new Generation2_0Composite(this, generatorContainerHolder, container);
- }
- @Override
- protected void initializeCachingSection(Composite container, PropertyValueModel<JavaEclipseLinkCaching> cachingHolder) {
- new JavaEclipseLinkCaching2_0Composite(this, cachingHolder, container);
+ super(subjectHolder, parent, widgetFactory);
}
- @Override
- protected void initializeQueriesSection(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) {
- new Queries2_0Composite(this, queryContainerHolder, container);
- }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEntity2_3Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEntity2_3Composite.java
new file mode 100644
index 0000000000..cb8ec5d7aa
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEntity2_3Composite.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.eclipselink.ui.internal.details.java;
+
+import org.eclipse.jpt.common.ui.WidgetFactory;
+import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter;
+import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.jpa.core.context.java.JavaEntity;
+import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkEntity;
+import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkMultitenancy2_3;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMultitenancyComposite;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * The pane used for an EclipseLink 2.3 Java entity.
+ *
+ * @version 3.1
+ * @since 3.1
+ */
+public class JavaEclipseLinkEntity2_3Composite
+ extends AbstractJavaEclipseLinkEntity2_xComposite
+{
+ public JavaEclipseLinkEntity2_3Composite(
+ PropertyValueModel<? extends JavaEntity> subjectHolder,
+ Composite parent,
+ WidgetFactory widgetFactory) {
+
+ super(subjectHolder, parent, widgetFactory);
+ }
+
+ @Override
+ protected void initializeLayout(Composite container) {
+ this.initializeEntityCollapsibleSection(container);
+ this.initializeCachingCollapsibleSectionPane(container);
+ this.initializeQueriesCollapsibleSection(container);
+ this.initializeInheritanceCollapsibleSection(container);
+ this.initializeAttributeOverridesCollapsibleSection(container);
+ this.initializeMultitenancyCollapsibleSectionPane(container);
+ this.initializeGeneratorsCollapsibleSection(container);
+ this.initializeConvertersCollapsibleSection(container);
+ this.initializeSecondaryTablesCollapsibleSection(container);
+ this.initializeAdvancedCollapsibleSection(container);
+ }
+
+ protected void initializeMultitenancyCollapsibleSectionPane(Composite container) {
+ container = addCollapsibleSection(
+ container,
+ EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_multitenancy);
+ this.initializeMultitenancySection(container, buildMultitenancyHolder());
+ }
+
+ protected void initializeMultitenancySection(Composite container, PropertyValueModel<JavaEclipseLinkMultitenancy2_3> multitenancyHolder) {
+ new EclipseLinkMultitenancyComposite(this, multitenancyHolder, container);
+ }
+
+ private PropertyAspectAdapter<JavaEntity, JavaEclipseLinkMultitenancy2_3> buildMultitenancyHolder() {
+ return new PropertyAspectAdapter<JavaEntity, JavaEclipseLinkMultitenancy2_3>(getSubjectHolder()) {
+ @Override
+ protected JavaEclipseLinkMultitenancy2_3 buildValue_() {
+ return ((JavaEclipseLinkEntity) this.subject).getMultitenancy();
+ }
+ };
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkMappedSuperclass2_3Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkMappedSuperclass2_3Composite.java
new file mode 100644
index 0000000000..b58a546bd6
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkMappedSuperclass2_3Composite.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.eclipselink.ui.internal.details.java;
+
+import org.eclipse.jpt.common.ui.WidgetFactory;
+import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter;
+import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.jpa.core.context.AccessHolder;
+import org.eclipse.jpt.jpa.core.context.java.JavaMappedSuperclass;
+import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkMappedSuperclass;
+import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkCaching;
+import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkMappedSuperclass;
+import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkMultitenancy2_3;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMultitenancyComposite;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages;
+import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite;
+import org.eclipse.jpt.jpa.ui.internal.details.IdClassComposite;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * The pane used for an EclipseLink 2.3 Java Mapped Superclass.
+ *
+ * @see EclipseLinkMappedSuperclass
+ * @see EclipselinkJpaUiFactory - The factory creating this pane
+ *
+ * @version 3.1
+ * @since 3.1
+ */
+public class JavaEclipseLinkMappedSuperclass2_3Composite
+ extends AbstractJavaEclipseLinkMappedSuperclassComposite
+{
+ /**
+ * Creates a new <code>MappedSuperclassComposite</code>.
+ *
+ * @param subjectHolder The holder of this pane's subject
+ * @param parent The parent container
+ * @param widgetFactory The factory used to create various common widgets
+ */
+ public JavaEclipseLinkMappedSuperclass2_3Composite(
+ PropertyValueModel<? extends JavaMappedSuperclass> subjectHolder,
+ Composite parent,
+ WidgetFactory widgetFactory) {
+
+ super(subjectHolder, parent, widgetFactory);
+ }
+
+ @Override
+ protected void initializeLayout(Composite container) {
+ this.initializeMappedSuperclassCollapsibleSection(container);
+ this.initializeCachingCollapsibleSection(container);
+ this.initializeQueriesCollapsibleSection(container);
+ this.initializeMultitenancyCollapsibleSection(container);
+ this.initializeConvertersCollapsibleSection(container);
+ this.initializeAdvancedCollapsibleSection(container);
+ }
+
+ @Override
+ protected void initializeMappedSuperclassSection(Composite container) {
+ new AccessTypeComposite(this, buildAccessHolder(), container);
+ new IdClassComposite(this, buildIdClassReferenceHolder(), container);
+ }
+
+ protected PropertyValueModel<AccessHolder> buildAccessHolder() {
+ return new PropertyAspectAdapter<JavaMappedSuperclass, AccessHolder>(getSubjectHolder()) {
+ @Override
+ protected AccessHolder buildValue_() {
+ return this.subject.getPersistentType();
+ }
+ };
+ }
+
+ @Override
+ protected void initializeCachingSection(Composite container, PropertyValueModel<JavaEclipseLinkCaching> cachingHolder) {
+ new JavaEclipseLinkCaching2_0Composite(this, cachingHolder, container);
+ }
+
+ protected void initializeMultitenancyCollapsibleSection(Composite container) {
+ container = addCollapsibleSection(
+ container,
+ EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_multitenancy);
+ this.initializeMultitenancySection(container, buildMultitenancyHolder());
+ }
+
+ protected void initializeMultitenancySection(Composite container, PropertyValueModel<JavaEclipseLinkMultitenancy2_3> multitenancyHolder) {
+ new EclipseLinkMultitenancyComposite(this, multitenancyHolder, container);
+ }
+
+ private PropertyAspectAdapter<JavaMappedSuperclass, JavaEclipseLinkMultitenancy2_3> buildMultitenancyHolder() {
+ return new PropertyAspectAdapter<JavaMappedSuperclass, JavaEclipseLinkMultitenancy2_3>(getSubjectHolder()) {
+ @Override
+ protected JavaEclipseLinkMultitenancy2_3 buildValue_() {
+ return ((JavaEclipseLinkMappedSuperclass) this.subject).getMultitenancy();
+ }
+ };
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractOrmEclipseLinkEntity2_xComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractOrmEclipseLinkEntity2_xComposite.java
new file mode 100644
index 0000000000..4c2c1df450
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractOrmEclipseLinkEntity2_xComposite.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.eclipselink.ui.internal.details.orm;
+
+import org.eclipse.jpt.common.ui.WidgetFactory;
+import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.jpa.core.context.GeneratorContainer;
+import org.eclipse.jpt.jpa.core.context.QueryContainer;
+import org.eclipse.jpt.jpa.core.context.orm.OrmEntity;
+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkCaching;
+import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Entity2_0OverridesComposite;
+import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Generation2_0Composite;
+import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Queries2_0Composite;
+import org.eclipse.swt.widgets.Composite;
+
+public abstract class AbstractOrmEclipseLinkEntity2_xComposite extends AbstractOrmEclipseLinkEntityComposite
+{
+ protected AbstractOrmEclipseLinkEntity2_xComposite(
+ PropertyValueModel<? extends OrmEntity> subjectHolder,
+ Composite parent, WidgetFactory widgetFactory) {
+ super(subjectHolder, parent, widgetFactory);
+ }
+
+ @Override
+ protected void initializeAttributeOverridesSection(Composite container) {
+ new Entity2_0OverridesComposite(this, container);
+ }
+
+ @Override
+ protected void initializeGeneratorsSection(Composite container, PropertyValueModel<GeneratorContainer> generatorContainerHolder) {
+ new Generation2_0Composite(this, generatorContainerHolder, container);
+ }
+
+ @Override
+ protected void initializeCachingSection(Composite container, PropertyValueModel<OrmEclipseLinkCaching> cachingHolder) {
+ new OrmEclipseLinkCaching2_0Composite(this, cachingHolder, container);
+ }
+
+ @Override
+ protected void initializeQueriesSection(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) {
+ new Queries2_0Composite(this, queryContainerHolder, container);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLink2_3PersistenceUnitMetadataComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLink2_3PersistenceUnitMetadataComposite.java
new file mode 100644
index 0000000000..c9f7117712
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLink2_3PersistenceUnitMetadataComposite.java
@@ -0,0 +1,218 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.eclipselink.ui.internal.details.orm;
+
+import org.eclipse.jpt.common.ui.internal.utility.swt.SWTTools;
+import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer;
+import org.eclipse.jpt.common.ui.internal.widgets.Pane;
+import org.eclipse.jpt.common.utility.internal.iterables.EmptyListIterable;
+import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
+import org.eclipse.jpt.common.utility.internal.iterables.SuperListIterableWrapper;
+import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel;
+import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.jpa.core.context.orm.OrmPersistenceUnitDefaults;
+import org.eclipse.jpt.jpa.core.context.orm.OrmPersistenceUnitMetadata;
+import org.eclipse.jpt.jpa.eclipselink.core.context.ReadOnlyTenantDiscriminatorColumn2_3;
+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkPersistenceUnitDefaults;
+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmTenantDiscriminatorColumn2_3;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.TenantDiscriminatorColumnsComposite;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.TenantDiscriminatorColumnsComposite.TenantDiscriminatorColumnsEditor;
+import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds;
+import org.eclipse.jpt.jpa.ui.internal.details.db.CatalogCombo;
+import org.eclipse.jpt.jpa.ui.internal.details.db.SchemaCombo;
+import org.eclipse.jpt.jpa.ui.internal.details.orm.EntityMappingsDetailsPage;
+import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages;
+import org.eclipse.jpt.jpa.ui.internal.details.orm.PersistenceUnitMetadataComposite;
+import org.eclipse.jpt.jpa.ui.internal.jpa2.Jpa2_0ProjectFlagModel;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+
+/**
+ * Here the layout of this pane:
+ * <pre>
+ * -----------------------------------------------------------------------------
+ * | |
+ * | - Persistence Unit ------------------------------------------------------ |
+ * | |
+ * | x XML Mapping Metadata Complete |
+ * | |
+ * | x Cascade Persist |
+ * | |
+ * | ------------------------------------------------------------ |
+ * | Schema: | SchemaCombo | |
+ * | ------------------------------------------------------------ |
+ * | ------------------------------------------------------------ |
+ * | Catalog: | CatalogCombo | |
+ * | ------------------------------------------------------------ |
+ * | ------------------------------------------------------------ |
+ * | Access Type: | |v| |
+ * | ------------------------------------------------------------ |
+ * -----------------------------------------------------------------------------</pre>
+ *
+ * @see PersistenceUnitMetadata
+ * @see OrmPersistenceUnitDefaults
+ * @see EntityMappingsDetailsPage - The parent container
+ * @see CatalogCombo
+ * @see SchemaCombo
+ * @see EnumFormComboViewer
+ *
+ * @version 3.1
+ * @since 3.1
+ */
+public class EclipseLink2_3PersistenceUnitMetadataComposite extends PersistenceUnitMetadataComposite
+{
+
+ protected TenantDiscriminatorColumnsComposite<OrmPersistenceUnitDefaults> tenantDiscriminatorColumnsComposite;
+
+ public EclipseLink2_3PersistenceUnitMetadataComposite(Pane<?> parentPane,
+ PropertyValueModel<? extends OrmPersistenceUnitMetadata> subjectHolder,
+ Composite parent) {
+
+ super(parentPane, subjectHolder, parent);
+ }
+
+ @Override
+ protected void initializeLayout(Composite container) {
+
+ // Section
+ container = addCollapsibleSection(
+ container,
+ JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_persistenceUnitSection
+ );
+
+ // XML mapping metadata complete check box
+ addCheckBox(
+ container,
+ JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_xmlMappingMetadataCompleteCheckBox,
+ buildXmlMappingMetadataCompleteHolder(),
+ JpaHelpContextIds.ENTITY_ORM_XML
+ );
+
+ // Cascade Persist check-box
+ addCheckBox(
+ container,
+ JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_cascadePersistCheckBox,
+ buildCascadePersistHolder(),
+ JpaHelpContextIds.ENTITY_ORM_CASCADE
+ );
+
+ // Schema widgets
+ addLabeledComposite(
+ container,
+ JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_schema,
+ addSchemaCombo(container),
+ JpaHelpContextIds.ENTITY_ORM_SCHEMA
+ );
+
+ // Catalog widgets
+ addLabeledComposite(
+ container,
+ JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_catalog,
+ addCatalogCombo(container),
+ JpaHelpContextIds.ENTITY_ORM_CATALOG
+ );
+
+ // Access Type widgets
+ addLabeledComposite(
+ container,
+ JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_access,
+ addAccessTypeCombo(container),
+ JpaHelpContextIds.ENTITY_ORM_ACCESS
+ );
+
+ // Delimited Identifiers check-box
+ Button diCheckBox = this.addCheckBox(
+ container,
+ JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_delimitedIdentifiersCheckBox,
+ this.buildDelimitedIdentifiersHolder(),
+ JpaHelpContextIds.ENTITY_ORM_DELIMITED_IDENTIFIERS
+ );
+
+ SWTTools.controlVisibleState(new Jpa2_0ProjectFlagModel<OrmPersistenceUnitMetadata>(this.getSubjectHolder()), diCheckBox);
+
+
+ // Tenant discriminator columns group pane
+ Group tenantDiscriminatorColumnGroupPane = addTitledGroup(
+ container,
+ EclipseLinkUiDetailsMessages.TenantDiscriminatorColumns_groupLabel
+ );
+
+ this.tenantDiscriminatorColumnsComposite = new TenantDiscriminatorColumnsComposite<OrmPersistenceUnitDefaults>(
+ getPersistenceUnitDefaultsHolder(),
+ tenantDiscriminatorColumnGroupPane,
+ getWidgetFactory(),
+ buildTenantDiscriminatorColumnsEditor()
+ );
+
+ installTenantDiscriminatorColumnsPaneEnabler(this.tenantDiscriminatorColumnsComposite);
+ }
+
+ protected void installTenantDiscriminatorColumnsPaneEnabler(TenantDiscriminatorColumnsComposite<OrmPersistenceUnitDefaults> pane) {
+ pane.installListPaneEnabler(buildPaneEnablerHolder());
+ }
+
+ private PropertyValueModel<Boolean> buildPaneEnablerHolder() {
+ return new TransformationPropertyValueModel<OrmPersistenceUnitDefaults, Boolean>(getPersistenceUnitDefaultsHolder()) {
+ @Override
+ protected Boolean transform(OrmPersistenceUnitDefaults value) {
+ return Boolean.valueOf(value != null);
+ }
+ };
+ }
+
+ protected TenantDiscriminatorColumnsEditor<OrmPersistenceUnitDefaults> buildTenantDiscriminatorColumnsEditor() {
+ return new TenantDiscriminatorColumnsProvider();
+ }
+
+ class TenantDiscriminatorColumnsProvider implements TenantDiscriminatorColumnsEditor<OrmPersistenceUnitDefaults> {
+
+ public void addTenantDiscriminatorColumn(OrmPersistenceUnitDefaults subject) {
+ OrmTenantDiscriminatorColumn2_3 column = ((EclipseLinkPersistenceUnitDefaults) subject).addTenantDiscriminatorColumn();
+ column.setSpecifiedName(ReadOnlyTenantDiscriminatorColumn2_3.DEFAULT_NAME);
+ }
+
+ public ListIterable<ReadOnlyTenantDiscriminatorColumn2_3> getDefaultTenantDiscriminatorColumns(OrmPersistenceUnitDefaults subject) {
+ return EmptyListIterable.instance();
+ }
+
+ public int getDefaultTenantDiscriminatorColumnsSize(OrmPersistenceUnitDefaults subject) {
+ return 0;
+ }
+
+ public String getDefaultTenantDiscriminatorsListPropertyName() {
+ return ""; //$NON-NLS-1$
+ }
+
+ public ListIterable<ReadOnlyTenantDiscriminatorColumn2_3> getSpecifiedTenantDiscriminatorColumns(OrmPersistenceUnitDefaults subject) {
+ return new SuperListIterableWrapper<ReadOnlyTenantDiscriminatorColumn2_3>(((EclipseLinkPersistenceUnitDefaults) subject).getTenantDiscriminatorColumns());
+ }
+
+ public int getSpecifiedTenantDiscriminatorColumnsSize(OrmPersistenceUnitDefaults subject) {
+ return ((EclipseLinkPersistenceUnitDefaults) subject).getTenantDiscriminatorColumnsSize();
+ }
+
+ public String getSpecifiedTenantDiscriminatorsListPropertyName() {
+ return EclipseLinkPersistenceUnitDefaults.TENANT_DISCRIMINATOR_COLUMNS_LIST;
+ }
+
+ public boolean hasSpecifiedTenantDiscriminatorColumns(OrmPersistenceUnitDefaults subject) {
+ return ((EclipseLinkPersistenceUnitDefaults) subject).hasTenantDiscriminatorColumns();
+ }
+
+ public void removeTenantDiscriminatorColumns(OrmPersistenceUnitDefaults subject, int[] selectedIndices) {
+ for (int index = selectedIndices.length; index-- > 0; ) {
+ ((EclipseLinkPersistenceUnitDefaults) subject).removeTenantDiscriminatorColumn(selectedIndices[index]);
+ }
+ }
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_0DetailsProvider.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_0DetailsProvider.java
index eebe5ceeee..393e154fdb 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_0DetailsProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_0DetailsProvider.java
@@ -23,7 +23,7 @@ import org.eclipse.swt.widgets.Composite;
* when the information comes from the XML file (either from the persistence
* configuration or from the Mappings Descriptor).
*
- * @version 2.2
+ * @version 3.1
* @since 2.2
*/
public class EclipseLinkEntityMappings2_0DetailsProvider
@@ -53,9 +53,7 @@ public class EclipseLinkEntityMappings2_0DetailsProvider
protected boolean providesDetails(JptResourceType resourceType) {
return resourceType.equals(JptJpaEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_2_0_RESOURCE_TYPE) ||
resourceType.equals(JptJpaEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_2_1_RESOURCE_TYPE) ||
- resourceType.equals(JptJpaEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_2_2_RESOURCE_TYPE) ||
- resourceType.equals(JptJpaEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_2_3_RESOURCE_TYPE) ||
- resourceType.equals(JptJpaEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_2_4_RESOURCE_TYPE);
+ resourceType.equals(JptJpaEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_2_2_RESOURCE_TYPE);
}
public JpaDetailsPage<? extends JpaStructureNode> buildDetailsPage(
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_3DetailsPage.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_3DetailsPage.java
new file mode 100644
index 0000000000..fb5f43a3e1
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_3DetailsPage.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.eclipselink.ui.internal.details.orm;
+
+import org.eclipse.jpt.common.ui.WidgetFactory;
+import org.eclipse.jpt.jpa.ui.internal.jpa2.details.orm.EntityMappingsGenerators2_0Composite;
+import org.eclipse.jpt.jpa.ui.internal.jpa2.details.orm.OrmQueries2_0Composite;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Here the layout of this pane:
+ * <pre>
+ * -----------------------------------------------------------------------------
+ * | ------------------------------------------------------------------------- |
+ * | | | |
+ * | | XmlPackageChooser | |
+ * | | | |
+ * | ------------------------------------------------------------------------- |
+ * | ------------------------------------------------------------ |
+ * | Schema: | SchemaCombo | |
+ * | ------------------------------------------------------------ |
+ * | ------------------------------------------------------------ |
+ * | Catalog: | CatalogCombo | |
+ * | ------------------------------------------------------------ |
+ * | ------------------------------------------------------------ |
+ * | Access Type: | |v| |
+ * | ------------------------------------------------------------ |
+ * | |
+ * | ------------------------------------------------------------------------- |
+ * | | | |
+ * | | PersistenceUnitMetadataComposite | |
+ * | | | |
+ * | ------------------------------------------------------------------------- |
+ * | ------------------------------------------------------------------------- |
+ * | | | |
+ * | | OrmGeneratorsComposite | |
+ * | | | |
+ * | ------------------------------------------------------------------------- |
+ * | ------------------------------------------------------------------------- |
+ * | | | |
+ * | | OrmQueriesComposite | |
+ * | | | |
+ * | ------------------------------------------------------------------------- |
+ * | ------------------------------------------------------------------------- |
+ * | | | |
+ * | | ConvertersComposite | |
+ * | | | |
+ * | ------------------------------------------------------------------------- |
+ * | ------------------------------------------------------------------------- |
+ * | | | |
+ * | | TenantDiscriminatorColumnsComposite | |
+ * | | | |
+ * | ------------------------------------------------------------------------- |
+ * -----------------------------------------------------------------------------</pre>
+ *
+ *
+ * @version 3.1
+ * @since 3.1
+ */
+public class EclipseLinkEntityMappings2_3DetailsPage extends AbstractEclipseLinkEntityMappingsDetailsPage
+{
+ /**
+ * Creates a new <code>EclipseLinkEntityMappingsDetailsPage</code>.
+ *
+ * @param parent The parent container
+ * @param widgetFactory The factory used to create various common widgets
+ */
+ public EclipseLinkEntityMappings2_3DetailsPage(Composite parent,
+ WidgetFactory widgetFactory) {
+
+ super(parent, widgetFactory);
+ }
+
+ @Override
+ protected void initializeLayout(Composite container) {
+ this.initializeEntityMappingsCollapsibleSection(container);
+ this.initializePersistenceUnitMetadataCollapsibleSection(container);
+ this.initializeGeneratorsCollapsibleSection(container);
+ this.initializeQueriesCollapsibleSection(container);
+ this.initializeConvertersCollapsibleSection(container);
+ this.initializeMultitenancyCollapsibleSection(container);
+ }
+
+ @Override
+ protected void initializeGeneratorsCollapsibleSection(Composite container) {
+ new EntityMappingsGenerators2_0Composite(this, container);
+ }
+
+ @Override
+ protected void initializeQueriesCollapsibleSection(Composite container) {
+ new OrmQueries2_0Composite(this, container);
+ }
+
+ @Override
+ protected void initializePersistenceUnitMetadataCollapsibleSection(Composite container) {
+ new EclipseLink2_3PersistenceUnitMetadataComposite(
+ this,
+ buildPersistentUnitMetadataHolder(),
+ addSubPane(container, 5)
+ );
+ }
+
+ protected void initializeMultitenancyCollapsibleSection(Composite container) {
+ new EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite(this, container).getControl();
+ }
+
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_3DetailsProvider.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_3DetailsProvider.java
new file mode 100644
index 0000000000..f52aa8b2ac
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_3DetailsProvider.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.eclipselink.ui.internal.details.orm;
+
+import org.eclipse.jpt.common.core.JptResourceType;
+import org.eclipse.jpt.common.ui.WidgetFactory;
+import org.eclipse.jpt.jpa.core.JpaStructureNode;
+import org.eclipse.jpt.jpa.eclipselink.core.JptJpaEclipseLinkCorePlugin;
+import org.eclipse.jpt.jpa.ui.details.JpaDetailsPage;
+import org.eclipse.jpt.jpa.ui.details.JpaDetailsProvider;
+import org.eclipse.jpt.jpa.ui.internal.details.AbstractEntityMappingsDetailsProvider;
+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 3.1
+ * @since 3.1
+ */
+public class EclipseLinkEntityMappings2_3DetailsProvider
+ extends AbstractEntityMappingsDetailsProvider
+{
+ // singleton
+ private static final JpaDetailsProvider INSTANCE = new EclipseLinkEntityMappings2_3DetailsProvider();
+
+
+ /**
+ * Return the singleton
+ */
+ public static JpaDetailsProvider instance() {
+ return INSTANCE;
+ }
+
+
+ /**
+ * Enforce singleton usage
+ */
+ private EclipseLinkEntityMappings2_3DetailsProvider() {
+ super();
+ }
+
+
+ @Override
+ protected boolean providesDetails(JptResourceType resourceType) {
+ return resourceType.equals(JptJpaEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_2_3_RESOURCE_TYPE) ||
+ resourceType.equals(JptJpaEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_2_4_RESOURCE_TYPE);
+ }
+
+ public JpaDetailsPage<? extends JpaStructureNode> buildDetailsPage(
+ Composite parent,
+ WidgetFactory widgetFactory) {
+
+ return new EclipseLinkEntityMappings2_3DetailsPage(parent, widgetFactory);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite.java
new file mode 100644
index 0000000000..bdc6fb4156
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite.java
@@ -0,0 +1,247 @@
+/*******************************************************************************
+* Copyright (c) 2011 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.jpa.eclipselink.ui.internal.details.orm;
+
+import org.eclipse.jpt.common.ui.internal.widgets.Pane;
+import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
+import org.eclipse.jpt.common.utility.internal.iterables.SuperListIterableWrapper;
+import org.eclipse.jpt.common.utility.internal.model.value.CachingTransformationPropertyValueModel;
+import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter;
+import org.eclipse.jpt.common.utility.internal.model.value.ListPropertyValueModelAdapter;
+import org.eclipse.jpt.common.utility.internal.model.value.ReadOnlyWritablePropertyValueModelWrapper;
+import org.eclipse.jpt.common.utility.internal.model.value.ValueListAdapter;
+import org.eclipse.jpt.common.utility.model.event.StateChangeEvent;
+import org.eclipse.jpt.common.utility.model.listener.StateChangeListener;
+import org.eclipse.jpt.common.utility.model.value.ListValueModel;
+import org.eclipse.jpt.common.utility.model.value.WritablePropertyValueModel;
+import org.eclipse.jpt.jpa.core.context.orm.EntityMappings;
+import org.eclipse.jpt.jpa.eclipselink.core.context.ReadOnlyTenantDiscriminatorColumn2_3;
+import org.eclipse.jpt.jpa.eclipselink.core.context.TenantDiscriminatorColumn2_3;
+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkEntityMappings;
+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmTenantDiscriminatorColumn2_3;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.TenantDiscriminatorColumnsComposite;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.TenantDiscriminatorColumnsComposite.TenantDiscriminatorColumnsEditor;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+
+public class EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite extends Pane<EntityMappings> {
+
+ private TenantDiscriminatorColumnsComposite<EntityMappings> tenantDiscriminatorColumnsComposite;
+
+ public EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite(Pane<? extends EntityMappings> parentPane,
+ Composite parent) {
+
+ super(parentPane, parent);
+ }
+
+
+ @Override
+ protected void initializeLayout(Composite container) {
+
+ container = this.addCollapsibleSection(
+ container,
+ EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_multitenancy
+ );
+
+ // Tenant discriminator columns group pane
+ Group tenantDiscriminatorColumnGroupPane = addTitledGroup(
+ container,
+ EclipseLinkUiDetailsMessages.TenantDiscriminatorColumns_groupLabel
+ );
+
+ // Override Default Tenant Discriminator Columns check box
+ addCheckBox(
+ addSubPane(tenantDiscriminatorColumnGroupPane, 8),
+ EclipseLinkUiDetailsMessages.EclipseLinkMultitenancy_overrideDefaultTenantDiscriminatorColumns,
+ buildOverrideDefaultTenantDiscriminatorColumnHolder(),
+ null
+ );
+
+ this.tenantDiscriminatorColumnsComposite = this.buildTenantDiscriminatorColumnsComposite(tenantDiscriminatorColumnGroupPane);
+
+ this.tenantDiscriminatorColumnsComposite.installListPaneEnabler(new TenantDiscriminatorColumnPaneEnablerHolder());
+ }
+
+ protected TenantDiscriminatorColumnsComposite<EntityMappings> buildTenantDiscriminatorColumnsComposite(Composite container) {
+ return new TenantDiscriminatorColumnsComposite<EntityMappings>(
+ getSubjectHolder(),
+ container,
+ getWidgetFactory(),
+ buildTenantDiscriminatorColumnsEditor());
+ }
+
+
+ protected TenantDiscriminatorColumnsEditor<EntityMappings> buildTenantDiscriminatorColumnsEditor() {
+ return new TenantDiscriminatorColumnsProvider();
+ }
+
+ class TenantDiscriminatorColumnsProvider implements TenantDiscriminatorColumnsEditor<EntityMappings> {
+
+ public void addTenantDiscriminatorColumn(EntityMappings subject) {
+ OrmTenantDiscriminatorColumn2_3 column = ((EclipseLinkEntityMappings) subject).addSpecifiedTenantDiscriminatorColumn();
+ column.setSpecifiedName(ReadOnlyTenantDiscriminatorColumn2_3.DEFAULT_NAME);
+ }
+
+ public ListIterable<ReadOnlyTenantDiscriminatorColumn2_3> getDefaultTenantDiscriminatorColumns(EntityMappings subject) {
+ return new SuperListIterableWrapper<ReadOnlyTenantDiscriminatorColumn2_3>(((EclipseLinkEntityMappings) subject).getDefaultTenantDiscriminatorColumns());
+ }
+
+ public int getDefaultTenantDiscriminatorColumnsSize(EntityMappings subject) {
+ return ((EclipseLinkEntityMappings) subject).getDefaultTenantDiscriminatorColumnsSize();
+ }
+
+ public String getDefaultTenantDiscriminatorsListPropertyName() {
+ return EclipseLinkEntityMappings.DEFAULT_TENANT_DISCRIMINATOR_COLUMNS_LIST;
+ }
+
+ public ListIterable<ReadOnlyTenantDiscriminatorColumn2_3> getSpecifiedTenantDiscriminatorColumns(EntityMappings subject) {
+ return new SuperListIterableWrapper<ReadOnlyTenantDiscriminatorColumn2_3>(((EclipseLinkEntityMappings) subject).getSpecifiedTenantDiscriminatorColumns());
+ }
+
+ public int getSpecifiedTenantDiscriminatorColumnsSize(EntityMappings subject) {
+ return ((EclipseLinkEntityMappings) subject).getSpecifiedTenantDiscriminatorColumnsSize();
+ }
+
+ public String getSpecifiedTenantDiscriminatorsListPropertyName() {
+ return EclipseLinkEntityMappings.SPECIFIED_TENANT_DISCRIMINATOR_COLUMNS_LIST;
+ }
+
+ public boolean hasSpecifiedTenantDiscriminatorColumns(EntityMappings subject) {
+ return ((EclipseLinkEntityMappings) subject).hasSpecifiedTenantDiscriminatorColumns();
+ }
+
+ public void removeTenantDiscriminatorColumns(EntityMappings subject, int[] selectedIndices) {
+ for (int index = selectedIndices.length; index-- > 0; ) {
+ ((EclipseLinkEntityMappings) subject).removeSpecifiedTenantDiscriminatorColumn(selectedIndices[index]);
+ }
+ }
+ }
+
+ void setSelectedTenantDiscriminatorColumn(ReadOnlyTenantDiscriminatorColumn2_3 tenantDiscriminatorColumn) {
+ this.tenantDiscriminatorColumnsComposite.setSelectedTenantDiscriminatorColumn(tenantDiscriminatorColumn);
+ }
+
+ private WritablePropertyValueModel<Boolean> buildOverrideDefaultTenantDiscriminatorColumnHolder() {
+ return new OverrideDefaultTenantDiscriminatorColumnHolder();
+ }
+
+ ListValueModel<ReadOnlyTenantDiscriminatorColumn2_3> buildSpecifiedTenantDiscriminatorColumnsListHolder() {
+ return new ListAspectAdapter<EntityMappings, ReadOnlyTenantDiscriminatorColumn2_3>(
+ getSubjectHolder(), EclipseLinkEntityMappings.SPECIFIED_TENANT_DISCRIMINATOR_COLUMNS_LIST) {
+ @Override
+ protected ListIterable<ReadOnlyTenantDiscriminatorColumn2_3> getListIterable() {
+ return new SuperListIterableWrapper<ReadOnlyTenantDiscriminatorColumn2_3>(((EclipseLinkEntityMappings) this.subject).getSpecifiedTenantDiscriminatorColumns());
+ }
+
+ @Override
+ protected int size_() {
+ return ((EclipseLinkEntityMappings) this.subject).getSpecifiedTenantDiscriminatorColumnsSize();
+ }
+ };
+ }
+
+ private class OverrideDefaultTenantDiscriminatorColumnHolder
+ extends ListPropertyValueModelAdapter<Boolean>
+ implements WritablePropertyValueModel<Boolean>
+ {
+ public OverrideDefaultTenantDiscriminatorColumnHolder() {
+ super(buildSpecifiedTenantDiscriminatorColumnsListHolder());
+ }
+
+ @Override
+ protected Boolean buildValue() {
+ return Boolean.valueOf(this.listHolder.size() > 0);
+ }
+
+ public void setValue(Boolean value) {
+ updateTenantDiscriminatorColumns(value.booleanValue());
+ }
+
+ private void updateTenantDiscriminatorColumns(boolean selected) {
+ if (isPopulating()) {
+ return;
+ }
+
+ setPopulating(true);
+
+ try {
+ EclipseLinkEntityMappings subject = (EclipseLinkEntityMappings) getSubject();
+
+ if (selected) {
+ TenantDiscriminatorColumn2_3 newTenantDiscriminatorColumn = subject.addSpecifiedTenantDiscriminatorColumn();
+ newTenantDiscriminatorColumn.setSpecifiedName(ReadOnlyTenantDiscriminatorColumn2_3.DEFAULT_NAME);
+ }
+ // Remove all the specified tenant discriminator columns
+ else {
+ for (int index = subject.getSpecifiedTenantDiscriminatorColumnsSize(); --index >= 0; ) {
+ subject.removeSpecifiedTenantDiscriminatorColumn(index);
+ }
+ }
+ }
+ finally {
+ setPopulating(false);
+ }
+ }
+ }
+
+ private class TenantDiscriminatorColumnPaneEnablerHolder
+ extends CachingTransformationPropertyValueModel<EntityMappings, Boolean>
+ {
+ private StateChangeListener stateChangeListener;
+
+ public TenantDiscriminatorColumnPaneEnablerHolder() {
+ super(
+ new ValueListAdapter<EntityMappings>(
+ new ReadOnlyWritablePropertyValueModelWrapper<EntityMappings>(getSubjectHolder()),
+ EclipseLinkEntityMappings.SPECIFIED_TENANT_DISCRIMINATOR_COLUMNS_LIST));
+ this.stateChangeListener = buildStateChangeListener();
+ }
+
+ private StateChangeListener buildStateChangeListener() {
+ return new StateChangeListener() {
+ public void stateChanged(StateChangeEvent event) {
+ valueStateChanged();
+ }
+ };
+ }
+
+ void valueStateChanged() {
+ Object oldValue = this.cachedValue;
+ Object newValue = transformNew(this.valueHolder.getValue());
+ firePropertyChanged(VALUE, oldValue, newValue);
+ }
+
+ @Override
+ protected Boolean transform(EntityMappings value) {
+ if (value == null) {
+ return Boolean.FALSE;
+ }
+ return super.transform(value);
+ }
+
+ @Override
+ protected Boolean transform_(EntityMappings value) {
+ return Boolean.valueOf(((EclipseLinkEntityMappings) value).getSpecifiedTenantDiscriminatorColumnsSize() > 0);
+ }
+
+ @Override
+ protected void engageModel() {
+ super.engageModel();
+ this.valueHolder.addStateChangeListener(this.stateChangeListener);
+ }
+
+ @Override
+ protected void disengageModel() {
+ this.valueHolder.removeStateChangeListener(this.stateChangeListener);
+ super.disengageModel();
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_1UiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_1UiDefinition.java
index 87f3f2dbb4..582b4c1251 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_1UiDefinition.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_1UiDefinition.java
@@ -28,6 +28,7 @@ import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmEntityUiDefinition;
import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmIdMappingUiDefinition;
import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmManyToManyMappingUiDefinition;
import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmManyToOneMappingUiDefinition;
+import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappedSuperclassUiDefinition;
import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmOneToManyMappingUiDefinition;
import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmOneToOneMappingUiDefinition;
import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmTransientMappingUiDefinition;
@@ -52,7 +53,7 @@ public class EclipseLinkOrmXml2_1UiDefinition extends AbstractOrmXmlResourceUiDe
/**
* Enforce singleton usage
*/
- private EclipseLinkOrmXml2_1UiDefinition() {
+ protected EclipseLinkOrmXml2_1UiDefinition() {
super();
}
@@ -94,7 +95,7 @@ public class EclipseLinkOrmXml2_1UiDefinition extends AbstractOrmXmlResourceUiDe
@Override
protected void addOrmTypeMappingUiDefinitionsTo(List<OrmTypeMappingUiDefinition<? extends TypeMapping>> definitions) {
definitions.add(OrmEntityUiDefinition.instance());
- definitions.add(OrmEclipseLinkMappedSuperclass2_1UiDefinition.instance());
+ definitions.add(OrmMappedSuperclassUiDefinition.instance());
definitions.add(OrmEmbeddableUiDefinition.instance());
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_1UiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_1UiFactory.java
index e16c8322c9..837f7e82d6 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_1UiFactory.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_1UiFactory.java
@@ -11,8 +11,8 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm;
import org.eclipse.jpt.common.ui.WidgetFactory;
import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.jpa.core.context.orm.OrmMappedSuperclass;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmElementCollectionMapping2_0;
-import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkMappedSuperclass;
import org.eclipse.jpt.jpa.ui.details.JpaComposite;
import org.eclipse.swt.widgets.Composite;
@@ -20,7 +20,6 @@ public class EclipseLinkOrmXml2_1UiFactory
extends EclipseLinkOrmXml2_0UiFactory
{
-
@Override
public JpaComposite createOrmElementCollectionMapping2_0Composite(
PropertyValueModel<OrmElementCollectionMapping2_0> subjectHolder,
@@ -28,9 +27,10 @@ public class EclipseLinkOrmXml2_1UiFactory
WidgetFactory widgetFactory) {
return new OrmEclipseLinkElementCollectionMapping2_1Composite(subjectHolder, parent, widgetFactory);
}
-
- public JpaComposite createOrmEclipseLinkMappedSuperclass2_1Composite(
- PropertyValueModel<OrmEclipseLinkMappedSuperclass> subjectHolder,
+
+ @Override
+ public JpaComposite createOrmMappedSuperclassComposite(
+ PropertyValueModel<OrmMappedSuperclass> subjectHolder,
Composite parent,
WidgetFactory widgetFactory) {
return new OrmEclipseLinkMappedSuperclass2_1Composite(subjectHolder, parent, widgetFactory);
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_2UiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_2UiDefinition.java
index 4505b52c9b..56eb710775 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_2UiDefinition.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_2UiDefinition.java
@@ -9,34 +9,11 @@
******************************************************************************/
package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm;
-import java.util.List;
-
import org.eclipse.jpt.common.core.JptResourceType;
-import org.eclipse.jpt.jpa.core.context.AttributeMapping;
-import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.eclipselink.core.JptJpaEclipseLinkCorePlugin;
-import org.eclipse.jpt.jpa.eclipselink.ui.internal.structure.EclipseLinkOrmResourceModelStructureProvider;
import org.eclipse.jpt.jpa.ui.ResourceUiDefinition;
-import org.eclipse.jpt.jpa.ui.details.orm.OrmAttributeMappingUiDefinition;
-import org.eclipse.jpt.jpa.ui.details.orm.OrmTypeMappingUiDefinition;
-import org.eclipse.jpt.jpa.ui.details.orm.OrmXmlUiFactory;
-import org.eclipse.jpt.jpa.ui.internal.details.orm.AbstractOrmXmlResourceUiDefinition;
-import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmBasicMappingUiDefinition;
-import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmEmbeddableUiDefinition;
-import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmEmbeddedIdMappingUiDefinition;
-import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmEmbeddedMappingUiDefinition;
-import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmEntityUiDefinition;
-import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmIdMappingUiDefinition;
-import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmManyToManyMappingUiDefinition;
-import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmManyToOneMappingUiDefinition;
-import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmOneToManyMappingUiDefinition;
-import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmOneToOneMappingUiDefinition;
-import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmTransientMappingUiDefinition;
-import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmVersionMappingUiDefinition;
-import org.eclipse.jpt.jpa.ui.internal.jpa2.details.orm.OrmElementCollectionMapping2_0UiDefinition;
-import org.eclipse.jpt.jpa.ui.structure.JpaStructureProvider;
-public class EclipseLinkOrmXml2_2UiDefinition extends AbstractOrmXmlResourceUiDefinition
+public class EclipseLinkOrmXml2_2UiDefinition extends EclipseLinkOrmXml2_1UiDefinition
{
// singleton
private static final ResourceUiDefinition INSTANCE = new EclipseLinkOrmXml2_2UiDefinition();
@@ -53,49 +30,13 @@ public class EclipseLinkOrmXml2_2UiDefinition extends AbstractOrmXmlResourceUiDe
/**
* Enforce singleton usage
*/
- protected EclipseLinkOrmXml2_2UiDefinition() {
+ private EclipseLinkOrmXml2_2UiDefinition() {
super();
}
@Override
- protected OrmXmlUiFactory buildOrmXmlUiFactory() {
- return new EclipseLinkOrmXml2_1UiFactory();
- }
-
public boolean providesUi(JptResourceType resourceType) {
return resourceType.equals(JptJpaEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_2_2_RESOURCE_TYPE);
}
-
- public JpaStructureProvider getStructureProvider() {
- return EclipseLinkOrmResourceModelStructureProvider.instance();
- }
-
- @Override
- protected void addOrmAttributeMappingUiDefinitionsTo(List<OrmAttributeMappingUiDefinition<? extends AttributeMapping>> definitions) {
- definitions.add(OrmIdMappingUiDefinition.instance());
- definitions.add(OrmEmbeddedIdMappingUiDefinition.instance());
- definitions.add(OrmBasicMappingUiDefinition.instance());
- definitions.add(OrmVersionMappingUiDefinition.instance());
- definitions.add(OrmManyToOneMappingUiDefinition.instance());
- definitions.add(OrmOneToManyMappingUiDefinition.instance());
- definitions.add(OrmOneToOneMappingUiDefinition.instance());
- definitions.add(OrmManyToManyMappingUiDefinition.instance());
- definitions.add(OrmEmbeddedMappingUiDefinition.instance());
- definitions.add(OrmTransientMappingUiDefinition.instance());
-
- definitions.add(OrmEclipseLinkBasicCollectionMappingUiDefinition.instance());
- definitions.add(OrmEclipseLinkBasicMapMappingUiDefinition.instance());
- definitions.add(OrmEclipseLinkVariableOneToOneMappingUiDefinition.instance());
- definitions.add(OrmEclipseLinkTransformationMappingUiDefinition.instance());
-
- definitions.add(OrmElementCollectionMapping2_0UiDefinition.instance());
- }
-
- @Override
- protected void addOrmTypeMappingUiDefinitionsTo(List<OrmTypeMappingUiDefinition<? extends TypeMapping>> definitions) {
- definitions.add(OrmEntityUiDefinition.instance());
- definitions.add(OrmEclipseLinkMappedSuperclass2_1UiDefinition.instance());
- definitions.add(OrmEmbeddableUiDefinition.instance());
- }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_3UiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_3UiDefinition.java
index 750582b888..53d212bb9a 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_3UiDefinition.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_3UiDefinition.java
@@ -12,31 +12,36 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm;
import org.eclipse.jpt.common.core.JptResourceType;
import org.eclipse.jpt.jpa.eclipselink.core.JptJpaEclipseLinkCorePlugin;
import org.eclipse.jpt.jpa.ui.ResourceUiDefinition;
+import org.eclipse.jpt.jpa.ui.details.orm.OrmXmlUiFactory;
public class EclipseLinkOrmXml2_3UiDefinition
- extends EclipseLinkOrmXml2_2UiDefinition {
+ extends EclipseLinkOrmXml2_1UiDefinition {
// singleton
private static final ResourceUiDefinition INSTANCE = new EclipseLinkOrmXml2_3UiDefinition();
-
-
+
+
/**
* Return the singleton
*/
public static ResourceUiDefinition instance() {
return INSTANCE;
}
-
-
+
+
/**
* Enforce singleton usage
*/
private EclipseLinkOrmXml2_3UiDefinition() {
super();
}
-
-
+
+ @Override
+ protected OrmXmlUiFactory buildOrmXmlUiFactory() {
+ return new EclipseLinkOrmXml2_3UiFactory();
+ }
+
@Override
public boolean providesUi(JptResourceType resourceType) {
return resourceType.equals(JptJpaEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_2_3_RESOURCE_TYPE);
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_3UiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_3UiFactory.java
new file mode 100644
index 0000000000..fe0ce5fc9a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_3UiFactory.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.eclipselink.ui.internal.details.orm;
+
+import org.eclipse.jpt.common.ui.WidgetFactory;
+import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.jpa.core.context.orm.OrmEntity;
+import org.eclipse.jpt.jpa.core.context.orm.OrmMappedSuperclass;
+import org.eclipse.jpt.jpa.ui.details.JpaComposite;
+import org.eclipse.swt.widgets.Composite;
+
+public class EclipseLinkOrmXml2_3UiFactory
+ extends EclipseLinkOrmXml2_0UiFactory
+{
+ @Override
+ public JpaComposite createOrmEntityComposite(
+ PropertyValueModel<OrmEntity> subjectHolder,
+ Composite parent,
+ WidgetFactory widgetFactory) {
+ return new OrmEclipseLinkEntity2_3Composite(subjectHolder, parent, widgetFactory);
+ }
+
+ @Override
+ public JpaComposite createOrmMappedSuperclassComposite(
+ PropertyValueModel<OrmMappedSuperclass> subjectHolder,
+ Composite parent,
+ WidgetFactory widgetFactory) {
+ return new OrmEclipseLinkMappedSuperclass2_3Composite(subjectHolder, parent, widgetFactory);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_4UiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_4UiDefinition.java
index afa224f5ec..72e191efb0 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_4UiDefinition.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_4UiDefinition.java
@@ -12,10 +12,11 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm;
import org.eclipse.jpt.common.core.JptResourceType;
import org.eclipse.jpt.jpa.eclipselink.core.JptJpaEclipseLinkCorePlugin;
import org.eclipse.jpt.jpa.ui.ResourceUiDefinition;
+import org.eclipse.jpt.jpa.ui.details.orm.OrmXmlUiFactory;
public class EclipseLinkOrmXml2_4UiDefinition
- extends EclipseLinkOrmXml2_2UiDefinition {
+ extends EclipseLinkOrmXml2_1UiDefinition {
// singleton
private static final ResourceUiDefinition INSTANCE = new EclipseLinkOrmXml2_4UiDefinition();
@@ -36,6 +37,10 @@ public class EclipseLinkOrmXml2_4UiDefinition
super();
}
+ @Override
+ protected OrmXmlUiFactory buildOrmXmlUiFactory() {
+ return new EclipseLinkOrmXml2_3UiFactory();
+ }
@Override
public boolean providesUi(JptResourceType resourceType) {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEntity2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEntity2_0Composite.java
index ab5dbf0bb1..280bd08ab1 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEntity2_0Composite.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEntity2_0Composite.java
@@ -12,16 +12,10 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm;
import org.eclipse.jpt.common.ui.WidgetFactory;
import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
-import org.eclipse.jpt.jpa.core.context.GeneratorContainer;
-import org.eclipse.jpt.jpa.core.context.QueryContainer;
import org.eclipse.jpt.jpa.core.context.orm.OrmEntity;
-import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkCaching;
-import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Entity2_0OverridesComposite;
-import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Generation2_0Composite;
-import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Queries2_0Composite;
import org.eclipse.swt.widgets.Composite;
-public class OrmEclipseLinkEntity2_0Composite extends AbstractOrmEclipseLinkEntityComposite
+public class OrmEclipseLinkEntity2_0Composite extends AbstractOrmEclipseLinkEntity2_xComposite
{
public OrmEclipseLinkEntity2_0Composite(
PropertyValueModel<? extends OrmEntity> subjectHolder,
@@ -29,24 +23,4 @@ public class OrmEclipseLinkEntity2_0Composite extends AbstractOrmEclipseLinkEnti
super(subjectHolder, parent, widgetFactory);
}
- @Override
- protected void initializeAttributeOverridesSection(Composite container) {
- new Entity2_0OverridesComposite(this, container);
- }
-
- @Override
- protected void initializeGeneratorsSection(Composite container, PropertyValueModel<GeneratorContainer> generatorContainerHolder) {
- new Generation2_0Composite(this, generatorContainerHolder, container);
- }
-
- @Override
- protected void initializeCachingSection(Composite container, PropertyValueModel<OrmEclipseLinkCaching> cachingHolder) {
- new OrmEclipseLinkCaching2_0Composite(this, cachingHolder, container);
- }
-
- @Override
- protected void initializeQueriesSection(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) {
- new Queries2_0Composite(this, queryContainerHolder, container);
- }
-
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEntity2_3Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEntity2_3Composite.java
new file mode 100644
index 0000000000..f2195a2840
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEntity2_3Composite.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.eclipselink.ui.internal.details.orm;
+
+import org.eclipse.jpt.common.ui.WidgetFactory;
+import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter;
+import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.jpa.core.context.orm.OrmEntity;
+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkEntity;
+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkMultitenancy2_3;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMultitenancyComposite;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages;
+import org.eclipse.swt.widgets.Composite;
+
+public class OrmEclipseLinkEntity2_3Composite extends AbstractOrmEclipseLinkEntity2_xComposite
+{
+ public OrmEclipseLinkEntity2_3Composite(
+ PropertyValueModel<? extends OrmEntity> subjectHolder,
+ Composite parent, WidgetFactory widgetFactory) {
+ super(subjectHolder, parent, widgetFactory);
+ }
+
+ @Override
+ protected void initializeLayout(Composite container) {
+ this.initializeEntityCollapsibleSection(container);
+ this.initializeCachingCollapsibleSectionPane(container);
+ this.initializeQueriesCollapsibleSection(container);
+ this.initializeInheritanceCollapsibleSection(container);
+ this.initializeAttributeOverridesCollapsibleSection(container);
+ this.initializeMultitenancyCollapsibleSectionPane(container);
+ this.initializeGeneratorsCollapsibleSection(container);
+ this.initializeConvertersCollapsibleSection(container);
+ this.initializeSecondaryTablesCollapsibleSection(container);
+ this.initializeAdvancedCollapsibleSection(container);
+ }
+
+ protected void initializeMultitenancyCollapsibleSectionPane(Composite container) {
+ container = addCollapsibleSection(
+ container,
+ EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_multitenancy);
+ initializeMultitenancySection(container, buildMultitenancyHolder());
+ }
+
+ protected void initializeMultitenancySection(Composite container, PropertyValueModel<OrmEclipseLinkMultitenancy2_3> multitenancyHolder) {
+ new EclipseLinkMultitenancyComposite(this, multitenancyHolder, container);
+ }
+
+ private PropertyAspectAdapter<OrmEntity, OrmEclipseLinkMultitenancy2_3> buildMultitenancyHolder() {
+ return new PropertyAspectAdapter<OrmEntity, OrmEclipseLinkMultitenancy2_3>(getSubjectHolder()) {
+ @Override
+ protected OrmEclipseLinkMultitenancy2_3 buildValue_() {
+ return ((OrmEclipseLinkEntity) this.subject).getMultitenancy();
+ }
+ };
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_1Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_1Composite.java
index 0b58d22e92..858af0c74e 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_1Composite.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_1Composite.java
@@ -24,9 +24,9 @@ public class OrmEclipseLinkMappedSuperclass2_1Composite
extends AbstractOrmEclipseLinkMappedSuperclassComposite {
public OrmEclipseLinkMappedSuperclass2_1Composite(
- PropertyValueModel<? extends OrmEclipseLinkMappedSuperclass> subjectHolder,
+ PropertyValueModel<? extends OrmMappedSuperclass> subjectHolder,
Composite parent, WidgetFactory widgetFactory) {
-
+
super(subjectHolder, parent, widgetFactory);
}
@@ -38,7 +38,7 @@ public class OrmEclipseLinkMappedSuperclass2_1Composite
this.initializeConvertersCollapsibleSection(container);
this.initializeAdvancedCollapsibleSection(container);
}
-
+
@Override
protected void initializeCachingSection(Composite container, PropertyValueModel<OrmEclipseLinkCaching> cachingHolder) {
new OrmEclipseLinkCaching2_0Composite(this, cachingHolder, container);
@@ -55,7 +55,7 @@ public class OrmEclipseLinkMappedSuperclass2_1Composite
protected void initializeQueriesSection(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) {
new QueriesComposite(this, queryContainerHolder, container);
}
-
+
private PropertyValueModel<QueryContainer> buildQueryContainerHolder() {
return new PropertyAspectAdapter<OrmMappedSuperclass, QueryContainer>(
getSubjectHolder()) {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_1UiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_1UiDefinition.java
deleted file mode 100644
index 13f132f89c..0000000000
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_1UiDefinition.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm;
-
-import org.eclipse.jpt.common.ui.WidgetFactory;
-import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
-import org.eclipse.jpt.jpa.core.context.PersistentType;
-import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkMappedSuperclass;
-import org.eclipse.jpt.jpa.ui.details.JpaComposite;
-import org.eclipse.jpt.jpa.ui.details.orm.OrmTypeMappingUiDefinition;
-import org.eclipse.jpt.jpa.ui.details.orm.OrmXmlUiFactory;
-import org.eclipse.jpt.jpa.ui.internal.details.AbstractMappedSuperclassUiDefinition;
-import org.eclipse.swt.widgets.Composite;
-
-public class OrmEclipseLinkMappedSuperclass2_1UiDefinition extends
- AbstractMappedSuperclassUiDefinition<PersistentType, OrmEclipseLinkMappedSuperclass> implements
- OrmTypeMappingUiDefinition<OrmEclipseLinkMappedSuperclass> {
-
- // singleton
- private static final OrmEclipseLinkMappedSuperclass2_1UiDefinition INSTANCE =
- new OrmEclipseLinkMappedSuperclass2_1UiDefinition();
-
-
- /**
- * Return the singleton.
- */
- public static OrmTypeMappingUiDefinition<OrmEclipseLinkMappedSuperclass> instance() {
- return INSTANCE;
- }
-
-
- /**
- * Ensure single instance.
- */
- private OrmEclipseLinkMappedSuperclass2_1UiDefinition() {
- super();
- }
-
-
- public JpaComposite buildTypeMappingComposite(
- OrmXmlUiFactory factory,
- PropertyValueModel<OrmEclipseLinkMappedSuperclass> subjectHolder,
- Composite parent,
- WidgetFactory widgetFactory) {
-
- return ((EclipseLinkOrmXml2_1UiFactory)factory).
- createOrmEclipseLinkMappedSuperclass2_1Composite(subjectHolder, parent, widgetFactory);
- }
-}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_3Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_3Composite.java
new file mode 100644
index 0000000000..da19c373fc
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_3Composite.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.eclipselink.ui.internal.details.orm;
+
+import org.eclipse.jpt.common.ui.WidgetFactory;
+import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter;
+import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.jpa.core.context.QueryContainer;
+import org.eclipse.jpt.jpa.core.context.orm.OrmMappedSuperclass;
+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkCaching;
+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkMappedSuperclass;
+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkMultitenancy2_3;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMultitenancyComposite;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages;
+import org.eclipse.jpt.jpa.ui.internal.details.QueriesComposite;
+import org.eclipse.swt.widgets.Composite;
+
+public class OrmEclipseLinkMappedSuperclass2_3Composite
+ extends AbstractOrmEclipseLinkMappedSuperclassComposite {
+
+ public OrmEclipseLinkMappedSuperclass2_3Composite(
+ PropertyValueModel<? extends OrmMappedSuperclass> subjectHolder,
+ Composite parent, WidgetFactory widgetFactory) {
+
+ super(subjectHolder, parent, widgetFactory);
+ }
+
+ @Override
+ protected void initializeLayout(Composite container) {
+ this.initializeMappedSuperclassCollapsibleSection(container);
+ this.initializeCachingCollapsibleSection(container);
+ this.initializeQueriesCollapsibleSection(container);
+ this.initializeMultitenancyCollapsibleSection(container);
+ this.initializeConvertersCollapsibleSection(container);
+ this.initializeAdvancedCollapsibleSection(container);
+ }
+
+ @Override
+ protected void initializeCachingSection(Composite container, PropertyValueModel<OrmEclipseLinkCaching> cachingHolder) {
+ new OrmEclipseLinkCaching2_0Composite(this, cachingHolder, container);
+ }
+
+ protected void initializeQueriesCollapsibleSection(Composite container) {
+ container = addCollapsibleSection(
+ container,
+ EclipseLinkUiDetailsMessages.EclipseLinkMappedSuperclassComposite_queries);
+ this.initializeQueriesSection(container, buildQueryContainerHolder());
+
+ }
+
+ protected void initializeQueriesSection(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) {
+ new QueriesComposite(this, queryContainerHolder, container);
+ }
+
+ private PropertyValueModel<QueryContainer> buildQueryContainerHolder() {
+ return new PropertyAspectAdapter<OrmMappedSuperclass, QueryContainer>(
+ getSubjectHolder()) {
+ @Override
+ protected QueryContainer buildValue_() {
+ return ((OrmEclipseLinkMappedSuperclass) this.subject).getQueryContainer();
+ }
+ };
+ }
+
+ protected void initializeMultitenancyCollapsibleSection(Composite container) {
+ container = addCollapsibleSection(
+ container,
+ EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_multitenancy);
+ this.initializeMultitenancySection(container, buildMultitenancyHolder());
+ }
+
+ protected void initializeMultitenancySection(Composite container, PropertyValueModel<OrmEclipseLinkMultitenancy2_3> multitenancyHolder) {
+ new EclipseLinkMultitenancyComposite(this, multitenancyHolder, container);
+ }
+
+ private PropertyAspectAdapter<OrmMappedSuperclass, OrmEclipseLinkMultitenancy2_3> buildMultitenancyHolder() {
+ return new PropertyAspectAdapter<OrmMappedSuperclass, OrmEclipseLinkMultitenancy2_3>(getSubjectHolder()) {
+ @Override
+ protected OrmEclipseLinkMultitenancy2_3 buildValue_() {
+ return ((OrmEclipseLinkMappedSuperclass) this.subject).getMultitenancy();
+ }
+ };
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/platform/EclipseLink2_3JpaPlatformUiProvider.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/platform/EclipseLink2_3JpaPlatformUiProvider.java
index f289fec85c..f875175ff0 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/platform/EclipseLink2_3JpaPlatformUiProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/platform/EclipseLink2_3JpaPlatformUiProvider.java
@@ -10,8 +10,9 @@
package org.eclipse.jpt.jpa.eclipselink.ui.internal.platform;
import java.util.List;
-import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.java.EclipseLink2_0JavaResourceUiDefinition;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.java.EclipseLink2_3JavaResourceUiDefinition;
import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm.EclipseLinkEntityMappings2_0DetailsProvider;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm.EclipseLinkEntityMappings2_3DetailsProvider;
import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm.EclipseLinkEntityMappingsDetailsProvider;
import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm.EclipseLinkOrmXml1_1UiDefinition;
import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm.EclipseLinkOrmXml1_2UiDefinition;
@@ -71,6 +72,7 @@ public class EclipseLink2_3JpaPlatformUiProvider
providers.add(EntityMappings2_0DetailsProvider.instance());
providers.add(EclipseLinkEntityMappingsDetailsProvider.instance());
providers.add(EclipseLinkEntityMappings2_0DetailsProvider.instance());
+ providers.add(EclipseLinkEntityMappings2_3DetailsProvider.instance());
}
@@ -78,7 +80,7 @@ public class EclipseLink2_3JpaPlatformUiProvider
@Override
protected void addResourceUiDefinitionsTo(List<ResourceUiDefinition> definitions) {
- definitions.add(EclipseLink2_0JavaResourceUiDefinition.instance());
+ definitions.add(EclipseLink2_3JavaResourceUiDefinition.instance());
definitions.add(OrmXmlUiDefinition.instance());
definitions.add(OrmXml2_0UiDefinition.instance());
definitions.add(EclipseLinkOrmXmlUiDefinition.instance());
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/platform/EclipseLink2_4JpaPlatformUiProvider.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/platform/EclipseLink2_4JpaPlatformUiProvider.java
index 8e8139b8e3..f236928ee6 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/platform/EclipseLink2_4JpaPlatformUiProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/platform/EclipseLink2_4JpaPlatformUiProvider.java
@@ -10,8 +10,9 @@
package org.eclipse.jpt.jpa.eclipselink.ui.internal.platform;
import java.util.List;
-import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.java.EclipseLink2_0JavaResourceUiDefinition;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.java.EclipseLink2_3JavaResourceUiDefinition;
import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm.EclipseLinkEntityMappings2_0DetailsProvider;
+import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm.EclipseLinkEntityMappings2_3DetailsProvider;
import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm.EclipseLinkEntityMappingsDetailsProvider;
import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm.EclipseLinkOrmXml1_1UiDefinition;
import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm.EclipseLinkOrmXml1_2UiDefinition;
@@ -72,6 +73,7 @@ public class EclipseLink2_4JpaPlatformUiProvider
providers.add(EntityMappings2_0DetailsProvider.instance());
providers.add(EclipseLinkEntityMappingsDetailsProvider.instance());
providers.add(EclipseLinkEntityMappings2_0DetailsProvider.instance());
+ providers.add(EclipseLinkEntityMappings2_3DetailsProvider.instance());
}
@@ -79,7 +81,7 @@ public class EclipseLink2_4JpaPlatformUiProvider
@Override
protected void addResourceUiDefinitionsTo(List<ResourceUiDefinition> definitions) {
- definitions.add(EclipseLink2_0JavaResourceUiDefinition.instance());
+ definitions.add(EclipseLink2_3JavaResourceUiDefinition.instance());
definitions.add(OrmXmlUiDefinition.instance());
definitions.add(OrmXml2_0UiDefinition.instance());
definitions.add(EclipseLinkOrmXmlUiDefinition.instance());
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/PersistenceUnitMetadataComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/PersistenceUnitMetadataComposite.java
index cd52166754..dfd2d2ca4b 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/PersistenceUnitMetadataComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/PersistenceUnitMetadataComposite.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2006, 2011 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.
@@ -65,6 +65,8 @@ import org.eclipse.swt.widgets.Composite;
*/
public class PersistenceUnitMetadataComposite extends Pane<OrmPersistenceUnitMetadata>
{
+ PropertyValueModel<OrmPersistenceUnitDefaults> persistenceUnitDefaultsHolder;
+
/**
* Creates a new <code>PersistenceUnitMetadataComposite</code>.
*
@@ -79,9 +81,19 @@ public class PersistenceUnitMetadataComposite extends Pane<OrmPersistenceUnitMet
super(parentPane, subjectHolder, parent, false);
}
- private EnumFormComboViewer<OrmPersistenceUnitDefaults, AccessType> addAccessTypeCombo(Composite container) {
+ @Override
+ protected void initialize() {
+ super.initialize();
+ this.persistenceUnitDefaultsHolder = this.buildPersistenceUnitDefaultsHolder();
+ }
+
+ protected PropertyValueModel<OrmPersistenceUnitDefaults> getPersistenceUnitDefaultsHolder() {
+ return this.persistenceUnitDefaultsHolder;
+ }
+
+ protected EnumFormComboViewer<OrmPersistenceUnitDefaults, AccessType> addAccessTypeCombo(Composite container) {
- return new EnumFormComboViewer<OrmPersistenceUnitDefaults, AccessType>(this, buildPersistenceUnitDefaultsHolder(), container) {
+ return new EnumFormComboViewer<OrmPersistenceUnitDefaults, AccessType>(this, getPersistenceUnitDefaultsHolder(), container) {
@Override
protected void addPropertyNames(Collection<String> propertyNames) {
@@ -103,7 +115,7 @@ public class PersistenceUnitMetadataComposite extends Pane<OrmPersistenceUnitMet
protected String displayString(AccessType value) {
return buildDisplayString(
JptUiDetailsOrmMessages.class,
- PersistenceUnitMetadataComposite.this,
+ PersistenceUnitMetadataComposite.class,
value
);
}
@@ -120,8 +132,8 @@ public class PersistenceUnitMetadataComposite extends Pane<OrmPersistenceUnitMet
};
}
- private WritablePropertyValueModel<Boolean> buildCascadePersistHolder() {
- return new PropertyAspectAdapter<OrmPersistenceUnitDefaults, Boolean>(buildPersistenceUnitDefaultsHolder(), OrmPersistenceUnitDefaults.CASCADE_PERSIST_PROPERTY) {
+ protected WritablePropertyValueModel<Boolean> buildCascadePersistHolder() {
+ return new PropertyAspectAdapter<OrmPersistenceUnitDefaults, Boolean>(getPersistenceUnitDefaultsHolder(), OrmPersistenceUnitDefaults.CASCADE_PERSIST_PROPERTY) {
@Override
protected Boolean buildValue_() {
return Boolean.valueOf(this.subject.isCascadePersist());
@@ -134,9 +146,9 @@ public class PersistenceUnitMetadataComposite extends Pane<OrmPersistenceUnitMet
};
}
- private CatalogCombo<OrmPersistenceUnitDefaults> addCatalogCombo(Composite container) {
+ protected CatalogCombo<OrmPersistenceUnitDefaults> addCatalogCombo(Composite container) {
- return new CatalogCombo<OrmPersistenceUnitDefaults>(this, buildPersistenceUnitDefaultsHolder(), container) {
+ return new CatalogCombo<OrmPersistenceUnitDefaults>(this, getPersistenceUnitDefaultsHolder(), container) {
@Override
protected void addPropertyNames(Collection<String> propertyNames) {
@@ -171,9 +183,9 @@ public class PersistenceUnitMetadataComposite extends Pane<OrmPersistenceUnitMet
};
}
- private SchemaCombo<OrmPersistenceUnitDefaults> addSchemaCombo(Composite container) {
+ protected SchemaCombo<OrmPersistenceUnitDefaults> addSchemaCombo(Composite container) {
- return new SchemaCombo<OrmPersistenceUnitDefaults>(this, buildPersistenceUnitDefaultsHolder(), container) {
+ return new SchemaCombo<OrmPersistenceUnitDefaults>(this, getPersistenceUnitDefaultsHolder(), container) {
@Override
protected void addPropertyNames(Collection<String> propertyNames) {
@@ -205,7 +217,7 @@ public class PersistenceUnitMetadataComposite extends Pane<OrmPersistenceUnitMet
};
}
- private WritablePropertyValueModel<Boolean> buildXmlMappingMetadataCompleteHolder() {
+ protected WritablePropertyValueModel<Boolean> buildXmlMappingMetadataCompleteHolder() {
return new PropertyAspectAdapter<OrmPersistenceUnitMetadata, Boolean>(getSubjectHolder(), OrmPersistenceUnitMetadata.XML_MAPPING_METADATA_COMPLETE_PROPERTY) {
@Override
protected Boolean buildValue_() {
@@ -219,8 +231,8 @@ public class PersistenceUnitMetadataComposite extends Pane<OrmPersistenceUnitMet
};
}
- private WritablePropertyValueModel<Boolean> buildDelimitedIdentifiersHolder() {
- return new PropertyAspectAdapter<OrmPersistenceUnitDefaults, Boolean>(buildPersistenceUnitDefaultsHolder(), OrmPersistenceUnitDefaults2_0.DELIMITED_IDENTIFIERS_PROPERTY) {
+ protected WritablePropertyValueModel<Boolean> buildDelimitedIdentifiersHolder() {
+ return new PropertyAspectAdapter<OrmPersistenceUnitDefaults, Boolean>(getPersistenceUnitDefaultsHolder(), OrmPersistenceUnitDefaults2_0.DELIMITED_IDENTIFIERS_PROPERTY) {
@Override
protected Boolean buildValue_() {
return Boolean.valueOf(this.buildBooleanValue_());
diff --git a/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/context/java/EclipseLink2_3JavaMultitenancyTests.java b/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/context/java/EclipseLink2_3JavaMultitenancyTests.java
index 99b0879243..24c8908fd9 100644
--- a/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/context/java/EclipseLink2_3JavaMultitenancyTests.java
+++ b/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/context/java/EclipseLink2_3JavaMultitenancyTests.java
@@ -27,7 +27,7 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkEntity;
import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkMultitenancy2_3;
import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaTenantDiscriminatorColumn2_3;
import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkEntityMappings;
-import org.eclipse.jpt.jpa.eclipselink.core.internal.context.orm.OrmEclipseLinkPersistenceUnitDefaults;
+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkPersistenceUnitDefaults;
import org.eclipse.jpt.jpa.eclipselink.core.resource.java.EclipseLink;
import org.eclipse.jpt.jpa.eclipselink.core.resource.java.EclipseLinkMultitenantAnnotation2_3;
import org.eclipse.jpt.jpa.eclipselink.core.resource.java.EclipseLinkTenantDiscriminatorColumnAnnotation2_3;
@@ -526,7 +526,7 @@ public class EclipseLink2_3JavaMultitenancyTests extends EclipseLink2_3ContextMo
assertFalse(multitenancy.isSpecifiedMultitenant());
assertEquals(0, multitenancy.getTenantDiscriminatorColumnsSize());
- OrmEclipseLinkPersistenceUnitDefaults persistenceUnitDefaults = (OrmEclipseLinkPersistenceUnitDefaults) getMappingFile().getRoot().getPersistenceUnitMetadata().getPersistenceUnitDefaults();
+ EclipseLinkPersistenceUnitDefaults persistenceUnitDefaults = (EclipseLinkPersistenceUnitDefaults) getMappingFile().getRoot().getPersistenceUnitMetadata().getPersistenceUnitDefaults();
persistenceUnitDefaults.addTenantDiscriminatorColumn().setSpecifiedName("PU_TENANT_ID");
assertFalse(multitenancy.isMultitenant()); //not multitenant since inheritance strategy is table per class
assertFalse(multitenancy.isSpecifiedMultitenant());
@@ -551,7 +551,7 @@ public class EclipseLink2_3JavaMultitenancyTests extends EclipseLink2_3ContextMo
createTestEntity();
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME);
- OrmEclipseLinkPersistenceUnitDefaults persistenceUnitDefaults = (OrmEclipseLinkPersistenceUnitDefaults) getMappingFile().getRoot().getPersistenceUnitMetadata().getPersistenceUnitDefaults();
+ EclipseLinkPersistenceUnitDefaults persistenceUnitDefaults = (EclipseLinkPersistenceUnitDefaults) getMappingFile().getRoot().getPersistenceUnitMetadata().getPersistenceUnitDefaults();
persistenceUnitDefaults.addTenantDiscriminatorColumn().setSpecifiedName("PU_TENANT_ID");
JavaEclipseLinkMultitenancy2_3 multitenancy = getJavaMultitenancy();
@@ -609,7 +609,7 @@ public class EclipseLink2_3JavaMultitenancyTests extends EclipseLink2_3ContextMo
assertEquals(0, multitenancy.getTenantDiscriminatorColumnsSize());
- OrmEclipseLinkPersistenceUnitDefaults persistenceUnitDefaults = (OrmEclipseLinkPersistenceUnitDefaults) getMappingFile().getRoot().getPersistenceUnitMetadata().getPersistenceUnitDefaults();
+ EclipseLinkPersistenceUnitDefaults persistenceUnitDefaults = (EclipseLinkPersistenceUnitDefaults) getMappingFile().getRoot().getPersistenceUnitMetadata().getPersistenceUnitDefaults();
persistenceUnitDefaults.addTenantDiscriminatorColumn().setSpecifiedName("PU_TENANT_ID");
multitenancy.setSpecifiedType(EclipseLinkMultitenantType2_3.SINGLE_TABLE);
diff --git a/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/context/orm/EclipseLink2_3OrmMultitenancyTests.java b/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/context/orm/EclipseLink2_3OrmMultitenancyTests.java
index 67bc93f53d..63d91583eb 100644
--- a/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/context/orm/EclipseLink2_3OrmMultitenancyTests.java
+++ b/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/context/orm/EclipseLink2_3OrmMultitenancyTests.java
@@ -22,11 +22,11 @@ import org.eclipse.jpt.jpa.core.resource.java.JPA;
import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkEntity;
import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkMultitenantType2_3;
import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkEntityMappings;
+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkPersistenceUnitDefaults;
import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkEntity;
import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkMappedSuperclass;
import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkMultitenancy2_3;
import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmTenantDiscriminatorColumn2_3;
-import org.eclipse.jpt.jpa.eclipselink.core.internal.context.orm.OrmEclipseLinkPersistenceUnitDefaults;
import org.eclipse.jpt.jpa.eclipselink.core.resource.java.EclipseLink;
import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.EclipseLinkOrmFactory;
import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.XmlMultitenant;
@@ -429,7 +429,7 @@ public class EclipseLink2_3OrmMultitenancyTests
assertFalse(multitenancy.isSpecifiedMultitenant());
assertEquals(0, multitenancy.getTenantDiscriminatorColumnsSize());
- OrmEclipseLinkPersistenceUnitDefaults persistenceUnitDefaults = (OrmEclipseLinkPersistenceUnitDefaults) getMappingFile().getRoot().getPersistenceUnitMetadata().getPersistenceUnitDefaults();
+ EclipseLinkPersistenceUnitDefaults persistenceUnitDefaults = (EclipseLinkPersistenceUnitDefaults) getMappingFile().getRoot().getPersistenceUnitMetadata().getPersistenceUnitDefaults();
persistenceUnitDefaults.addTenantDiscriminatorColumn().setSpecifiedName("PU_TENANT_ID");
assertFalse(multitenancy.isMultitenant()); //not multitenant since inheritance strategy is table per class
assertFalse(multitenancy.isSpecifiedMultitenant());
@@ -454,7 +454,7 @@ public class EclipseLink2_3OrmMultitenancyTests
createTestEntity();
OrmPersistentType ormPersistentType = getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME);
- OrmEclipseLinkPersistenceUnitDefaults persistenceUnitDefaults = (OrmEclipseLinkPersistenceUnitDefaults) getMappingFile().getRoot().getPersistenceUnitMetadata().getPersistenceUnitDefaults();
+ EclipseLinkPersistenceUnitDefaults persistenceUnitDefaults = (EclipseLinkPersistenceUnitDefaults) getMappingFile().getRoot().getPersistenceUnitMetadata().getPersistenceUnitDefaults();
persistenceUnitDefaults.addTenantDiscriminatorColumn().setSpecifiedName("PU_TENANT_ID");
OrmEclipseLinkMultitenancy2_3 multitenancy = ((OrmEclipseLinkEntity) ormPersistentType.getMapping()).getMultitenancy();
@@ -504,7 +504,7 @@ public class EclipseLink2_3OrmMultitenancyTests
assertEquals(0, multitenancy.getTenantDiscriminatorColumnsSize());
- OrmEclipseLinkPersistenceUnitDefaults persistenceUnitDefaults = (OrmEclipseLinkPersistenceUnitDefaults) getMappingFile().getRoot().getPersistenceUnitMetadata().getPersistenceUnitDefaults();
+ EclipseLinkPersistenceUnitDefaults persistenceUnitDefaults = (EclipseLinkPersistenceUnitDefaults) getMappingFile().getRoot().getPersistenceUnitMetadata().getPersistenceUnitDefaults();
persistenceUnitDefaults.addTenantDiscriminatorColumn().setSpecifiedName("PU_TENANT_ID");
multitenancy.setSpecifiedType(EclipseLinkMultitenantType2_3.SINGLE_TABLE);

Back to the top