diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverride.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverride.java | 239 |
1 files changed, 0 insertions, 239 deletions
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 deleted file mode 100644 index 4467fd0c12..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/orm/GenericOrmAttributeOverride.java +++ /dev/null @@ -1,239 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 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.orm; - -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.BaseColumn; -import org.eclipse.jpt.core.context.Column; -import org.eclipse.jpt.core.context.NamedColumn; -import org.eclipse.jpt.core.context.TypeMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeOverride; -import org.eclipse.jpt.core.context.orm.OrmAttributeOverrideContainer; -import org.eclipse.jpt.core.context.orm.OrmColumn; -import org.eclipse.jpt.core.internal.context.BaseColumnTextRangeResolver; -import org.eclipse.jpt.core.internal.context.JptValidator; -import org.eclipse.jpt.core.internal.context.NamedColumnTextRangeResolver; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.jpa2.context.AttributeOverride2_0; -import org.eclipse.jpt.core.jpa2.context.SingleRelationshipMapping2_0; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlAttributeOverride; -import org.eclipse.jpt.core.resource.orm.XmlColumn; -import org.eclipse.jpt.db.Table; -import org.eclipse.jpt.utility.internal.iterables.CompositeIterable; -import org.eclipse.jpt.utility.internal.iterables.FilteringIterable; -import org.eclipse.jpt.utility.internal.iterables.SubIterableWrapper; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -public class GenericOrmAttributeOverride - extends AbstractOrmOverride - implements AttributeOverride2_0, OrmAttributeOverride, OrmColumn.Owner -{ - protected final OrmColumn column; - - /* 2.0 feature - a relationship may map this attribute override */ - protected boolean mappedByRelationship; - - - public GenericOrmAttributeOverride( - OrmAttributeOverrideContainer parent, - OrmAttributeOverride.Owner owner, - XmlAttributeOverride resourceAttributeOverride) { - - super(parent, owner, resourceAttributeOverride); - this.column = getXmlContextNodeFactory().buildOrmColumn(this, this); - this.column.initialize(resourceAttributeOverride.getColumn()); - - this.mappedByRelationship = //calculateMappedByRelationship(); - // TODO - move this real calculation to a (currently nonexistent) initialize method - false; - } - - - public OrmAttributeOverride setVirtual(boolean virtual) { - return (OrmAttributeOverride) getOwner().setVirtual(virtual, this); - } - - - @Override - public OrmAttributeOverride.Owner getOwner() { - return (OrmAttributeOverride.Owner) super.getOwner(); - } - - @Override - protected XmlAttributeOverride getResourceOverride() { - return (XmlAttributeOverride) super.getResourceOverride(); - } - - - // ********************* column **************** - - public OrmColumn getColumn() { - return this.column; - } - - //************* NamedColumn.Owner implementation ************** - - public TypeMapping getTypeMapping() { - return getOwner().getTypeMapping(); - } - - public Table getDbTable(String tableName) { - return this.getOwner().getDbTable(tableName); - } - - public String getDefaultColumnName() { - Column column = resolveOverriddenColumn(); - if (column == null) { - return getName(); - } - return column.getName(); - } - - - //************* BaseColumn.Owner implementation ************** - - public String getDefaultTableName() { - Column column = resolveOverriddenColumn(); - if (column != null) { - String tableName = column.getSpecifiedTable(); - if (tableName != null) { - return tableName; - } - } - return getOwner().getDefaultTableName(); - } - - protected Column resolveOverriddenColumn() { - return isVirtual() ? getOwner().resolveOverriddenColumn(getName()) : null; - } - - public boolean tableNameIsInvalid(String tableName) { - return getOwner().tableNameIsInvalid(tableName); - } - - public Iterator<String> candidateTableNames() { - return getOwner().candidateTableNames(); - } - - public boolean isVirtual() { - return getOwner().isVirtual(this); - } - - - //***************** OrmColumn.Owner implementation **************** - - public XmlColumn getResourceColumn() { - return this.getResourceOverride().getColumn(); - } - - protected boolean isColumnSpecified() { - return getResourceColumn() != null; - } - - public void addResourceColumn() { - this.getResourceOverride().setColumn(OrmFactory.eINSTANCE.createXmlColumn()); - } - - public void removeResourceColumn() { - this.getResourceOverride().setColumn(null); - } - - - // **************** AttributeOverride2_0 impl ***************************** - - public boolean isMappedByRelationship() { - return this.mappedByRelationship; - } - - protected void setMappedByRelationship(boolean newValue) { - boolean oldValue = this.mappedByRelationship; - this.mappedByRelationship = newValue; - firePropertyChanged(MAPPED_BY_RELATIONSHIP_PROPERTY, oldValue, newValue); - } - - protected boolean calculateMappedByRelationship() { - for (SingleRelationshipMapping2_0 each : getMapsIdRelationships()) { - if (getName() == null) { - return false; - } - - // overrideable names are (usually?) qualified with a container mapping, - // which may also be the one mapped by a relationship - String qualifier = - (getName().indexOf('.') > 0) ? - getName().substring(0, getName().indexOf('.')) - : getName(); - return qualifier.equals(each.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getValue()); - } - return false; - } - - protected Iterable<SingleRelationshipMapping2_0> getMapsIdRelationships() { - return new FilteringIterable<SingleRelationshipMapping2_0>( - new SubIterableWrapper<AttributeMapping, SingleRelationshipMapping2_0>( - new CompositeIterable<AttributeMapping>( - getTypeMapping().getAllAttributeMappings(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY), - getTypeMapping().getAllAttributeMappings(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY)))) { - @Override - protected boolean accept(SingleRelationshipMapping2_0 o) { - return o.getDerivedIdentity().usesMapsIdDerivedIdentityStrategy(); - } - }; - } - - - // **************** resource -> context *********************************** - - public void update(XmlAttributeOverride xmlAttributeOverride) { - super.update(xmlAttributeOverride); - this.column.update(xmlAttributeOverride.getColumn()); - setMappedByRelationship(calculateMappedByRelationship()); - } - - - //****************** validation ******************** - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - - // [JPA 2.0] if the column is specified, or if the override is not mapped by a relationship, - // then the column is validated. - // (In JPA 1.0, the column will always be validated, since the override is never mapped by a - // relationship) - if (isColumnSpecified() || ! isMappedByRelationship()) { - getColumn().validate(messages, reporter); - } - - // [JPA 2.0] if the override is mapped by a relationship, then that actually is in itself - // a validation error - // (We prevent implied overrides that are mapped by a relationship ... hopefully) - // (In JPA 1.0, this will never occur) - if (isMappedByRelationship()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.ATTRIBUTE_OVERRIDE_MAPPED_BY_RELATIONSHIP_AND_SPECIFIED, - new String[] {}, - this, - getValidationTextRange())); - } - } - - public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) { - return getOwner().buildColumnValidator(this, (BaseColumn) column, this, (BaseColumnTextRangeResolver) textRangeResolver); - } -} |