diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1')
15 files changed, 449 insertions, 16 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/AbstractOverrideValidator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/AbstractOverrideValidator.java new file mode 100644 index 0000000000..5865a35b00 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/AbstractOverrideValidator.java @@ -0,0 +1,154 @@ +/******************************************************************************* + * Copyright (c) 2010 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.core.internal.jpa1.context; + +import java.util.List; +import org.eclipse.jpt.core.context.BaseOverride; +import org.eclipse.jpt.core.context.PersistentAttribute; +import org.eclipse.jpt.core.internal.context.JptValidator; +import org.eclipse.jpt.core.internal.context.OverrideTextRangeResolver; +import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; +import org.eclipse.jpt.utility.internal.CollectionTools; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; +import org.eclipse.wst.validation.internal.provisional.core.IReporter; + +public abstract class AbstractOverrideValidator + implements JptValidator +{ + + protected final PersistentAttribute persistentAttribute; + + protected final BaseOverride override; + + protected final BaseOverride.Owner owner; + + protected final OverrideTextRangeResolver textRangeResolver; + + protected final OverrideDescriptionProvider overrideDescriptionProvider; + + protected AbstractOverrideValidator( + BaseOverride override, + BaseOverride.Owner owner, + OverrideTextRangeResolver textRangeResolver, + OverrideDescriptionProvider overrideDescriptionProvider) { + this(null, override, owner, textRangeResolver, overrideDescriptionProvider); + } + + + protected AbstractOverrideValidator( + PersistentAttribute persistentAttribute, + BaseOverride override, + BaseOverride.Owner owner, + OverrideTextRangeResolver textRangeResolver, + OverrideDescriptionProvider overrideDescriptionProvider) { + this.persistentAttribute = persistentAttribute; + this.override = override; + this.owner = owner; + this.textRangeResolver = textRangeResolver; + this.overrideDescriptionProvider = overrideDescriptionProvider; + } + + protected BaseOverride getOverride() { + return this.override; + } + + protected BaseOverride.Owner getOwner() { + return this.owner; + } + + protected OverrideTextRangeResolver getTextRangeResolver() { + return this.textRangeResolver; + } + + protected boolean isPersistentAttributeVirtual() { + return this.persistentAttribute != null && this.persistentAttribute.isVirtual(); + } + + protected String getPersistentAttributeName() { + return this.persistentAttribute.getName(); + } + + protected String getOverrideDescriptionMessage() { + return this.overrideDescriptionProvider.getOverrideDescriptionMessage(); + } + + public boolean validate(List<IMessage> messages, IReporter reporter) { + return this.validateName(messages); + } + + protected boolean validateName(List<IMessage> messages) { + if (!CollectionTools.contains(this.getOwner().allOverridableAttributeNames(), this.getOverride().getName())) { + messages.add(this.buildUnresolvedNameMessage()); + return false; + } + return true; + } + + protected IMessage buildUnresolvedNameMessage() { + if (this.override.isVirtual()) { + return this.buildVirtualUnresolvedNameMessage(); + } + if (isPersistentAttributeVirtual()) { + return this.buildVirtualAttributeUnresolvedNameMessage(); + } + return this.buildUnresolvedNameMessage(this.getUnresolvedNameMessage()); + } + + protected IMessage buildVirtualUnresolvedNameMessage() { + return DefaultJpaValidationMessages.buildMessage( + IMessage.HIGH_SEVERITY, + getVirtualOverrideUnresolvedNameMessage(), + new String[] { + this.getOverride().getName(), + this.getOverrideDescriptionMessage(), + this.getOwner().getOverridableTypeMapping().getName()}, + this.getOverride(), + this.textRangeResolver.getNameTextRange() + ); + } + + protected abstract String getVirtualOverrideUnresolvedNameMessage(); + + protected IMessage buildUnresolvedNameMessage(String message) { + return DefaultJpaValidationMessages.buildMessage( + IMessage.HIGH_SEVERITY, + message, + new String[] { + this.getOverride().getName(), + this.getOverrideDescriptionMessage(), + this.getOwner().getOverridableTypeMapping().getName()}, + this.getOverride(), + this.textRangeResolver.getNameTextRange()); + } + + protected abstract String getUnresolvedNameMessage(); + + protected IMessage buildVirtualAttributeUnresolvedNameMessage() { + return DefaultJpaValidationMessages.buildMessage( + IMessage.HIGH_SEVERITY, + getVirtualAttributeUnresolvedNameMessage(), + new String[] { + this.getPersistentAttributeName(), + this.getOverride().getName(), + this.getOverrideDescriptionMessage(), + this.getOwner().getOverridableTypeMapping().getName()}, + this.getOverride(), + this.textRangeResolver.getNameTextRange()); + } + + protected abstract String getVirtualAttributeUnresolvedNameMessage(); + + + public static interface OverrideDescriptionProvider { + String getOverrideDescriptionMessage(); + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/AssociationOverrideValidator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/AssociationOverrideValidator.java new file mode 100644 index 0000000000..754deebabf --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/AssociationOverrideValidator.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright (c) 2010 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.core.internal.jpa1.context; + +import org.eclipse.jpt.core.context.AssociationOverride; +import org.eclipse.jpt.core.context.PersistentAttribute; +import org.eclipse.jpt.core.internal.context.JptValidator; +import org.eclipse.jpt.core.internal.context.OverrideTextRangeResolver; +import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; + +public class AssociationOverrideValidator + extends AbstractOverrideValidator + implements JptValidator +{ + + public AssociationOverrideValidator( + AssociationOverride override, + AssociationOverride.Owner owner, + OverrideTextRangeResolver textRangeResolver, + OverrideDescriptionProvider overrideDescriptionProvider) { + super(override, owner, textRangeResolver, overrideDescriptionProvider); + } + + public AssociationOverrideValidator( + PersistentAttribute persistentAttribute, + AssociationOverride override, + AssociationOverride.Owner owner, + OverrideTextRangeResolver textRangeResolver, + OverrideDescriptionProvider overrideDescriptionProvider) { + super(persistentAttribute, override, owner, textRangeResolver, overrideDescriptionProvider); + } + + @Override + protected String getVirtualOverrideUnresolvedNameMessage() { + return JpaValidationMessages.VIRTUAL_ASSOCIATION_OVERRIDE_INVALID_NAME; + } + + @Override + protected String getUnresolvedNameMessage() { + return JpaValidationMessages.ASSOCIATION_OVERRIDE_INVALID_NAME; + } + + @Override + protected String getVirtualAttributeUnresolvedNameMessage() { + return JpaValidationMessages.VIRTUAL_ATTRIBUTE_ASSOCIATION_OVERRIDE_INVALID_NAME; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/AttributeOverrideValidator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/AttributeOverrideValidator.java new file mode 100644 index 0000000000..c2a9603b4f --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/AttributeOverrideValidator.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright (c) 2010 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.core.internal.jpa1.context; + +import org.eclipse.jpt.core.context.AttributeOverride; +import org.eclipse.jpt.core.context.PersistentAttribute; +import org.eclipse.jpt.core.internal.context.JptValidator; +import org.eclipse.jpt.core.internal.context.OverrideTextRangeResolver; +import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; + +public class AttributeOverrideValidator + extends AbstractOverrideValidator + implements JptValidator +{ + + public AttributeOverrideValidator( + AttributeOverride override, + AttributeOverride.Owner owner, + OverrideTextRangeResolver textRangeResolver, + OverrideDescriptionProvider overrideDescriptionProvider) { + super(override, owner, textRangeResolver, overrideDescriptionProvider); + } + + public AttributeOverrideValidator( + PersistentAttribute persistentAttribute, + AttributeOverride override, + AttributeOverride.Owner owner, + OverrideTextRangeResolver textRangeResolver, + OverrideDescriptionProvider overrideDescriptionProvider) { + super(persistentAttribute, override, owner, textRangeResolver, overrideDescriptionProvider); + } + + @Override + protected String getVirtualOverrideUnresolvedNameMessage() { + return JpaValidationMessages.VIRTUAL_ATTRIBUTE_OVERRIDE_INVALID_NAME; + } + + @Override + protected String getUnresolvedNameMessage() { + return JpaValidationMessages.ATTRIBUTE_OVERRIDE_INVALID_NAME; + } + + @Override + protected String getVirtualAttributeUnresolvedNameMessage() { + return JpaValidationMessages.VIRTUAL_ATTRIBUTE_ATTRIBUTE_OVERRIDE_INVALID_NAME; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/EmbeddableOverrideDescriptionProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/EmbeddableOverrideDescriptionProvider.java new file mode 100644 index 0000000000..64daca7df4 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/EmbeddableOverrideDescriptionProvider.java @@ -0,0 +1,22 @@ +/******************************************************************************* + * Copyright (c) 2010 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.core.internal.jpa1.context; + +import org.eclipse.jpt.core.internal.jpa1.context.AbstractOverrideValidator.OverrideDescriptionProvider; +import org.eclipse.jpt.core.internal.validation.JpaValidationDescriptionMessages; + +public class EmbeddableOverrideDescriptionProvider implements OverrideDescriptionProvider +{ + public String getOverrideDescriptionMessage() { + return JpaValidationDescriptionMessages.ON_EMBEDDABLE; + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/MapKeyAttributeOverrideValidator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/MapKeyAttributeOverrideValidator.java new file mode 100644 index 0000000000..3324aeb1b0 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/MapKeyAttributeOverrideValidator.java @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright (c) 2010 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.core.internal.jpa1.context; + +import org.eclipse.jpt.core.context.AttributeOverride; +import org.eclipse.jpt.core.context.PersistentAttribute; +import org.eclipse.jpt.core.internal.context.OverrideTextRangeResolver; +import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; + +public class MapKeyAttributeOverrideValidator + extends AttributeOverrideValidator +{ + + public MapKeyAttributeOverrideValidator( + AttributeOverride override, + AttributeOverride.Owner owner, + OverrideTextRangeResolver textRangeResolver, + OverrideDescriptionProvider overrideDescriptionProvider) { + super(override, owner, textRangeResolver, overrideDescriptionProvider); + } + + public MapKeyAttributeOverrideValidator( + PersistentAttribute persistentAttribute, + AttributeOverride override, + AttributeOverride.Owner owner, + OverrideTextRangeResolver textRangeResolver, + OverrideDescriptionProvider overrideDescriptionProvider) { + super(persistentAttribute, override, owner, textRangeResolver, overrideDescriptionProvider); + } + + @Override + protected String getVirtualOverrideUnresolvedNameMessage() { + return JpaValidationMessages.VIRTUAL_MAP_KEY_ATTRIBUTE_OVERRIDE_INVALID_NAME; + } + + @Override + protected String getVirtualAttributeUnresolvedNameMessage() { + return JpaValidationMessages.VIRTUAL_ATTRIBUTE_MAP_KEY_ATTRIBUTE_OVERRIDE_INVALID_NAME; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/MappedSuperclassOverrideDescriptionProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/MappedSuperclassOverrideDescriptionProvider.java new file mode 100644 index 0000000000..aa9a9958d9 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/MappedSuperclassOverrideDescriptionProvider.java @@ -0,0 +1,22 @@ +/******************************************************************************* + * Copyright (c) 2010 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.core.internal.jpa1.context; + +import org.eclipse.jpt.core.internal.jpa1.context.AbstractOverrideValidator.OverrideDescriptionProvider; +import org.eclipse.jpt.core.internal.validation.JpaValidationDescriptionMessages; + +public class MappedSuperclassOverrideDescriptionProvider implements OverrideDescriptionProvider +{ + public String getOverrideDescriptionMessage() { + return JpaValidationDescriptionMessages.ON_MAPPED_SUPERCLASS; + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAssociationOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAssociationOverrideContainer.java index c3054d7e43..5079c6cc81 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAssociationOverrideContainer.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAssociationOverrideContainer.java @@ -30,6 +30,7 @@ import org.eclipse.jpt.core.internal.context.BaseColumnTextRangeResolver; import org.eclipse.jpt.core.internal.context.JoinColumnTextRangeResolver; import org.eclipse.jpt.core.internal.context.JptValidator; import org.eclipse.jpt.core.internal.context.MappingTools; +import org.eclipse.jpt.core.internal.context.OverrideTextRangeResolver; import org.eclipse.jpt.core.internal.context.TableTextRangeResolver; import org.eclipse.jpt.core.internal.context.java.AbstractJavaJpaContextNode; import org.eclipse.jpt.core.resource.java.AssociationOverrideAnnotation; @@ -401,6 +402,10 @@ public class GenericJavaAssociationOverrideContainer extends AbstractJavaJpaCont return getOwner().getTypeMapping(); } + public TypeMapping getOverridableTypeMapping() { + return getOwner().getOverridableTypeMapping(); + } + public Iterator<String> allOverridableAttributeNames() { return GenericJavaAssociationOverrideContainer.this.allOverridableAssociationNames(); } @@ -425,6 +430,10 @@ public class GenericJavaAssociationOverrideContainer extends AbstractJavaJpaCont return getOwner().getDbTable(tableName); } + public JptValidator buildValidator(BaseOverride override, OverrideTextRangeResolver textRangeResolver) { + return getOwner().buildValidator(override, this, textRangeResolver); + } + public JptValidator buildColumnValidator(BaseOverride override, BaseColumn column, BaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) { return getOwner().buildColumnValidator(override, column, owner, textRangeResolver); } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAttributeOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAttributeOverrideContainer.java index 1a90ce0781..a026588c18 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAttributeOverrideContainer.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaAttributeOverrideContainer.java @@ -24,6 +24,7 @@ import org.eclipse.jpt.core.context.java.JavaAttributeOverrideContainer; import org.eclipse.jpt.core.context.java.JavaJpaContextNode; import org.eclipse.jpt.core.internal.context.BaseColumnTextRangeResolver; import org.eclipse.jpt.core.internal.context.JptValidator; +import org.eclipse.jpt.core.internal.context.OverrideTextRangeResolver; import org.eclipse.jpt.core.internal.context.java.AbstractJavaJpaContextNode; import org.eclipse.jpt.core.internal.context.java.VirtualAttributeOverrideAnnotation; import org.eclipse.jpt.core.resource.java.Annotation; @@ -417,6 +418,10 @@ public class GenericJavaAttributeOverrideContainer extends AbstractJavaJpaContex return getOwner().getTypeMapping(); } + public TypeMapping getOverridableTypeMapping() { + return getOwner().getOverridableTypeMapping(); + } + public Iterator<String> allOverridableAttributeNames() { return GenericJavaAttributeOverrideContainer.this.allOverridableAttributeNames(); } @@ -441,6 +446,10 @@ public class GenericJavaAttributeOverrideContainer extends AbstractJavaJpaContex return getOwner().getDbTable(tableName); } + public JptValidator buildValidator(BaseOverride override, OverrideTextRangeResolver textRangeResolver) { + return getOwner().buildValidator(override, this, textRangeResolver); + } + public JptValidator buildColumnValidator(BaseOverride override, BaseColumn column, BaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) { return getOwner().buildColumnValidator(override, column, owner, textRangeResolver); } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaEmbeddedMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaEmbeddedMapping.java index 4f40cffbfe..1d2a6eda06 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaEmbeddedMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/java/GenericJavaEmbeddedMapping.java @@ -30,11 +30,14 @@ import org.eclipse.jpt.core.internal.context.BaseColumnTextRangeResolver; import org.eclipse.jpt.core.internal.context.JoinColumnTextRangeResolver; import org.eclipse.jpt.core.internal.context.JptValidator; import org.eclipse.jpt.core.internal.context.MappingTools; +import org.eclipse.jpt.core.internal.context.OverrideTextRangeResolver; import org.eclipse.jpt.core.internal.context.TableTextRangeResolver; import org.eclipse.jpt.core.internal.context.java.AbstractJavaBaseEmbeddedMapping; import org.eclipse.jpt.core.internal.jpa1.context.AssociationOverrideInverseJoinColumnValidator; import org.eclipse.jpt.core.internal.jpa1.context.AssociationOverrideJoinColumnValidator; import org.eclipse.jpt.core.internal.jpa1.context.AssociationOverrideJoinTableValidator; +import org.eclipse.jpt.core.internal.jpa1.context.AssociationOverrideValidator; +import org.eclipse.jpt.core.internal.jpa1.context.EmbeddableOverrideDescriptionProvider; import org.eclipse.jpt.core.internal.jpa1.context.EntityTableDescriptionProvider; import org.eclipse.jpt.core.internal.jpa1.context.JoinTableTableDescriptionProvider; import org.eclipse.jpt.core.jpa2.JpaFactory2_0; @@ -257,6 +260,10 @@ public class GenericJavaEmbeddedMapping public TextRange getValidationTextRange(CompilationUnit astRoot) { return GenericJavaEmbeddedMapping.this.getValidationTextRange(astRoot); } + + public JptValidator buildValidator(BaseOverride override, BaseOverride.Owner owner, OverrideTextRangeResolver textRangeResolver) { + return new AssociationOverrideValidator((AssociationOverride) override, (AssociationOverride.Owner) owner, textRangeResolver, new EmbeddableOverrideDescriptionProvider()); + } public JptValidator buildColumnValidator(BaseOverride override, BaseColumn column, BaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) { return new AssociationOverrideJoinColumnValidator((AssociationOverride) override, (JoinColumn) column, (JoinColumn.Owner) owner, (JoinColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider()); diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/AbstractOrmOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/AbstractOrmOverride.java index b735003d5e..688e9cffe4 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/AbstractOrmOverride.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/AbstractOrmOverride.java @@ -9,23 +9,31 @@ ******************************************************************************/ package org.eclipse.jpt.core.internal.jpa1.context.orm; +import java.util.List; import org.eclipse.jpt.core.context.BaseOverride; import org.eclipse.jpt.core.context.XmlContextNode; +import org.eclipse.jpt.core.context.orm.OrmOverride; +import org.eclipse.jpt.core.internal.context.JptValidator; +import org.eclipse.jpt.core.internal.context.OverrideTextRangeResolver; import org.eclipse.jpt.core.internal.context.orm.AbstractOrmXmlContextNode; +import org.eclipse.jpt.core.internal.context.orm.OrmOverrideTextRangeResolver; import org.eclipse.jpt.core.resource.orm.XmlOverride; import org.eclipse.jpt.core.utility.TextRange; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; +import org.eclipse.wst.validation.internal.provisional.core.IReporter; -public class AbstractOrmOverride extends AbstractOrmXmlContextNode +public abstract class AbstractOrmOverride extends AbstractOrmXmlContextNode + implements OrmOverride { protected String name; - protected final BaseOverride.Owner owner; + protected final Owner owner; protected XmlOverride resourceOverride; - public AbstractOrmOverride(XmlContextNode parent, BaseOverride.Owner owner, XmlOverride resourceOverride) { + protected AbstractOrmOverride(XmlContextNode parent, Owner owner, XmlOverride resourceOverride) { super(parent); this.owner = owner; this.resourceOverride = resourceOverride; @@ -37,7 +45,7 @@ public class AbstractOrmOverride extends AbstractOrmXmlContextNode return (XmlContextNode) super.getParent(); } - public BaseOverride.Owner getOwner() { + public Owner getOwner() { return this.owner; } @@ -73,12 +81,32 @@ public class AbstractOrmOverride extends AbstractOrmXmlContextNode protected String getResourceName() { return this.resourceOverride.getName(); } + // ********** validation ********** + + @Override + public void validate(List<IMessage> messages, IReporter reporter) { + super.validate(messages, reporter); + this.buildValidator().validate(messages, reporter); + } + + protected JptValidator buildValidator() { + return this.getOwner().buildValidator(this, buildTextRangeResolver()); + } + + protected OverrideTextRangeResolver buildTextRangeResolver() { + return new OrmOverrideTextRangeResolver(this); + } public TextRange getValidationTextRange() { TextRange textRange = this.resourceOverride.getValidationTextRange(); return textRange == null ? getParent().getValidationTextRange() : textRange; } + public TextRange getNameTextRange() { + TextRange textRange = this.resourceOverride.getNameTextRange(); + return (textRange != null) ? textRange : this.getValidationTextRange(); + } + //****************** miscellaneous ******************** diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAssociationOverride.java index df01a97628..95ff473640 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAssociationOverride.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAssociationOverride.java @@ -24,7 +24,7 @@ public class GenericOrmAssociationOverride extends AbstractOrmOverride protected final OrmAssociationOverrideRelationshipReference relationshipReference; - public GenericOrmAssociationOverride(OrmAssociationOverrideContainer parent, AssociationOverride.Owner owner, XmlAssociationOverride xmlAssociationOverride) { + public GenericOrmAssociationOverride(OrmAssociationOverrideContainer parent, OrmAssociationOverride.Owner owner, XmlAssociationOverride xmlAssociationOverride) { super(parent, owner, xmlAssociationOverride); this.relationshipReference = this.buildRelationshipReference(); } @@ -35,8 +35,8 @@ public class GenericOrmAssociationOverride extends AbstractOrmOverride } @Override - public Owner getOwner() { - return (Owner) super.getOwner(); + public OrmAssociationOverride.Owner getOwner() { + return (OrmAssociationOverride.Owner) super.getOwner(); } protected OrmAssociationOverrideRelationshipReference buildRelationshipReference() { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAssociationOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAssociationOverrideContainer.java index 2f6de99b53..c2357491a7 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAssociationOverrideContainer.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAssociationOverrideContainer.java @@ -30,6 +30,7 @@ import org.eclipse.jpt.core.internal.context.BaseColumnTextRangeResolver; import org.eclipse.jpt.core.internal.context.JoinColumnTextRangeResolver; import org.eclipse.jpt.core.internal.context.JptValidator; import org.eclipse.jpt.core.internal.context.MappingTools; +import org.eclipse.jpt.core.internal.context.OverrideTextRangeResolver; import org.eclipse.jpt.core.internal.context.TableTextRangeResolver; import org.eclipse.jpt.core.internal.context.orm.AbstractOrmXmlContextNode; import org.eclipse.jpt.core.resource.orm.OrmFactory; @@ -302,7 +303,7 @@ public class GenericOrmAssociationOverrideContainer extends AbstractOrmXmlContex return OrmFactory.eINSTANCE.createXmlAssociationOverride(); } - protected AssociationOverride.Owner buildAssociationOverrideOwner() { + protected OrmAssociationOverride.Owner buildAssociationOverrideOwner() { return new AssociationOverrideOwner(); } @@ -322,7 +323,7 @@ public class GenericOrmAssociationOverrideContainer extends AbstractOrmXmlContex } - protected class AssociationOverrideOwner implements AssociationOverride.Owner { + protected class AssociationOverrideOwner implements OrmAssociationOverride.Owner { public RelationshipMapping getRelationshipMapping(String attributeName) { return MappingTools.getRelationshipMapping(attributeName, getOwner().getOverridableTypeMapping()); @@ -340,6 +341,10 @@ public class GenericOrmAssociationOverrideContainer extends AbstractOrmXmlContex return getOwner().getTypeMapping(); } + public TypeMapping getOverridableTypeMapping() { + return getOwner().getOverridableTypeMapping(); + } + public Iterator<String> allOverridableAttributeNames() { return GenericOrmAssociationOverrideContainer.this.allOverridableAssociationNames(); } @@ -360,6 +365,10 @@ public class GenericOrmAssociationOverrideContainer extends AbstractOrmXmlContex return getOwner().getDbTable(tableName); } + public JptValidator buildValidator(BaseOverride override, OverrideTextRangeResolver textRangeResolver) { + return getOwner().buildValidator(override, this, textRangeResolver); + } + public JptValidator buildColumnValidator(BaseOverride override, BaseColumn column, BaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) { return getOwner().buildColumnValidator(override, column, owner, textRangeResolver); } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverride.java index de4dee8db6..4467fd0c12 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverride.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverride.java @@ -13,7 +13,6 @@ import java.util.Iterator; import java.util.List; import org.eclipse.jpt.core.MappingKeys; import org.eclipse.jpt.core.context.AttributeMapping; -import org.eclipse.jpt.core.context.AttributeOverride; import org.eclipse.jpt.core.context.BaseColumn; import org.eclipse.jpt.core.context.Column; import org.eclipse.jpt.core.context.NamedColumn; @@ -50,7 +49,7 @@ public class GenericOrmAttributeOverride public GenericOrmAttributeOverride( OrmAttributeOverrideContainer parent, - AttributeOverride.Owner owner, + OrmAttributeOverride.Owner owner, XmlAttributeOverride resourceAttributeOverride) { super(parent, owner, resourceAttributeOverride); @@ -67,9 +66,10 @@ public class GenericOrmAttributeOverride return (OrmAttributeOverride) getOwner().setVirtual(virtual, this); } + @Override - public Owner getOwner() { - return (Owner) super.getOwner(); + public OrmAttributeOverride.Owner getOwner() { + return (OrmAttributeOverride.Owner) super.getOwner(); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverrideContainer.java index 6f455e027e..1e20c50b02 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverrideContainer.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverrideContainer.java @@ -14,7 +14,6 @@ import java.util.Iterator; import java.util.List; import java.util.ListIterator; import org.eclipse.emf.common.util.EList; -import org.eclipse.jpt.core.context.AttributeOverride; import org.eclipse.jpt.core.context.BaseColumn; import org.eclipse.jpt.core.context.BaseOverride; import org.eclipse.jpt.core.context.Column; @@ -24,6 +23,7 @@ import org.eclipse.jpt.core.context.orm.OrmAttributeOverride; import org.eclipse.jpt.core.context.orm.OrmAttributeOverrideContainer; import org.eclipse.jpt.core.internal.context.BaseColumnTextRangeResolver; import org.eclipse.jpt.core.internal.context.JptValidator; +import org.eclipse.jpt.core.internal.context.OverrideTextRangeResolver; import org.eclipse.jpt.core.internal.context.orm.AbstractOrmXmlContextNode; import org.eclipse.jpt.core.internal.context.orm.VirtualXmlAttributeOverride; import org.eclipse.jpt.core.resource.orm.OrmFactory; @@ -311,7 +311,7 @@ public class GenericOrmAttributeOverrideContainer return getXmlContextNodeFactory().buildOrmAttributeOverride(this, createAttributeOverrideOwner(), attributeOverride); } - protected AttributeOverride.Owner createAttributeOverrideOwner() { + protected OrmAttributeOverride.Owner createAttributeOverrideOwner() { return new AttributeOverrideOwner(); } @@ -332,7 +332,7 @@ public class GenericOrmAttributeOverrideContainer } - protected class AttributeOverrideOwner implements AttributeOverride.Owner { + protected class AttributeOverrideOwner implements OrmAttributeOverride.Owner { public Column resolveOverriddenColumn(String attributeName) { if (attributeName == null) { @@ -353,6 +353,10 @@ public class GenericOrmAttributeOverrideContainer return getOwner().getTypeMapping(); } + public TypeMapping getOverridableTypeMapping() { + return getOwner().getOverridableTypeMapping(); + } + public Iterator<String> allOverridableAttributeNames() { return GenericOrmAttributeOverrideContainer.this.allOverridableAttributeNames(); } @@ -373,6 +377,10 @@ public class GenericOrmAttributeOverrideContainer return getOwner().getDbTable(tableName); } + public JptValidator buildValidator(BaseOverride override, OverrideTextRangeResolver textRangeResolver) { + return getOwner().buildValidator(override, this, textRangeResolver); + } + public JptValidator buildColumnValidator(BaseOverride override, BaseColumn column, BaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) { return getOwner().buildColumnValidator(override, column, owner, textRangeResolver); } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmEmbeddedMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmEmbeddedMapping.java index 05072fea96..1aa0ce9542 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmEmbeddedMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmEmbeddedMapping.java @@ -33,11 +33,14 @@ import org.eclipse.jpt.core.internal.context.BaseColumnTextRangeResolver; import org.eclipse.jpt.core.internal.context.JoinColumnTextRangeResolver; import org.eclipse.jpt.core.internal.context.JptValidator; import org.eclipse.jpt.core.internal.context.MappingTools; +import org.eclipse.jpt.core.internal.context.OverrideTextRangeResolver; import org.eclipse.jpt.core.internal.context.TableTextRangeResolver; import org.eclipse.jpt.core.internal.context.orm.AbstractOrmBaseEmbeddedMapping; import org.eclipse.jpt.core.internal.jpa1.context.AssociationOverrideInverseJoinColumnValidator; import org.eclipse.jpt.core.internal.jpa1.context.AssociationOverrideJoinColumnValidator; import org.eclipse.jpt.core.internal.jpa1.context.AssociationOverrideJoinTableValidator; +import org.eclipse.jpt.core.internal.jpa1.context.AssociationOverrideValidator; +import org.eclipse.jpt.core.internal.jpa1.context.EmbeddableOverrideDescriptionProvider; import org.eclipse.jpt.core.internal.jpa1.context.EntityTableDescriptionProvider; import org.eclipse.jpt.core.internal.jpa1.context.JoinTableTableDescriptionProvider; import org.eclipse.jpt.core.jpa2.context.java.JavaEmbeddedMapping2_0; @@ -278,6 +281,10 @@ public class GenericOrmEmbeddedMapping public TextRange getValidationTextRange() { return GenericOrmEmbeddedMapping.this.getValidationTextRange(); } + + public JptValidator buildValidator(BaseOverride override, BaseOverride.Owner owner, OverrideTextRangeResolver textRangeResolver) { + return new AssociationOverrideValidator(getPersistentAttribute(), (AssociationOverride) override, (AssociationOverride.Owner) owner, textRangeResolver, new EmbeddableOverrideDescriptionProvider()); + } public JptValidator buildColumnValidator(BaseOverride override, BaseColumn column, BaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) { return new AssociationOverrideJoinColumnValidator(getPersistentAttribute(), (AssociationOverride) override, (JoinColumn) column, (JoinColumn.Owner) owner, (JoinColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider()); |