diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBasicMapping.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBasicMapping.java | 425 |
1 files changed, 0 insertions, 425 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBasicMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBasicMapping.java deleted file mode 100644 index 2da9a8d7b2..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBasicMapping.java +++ /dev/null @@ -1,425 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.context.orm; - -import java.util.Iterator; -import java.util.List; -import org.eclipse.jdt.core.IPackageFragment; -import org.eclipse.jdt.core.IType; -import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable; -import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; -import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.BaseColumn; -import org.eclipse.jpt.core.context.Converter; -import org.eclipse.jpt.core.context.FetchType; -import org.eclipse.jpt.core.context.NamedColumn; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmBasicMapping; -import org.eclipse.jpt.core.context.orm.OrmColumn; -import org.eclipse.jpt.core.context.orm.OrmColumnMapping; -import org.eclipse.jpt.core.context.orm.OrmConverter; -import org.eclipse.jpt.core.context.orm.OrmEnumeratedConverter; -import org.eclipse.jpt.core.context.orm.OrmLobConverter; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmTemporalConverter; -import org.eclipse.jpt.core.context.orm.OrmXmlContextNodeFactory; -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.jpa1.context.EntityTableDescriptionProvider; -import org.eclipse.jpt.core.internal.jpa1.context.NamedColumnValidator; -import org.eclipse.jpt.core.internal.jpa1.context.orm.NullOrmConverter; -import org.eclipse.jpt.core.resource.orm.Attributes; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlBasic; -import org.eclipse.jpt.core.resource.orm.XmlColumn; -import org.eclipse.jpt.jpa.db.Table; -import org.eclipse.text.edits.ReplaceEdit; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -/** - * <code>orm.xml</code> basic mapping - */ -public abstract class AbstractOrmBasicMapping<X extends XmlBasic> - extends AbstractOrmAttributeMapping<X> - implements OrmBasicMapping -{ - protected final OrmColumn column; - - protected FetchType specifiedFetch; - protected FetchType defaultFetch; - - protected Boolean specifiedOptional; - protected boolean defaultOptional; - - protected OrmConverter converter; // never null - - - protected static final OrmConverter.Adapter[] CONVERTER_ADAPTER_ARRAY = new OrmConverter.Adapter[] { - OrmEnumeratedConverter.Adapter.instance(), - OrmTemporalConverter.Adapter.instance(), - OrmLobConverter.Adapter.instance() - }; - protected static final Iterable<OrmConverter.Adapter> CONVERTER_ADAPTERS = new ArrayIterable<OrmConverter.Adapter>(CONVERTER_ADAPTER_ARRAY); - - - protected AbstractOrmBasicMapping(OrmPersistentAttribute parent, X xmlMapping) { - super(parent, xmlMapping); - this.column = this.buildColumn(); - this.specifiedFetch = this.buildSpecifiedFetch(); - this.specifiedOptional = this.buildSpecifiedOptional(); - this.converter = this.buildConverter(); - } - - - // ********** synchronize/update ********** - - @Override - public void synchronizeWithResourceModel() { - super.synchronizeWithResourceModel(); - this.column.synchronizeWithResourceModel(); - this.setSpecifiedFetch_(this.buildSpecifiedFetch()); - this.setSpecifiedOptional_(this.buildSpecifiedOptional()); - this.syncConverter(); - } - - @Override - public void update() { - super.update(); - this.column.update(); - this.setDefaultFetch(this.buildDefaultFetch()); - this.setDefaultOptional(this.buildDefaultOptional()); - this.converter.update(); - } - - - // ********** column ********** - - public OrmColumn getColumn() { - return this.column; - } - - protected OrmColumn buildColumn() { - return this.getContextNodeFactory().buildOrmColumn(this, this); - } - - - // ********** fetch ********** - - public FetchType getFetch() { - return (this.specifiedFetch != null) ? this.specifiedFetch : this.defaultFetch; - } - - public FetchType getSpecifiedFetch() { - return this.specifiedFetch; - } - - public void setSpecifiedFetch(FetchType fetch) { - this.setSpecifiedFetch_(fetch); - this.xmlAttributeMapping.setFetch(FetchType.toOrmResourceModel(fetch)); - } - - protected void setSpecifiedFetch_(FetchType fetch) { - FetchType old = this.specifiedFetch; - this.specifiedFetch = fetch; - this.firePropertyChanged(SPECIFIED_FETCH_PROPERTY, old, fetch); - } - - protected FetchType buildSpecifiedFetch() { - return FetchType.fromOrmResourceModel(this.xmlAttributeMapping.getFetch()); - } - - public FetchType getDefaultFetch() { - return this.defaultFetch; - } - - protected void setDefaultFetch(FetchType fetch) { - FetchType old = this.defaultFetch; - this.defaultFetch = fetch; - this.firePropertyChanged(DEFAULT_FETCH_PROPERTY, old, fetch); - } - - protected FetchType buildDefaultFetch() { - return DEFAULT_FETCH_TYPE; - } - - - // ********** optional ********** - - public boolean isOptional() { - return (this.specifiedOptional != null) ? this.specifiedOptional.booleanValue() : this.isDefaultOptional(); - } - - public Boolean getSpecifiedOptional() { - return this.specifiedOptional; - } - - public void setSpecifiedOptional(Boolean optional) { - this.setSpecifiedOptional_(optional); - this.xmlAttributeMapping.setOptional(optional); - } - - protected void setSpecifiedOptional_(Boolean optional) { - Boolean old = this.specifiedOptional; - this.specifiedOptional = optional; - this.firePropertyChanged(SPECIFIED_OPTIONAL_PROPERTY, old, optional); - } - - protected Boolean buildSpecifiedOptional() { - return this.xmlAttributeMapping.getOptional(); - } - - public boolean isDefaultOptional() { - return this.defaultOptional; - } - - protected void setDefaultOptional(boolean optional) { - boolean old = this.defaultOptional; - this.defaultOptional = optional; - this.firePropertyChanged(DEFAULT_OPTIONAL_PROPERTY, old, optional); - } - - protected boolean buildDefaultOptional() { - return DEFAULT_OPTIONAL; - } - - - // ********** converter ********** - - public OrmConverter getConverter() { - return this.converter; - } - - public void setConverter(Class<? extends Converter> converterType) { - if (this.converter.getType() != converterType) { - // note: we may also clear the XML value we want; - // but if we leave it, the resulting sync will screw things up... - this.clearXmlConverterValues(); - OrmConverter.Adapter converterAdapter = this.getConverterAdapter(converterType); - this.setConverter_(this.buildConverter(converterAdapter)); - this.converter.initialize(); - } - } - - protected OrmConverter buildConverter(OrmConverter.Adapter converterAdapter) { - return (converterAdapter != null) ? - converterAdapter.buildNewConverter(this, this.getContextNodeFactory()) : - this.buildNullConverter(); - } - - protected void setConverter_(OrmConverter converter) { - Converter old = this.converter; - this.converter = converter; - this.firePropertyChanged(CONVERTER_PROPERTY, old, converter); - } - - protected void clearXmlConverterValues() { - for (OrmConverter.Adapter adapter : this.getConverterAdapters()) { - adapter.clearXmlValue(this.xmlAttributeMapping); - } - } - - protected OrmConverter buildConverter() { - OrmXmlContextNodeFactory factory = this.getContextNodeFactory(); - for (OrmConverter.Adapter adapter : this.getConverterAdapters()) { - OrmConverter ormConverter = adapter.buildConverter(this, factory); - if (ormConverter != null) { - return ormConverter; - } - } - return this.buildNullConverter(); - } - - protected void syncConverter() { - OrmConverter.Adapter adapter = this.getXmlConverterAdapter(); - if (adapter == null) { - if (this.converter.getType() != null) { - this.setConverter_(this.buildNullConverter()); - } - } else { - if (this.converter.getType() == adapter.getConverterType()) { - this.converter.synchronizeWithResourceModel(); - } else { - this.setConverter_(adapter.buildNewConverter(this, this.getContextNodeFactory())); - } - } - } - - /** - * Return the first adapter whose converter value is set in the XML mapping. - * Return <code>null</code> if there are no converter values in the XML. - */ - protected OrmConverter.Adapter getXmlConverterAdapter() { - for (OrmConverter.Adapter adapter : this.getConverterAdapters()) { - if (adapter.isActive(this.xmlAttributeMapping)) { - return adapter; - } - } - return null; - } - - protected OrmConverter buildNullConverter() { - return new NullOrmConverter(this); - } - - - // ********** converter adapters ********** - - /** - * Return the converter adapter for the specified converter type. - */ - protected OrmConverter.Adapter getConverterAdapter(Class<? extends Converter> converterType) { - for (OrmConverter.Adapter adapter : this.getConverterAdapters()) { - if (adapter.getConverterType() == converterType) { - return adapter; - } - } - return null; - } - - protected Iterable<OrmConverter.Adapter> getConverterAdapters() { - return CONVERTER_ADAPTERS; - } - - - // ********** misc ********** - - public String getKey() { - return MappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY; - } - - public void initializeOn(OrmAttributeMapping newMapping) { - newMapping.initializeFromOrmBasicMapping(this); - } - - @Override - protected void initializeFromOrmColumnMapping(OrmColumnMapping oldMapping) { - super.initializeFromOrmColumnMapping(oldMapping); - this.column.initializeFrom(oldMapping.getColumn()); - } - - public int getXmlSequence() { - return 20; - } - - @Override - public boolean isOverridableAttributeMapping() { - return true; - } - - public void addXmlAttributeMappingTo(Attributes xmlAttributes) { - xmlAttributes.getBasics().add(this.xmlAttributeMapping); - } - - public void removeXmlAttributeMappingFrom(Attributes xmlAttributes) { - xmlAttributes.getBasics().remove(this.xmlAttributeMapping); - } - - - // ********** OrmColumn.Owner implementation ********** - - public String getDefaultColumnName() { - return this.name; - } - - public String getDefaultTableName() { - return this.getTypeMapping().getPrimaryTableName(); - } - - public Table resolveDbTable(String tableName) { - return this.getTypeMapping().resolveDbTable(tableName); - } - - public boolean tableNameIsInvalid(String tableName) { - return this.getTypeMapping().tableNameIsInvalid(tableName); - } - - public Iterator<String> candidateTableNames() { - return this.getTypeMapping().allAssociatedTableNames(); - } - - public XmlColumn getXmlColumn() { - return this.xmlAttributeMapping.getColumn(); - } - - public XmlColumn buildXmlColumn() { - XmlColumn xmlColumn = OrmFactory.eINSTANCE.createXmlColumn(); - this.xmlAttributeMapping.setColumn(xmlColumn); - return xmlColumn; - } - - public void removeXmlColumn() { - this.xmlAttributeMapping.setColumn(null); - } - - - //************ refactoring ************ - - @Override - @SuppressWarnings("unchecked") - public Iterable<ReplaceEdit> createRenameTypeEdits(IType originalType, String newName) { - return new CompositeIterable<ReplaceEdit>( - super.createRenameTypeEdits(originalType, newName), - this.createConverterRenameTypeEdits(originalType, newName) - ); - } - - protected Iterable<ReplaceEdit> createConverterRenameTypeEdits(IType originalType, String newName) { - return (this.converter != null) ? - this.converter.createRenameTypeEdits(originalType, newName) : - EmptyIterable.<ReplaceEdit>instance(); - } - - @Override - @SuppressWarnings("unchecked") - public Iterable<ReplaceEdit> createMoveTypeEdits(IType originalType, IPackageFragment newPackage) { - return new CompositeIterable<ReplaceEdit>( - super.createMoveTypeEdits(originalType, newPackage), - this.createConverterMoveTypeEdits(originalType, newPackage) - ); - } - - protected Iterable<ReplaceEdit> createConverterMoveTypeEdits(IType originalType, IPackageFragment newPackage) { - return (this.converter != null) ? - this.converter.createMoveTypeEdits(originalType, newPackage) : - EmptyIterable.<ReplaceEdit>instance(); - } - - @Override - @SuppressWarnings("unchecked") - public Iterable<ReplaceEdit> createRenamePackageEdits(IPackageFragment originalPackage, String newName) { - return new CompositeIterable<ReplaceEdit>( - super.createRenamePackageEdits(originalPackage, newName), - this.createConverterRenamePackageEdits(originalPackage, newName) - ); - } - - protected Iterable<ReplaceEdit> createConverterRenamePackageEdits(IPackageFragment originalPackage, String newName) { - return (this.converter != null) ? - this.converter.createRenamePackageEdits(originalPackage, newName) : - EmptyIterable.<ReplaceEdit>instance(); - } - - - // ********** validation ********** - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - this.column.validate(messages, reporter); - this.converter.validate(messages, reporter); - } - - public JptValidator buildColumnValidator(NamedColumn col, NamedColumnTextRangeResolver textRangeResolver) { - return new NamedColumnValidator(this.getPersistentAttribute(), (BaseColumn) col, (BaseColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider()); - } -} |