diff options
author | kmoore | 2011-10-21 18:24:03 +0000 |
---|---|---|
committer | kmoore | 2011-10-21 18:24:03 +0000 |
commit | e7b7d664b69a4187e1376d9c629f0d5bf21c61da (patch) | |
tree | d895994591a7347f870df0db9daefd6298f7f506 /jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal | |
parent | a195430b46e4634fa41e65c8a782b4ec5445061b (diff) | |
download | webtools.dali-e7b7d664b69a4187e1376d9c629f0d5bf21c61da.tar.gz webtools.dali-e7b7d664b69a4187e1376d9c629f0d5bf21c61da.tar.xz webtools.dali-e7b7d664b69a4187e1376d9c629f0d5bf21c61da.zip |
360594 - EclipseLink multitenancy UI
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal')
7 files changed, 54 insertions, 21 deletions
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 |