diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm')
107 files changed, 0 insertions, 19268 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractEntityMappings.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractEntityMappings.java deleted file mode 100644 index 1836d16694..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractEntityMappings.java +++ /dev/null @@ -1,947 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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.ArrayList; -import java.util.Collection; -import java.util.Comparator; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaStructureNode; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.context.AccessType; -import org.eclipse.jpt.core.context.Generator; -import org.eclipse.jpt.core.context.MappingFileRoot; -import org.eclipse.jpt.core.context.NamedNativeQuery; -import org.eclipse.jpt.core.context.NamedQuery; -import org.eclipse.jpt.core.context.PersistentType; -import org.eclipse.jpt.core.context.Query; -import org.eclipse.jpt.core.context.orm.EntityMappings; -import org.eclipse.jpt.core.context.orm.OrmGenerator; -import org.eclipse.jpt.core.context.orm.OrmNamedNativeQuery; -import org.eclipse.jpt.core.context.orm.OrmNamedQuery; -import org.eclipse.jpt.core.context.orm.OrmPersistenceUnitDefaults; -import org.eclipse.jpt.core.context.orm.OrmPersistentType; -import org.eclipse.jpt.core.context.orm.OrmQuery; -import org.eclipse.jpt.core.context.orm.OrmSequenceGenerator; -import org.eclipse.jpt.core.context.orm.OrmStructureNodes; -import org.eclipse.jpt.core.context.orm.OrmTableGenerator; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.context.orm.OrmXml; -import org.eclipse.jpt.core.context.orm.PersistenceUnitMetadata; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlEntityMappings; -import org.eclipse.jpt.core.resource.orm.XmlNamedNativeQuery; -import org.eclipse.jpt.core.resource.orm.XmlNamedQuery; -import org.eclipse.jpt.core.resource.orm.XmlSequenceGenerator; -import org.eclipse.jpt.core.resource.orm.XmlTableGenerator; -import org.eclipse.jpt.core.resource.orm.XmlTypeMapping; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Catalog; -import org.eclipse.jpt.db.Schema; -import org.eclipse.jpt.db.SchemaContainer; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterables.CloneIterable; -import org.eclipse.jpt.utility.internal.iterators.CloneIterator; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; -import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -public abstract class AbstractEntityMappings - extends AbstractXmlContextNode - implements EntityMappings -{ - protected final XmlEntityMappings xmlEntityMappings; - - protected String description; - - protected String package_; - - protected AccessType specifiedAccess; - protected AccessType defaultAccess; - - protected String specifiedCatalog; - protected String defaultCatalog; - - protected String specifiedSchema; - protected String defaultSchema; - - protected /*final*/ PersistenceUnitMetadata persistenceUnitMetadata; - - protected final List<OrmPersistentType> persistentTypes; - - protected final List<OrmSequenceGenerator> sequenceGenerators; - - protected final List<OrmTableGenerator> tableGenerators; - - protected final List<OrmNamedQuery> namedQueries; - - protected final List<OrmNamedNativeQuery> namedNativeQueries; - - - protected AbstractEntityMappings(OrmXml parent, XmlEntityMappings xmlEntityMappings) { - super(parent); - this.xmlEntityMappings = xmlEntityMappings; - this.persistentTypes = new ArrayList<OrmPersistentType>(); - this.sequenceGenerators = new ArrayList<OrmSequenceGenerator>(); - this.tableGenerators = new ArrayList<OrmTableGenerator>(); - this.namedQueries = new ArrayList<OrmNamedQuery>(); - this.namedNativeQueries = new ArrayList<OrmNamedNativeQuery>(); - - this.persistenceUnitMetadata = buildPersistenceUnitMetadata(); - this.description = this.xmlEntityMappings.getDescription(); - this.package_ = this.xmlEntityMappings.getPackage(); - - this.defaultAccess = this.getPersistenceUnit().getDefaultAccess(); - this.specifiedAccess = this.getResourceAccess(); - - this.defaultCatalog = this.getPersistenceUnit().getDefaultCatalog(); - this.specifiedCatalog = this.xmlEntityMappings.getCatalog(); - - this.defaultSchema = this.getPersistenceUnit().getDefaultSchema(); - this.specifiedSchema = this.xmlEntityMappings.getSchema(); - - this.initializePersistentTypes(); - this.initializeTableGenerators(); - this.initializeSequenceGenerators(); - this.initializeNamedQueries(); - this.initializeNamedNativeQueries(); - } - - protected abstract PersistenceUnitMetadata buildPersistenceUnitMetadata(); - // **************** JpaNode impl ******************************************* - - @Override - public OrmXml getParent() { - return (OrmXml) super.getParent(); - } - - protected OrmXml getOrmXml() { - return this.getParent(); - } - - - // **************** JpaContextNode impl ************************************ - - @Override - public MappingFileRoot getMappingFileRoot() { - return this; - } - - - // **************** JpaStructureNode impl ********************************** - - public String getId() { - return OrmStructureNodes.ENTITY_MAPPINGS_ID; - } - - - // ********** PersistentType.Owner implementation ********** - - public AccessType getOverridePersistentTypeAccess() { - return this.isXmlMappingMetadataComplete() ? this.getSpecifiedAccess() : null; - } - - public AccessType getDefaultPersistentTypeAccess() { - return getAccess(); - } - - public String getDefaultPersistentTypePackage() { - return getPackage(); - } - - protected boolean isXmlMappingMetadataComplete() { - return this.getPersistenceUnitMetadata().isXmlMappingMetadataComplete(); - } - - public boolean isDefaultPersistentTypeMetadataComplete() { - return this.isXmlMappingMetadataComplete(); - } - - - // **************** EntityMappings impl ************************************ - - public XmlEntityMappings getXmlEntityMappings() { - return this.xmlEntityMappings; - } - - public void changeMapping(OrmPersistentType ormPersistentType, OrmTypeMapping oldMapping, OrmTypeMapping newMapping) { - AccessType savedAccess = ormPersistentType.getSpecifiedAccess(); - ormPersistentType.dispose(); - int sourceIndex = this.persistentTypes.indexOf(ormPersistentType); - this.persistentTypes.remove(sourceIndex); - oldMapping.removeFromResourceModel(this.xmlEntityMappings); - int targetIndex = insertionIndex(ormPersistentType); - this.persistentTypes.add(targetIndex, ormPersistentType); - newMapping.addToResourceModel(this.xmlEntityMappings); - - newMapping.initializeFrom(oldMapping); - //not sure where else to put this, need to set the access on the resource model - ormPersistentType.setSpecifiedAccess(savedAccess); - fireItemMoved(PERSISTENT_TYPES_LIST, targetIndex, sourceIndex); - } - - public OrmPersistentType getPersistentType(String fullyQualifiedTypeName) { - for (OrmPersistentType ormPersistentType : this.getPersistentTypes()) { - if (ormPersistentType.isFor(fullyQualifiedTypeName)) { - return ormPersistentType; - } - } - return null; - } - - public PersistenceUnitMetadata getPersistenceUnitMetadata() { - return this.persistenceUnitMetadata; - } - - public String getPackage() { - return this.package_; - } - - public void setPackage(String newPackage) { - String oldPackage = this.package_; - this.package_ = newPackage; - this.xmlEntityMappings.setPackage(newPackage); - firePropertyChanged(PACKAGE_PROPERTY, oldPackage, newPackage); - } - - public String getVersion() { - return this.xmlEntityMappings.getVersion(); - } - - public String getDescription() { - return this.description; - } - - public void setDescription(String newDescription) { - String oldDescription = this.description; - this.description = newDescription; - this.xmlEntityMappings.setDescription(newDescription); - firePropertyChanged(DESCRIPTION_PROPERTY, oldDescription, newDescription); - } - - - // ********** access ********** - - public AccessType getAccess() { - return (this.specifiedAccess != null) ? this.specifiedAccess : this.defaultAccess; - } - - public AccessType getSpecifiedAccess() { - return this.specifiedAccess; - } - - public void setSpecifiedAccess(AccessType access) { - AccessType old = this.specifiedAccess; - this.specifiedAccess = access; - this.xmlEntityMappings.setAccess(AccessType.toOrmResourceModel(access)); - this.firePropertyChanged(SPECIFIED_ACCESS_PROPERTY, old, access); - } - - public AccessType getDefaultAccess() { - return this.defaultAccess; - } - - protected void setDefaultAccess(AccessType access) { - AccessType old = this.defaultAccess; - this.defaultAccess = access; - this.firePropertyChanged(DEFAULT_ACCESS_PROPERTY, old, access); - } - - - // ********** schema ********** - - public String getSchema() { - return (this.specifiedSchema != null) ? this.specifiedSchema : this.defaultSchema; - } - - public String getSpecifiedSchema() { - return this.specifiedSchema; - } - - public void setSpecifiedSchema(String schema) { - String old = this.specifiedSchema; - this.specifiedSchema = schema; - this.xmlEntityMappings.setSchema(schema); - this.firePropertyChanged(SPECIFIED_SCHEMA_PROPERTY, old, schema); - } - - public String getDefaultSchema() { - return this.defaultSchema; - } - - protected void setDefaultSchema(String schema) { - String old = this.defaultSchema; - this.defaultSchema = schema; - this.firePropertyChanged(DEFAULT_SCHEMA_PROPERTY, old, schema); - } - - public Schema getDbSchema() { - SchemaContainer dbSchemaContainer = this.getDbSchemaContainer(); - return (dbSchemaContainer == null) ? null : dbSchemaContainer.getSchemaForIdentifier(this.getSchema()); - } - - - // ********** catalog ********** - - public String getCatalog() { - return (this.specifiedCatalog != null) ? this.specifiedCatalog : this.defaultCatalog; - } - - public String getSpecifiedCatalog() { - return this.specifiedCatalog; - } - - public void setSpecifiedCatalog(String catalog) { - String old = this.specifiedCatalog; - this.specifiedCatalog = catalog; - this.xmlEntityMappings.setCatalog(catalog); - this.firePropertyChanged(SPECIFIED_CATALOG_PROPERTY, old, catalog); - } - - public String getDefaultCatalog() { - return this.defaultCatalog; - } - - protected void setDefaultCatalog(String catalog) { - String old = this.defaultCatalog; - this.defaultCatalog = catalog; - this.firePropertyChanged(DEFAULT_CATALOG_PROPERTY, old, catalog); - } - - public Catalog getDbCatalog() { - String catalog = this.getCatalog(); - if (catalog == null) { - return null; // not even a default catalog (i.e. database probably does not support catalogs) - } - return this.getDbCatalog(catalog); - } - - - // ********** schema container ********** - - /** - * If we don't have a catalog (i.e. we don't even have a *default* catalog), - * then the database probably does not support catalogs; and we need to - * get the schema directly from the database. - */ - public SchemaContainer getDbSchemaContainer() { - String catalog = this.getCatalog(); - return (catalog != null) ? this.getDbCatalog(catalog) : this.getDatabase(); - } - - - // ********** ORM persistent types ********** - - public ListIterator<OrmPersistentType> persistentTypes() { - return new CloneListIterator<OrmPersistentType>(this.persistentTypes); - } - - protected Iterable<OrmPersistentType> getPersistentTypes() { - return new CloneIterable<OrmPersistentType>(this.persistentTypes); - } - - public int persistentTypesSize() { - return this.persistentTypes.size(); - } - - public OrmPersistentType addPersistentType(String mappingKey, String className) { - XmlTypeMapping typeMapping = getJpaPlatform().buildOrmResourceTypeMapping(mappingKey, getContentType()); - OrmPersistentType persistentType = buildPersistentType(typeMapping); - int index = insertionIndex(persistentType); - this.persistentTypes.add(index, persistentType); - if (className.startsWith(getPackage() + '.')) { - // adds short name if package name is specified - className = className.substring(getPackage().length() + 1); - } - persistentType.getMapping().addToResourceModel(this.xmlEntityMappings); - typeMapping.setClassName(className); - fireItemAdded(PERSISTENT_TYPES_LIST, index, persistentType); - return persistentType; - } - - protected abstract OrmPersistentType buildPersistentType(XmlTypeMapping typeMapping); - - protected int insertionIndex(OrmPersistentType ormPersistentType) { - return CollectionTools.insertionIndexOf(this.persistentTypes, ormPersistentType, buildMappingComparator()); - } - - private Comparator<OrmPersistentType> buildMappingComparator() { - return new Comparator<OrmPersistentType>() { - public int compare(OrmPersistentType o1, OrmPersistentType o2) { - int o1Sequence = o1.getMapping().getXmlSequence(); - int o2Sequence = o2.getMapping().getXmlSequence(); - if (o1Sequence < o2Sequence) { - return -1; - } - if (o1Sequence == o2Sequence) { - return 0; - } - return 1; - } - }; - } - - public void removePersistentType(int index) { - OrmPersistentType persistentType = this.persistentTypes.get(index); - persistentType.dispose(); - this.persistentTypes.remove(index); - persistentType.getMapping().removeFromResourceModel(this.xmlEntityMappings); - fireItemRemoved(PERSISTENT_TYPES_LIST, index, persistentType); - } - - public void removePersistentType(OrmPersistentType persistentType) { - removePersistentType(this.persistentTypes.indexOf(persistentType)); - } - - protected void removePersistentType_(OrmPersistentType persistentType) { - persistentType.dispose(); - removeItemFromList(persistentType, this.persistentTypes, PERSISTENT_TYPES_LIST); - } - - protected void movePersistentType_(int index, OrmPersistentType persistentType) { - moveItemInList(index, this.persistentTypes.indexOf(persistentType), this.persistentTypes, PERSISTENT_TYPES_LIST); - } - - - // ********** sequence generators ********** - - public ListIterator<OrmSequenceGenerator> sequenceGenerators() { - return new CloneListIterator<OrmSequenceGenerator>(this.sequenceGenerators); - } - - public int sequenceGeneratorsSize() { - return this.sequenceGenerators.size(); - } - - public OrmSequenceGenerator addSequenceGenerator(int index) { - XmlSequenceGenerator resourceSequenceGenerator = OrmFactory.eINSTANCE.createXmlSequenceGeneratorImpl(); - OrmSequenceGenerator contextSequenceGenerator = buildSequenceGenerator(resourceSequenceGenerator); - this.sequenceGenerators.add(index, contextSequenceGenerator); - this.xmlEntityMappings.getSequenceGenerators().add(index, resourceSequenceGenerator); - fireItemAdded(SEQUENCE_GENERATORS_LIST, index, contextSequenceGenerator); - return contextSequenceGenerator; - } - - protected void addSequenceGenerator(int index, OrmSequenceGenerator sequenceGenerator) { - addItemToList(index, sequenceGenerator, this.sequenceGenerators, EntityMappings.SEQUENCE_GENERATORS_LIST); - } - - protected void addSequenceGenerator(OrmSequenceGenerator sequenceGenerator) { - this.addSequenceGenerator(this.sequenceGenerators.size(), sequenceGenerator); - } - - public void removeSequenceGenerator(OrmSequenceGenerator sequenceGenerator) { - removeSequenceGenerator(this.sequenceGenerators.indexOf(sequenceGenerator)); - } - - public void removeSequenceGenerator(int index) { - OrmSequenceGenerator removedSequenceGenerator = this.sequenceGenerators.remove(index); - fireItemRemoved(SEQUENCE_GENERATORS_LIST, index, removedSequenceGenerator); - this.xmlEntityMappings.getSequenceGenerators().remove(index); - } - - protected void removeSequenceGenerator_(OrmSequenceGenerator sequenceGenerator) { - removeItemFromList(sequenceGenerator, this.sequenceGenerators, EntityMappings.SEQUENCE_GENERATORS_LIST); - } - - public void moveSequenceGenerator(int targetIndex, int sourceIndex) { - CollectionTools.move(this.sequenceGenerators, targetIndex, sourceIndex); - this.xmlEntityMappings.getSequenceGenerators().move(targetIndex, sourceIndex); - fireItemMoved(EntityMappings.SEQUENCE_GENERATORS_LIST, targetIndex, sourceIndex); - } - - - // ********** table generators ********** - - public ListIterator<OrmTableGenerator> tableGenerators() { - return new CloneListIterator<OrmTableGenerator>(this.tableGenerators); - } - - public int tableGeneratorsSize() { - return this.tableGenerators.size(); - } - - public OrmTableGenerator addTableGenerator(int index) { - XmlTableGenerator resourceTableGenerator = OrmFactory.eINSTANCE.createXmlTableGeneratorImpl(); - OrmTableGenerator contextTableGenerator = buildTableGenerator(resourceTableGenerator); - this.tableGenerators.add(index, contextTableGenerator); - this.xmlEntityMappings.getTableGenerators().add(index, resourceTableGenerator); - fireItemAdded(TABLE_GENERATORS_LIST, index, contextTableGenerator); - return contextTableGenerator; - } - - protected void addTableGenerator(int index, OrmTableGenerator tableGenerator) { - addItemToList(index, tableGenerator, this.tableGenerators, EntityMappings.TABLE_GENERATORS_LIST); - } - - protected void addTableGenerator(OrmTableGenerator tableGenerator) { - this.addTableGenerator(this.tableGenerators.size(), tableGenerator); - } - - public void removeTableGenerator(OrmTableGenerator tableGenerator) { - removeTableGenerator(this.tableGenerators.indexOf(tableGenerator)); - } - - public void removeTableGenerator(int index) { - OrmTableGenerator removedTableGenerator = this.tableGenerators.remove(index); - this.xmlEntityMappings.getTableGenerators().remove(index); - fireItemRemoved(TABLE_GENERATORS_LIST, index, removedTableGenerator); - } - - protected void removeTableGenerator_(OrmTableGenerator tableGenerator) { - removeItemFromList(tableGenerator, this.tableGenerators, EntityMappings.TABLE_GENERATORS_LIST); - } - - public void moveTableGenerator(int targetIndex, int sourceIndex) { - CollectionTools.move(this.tableGenerators, targetIndex, sourceIndex); - this.xmlEntityMappings.getTableGenerators().move(targetIndex, sourceIndex); - fireItemMoved(EntityMappings.TABLE_GENERATORS_LIST, targetIndex, sourceIndex); - } - - - // ********** named queries ********** - - public ListIterator<OrmNamedQuery> namedQueries() { - return new CloneListIterator<OrmNamedQuery>(this.namedQueries); - } - - public int namedQueriesSize() { - return this.namedQueries.size(); - } - - public OrmNamedQuery addNamedQuery(int index) { - XmlNamedQuery resourceNamedQuery = OrmFactory.eINSTANCE.createXmlNamedQuery(); - OrmNamedQuery contextNamedQuery = buildNamedQuery(resourceNamedQuery); - this.namedQueries.add(index, contextNamedQuery); - this.xmlEntityMappings.getNamedQueries().add(index, resourceNamedQuery); - this.fireItemAdded(NAMED_QUERIES_LIST, index, contextNamedQuery); - return contextNamedQuery; - } - - protected void addNamedQuery(int index, OrmNamedQuery namedQuery) { - addItemToList(index, namedQuery, this.namedQueries, NAMED_QUERIES_LIST); - } - - protected void addNamedQuery(OrmNamedQuery namedQuery) { - this.addNamedQuery(this.namedQueries.size(), namedQuery); - } - - public void removeNamedQuery(NamedQuery namedQuery) { - this.removeNamedQuery(this.namedQueries.indexOf(namedQuery)); - } - - public void removeNamedQuery(int index) { - OrmNamedQuery namedQuery = this.namedQueries.remove(index); - this.xmlEntityMappings.getNamedQueries().remove(index); - fireItemRemoved(NAMED_QUERIES_LIST, index, namedQuery); - } - - protected void removeNamedQuery_(OrmNamedQuery namedQuery) { - removeItemFromList(namedQuery, this.namedQueries, NAMED_QUERIES_LIST); - } - - public void moveNamedQuery(int targetIndex, int sourceIndex) { - this.xmlEntityMappings.getNamedQueries().move(targetIndex, sourceIndex); - moveItemInList(targetIndex, sourceIndex, this.namedQueries, NAMED_QUERIES_LIST); - } - - - // ********** named native queries ********** - - public ListIterator<OrmNamedNativeQuery> namedNativeQueries() { - return new CloneListIterator<OrmNamedNativeQuery>(this.namedNativeQueries); - } - - public int namedNativeQueriesSize() { - return this.namedNativeQueries.size(); - } - - public OrmNamedNativeQuery addNamedNativeQuery(int index) { - XmlNamedNativeQuery resourceNamedNativeQuery = OrmFactory.eINSTANCE.createXmlNamedNativeQuery(); - OrmNamedNativeQuery namedNativeQuery = buildNamedNativeQuery(resourceNamedNativeQuery); - this.namedNativeQueries.add(index, namedNativeQuery); - this.xmlEntityMappings.getNamedNativeQueries().add(index, resourceNamedNativeQuery); - this.fireItemAdded(NAMED_NATIVE_QUERIES_LIST, index, namedNativeQuery); - return namedNativeQuery; - } - - protected void addNamedNativeQuery(int index, OrmNamedNativeQuery namedNativeQuery) { - addItemToList(index, namedNativeQuery, this.namedNativeQueries, NAMED_NATIVE_QUERIES_LIST); - } - - protected void addNamedNativeQuery(OrmNamedNativeQuery namedNativeQuery) { - this.addNamedNativeQuery(this.namedNativeQueries.size(), namedNativeQuery); - } - - public void removeNamedNativeQuery(NamedNativeQuery namedNativeQuery) { - removeNamedNativeQuery(this.namedNativeQueries.indexOf(namedNativeQuery)); - } - - public void removeNamedNativeQuery(int index) { - OrmNamedNativeQuery namedNativeQuery = this.namedNativeQueries.remove(index); - this.xmlEntityMappings.getNamedNativeQueries().remove(index); - fireItemRemoved(NAMED_NATIVE_QUERIES_LIST, index, namedNativeQuery); - } - - protected void removeNamedNativeQuery_(OrmNamedNativeQuery namedNativeQuery) { - removeItemFromList(namedNativeQuery, this.namedNativeQueries, NAMED_NATIVE_QUERIES_LIST); - } - - public void moveNamedNativeQuery(int targetIndex, int sourceIndex) { - this.xmlEntityMappings.getNamedNativeQueries().move(targetIndex, sourceIndex); - moveItemInList(targetIndex, sourceIndex, this.namedNativeQueries, NAMED_NATIVE_QUERIES_LIST); - } - - - // ********** misc ********** - - //TODO what about qualified name? package + class - //this needs to be handled both for className and persistentType.getName(). - //moving on for now since I am just trying to get the ui compiled! just a warning that this isn't good api - public boolean containsPersistentType(String className) { - for (OrmPersistentType persistentType : this.getPersistentTypes()) { - if (persistentType.getName().equals(className)) { - return true; - } - } - return false; - } - - public OrmPersistenceUnitDefaults getPersistenceUnitDefaults() { - return getPersistenceUnitMetadata().getPersistenceUnitDefaults(); - } - - public IContentType getContentType() { - return this.getOrmXml().getContentType(); - } - - - // ********** initialization ********** - - protected void initializePersistentTypes() { - for (XmlTypeMapping typeMapping : this.xmlEntityMappings.getTypeMappings()) { - addPersistentType(typeMapping); - } - } - - protected void initializeTableGenerators() { - for (XmlTableGenerator tableGenerator : this.xmlEntityMappings.getTableGenerators()) { - this.tableGenerators.add(buildTableGenerator(tableGenerator)); - } - } - - protected void initializeSequenceGenerators() { - for (XmlSequenceGenerator sequenceGenerator : this.xmlEntityMappings.getSequenceGenerators()) { - this.sequenceGenerators.add(buildSequenceGenerator(sequenceGenerator)); - } - } - - protected void initializeNamedQueries() { - for (XmlNamedQuery namedQuery : this.xmlEntityMappings.getNamedQueries()) { - this.namedQueries.add(buildNamedQuery(namedQuery)); - } - } - - protected void initializeNamedNativeQueries() { - for (XmlNamedNativeQuery namedNativeQuery : this.xmlEntityMappings.getNamedNativeQueries()) { - this.namedNativeQueries.add(buildNamedNativeQuery(namedNativeQuery)); - } - } - - - // ********** update ********** - - public void update() { - this.setDescription(this.xmlEntityMappings.getDescription()); - this.setPackage(this.xmlEntityMappings.getPackage()); - - this.setDefaultAccess(this.getPersistenceUnit().getDefaultAccess()); - this.setSpecifiedAccess(this.getResourceAccess()); - - this.setDefaultCatalog(this.getPersistenceUnit().getDefaultCatalog()); - this.setSpecifiedCatalog(this.xmlEntityMappings.getCatalog()); - - this.setDefaultSchema(this.getPersistenceUnit().getDefaultSchema()); - this.setSpecifiedSchema(this.xmlEntityMappings.getSchema()); - - this.persistenceUnitMetadata.update(); - this.updatePersistentTypes(); - this.updateTableGenerators(); - this.updateSequenceGenerators(); - this.updateNamedQueries(); - this.updateNamedNativeQueries(); - } - - protected AccessType getResourceAccess() { - return AccessType.fromOrmResourceModel(this.xmlEntityMappings.getAccess()); - } - - protected void updatePersistentTypes() { - Collection<OrmPersistentType> contextTypesToRemove = CollectionTools.collection(persistentTypes()); - Collection<OrmPersistentType> contextTypesToUpdate = new ArrayList<OrmPersistentType>(); - int resourceIndex = 0; - - List<XmlTypeMapping> xmlTypeMappings = this.xmlEntityMappings.getTypeMappings(); - for (XmlTypeMapping xmlTypeMapping : xmlTypeMappings.toArray(new XmlTypeMapping[xmlTypeMappings.size()])) { - boolean contextAttributeFound = false; - for (OrmPersistentType contextType : contextTypesToRemove) { - if (contextType.getMapping().getResourceTypeMapping() == xmlTypeMapping) { - movePersistentType_(resourceIndex, contextType); - contextTypesToRemove.remove(contextType); - contextTypesToUpdate.add(contextType); - contextAttributeFound = true; - break; - } - } - if (!contextAttributeFound) { - OrmPersistentType ormPersistentType = addPersistentType(xmlTypeMapping); - fireItemAdded(PERSISTENT_TYPES_LIST, persistentTypesSize(), ormPersistentType); - } - resourceIndex++; - } - for (OrmPersistentType contextType : contextTypesToRemove) { - removePersistentType_(contextType); - } - //first handle adding/removing of the persistent types, then update the others last, - //this causes less churn in the update process - for (OrmPersistentType contextType : contextTypesToUpdate) { - contextType.update(); - } - } - - //not firing change notification so this can be reused in initialize and update - protected OrmPersistentType addPersistentType(XmlTypeMapping resourceMapping) { - OrmPersistentType ormPersistentType = buildPersistentType(resourceMapping); - this.persistentTypes.add(ormPersistentType); - return ormPersistentType; - } - - protected void updateTableGenerators() { - // make a copy of the XML generators (to prevent ConcurrentModificationException) - Iterator<XmlTableGenerator> xmlGenerators = new CloneIterator<XmlTableGenerator>(this.xmlEntityMappings.getTableGenerators()); - - for (Iterator<OrmTableGenerator> contextGenerators = this.tableGenerators(); contextGenerators.hasNext(); ) { - OrmTableGenerator contextGenerator = contextGenerators.next(); - if (xmlGenerators.hasNext()) { - contextGenerator.update(xmlGenerators.next()); - } - else { - removeTableGenerator_(contextGenerator); - } - } - - while (xmlGenerators.hasNext()) { - addTableGenerator(buildTableGenerator(xmlGenerators.next())); - } - } - - protected OrmTableGenerator buildTableGenerator(XmlTableGenerator resourceTableGenerator) { - return getJpaFactory().buildOrmTableGenerator(this, resourceTableGenerator); - } - - protected void updateSequenceGenerators() { - // make a copy of the XML sequence generators (to prevent ConcurrentModificationException) - Iterator<XmlSequenceGenerator> xmlSequenceGenerators = new CloneIterator<XmlSequenceGenerator>(this.xmlEntityMappings.getSequenceGenerators());//prevent ConcurrentModificiationException - - for (Iterator<OrmSequenceGenerator> contextSequenceGenerators = this.sequenceGenerators(); contextSequenceGenerators.hasNext(); ) { - OrmSequenceGenerator contextSequenceGenerator = contextSequenceGenerators.next(); - if (xmlSequenceGenerators.hasNext()) { - contextSequenceGenerator.update(xmlSequenceGenerators.next()); - } - else { - removeSequenceGenerator_(contextSequenceGenerator); - } - } - - while (xmlSequenceGenerators.hasNext()) { - addSequenceGenerator(buildSequenceGenerator(xmlSequenceGenerators.next())); - } - } - - protected OrmSequenceGenerator buildSequenceGenerator(XmlSequenceGenerator resourceSequenceGenerator) { - return getJpaFactory().buildOrmSequenceGenerator(this, resourceSequenceGenerator); - } - - protected void updateNamedQueries() { - // make a copy of the XML queries (to prevent ConcurrentModificationException) - Iterator<XmlNamedQuery> xmlQueries = new CloneIterator<XmlNamedQuery>(this.xmlEntityMappings.getNamedQueries()); - - for (Iterator<OrmNamedQuery> contextQueries = this.namedQueries(); contextQueries.hasNext(); ) { - OrmNamedQuery contextQuery = contextQueries.next(); - if (xmlQueries.hasNext()) { - contextQuery.update(xmlQueries.next()); - } - else { - removeNamedQuery_(contextQuery); - } - } - - while (xmlQueries.hasNext()) { - addNamedQuery(buildNamedQuery(xmlQueries.next())); - } - } - - protected OrmNamedQuery buildNamedQuery(XmlNamedQuery resourceNamedQuery) { - return getJpaFactory().buildOrmNamedQuery(this, resourceNamedQuery); - } - - protected void updateNamedNativeQueries() { - // make a copy of the XML queries (to prevent ConcurrentModificationException) - Iterator<XmlNamedNativeQuery> xmlQueries = new CloneIterator<XmlNamedNativeQuery>(this.xmlEntityMappings.getNamedNativeQueries()); - - for (Iterator<OrmNamedNativeQuery> contextQueries = this.namedNativeQueries(); contextQueries.hasNext(); ) { - OrmNamedNativeQuery contextQuery = contextQueries.next(); - if (xmlQueries.hasNext()) { - contextQuery.update(xmlQueries.next()); - } - else { - removeNamedNativeQuery_(contextQuery); - } - } - - while (xmlQueries.hasNext()) { - addNamedNativeQuery(buildNamedNativeQuery(xmlQueries.next())); - } - } - - protected OrmNamedNativeQuery buildNamedNativeQuery(XmlNamedNativeQuery resourceNamedQuery) { - return getJpaFactory().buildOrmNamedNativeQuery(this, resourceNamedQuery); - } - - @Override - public void postUpdate() { - super.postUpdate(); - for (PersistentType persistentType : this.getPersistentTypes()) { - persistentType.postUpdate(); - } - } - - // ********** text ********** - - public JpaStructureNode getStructureNode(int textOffset) { - for (OrmPersistentType persistentType: this.getPersistentTypes()) { - if (persistentType.contains(textOffset)) { - return persistentType.getStructureNode(textOffset); - } - } - return this; - } - - public boolean containsOffset(int textOffset) { - return (this.xmlEntityMappings != null) && this.xmlEntityMappings.containsOffset(textOffset); - } - - public TextRange getSelectionTextRange() { - return this.xmlEntityMappings.getSelectionTextRange(); - } - - public TextRange getValidationTextRange() { - return null; - } - - - // ********** validation ********** - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - this.validateGenerators(messages); - this.validateQueries(messages); - for (OrmPersistentType ormPersistentType : this.getPersistentTypes()) { - this.validatePersistentType(ormPersistentType, messages, reporter); - } - } - - protected void validateGenerators(List<IMessage> messages) { - for (Iterator<OrmGenerator> localGenerators = this.generators(); localGenerators.hasNext(); ) { - OrmGenerator localGenerator = localGenerators.next(); - for (Iterator<Generator> globalGenerators = this.getPersistenceUnit().generators(); globalGenerators.hasNext(); ) { - if (localGenerator.duplicates(globalGenerators.next())) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.GENERATOR_DUPLICATE_NAME, - new String[] {localGenerator.getName()}, - localGenerator, - localGenerator.getNameTextRange() - ) - ); - } - } - } - } - - /** - * Return all the generators, table and sequence. - */ - @SuppressWarnings("unchecked") - public Iterator<OrmGenerator> generators() { - return new CompositeIterator<OrmGenerator>( - this.tableGenerators(), - this.sequenceGenerators() - ); - } - - protected void validateQueries(List<IMessage> messages) { - for (Iterator<OrmQuery> localQueries = this.queries(); localQueries.hasNext(); ) { - OrmQuery localQuery = localQueries.next(); - for (Iterator<Query> globalQueries = this.getPersistenceUnit().queries(); globalQueries.hasNext(); ) { - if (localQuery.duplicates(globalQueries.next())) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.QUERY_DUPLICATE_NAME, - new String[] {localQuery.getName()}, - localQuery, - localQuery.getNameTextRange() - ) - ); - } - } - } - } - - /** - * Return all the queries, named and named native. - */ - @SuppressWarnings("unchecked") - protected Iterator<OrmQuery> queries() { - return new CompositeIterator<OrmQuery>( - this.namedQueries(), - this.namedNativeQueries() - ); - } - - protected void validatePersistentType(OrmPersistentType persistentType, List<IMessage> messages, IReporter reporter) { - try { - persistentType.validate(messages, reporter); - } catch (Throwable exception) { - JptCorePlugin.log(exception); - } - } - - - // ********** dispose ********** - - public void dispose() { - for (OrmPersistentType ormPersistentType : this.getPersistentTypes()) { - ormPersistentType.dispose(); - } - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmAttributeMapping.java deleted file mode 100644 index 97a128415e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmAttributeMapping.java +++ /dev/null @@ -1,258 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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.List; -import org.eclipse.jpt.core.context.RelationshipMapping; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmBaseEmbeddedMapping; -import org.eclipse.jpt.core.context.orm.OrmBasicMapping; -import org.eclipse.jpt.core.context.orm.OrmColumnMapping; -import org.eclipse.jpt.core.context.orm.OrmEmbeddedIdMapping; -import org.eclipse.jpt.core.context.orm.OrmEmbeddedMapping; -import org.eclipse.jpt.core.context.orm.OrmIdMapping; -import org.eclipse.jpt.core.context.orm.OrmManyToManyMapping; -import org.eclipse.jpt.core.context.orm.OrmManyToOneMapping; -import org.eclipse.jpt.core.context.orm.OrmMultiRelationshipMapping; -import org.eclipse.jpt.core.context.orm.OrmOneToManyMapping; -import org.eclipse.jpt.core.context.orm.OrmOneToOneMapping; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmRelationshipMapping; -import org.eclipse.jpt.core.context.orm.OrmSingleRelationshipMapping; -import org.eclipse.jpt.core.context.orm.OrmTransientMapping; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.context.orm.OrmVersionMapping; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.internal.StringTools; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -public abstract class AbstractOrmAttributeMapping<T extends XmlAttributeMapping> - extends AbstractXmlContextNode - implements OrmAttributeMapping -{ - protected String name; - - protected final T resourceAttributeMapping; - - protected AbstractOrmAttributeMapping(OrmPersistentAttribute parent, T resourceAttributeMapping) { - super(parent); - this.resourceAttributeMapping = resourceAttributeMapping; - this.name = this.getResourceMappingName(); - } - - protected JavaPersistentAttribute getJavaPersistentAttribute() { - return this.getPersistentAttribute().getJavaPersistentAttribute(); - } - - protected JavaResourcePersistentAttribute getJavaResourcePersistentAttribute() { - return this.getJavaPersistentAttribute().getResourcePersistentAttribute(); - } - - public String getName() { - return this.name; - } - - public void setName(String name) { - String old = this.name; - this.name = name; - this.resourceAttributeMapping.setName(name); - this.firePropertyChanged(NAME_PROPERTY, old, name); - this.getPersistentAttribute().nameChanged(old, name); - } - - protected void setName_(String name) { - String old = this.name; - this.name = name; - this.firePropertyChanged(NAME_PROPERTY, old, name); - this.getPersistentAttribute().nameChanged(old, name); - } - - public OrmPersistentAttribute getPersistentAttribute() { - return (OrmPersistentAttribute) getParent(); - } - - public boolean isDefault() { - return false; - } - - public void initializeFromOrmAttributeMapping(OrmAttributeMapping oldMapping) { - setName(oldMapping.getName()); - } - - public void initializeFromOrmColumnMapping(OrmColumnMapping oldMapping) { - initializeFromOrmAttributeMapping((OrmAttributeMapping) oldMapping); - } - - public void initializeFromOrmBasicMapping(OrmBasicMapping oldMapping) { - initializeFromOrmColumnMapping(oldMapping); - } - - public void initializeFromOrmIdMapping(OrmIdMapping oldMapping) { - initializeFromOrmColumnMapping(oldMapping); - } - - public void initializeFromOrmTransientMapping(OrmTransientMapping oldMapping) { - initializeFromOrmAttributeMapping(oldMapping); - } - - public void initializeFromOrmBaseEmbeddedMapping(OrmBaseEmbeddedMapping oldMapping) { - initializeFromOrmAttributeMapping(oldMapping); - } - - public void initializeFromOrmEmbeddedMapping(OrmEmbeddedMapping oldMapping) { - initializeFromOrmBaseEmbeddedMapping(oldMapping); - } - - public void initializeFromOrmEmbeddedIdMapping(OrmEmbeddedIdMapping oldMapping) { - initializeFromOrmBaseEmbeddedMapping(oldMapping); - } - - public void initializeFromOrmVersionMapping(OrmVersionMapping oldMapping) { - initializeFromOrmColumnMapping(oldMapping); - } - - public void initializeFromOrmRelationshipMapping(OrmRelationshipMapping oldMapping) { - initializeFromOrmAttributeMapping(oldMapping); - } - - public void initializeFromOrmMultiRelationshipMapping(OrmMultiRelationshipMapping oldMapping) { - initializeFromOrmRelationshipMapping(oldMapping); - } - - public void initializeFromOrmSingleRelationshipMapping(OrmSingleRelationshipMapping oldMapping) { - initializeFromOrmRelationshipMapping(oldMapping); - } - - public void initializeFromOrmOneToManyMapping(OrmOneToManyMapping oldMapping) { - initializeFromOrmMultiRelationshipMapping(oldMapping); - } - - public void initializeFromOrmManyToOneMapping(OrmManyToOneMapping oldMapping) { - initializeFromOrmSingleRelationshipMapping(oldMapping); - } - - public void initializeFromOrmOneToOneMapping(OrmOneToOneMapping oldMapping) { - initializeFromOrmSingleRelationshipMapping(oldMapping); - } - - public void initializeFromOrmManyToManyMapping(OrmManyToManyMapping oldMapping) { - initializeFromOrmMultiRelationshipMapping(oldMapping); - } - - public String getPrimaryKeyColumnName() { - return null; - } - - public OrmTypeMapping getTypeMapping() { - return this.getPersistentAttribute().getTypeMapping(); - } - - - public boolean isOverridableAttributeMapping() { - return false; - } - - public boolean isOverridableAssociationMapping() { - return false; - } - - public boolean isIdMapping() { - return false; - } - - public boolean isOwnedBy(RelationshipMapping mapping) { - // Default implementation - override where needed - return false; - } - - public T getResourceAttributeMapping() { - return this.resourceAttributeMapping; - } - - public void update() { - this.setName_(this.getResourceMappingName()); - } - - protected String getResourceMappingName() { - return this.resourceAttributeMapping.getName(); - } - - public boolean shouldValidateAgainstDatabase() { - return this.getTypeMapping().shouldValidateAgainstDatabase(); - } - - public boolean contains(int textOffset) { - return this.resourceAttributeMapping.containsOffset(textOffset); - } - - public TextRange getSelectionTextRange() { - return this.resourceAttributeMapping.getSelectionTextRange(); - } - - public TextRange getValidationTextRange() { - return (this.getPersistentAttribute().isVirtual()) ? this.getTypeMapping().getAttributesTextRange() : this.resourceAttributeMapping.getValidationTextRange(); - } - - public TextRange getNameTextRange() { - return this.resourceAttributeMapping.getNameTextRange(); - } - - - // ********** validation ********** - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - this.validateAttribute(messages); - this.validateMapping(messages); - } - - protected void validateAttribute(List<IMessage> messages) { - if (StringTools.stringIsEmpty(this.name)) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.PERSISTENT_ATTRIBUTE_UNSPECIFIED_NAME, - this, - this.getValidationTextRange() - ) - ); - return; - } - } - - //TODO validation message - i think more info is needed in this message. include type mapping type? - protected void validateMapping(List<IMessage> messages) { - if ( ! this.getTypeMapping().attributeMappingKeyAllowed(this.getKey())) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.PERSISTENT_ATTRIBUTE_INVALID_MAPPING, - new String[] {this.name}, - this, - this.getValidationTextRange() - ) - ); - } - } - - @Override - public void toString(StringBuilder sb) { - sb.append(this.getName()); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBaseColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBaseColumn.java deleted file mode 100644 index 25a186970b..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBaseColumn.java +++ /dev/null @@ -1,308 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.jpt.core.context.BaseColumn; -import org.eclipse.jpt.core.context.XmlContextNode; -import org.eclipse.jpt.core.context.orm.OrmBaseColumn; -import org.eclipse.jpt.core.resource.orm.XmlAbstractColumn; -import org.eclipse.jpt.core.utility.TextRange; - - -public abstract class AbstractOrmBaseColumn<T extends XmlAbstractColumn> extends AbstractOrmNamedColumn<T> - implements OrmBaseColumn -{ - protected String specifiedTable; - - protected String defaultTable; - - protected Boolean specifiedUnique; - - protected Boolean specifiedNullable; - - protected Boolean specifiedInsertable; - - protected Boolean specifiedUpdatable; - - protected AbstractOrmBaseColumn(XmlContextNode parent, OrmBaseColumn.Owner owner) { - super(parent, owner); - } - - public void initializeFrom(BaseColumn oldColumn) { - super.initializeFrom(oldColumn); - setSpecifiedTable(oldColumn.getSpecifiedTable()); - setSpecifiedUnique(oldColumn.getSpecifiedUnique()); - setSpecifiedNullable(oldColumn.getSpecifiedNullable()); - setSpecifiedInsertable(oldColumn.getSpecifiedInsertable()); - setSpecifiedUpdatable(oldColumn.getSpecifiedUpdatable()); - } - - @Override - public OrmBaseColumn.Owner getOwner() { - return (OrmBaseColumn.Owner) super.getOwner(); - } - -// @Override -// protected void addInsignificantXmlFeatureIdsTo(Set<Integer> insignificantXmlFeatureIds) { -// super.addInsignificantXmlFeatureIdsTo(insignificantXmlFeatureIds); -// insignificantXmlFeatureIds.add(JpaCoreMappingsPackage.IABSTRACT_COLUMN__DEFAULT_TABLE); -// insignificantXmlFeatureIds.add(JpaCoreMappingsPackage.IABSTRACT_COLUMN__TABLE); -// } - - public String getTable() { - return (this.getSpecifiedTable() == null) ? getDefaultTable() : this.getSpecifiedTable(); - } - - public String getSpecifiedTable() { - return this.specifiedTable; - } - - public void setSpecifiedTable(String newSpecifiedTable) { - String oldSpecifiedTable = this.specifiedTable; - this.specifiedTable = newSpecifiedTable; - if (oldSpecifiedTable != newSpecifiedTable) { - if (this.getResourceColumn() != null) { - this.getResourceColumn().setTable(newSpecifiedTable); - if (this.getResourceColumn().isUnset()) { - removeResourceColumn(); - } - } - else if (newSpecifiedTable != null) { - addResourceColumn(); - getResourceColumn().setTable(newSpecifiedTable); - } - } - firePropertyChanged(BaseColumn.SPECIFIED_TABLE_PROPERTY, oldSpecifiedTable, newSpecifiedTable); - } - - protected void setSpecifiedTable_(String newSpecifiedTable) { - String oldSpecifiedTable = this.specifiedTable; - this.specifiedTable = newSpecifiedTable; - firePropertyChanged(BaseColumn.SPECIFIED_TABLE_PROPERTY, oldSpecifiedTable, newSpecifiedTable); - } - - public String getDefaultTable() { - return this.defaultTable; - } - - protected void setDefaultTable(String newDefaultTable) { - String oldDefaultTable = this.defaultTable; - this.defaultTable = newDefaultTable; - firePropertyChanged(BaseColumn.DEFAULT_TABLE_PROPERTY, oldDefaultTable, newDefaultTable); - } - - public boolean isUnique() { - return (this.getSpecifiedUnique() == null) ? this.isDefaultUnique() : this.getSpecifiedUnique().booleanValue(); - } - - public boolean isDefaultUnique() { - return BaseColumn.DEFAULT_UNIQUE; - } - - public Boolean getSpecifiedUnique() { - return this.specifiedUnique; - } - - public void setSpecifiedUnique(Boolean newSpecifiedUnique) { - Boolean oldSpecifiedUnique = this.specifiedUnique; - this.specifiedUnique = newSpecifiedUnique; - if (oldSpecifiedUnique != newSpecifiedUnique) { - if (this.getResourceColumn() != null) { - this.getResourceColumn().setUnique(newSpecifiedUnique); - if (this.getResourceColumn().isUnset()) { - removeResourceColumn(); - } - } - else if (newSpecifiedUnique != null) { - addResourceColumn(); - getResourceColumn().setUnique(newSpecifiedUnique); - } - } - firePropertyChanged(BaseColumn.SPECIFIED_UNIQUE_PROPERTY, oldSpecifiedUnique, newSpecifiedUnique); - } - - protected void setSpecifiedUnique_(Boolean newSpecifiedUnique) { - Boolean oldSpecifiedUnique = this.specifiedUnique; - this.specifiedUnique = newSpecifiedUnique; - firePropertyChanged(BaseColumn.SPECIFIED_UNIQUE_PROPERTY, oldSpecifiedUnique, newSpecifiedUnique); - } - - public boolean isNullable() { - return (this.getSpecifiedNullable() == null) ? this.isDefaultNullable() : this.getSpecifiedNullable().booleanValue(); - } - - public boolean isDefaultNullable() { - return BaseColumn.DEFAULT_NULLABLE; - } - - public Boolean getSpecifiedNullable() { - return this.specifiedNullable; - } - - public void setSpecifiedNullable(Boolean newSpecifiedNullable) { - Boolean oldSpecifiedNullable = this.specifiedNullable; - this.specifiedNullable = newSpecifiedNullable; - if (oldSpecifiedNullable != newSpecifiedNullable) { - if (this.getResourceColumn() != null) { - this.getResourceColumn().setNullable(newSpecifiedNullable); - if (this.getResourceColumn().isUnset()) { - removeResourceColumn(); - } - } - else if (newSpecifiedNullable != null) { - addResourceColumn(); - getResourceColumn().setNullable(newSpecifiedNullable); - } - } - firePropertyChanged(BaseColumn.SPECIFIED_NULLABLE_PROPERTY, oldSpecifiedNullable, newSpecifiedNullable); - } - - protected void setSpecifiedNullable_(Boolean newSpecifiedNullable) { - Boolean oldSpecifiedNullable = this.specifiedNullable; - this.specifiedNullable = newSpecifiedNullable; - firePropertyChanged(BaseColumn.SPECIFIED_NULLABLE_PROPERTY, oldSpecifiedNullable, newSpecifiedNullable); - } - - public boolean isInsertable() { - return (this.getSpecifiedInsertable() == null) ? this.isDefaultInsertable() : this.getSpecifiedInsertable().booleanValue(); - } - - public boolean isDefaultInsertable() { - return BaseColumn.DEFAULT_INSERTABLE; - } - - public Boolean getSpecifiedInsertable() { - return this.specifiedInsertable; - } - - public void setSpecifiedInsertable(Boolean newSpecifiedInsertable) { - Boolean oldSpecifiedInsertable = this.specifiedInsertable; - this.specifiedInsertable = newSpecifiedInsertable; - if (oldSpecifiedInsertable != newSpecifiedInsertable) { - if (this.getResourceColumn() != null) { - this.getResourceColumn().setInsertable(newSpecifiedInsertable); - if (this.getResourceColumn().isUnset()) { - removeResourceColumn(); - } - } - else if (newSpecifiedInsertable != null) { - addResourceColumn(); - getResourceColumn().setInsertable(newSpecifiedInsertable); - } - } - firePropertyChanged(BaseColumn.SPECIFIED_INSERTABLE_PROPERTY, oldSpecifiedInsertable, newSpecifiedInsertable); - } - - protected void setSpecifiedInsertable_(Boolean newSpecifiedInsertable) { - Boolean oldSpecifiedInsertable = this.specifiedInsertable; - this.specifiedInsertable = newSpecifiedInsertable; - firePropertyChanged(BaseColumn.SPECIFIED_INSERTABLE_PROPERTY, oldSpecifiedInsertable, newSpecifiedInsertable); - } - - public boolean isUpdatable() { - return (this.getSpecifiedUpdatable() == null) ? this.isDefaultUpdatable() : this.getSpecifiedUpdatable().booleanValue(); - } - - public boolean isDefaultUpdatable() { - return BaseColumn.DEFAULT_UPDATABLE; - } - - public Boolean getSpecifiedUpdatable() { - return this.specifiedUpdatable; - } - - public void setSpecifiedUpdatable(Boolean newSpecifiedUpdatable) { - Boolean oldSpecifiedUpdatable = this.specifiedUpdatable; - this.specifiedUpdatable = newSpecifiedUpdatable; - if (oldSpecifiedUpdatable != newSpecifiedUpdatable) { - if (this.getResourceColumn() != null) { - this.getResourceColumn().setUpdatable(newSpecifiedUpdatable); - if (this.getResourceColumn().isUnset()) { - removeResourceColumn(); - } - } - else if (newSpecifiedUpdatable != null) { - addResourceColumn(); - getResourceColumn().setUpdatable(newSpecifiedUpdatable); - } - } - firePropertyChanged(BaseColumn.SPECIFIED_UPDATABLE_PROPERTY, oldSpecifiedUpdatable, newSpecifiedUpdatable); - } - - protected void setSpecifiedUpdatable_(Boolean newSpecifiedUpdatable) { - Boolean oldSpecifiedUpdatable = this.specifiedUpdatable; - this.specifiedUpdatable = newSpecifiedUpdatable; - firePropertyChanged(BaseColumn.SPECIFIED_UPDATABLE_PROPERTY, oldSpecifiedUpdatable, newSpecifiedUpdatable); - } - - @Override - protected String getOwningTableName() { - return this.getTable(); - } - - - public TextRange getTableTextRange() { - if (getResourceColumn() != null) { - TextRange textRange = getResourceColumn().getTableTextRange(); - if (textRange != null) { - return textRange; - } - } - return this.getParent().getValidationTextRange(); - } - - @Override - protected void initialize(T column) { - super.initialize(column); - this.specifiedTable = this.getResourceTable(column); - this.defaultTable = this.getOwnerDefaultTableName(); - //TODO default from java for all of these settings - this.specifiedNullable = this.getResourceNullable(column); - this.specifiedUpdatable = this.getResourceUpdatable(column); - this.specifiedUnique = this.getResourceUnique(column); - this.specifiedInsertable = this.getResourceInsertable(column); - } - - @Override - protected void update(T column) { - super.update(column); - setSpecifiedTable_(this.getResourceTable(column)); - setDefaultTable(this.getOwnerDefaultTableName()); - setSpecifiedNullable_(this.getResourceNullable(column)); - setSpecifiedUpdatable_(this.getResourceUpdatable(column)); - setSpecifiedUnique_(this.getResourceUnique(column)); - setSpecifiedInsertable_(this.getResourceInsertable(column)); - } - - protected String getResourceTable(T column) { - return column == null ? null : column.getTable(); - } - - protected Boolean getResourceNullable(T column) { - return column == null ? null : column.getNullable(); - } - - protected Boolean getResourceUpdatable(T column) { - return column == null ? null : column.getUpdatable(); - } - - protected Boolean getResourceUnique(T column) { - return column == null ? null : column.getUnique(); - } - - protected Boolean getResourceInsertable(T column) { - return column == null ? null : column.getInsertable(); - } - - protected String getOwnerDefaultTableName() { - return getOwner().getDefaultTableName(); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBaseEmbeddedMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBaseEmbeddedMapping.java deleted file mode 100644 index 60f35b59a3..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBaseEmbeddedMapping.java +++ /dev/null @@ -1,357 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.eclipse.jpt.core.context.BaseEmbeddedMapping; -import org.eclipse.jpt.core.context.BaseOverride; -import org.eclipse.jpt.core.context.ColumnMapping; -import org.eclipse.jpt.core.context.Embeddable; -import org.eclipse.jpt.core.context.PersistentAttribute; -import org.eclipse.jpt.core.context.java.JavaAttributeOverride; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmAttributeOverride; -import org.eclipse.jpt.core.context.orm.OrmBaseEmbeddedMapping; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.internal.context.MappingTools; -import org.eclipse.jpt.core.internal.context.java.AbstractJavaBaseEmbeddedMapping; -import org.eclipse.jpt.core.resource.orm.BaseXmlEmbedded; -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.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterators.CloneIterator; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; -import org.eclipse.jpt.utility.internal.iterators.CompositeListIterator; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; -import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; -import org.eclipse.jpt.utility.internal.iterators.TransformationIterator; - - -public abstract class AbstractOrmBaseEmbeddedMapping<T extends BaseXmlEmbedded> extends AbstractOrmAttributeMapping<T> implements OrmBaseEmbeddedMapping -{ - protected final List<OrmAttributeOverride> specifiedAttributeOverrides; - - protected final List<OrmAttributeOverride> virtualAttributeOverrides; - - private Embeddable embeddable;//TODO hmm, why no property change notification for setting this?? - - protected AbstractOrmBaseEmbeddedMapping(OrmPersistentAttribute parent, T resourceMapping) { - super(parent, resourceMapping); - this.embeddable = embeddableFor(this.getJavaPersistentAttribute()); - this.specifiedAttributeOverrides = new ArrayList<OrmAttributeOverride>(); - this.virtualAttributeOverrides = new ArrayList<OrmAttributeOverride>(); - this.initializeSpecifiedAttributeOverrides(); - this.initializeVirtualAttributeOverrides(); - } - - @Override - public void initializeFromOrmBaseEmbeddedMapping(OrmBaseEmbeddedMapping oldMapping) { - super.initializeFromOrmBaseEmbeddedMapping(oldMapping); - int index = 0; - for (OrmAttributeOverride attributeOverride : CollectionTools.iterable(oldMapping.specifiedAttributeOverrides())) { - OrmAttributeOverride newAttributeOverride = addSpecifiedAttributeOverride(index++); - newAttributeOverride.setName(attributeOverride.getName()); - newAttributeOverride.getColumn().initializeFrom(attributeOverride.getColumn()); - } - } - - @SuppressWarnings("unchecked") - public ListIterator<OrmAttributeOverride> attributeOverrides() { - return new CompositeListIterator<OrmAttributeOverride>(specifiedAttributeOverrides(), virtualAttributeOverrides()); - } - - public int attributeOverridesSize() { - return this.specifiedAttributeOverridesSize() + this.virtualAttributeOverridesSize(); - } - - public ListIterator<OrmAttributeOverride> virtualAttributeOverrides() { - return new CloneListIterator<OrmAttributeOverride>(this.virtualAttributeOverrides); - } - protected void addVirtualAttributeOverride(OrmAttributeOverride attributeOverride) { - addItemToList(attributeOverride, this.virtualAttributeOverrides, BaseEmbeddedMapping.VIRTUAL_ATTRIBUTE_OVERRIDES_LIST); - } - - protected void removeVirtualAttributeOverride(OrmAttributeOverride attributeOverride) { - removeItemFromList(attributeOverride, this.virtualAttributeOverrides, BaseEmbeddedMapping.VIRTUAL_ATTRIBUTE_OVERRIDES_LIST); - } - - public int virtualAttributeOverridesSize() { - return this.virtualAttributeOverrides.size(); - } - - public ListIterator<OrmAttributeOverride> specifiedAttributeOverrides() { - return new CloneListIterator<OrmAttributeOverride>(this.specifiedAttributeOverrides); - } - - public int specifiedAttributeOverridesSize() { - return this.specifiedAttributeOverrides.size(); - } - - protected OrmAttributeOverride addSpecifiedAttributeOverride(int index) { - XmlAttributeOverride xmlAttributeOverride = OrmFactory.eINSTANCE.createXmlAttributeOverrideImpl(); - OrmAttributeOverride attributeOverride = buildAttributeOverride(xmlAttributeOverride); - this.specifiedAttributeOverrides.add(index, attributeOverride); - this.resourceAttributeMapping.getAttributeOverrides().add(index, xmlAttributeOverride); - this.fireItemAdded(BaseEmbeddedMapping.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST, index, attributeOverride); - return attributeOverride; - } - - protected void addSpecifiedAttributeOverride(int index, OrmAttributeOverride attributeOverride) { - addItemToList(index, attributeOverride, this.specifiedAttributeOverrides, BaseEmbeddedMapping.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST); - } - - protected void addSpecifiedAttributeOverride(OrmAttributeOverride attributeOverride) { - this.addSpecifiedAttributeOverride(this.specifiedAttributeOverrides.size(), attributeOverride); - } - - protected void removeSpecifiedAttributeOverride_(OrmAttributeOverride attributeOverride) { - removeItemFromList(attributeOverride, this.specifiedAttributeOverrides, BaseEmbeddedMapping.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST); - } - - public void moveSpecifiedAttributeOverride(int targetIndex, int sourceIndex) { - CollectionTools.move(this.specifiedAttributeOverrides, targetIndex, sourceIndex); - this.resourceAttributeMapping.getAttributeOverrides().move(targetIndex, sourceIndex); - fireItemMoved(BaseEmbeddedMapping.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST, targetIndex, sourceIndex); - } - - public OrmAttributeOverride getAttributeOverrideNamed(String attributeName) { - return (OrmAttributeOverride) getOverrideNamed(attributeName, attributeOverrides()); - } - - protected BaseOverride getOverrideNamed(String name, ListIterator<? extends BaseOverride> overrides) { - for (BaseOverride override : CollectionTools.iterable(overrides)) { - String overrideName = override.getName(); - if (overrideName == null && name == null) { - return override; - } - if (overrideName != null && overrideName.equals(name)) { - return override; - } - } - return null; - } - - //****************** AttributeOverride.Owner implemenation ******************* - - public boolean isVirtual(BaseOverride override) { - return this.virtualAttributeOverrides.contains(override); - } - - public BaseOverride setVirtual(boolean virtual, BaseOverride override) { - // Add a new attribute override - if (virtual) { - return setVirtual((OrmAttributeOverride) override); - } - return setSpecified((OrmAttributeOverride) override); - } - - protected OrmAttributeOverride setVirtual(OrmAttributeOverride attributeOverride) { - int index = this.specifiedAttributeOverrides.indexOf(attributeOverride); - this.specifiedAttributeOverrides.remove(index); - String attributeOverrideName = attributeOverride.getName(); - //add the virtual attribute override so that I can control the order that change notification is sent. - //otherwise when we remove the annotation from java we will get an update and add the attribute override - //during the udpate. This causes the UI to be flaky, since change notification might not occur in the correct order - OrmAttributeOverride virtualAttributeOverride = null; - if (attributeOverrideName != null) { - for (PersistentAttribute persistentAttribute : CollectionTools.iterable(allOverridableAttributes())) { - if (persistentAttribute.getName().equals(attributeOverrideName)) { - JavaAttributeOverride javaAttributeOverride = null; - if (getJavaEmbeddedMapping() != null) { - javaAttributeOverride = getJavaEmbeddedMapping().getAttributeOverrideNamed(attributeOverrideName); - } - //store the virtualAttributeOverride so we can fire change notification later - virtualAttributeOverride = buildVirtualAttributeOverride(persistentAttribute, javaAttributeOverride); - this.virtualAttributeOverrides.add(virtualAttributeOverride); - } - } - } - - this.resourceAttributeMapping.getAttributeOverrides().remove(index); - fireItemRemoved(BaseEmbeddedMapping.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST, index, attributeOverride); - - if (virtualAttributeOverride != null) { - fireItemAdded(BaseEmbeddedMapping.VIRTUAL_ATTRIBUTE_OVERRIDES_LIST, virtualAttributeOverridesSize() - 1, virtualAttributeOverride); - } - return virtualAttributeOverride; - } - - protected OrmAttributeOverride setSpecified(OrmAttributeOverride oldAttributeOverride) { - int index = specifiedAttributeOverridesSize(); - XmlAttributeOverride xmlAttributeOverride = OrmFactory.eINSTANCE.createXmlAttributeOverrideImpl(); - OrmAttributeOverride newAttributeOverride = getJpaFactory().buildOrmAttributeOverride(this, this, xmlAttributeOverride); - this.specifiedAttributeOverrides.add(index, newAttributeOverride); - - this.resourceAttributeMapping.getAttributeOverrides().add(xmlAttributeOverride); - - int defaultIndex = this.virtualAttributeOverrides.indexOf(oldAttributeOverride); - this.virtualAttributeOverrides.remove(defaultIndex); - - newAttributeOverride.setName(oldAttributeOverride.getName()); - newAttributeOverride.getColumn().setSpecifiedName(oldAttributeOverride.getColumn().getName()); - - this.fireItemRemoved(BaseEmbeddedMapping.VIRTUAL_ATTRIBUTE_OVERRIDES_LIST, defaultIndex, oldAttributeOverride); - this.fireItemAdded(BaseEmbeddedMapping.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST, index, newAttributeOverride); - - return newAttributeOverride; - } - - public ColumnMapping getColumnMapping(String attributeName) { - return MappingTools.getColumnMapping(attributeName, getEmbeddable()); - } - - public Embeddable getEmbeddable() { - return this.embeddable; - } - - public Iterator<String> allOverridableAttributeNames() { - return new TransformationIterator<PersistentAttribute, String>(this.allOverridableAttributes()) { - @Override - protected String transform(PersistentAttribute attribute) { - return attribute.getName(); - } - }; - } - - public Iterator<PersistentAttribute> allOverridableAttributes() { - if (this.getEmbeddable() == null) { - return EmptyIterator.instance(); - } - return new FilteringIterator<PersistentAttribute, PersistentAttribute>(this.getEmbeddable().getPersistentType().attributes()) { - @Override - protected boolean accept(PersistentAttribute o) { - return o.isOverridableAttribute(); - } - }; - } - - public AbstractJavaBaseEmbeddedMapping<?> getJavaEmbeddedMapping() { - if (this.getJavaPersistentAttribute() != null && this.getJavaPersistentAttribute().getMappingKey() == getKey()) { - return (AbstractJavaBaseEmbeddedMapping<?>) this.getJavaPersistentAttribute().getMapping(); - } - return null; - } - - protected void initializeSpecifiedAttributeOverrides() { - for (XmlAttributeOverride attributeOverride : this.resourceAttributeMapping.getAttributeOverrides()) { - this.specifiedAttributeOverrides.add(buildAttributeOverride(attributeOverride)); - } - } - - protected void initializeVirtualAttributeOverrides() { - if (getPersistentAttribute().isVirtual()) { - //specifiedAttributeOverrides are used if the persistentAttribute is virtual - return; - } - for (PersistentAttribute persistentAttribute : CollectionTools.iterable(allOverridableAttributes())) { - OrmAttributeOverride attributeOverride = getAttributeOverrideNamed(persistentAttribute.getName()); - if (attributeOverride == null) { - JavaAttributeOverride javaAttributeOverride = null; - if (getJavaEmbeddedMapping() != null) { - javaAttributeOverride = getJavaEmbeddedMapping().getAttributeOverrideNamed(persistentAttribute.getName()); - } - this.virtualAttributeOverrides.add(buildVirtualAttributeOverride(persistentAttribute, javaAttributeOverride)); - } - } - } - - protected OrmAttributeOverride buildVirtualAttributeOverride(PersistentAttribute persistentAttribute, JavaAttributeOverride javaAttributeOverride) { - return buildAttributeOverride(buildVirtualXmlAttributeOverride(persistentAttribute, javaAttributeOverride)); - } - - protected XmlAttributeOverride buildVirtualXmlAttributeOverride(PersistentAttribute persistentAttribute, JavaAttributeOverride javaAttributeOverride) { - XmlColumn xmlColumn; - if (javaAttributeOverride == null || !isDefault()) { - ColumnMapping columnMapping = (ColumnMapping) persistentAttribute.getMapping(); - xmlColumn = new VirtualXmlColumn(getTypeMapping(), columnMapping.getColumn()); - } - else { - xmlColumn = new VirtualXmlColumn(getTypeMapping(), javaAttributeOverride.getColumn()); - } - return new VirtualXmlAttributeOverride(persistentAttribute.getName(), xmlColumn); - } - - protected OrmAttributeOverride buildAttributeOverride(XmlAttributeOverride attributeOverride) { - return getJpaFactory().buildOrmAttributeOverride(this, this, attributeOverride); - } - - @Override - public void update() { - super.update(); - this.embeddable = embeddableFor(this.getJavaPersistentAttribute()); - this.updateSpecifiedAttributeOverrides(); - this.updateVirtualAttributeOverrides(); - } - - protected void updateSpecifiedAttributeOverrides() { - // make a copy of the XML overrides (to prevent ConcurrentModificationException) - Iterator<XmlAttributeOverride> xmlOverrides = new CloneIterator<XmlAttributeOverride>(this.resourceAttributeMapping.getAttributeOverrides()); - - for (Iterator<OrmAttributeOverride> contextOverrides = this.specifiedAttributeOverrides(); contextOverrides.hasNext(); ) { - OrmAttributeOverride contextOverride = contextOverrides.next(); - if (xmlOverrides.hasNext()) { - contextOverride.update(xmlOverrides.next()); - } - else { - removeSpecifiedAttributeOverride_(contextOverride); - } - } - - while (xmlOverrides.hasNext()) { - addSpecifiedAttributeOverride(buildAttributeOverride(xmlOverrides.next())); - } - } - - protected void updateVirtualAttributeOverrides() { - Iterator<PersistentAttribute> overridableAttributes = allOverridableAttributes(); - ListIterator<OrmAttributeOverride> virtualAttributeOverrides = virtualAttributeOverrides(); - - if (!getPersistentAttribute().isVirtual()) { - //specifiedAttributeOverrides are used if the persistentAttribute is virtual - for (PersistentAttribute persistentAttribute : CollectionTools.iterable(overridableAttributes)) { - OrmAttributeOverride ormAttributeOverride = getAttributeOverrideNamed(persistentAttribute.getName()); - if (ormAttributeOverride != null && !ormAttributeOverride.isVirtual()) { - continue; - } - JavaAttributeOverride javaAttributeOverride = null; - if (getJavaEmbeddedMapping() != null) { - javaAttributeOverride = getJavaEmbeddedMapping().getAttributeOverrideNamed(persistentAttribute.getName()); - } - if (ormAttributeOverride != null) { - if (virtualAttributeOverrides.hasNext()) { - OrmAttributeOverride virtualAttributeOverride = virtualAttributeOverrides.next(); - virtualAttributeOverride.update(buildVirtualXmlAttributeOverride(persistentAttribute, javaAttributeOverride)); - } - else { - addVirtualAttributeOverride(buildVirtualAttributeOverride(persistentAttribute, javaAttributeOverride)); - } - } - else { - addVirtualAttributeOverride(buildVirtualAttributeOverride(persistentAttribute, javaAttributeOverride)); - } - } - } - for (OrmAttributeOverride virtualAttributeOverride : CollectionTools.iterable(virtualAttributeOverrides)) { - removeVirtualAttributeOverride(virtualAttributeOverride); - } - - } - - //************ static methods ************ - - public static Embeddable embeddableFor(JavaPersistentAttribute javaPersistentAttribute) { - return (javaPersistentAttribute == null) ? null : javaPersistentAttribute.getEmbeddable(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEmbeddable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEmbeddable.java deleted file mode 100644 index 58c47e39cc..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEmbeddable.java +++ /dev/null @@ -1,84 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.Table; -import org.eclipse.jpt.core.context.java.JavaEmbeddable; -import org.eclipse.jpt.core.context.java.JavaPersistentType; -import org.eclipse.jpt.core.context.orm.OrmEmbeddable; -import org.eclipse.jpt.core.context.orm.OrmPersistentType; -import org.eclipse.jpt.core.resource.orm.XmlEmbeddable; -import org.eclipse.jpt.core.resource.orm.XmlEntityMappings; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; - - -public abstract class AbstractOrmEmbeddable extends AbstractOrmTypeMapping<XmlEmbeddable> implements OrmEmbeddable -{ - protected AbstractOrmEmbeddable(OrmPersistentType parent, XmlEmbeddable resourceMapping) { - super(parent, resourceMapping); - } - - public String getKey() { - return MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY; - } - - public int getXmlSequence() { - return 2; - } - - public JavaEmbeddable getJavaEmbeddable() { - JavaPersistentType javaPersistentType = this.getJavaPersistentType(); - if (javaPersistentType != null && javaPersistentType.getMappingKey() == MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY) { - return (JavaEmbeddable) javaPersistentType.getMapping(); - } - return null; - } - - /** - * This checks metaDataComplete before returning the JavaEmbeddable. - * As far as defaults are concerned, if metadataComplete is true, the JavaEmbeddable is ignored. - */ - protected JavaEmbeddable getJavaEmbeddableForDefaults() { - if (isMetadataComplete()) { - return null; - } - return getJavaEmbeddable(); - } - - public boolean tableNameIsInvalid(String tableName) { - return false; - } - - @Override - public boolean shouldValidateAgainstDatabase() { - return false; - } - - public Iterator<String> associatedTableNamesIncludingInherited() { - return EmptyIterator.instance(); - } - - public Iterator<Table> associatedTables() { - return EmptyIterator.instance(); - } - - public Iterator<Table> associatedTablesIncludingInherited() { - return EmptyIterator.instance(); - } - - public void addToResourceModel(XmlEntityMappings entityMappings) { - entityMappings.getEmbeddables().add(this.resourceTypeMapping); - } - - public void removeFromResourceModel(XmlEntityMappings entityMappings) { - entityMappings.getEmbeddables().remove(this.resourceTypeMapping); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEntity.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEntity.java deleted file mode 100644 index 118fb97f78..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEntity.java +++ /dev/null @@ -1,2488 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.JpaValidation.Supported; -import org.eclipse.jpt.core.context.AssociationOverride; -import org.eclipse.jpt.core.context.AttributeOverride; -import org.eclipse.jpt.core.context.BaseJoinColumn; -import org.eclipse.jpt.core.context.BaseOverride; -import org.eclipse.jpt.core.context.ColumnMapping; -import org.eclipse.jpt.core.context.DiscriminatorColumn; -import org.eclipse.jpt.core.context.DiscriminatorType; -import org.eclipse.jpt.core.context.Entity; -import org.eclipse.jpt.core.context.Generator; -import org.eclipse.jpt.core.context.InheritanceType; -import org.eclipse.jpt.core.context.NamedNativeQuery; -import org.eclipse.jpt.core.context.NamedQuery; -import org.eclipse.jpt.core.context.PersistentAttribute; -import org.eclipse.jpt.core.context.PersistentType; -import org.eclipse.jpt.core.context.PrimaryKeyJoinColumn; -import org.eclipse.jpt.core.context.Query; -import org.eclipse.jpt.core.context.RelationshipMapping; -import org.eclipse.jpt.core.context.SecondaryTable; -import org.eclipse.jpt.core.context.Table; -import org.eclipse.jpt.core.context.TypeMapping; -import org.eclipse.jpt.core.context.java.JavaAttributeOverride; -import org.eclipse.jpt.core.context.java.JavaEntity; -import org.eclipse.jpt.core.context.java.JavaPersistentType; -import org.eclipse.jpt.core.context.java.JavaPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.context.java.JavaSecondaryTable; -import org.eclipse.jpt.core.context.java.JavaTable; -import org.eclipse.jpt.core.context.orm.OrmAssociationOverride; -import org.eclipse.jpt.core.context.orm.OrmAttributeOverride; -import org.eclipse.jpt.core.context.orm.OrmBaseJoinColumn; -import org.eclipse.jpt.core.context.orm.OrmDiscriminatorColumn; -import org.eclipse.jpt.core.context.orm.OrmEntity; -import org.eclipse.jpt.core.context.orm.OrmGenerator; -import org.eclipse.jpt.core.context.orm.OrmNamedNativeQuery; -import org.eclipse.jpt.core.context.orm.OrmNamedQuery; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmPersistentType; -import org.eclipse.jpt.core.context.orm.OrmPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.context.orm.OrmQuery; -import org.eclipse.jpt.core.context.orm.OrmSecondaryTable; -import org.eclipse.jpt.core.context.orm.OrmSequenceGenerator; -import org.eclipse.jpt.core.context.orm.OrmTable; -import org.eclipse.jpt.core.context.orm.OrmTableGenerator; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; -import org.eclipse.jpt.core.resource.orm.Inheritance; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlAssociationOverride; -import org.eclipse.jpt.core.resource.orm.XmlAttributeOverride; -import org.eclipse.jpt.core.resource.orm.XmlColumn; -import org.eclipse.jpt.core.resource.orm.XmlEntity; -import org.eclipse.jpt.core.resource.orm.XmlEntityMappings; -import org.eclipse.jpt.core.resource.orm.XmlIdClass; -import org.eclipse.jpt.core.resource.orm.XmlNamedNativeQuery; -import org.eclipse.jpt.core.resource.orm.XmlNamedQuery; -import org.eclipse.jpt.core.resource.orm.XmlPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.resource.orm.XmlSecondaryTable; -import org.eclipse.jpt.core.resource.orm.XmlSequenceGenerator; -import org.eclipse.jpt.core.resource.orm.XmlTableGenerator; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Schema; -import org.eclipse.jpt.utility.internal.ClassTools; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterators.CloneIterator; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; -import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; -import org.eclipse.jpt.utility.internal.iterators.CompositeListIterator; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; -import org.eclipse.jpt.utility.internal.iterators.EmptyListIterator; -import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; -import org.eclipse.jpt.utility.internal.iterators.TransformationIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -public abstract class AbstractOrmEntity - extends AbstractOrmTypeMapping<XmlEntity> - implements OrmEntity -{ - protected String specifiedName; - - protected String defaultName; - - protected String idClass; - - protected final OrmTable table; - - protected boolean specifiedTableIsAllowed; - - protected boolean tableIsUndefined; - - protected final List<OrmSecondaryTable> specifiedSecondaryTables; - - protected final List<OrmSecondaryTable> virtualSecondaryTables; - - protected final List<OrmPrimaryKeyJoinColumn> specifiedPrimaryKeyJoinColumns; - - protected final List<OrmPrimaryKeyJoinColumn> defaultPrimaryKeyJoinColumns; - - protected InheritanceType specifiedInheritanceStrategy; - - protected InheritanceType defaultInheritanceStrategy; - - protected String defaultDiscriminatorValue; - - protected String specifiedDiscriminatorValue; - - protected boolean specifiedDiscriminatorValueIsAllowed; - - protected boolean discriminatorValueIsUndefined; - - protected final OrmDiscriminatorColumn discriminatorColumn; - - protected boolean specifiedDiscriminatorColumnIsAllowed; - - protected boolean discriminatorColumnIsUndefined; - - protected OrmSequenceGenerator sequenceGenerator; - - protected OrmTableGenerator tableGenerator; - - protected final List<OrmAttributeOverride> specifiedAttributeOverrides; - - protected final List<OrmAttributeOverride> virtualAttributeOverrides; - - protected final List<OrmAssociationOverride> specifiedAssociationOverrides; - - protected final List<OrmAssociationOverride> virtualAssociationOverrides; - - protected final List<OrmNamedQuery> namedQueries; - - protected final List<OrmNamedNativeQuery> namedNativeQueries; - - protected Entity rootEntity; - - protected AbstractOrmEntity(OrmPersistentType parent, XmlEntity resourceMapping) { - super(parent, resourceMapping); - this.table = getJpaFactory().buildOrmTable(this); - this.specifiedSecondaryTables = new ArrayList<OrmSecondaryTable>(); - this.virtualSecondaryTables = new ArrayList<OrmSecondaryTable>(); - this.discriminatorColumn = buildDiscriminatorColumn(); - this.specifiedPrimaryKeyJoinColumns = new ArrayList<OrmPrimaryKeyJoinColumn>(); - this.defaultPrimaryKeyJoinColumns = new ArrayList<OrmPrimaryKeyJoinColumn>(); - this.specifiedAttributeOverrides = new ArrayList<OrmAttributeOverride>(); - this.virtualAttributeOverrides = new ArrayList<OrmAttributeOverride>(); - this.specifiedAssociationOverrides = new ArrayList<OrmAssociationOverride>(); - this.virtualAssociationOverrides = new ArrayList<OrmAssociationOverride>(); - this.namedQueries = new ArrayList<OrmNamedQuery>(); - this.namedNativeQueries = new ArrayList<OrmNamedNativeQuery>(); - this.specifiedName = this.resourceTypeMapping.getName(); - this.defaultName = this.buildDefaultName(); - this.rootEntity = this.calculateRootEntity(); - this.initializeInheritance(this.getResourceInheritance()); - this.specifiedDiscriminatorColumnIsAllowed = this.buildSpecifiedDiscriminatorColumnIsAllowed(); - this.discriminatorColumnIsUndefined = this.buildDiscriminatorColumnIsUndefined(); - this.discriminatorColumn.initialize(this.resourceTypeMapping); //TODO pass in to constructor - this.specifiedDiscriminatorValueIsAllowed = this.buildSpecifiedDiscriminatorValueIsAllowed(); - this.discriminatorValueIsUndefined = this.buildDiscriminatorValueIsUndefined(); - this.specifiedDiscriminatorValue = this.resourceTypeMapping.getDiscriminatorValue(); - this.defaultDiscriminatorValue = this.buildDefaultDiscriminatorValue(); - this.specifiedTableIsAllowed = this.buildSpecifiedTableIsAllowed(); - this.tableIsUndefined = this.buildTableIsUndefined(); - this.table.initialize(this.resourceTypeMapping);//TODO pass in to constructor - this.initializeSpecifiedSecondaryTables(); - this.initializeVirtualSecondaryTables(); - this.initializeSequenceGenerator(); - this.initializeTableGenerator(); - this.initializeSpecifiedPrimaryKeyJoinColumns(); - this.initializeDefaultPrimaryKeyJoinColumns(); - this.initializeSpecifiedAttributeOverrides(); - this.initializeSpecifiedAssociationOverrides(); - this.initializeNamedQueries(); - this.initializeNamedNativeQueries(); - this.initializeIdClass(this.getResourceIdClass()); - } - - protected OrmDiscriminatorColumn buildDiscriminatorColumn() { - return getJpaFactory().buildOrmDiscriminatorColumn(this, buildDiscriminatorColumnOwner()); - } - - protected OrmDiscriminatorColumn.Owner buildDiscriminatorColumnOwner() { - return new OrmDiscriminatorColumn.Owner(){ - public org.eclipse.jpt.db.Table getDbTable(String tableName) { - return AbstractOrmEntity.this.getDbTable(tableName); - } - - public TypeMapping getTypeMapping() { - return AbstractOrmEntity.this; - } - - public String getDefaultColumnName() { - if (getResourceTypeMapping().getDiscriminatorColumn() == null) { - if (!isMetadataComplete()) { - if (getJavaEntity() != null && getJavaEntity().getDiscriminatorColumn().getSpecifiedName() != null) { - return getJavaEntity().getDiscriminatorColumn().getSpecifiedName(); - } - } - } - return isDescendant() ? - getRootEntity().getDiscriminatorColumn().getName() - : - isTablePerClass() ? - null - : - DiscriminatorColumn.DEFAULT_NAME; - } - - public int getDefaultLength() { - if (getResourceTypeMapping().getDiscriminatorColumn() == null) { - if (!isMetadataComplete()) { - if (getJavaEntity() != null && getJavaEntity().getDiscriminatorColumn().getSpecifiedLength() != null) { - return getJavaEntity().getDiscriminatorColumn().getSpecifiedLength().intValue(); - } - } - } - return isDescendant() ? - getRootEntity().getDiscriminatorColumn().getLength() - : - isTablePerClass() ? - 0//TODO think i want to return null here - : - DiscriminatorColumn.DEFAULT_LENGTH; - } - - public DiscriminatorType getDefaultDiscriminatorType() { - if (getResourceTypeMapping().getDiscriminatorColumn() == null) { - if (!isMetadataComplete()) { - if (getJavaEntity() != null && getJavaEntity().getDiscriminatorColumn().getSpecifiedDiscriminatorType() != null) { - return getJavaEntity().getDiscriminatorColumn().getSpecifiedDiscriminatorType(); - } - } - } - return isDescendant() ? - getRootEntity().getDiscriminatorColumn().getDiscriminatorType() - : - isTablePerClass() ? - null - : - DiscriminatorColumn.DEFAULT_DISCRIMINATOR_TYPE; - } - - public TextRange getValidationTextRange() { - return AbstractOrmEntity.this.getValidationTextRange(); - } - }; - } - - // ******************* ITypeMapping implementation ******************** - - public String getKey() { - return MappingKeys.ENTITY_TYPE_MAPPING_KEY; - } - - @Override - public String getPrimaryTableName() { - return this.table.getName(); - } - - @Override - public org.eclipse.jpt.db.Table getPrimaryDbTable() { - return this.table.getDbTable(); - } - - private static final org.eclipse.jpt.db.Table[] EMPTY_DB_TABLE_ARRAY = new org.eclipse.jpt.db.Table[0]; - - @Override - public org.eclipse.jpt.db.Table getDbTable(String tableName) { - // the JPA platform searches database objects for us - return this.getDataSource().selectDatabaseObjectForIdentifier( - CollectionTools.array(this.associatedDbTablesIncludingInherited(), EMPTY_DB_TABLE_ARRAY), - tableName - ); - } - - private Iterator<org.eclipse.jpt.db.Table> associatedDbTablesIncludingInherited() { - return new FilteringIterator<org.eclipse.jpt.db.Table, org.eclipse.jpt.db.Table>(this.associatedDbTablesIncludingInherited_()) { - @Override - protected boolean accept(org.eclipse.jpt.db.Table t) { - return t != null; - } - }; - } - - private Iterator<org.eclipse.jpt.db.Table> associatedDbTablesIncludingInherited_() { - return new TransformationIterator<Table, org.eclipse.jpt.db.Table>(this.associatedTablesIncludingInherited()) { - @Override - protected org.eclipse.jpt.db.Table transform(Table t) { - return t.getDbTable(); - } - }; - } - - @Override - public Schema getDbSchema() { - return this.table.getDbSchema(); - } - - public JavaEntity getJavaEntity() { - JavaPersistentType javaPersistentType = this.getJavaPersistentType(); - if (javaPersistentType != null && javaPersistentType.getMappingKey() == MappingKeys.ENTITY_TYPE_MAPPING_KEY) { - return (JavaEntity) javaPersistentType.getMapping(); - } - return null; - } - - /** - * This checks metaDataComplete before returning the JavaEntity. - * As far as defaults are concerned, if metadataComplete is true, the JavaEntity is ignored. - */ - protected JavaEntity getJavaEntityForDefaults() { - if (isMetadataComplete()) { - return null; - } - return getJavaEntity(); - } - - public String getName() { - return (this.getSpecifiedName() == null) ? getDefaultName() : this.getSpecifiedName(); - } - - public String getSpecifiedName() { - return this.specifiedName; - } - - public void setSpecifiedName(String newSpecifiedName) { - String oldSpecifiedName = this.specifiedName; - this.specifiedName = newSpecifiedName; - this.resourceTypeMapping.setName(newSpecifiedName); - firePropertyChanged(SPECIFIED_NAME_PROPERTY, oldSpecifiedName, newSpecifiedName); - } - - public String getDefaultName() { - return this.defaultName; - } - - protected void setDefaultName(String newDefaultName) { - String oldDefaultName = this.defaultName; - this.defaultName = newDefaultName; - firePropertyChanged(DEFAULT_NAME_PROPERTY, oldDefaultName, newDefaultName); - } - - public OrmTable getTable() { - return this.table; - } - - public ListIterator<OrmSecondaryTable> secondaryTables() { - if (specifiedSecondaryTablesSize() > 0) { - return specifiedSecondaryTables(); - } - return virtualSecondaryTables(); - } - - public int secondaryTablesSize() { - if (specifiedSecondaryTablesSize() > 0) { - return specifiedSecondaryTablesSize(); - } - return virtualSecondaryTablesSize(); - } - - public ListIterator<OrmSecondaryTable> virtualSecondaryTables() { - return new CloneListIterator<OrmSecondaryTable>(this.virtualSecondaryTables); - } - - public int virtualSecondaryTablesSize() { - return this.virtualSecondaryTables.size(); - } - - protected void addVirtualSecondaryTable(OrmSecondaryTable secondaryTable) { - addItemToList(secondaryTable, this.virtualSecondaryTables, OrmEntity.VIRTUAL_SECONDARY_TABLES_LIST); - } - - protected void removeVirtualSecondaryTable(OrmSecondaryTable secondaryTable) { - removeItemFromList(secondaryTable, this.virtualSecondaryTables, OrmEntity.VIRTUAL_SECONDARY_TABLES_LIST); - } - - public ListIterator<OrmSecondaryTable> specifiedSecondaryTables() { - return new CloneListIterator<OrmSecondaryTable>(this.specifiedSecondaryTables); - } - - public int specifiedSecondaryTablesSize() { - return this.specifiedSecondaryTables.size(); - } - - public OrmSecondaryTable addSpecifiedSecondaryTable(int index) { - if (!secondaryTablesDefinedInXml()) { - throw new IllegalStateException("Virtual secondary tables exist, must first call setSecondaryTablesDefinedInXml(true)"); //$NON-NLS-1$ - } - XmlSecondaryTable secondaryTableResource = OrmFactory.eINSTANCE.createXmlSecondaryTableImpl(); - OrmSecondaryTable secondaryTable = buildSecondaryTable(secondaryTableResource); - this.specifiedSecondaryTables.add(index, secondaryTable); - this.resourceTypeMapping.getSecondaryTables().add(index, secondaryTableResource); - fireItemAdded(Entity.SPECIFIED_SECONDARY_TABLES_LIST, index, secondaryTable); - return secondaryTable; - } - - public OrmSecondaryTable addSpecifiedSecondaryTable() { - return this.addSpecifiedSecondaryTable(this.specifiedSecondaryTables.size()); - } - - protected void addSpecifiedSecondaryTable(int index, OrmSecondaryTable secondaryTable) { - addItemToList(index, secondaryTable, this.specifiedSecondaryTables, Entity.SPECIFIED_SECONDARY_TABLES_LIST); - } - - protected void addSpecifiedSecondaryTable(OrmSecondaryTable secondaryTable) { - this.addSpecifiedSecondaryTable(this.specifiedSecondaryTables.size(), secondaryTable); - } - - public void removeSpecifiedSecondaryTable(SecondaryTable secondaryTable) { - this.removeSpecifiedSecondaryTable(this.specifiedSecondaryTables.indexOf(secondaryTable)); - } - - public void removeSpecifiedSecondaryTable(int index) { - OrmSecondaryTable removedSecondaryTable = this.specifiedSecondaryTables.remove(index); - this.resourceTypeMapping.getSecondaryTables().remove(index); - fireItemRemoved(Entity.SPECIFIED_SECONDARY_TABLES_LIST, index, removedSecondaryTable); - } - - protected void removeSpecifiedSecondaryTable_(OrmSecondaryTable secondaryTable) { - removeItemFromList(secondaryTable, this.specifiedSecondaryTables, Entity.SPECIFIED_SECONDARY_TABLES_LIST); - } - - public void moveSpecifiedSecondaryTable(int targetIndex, int sourceIndex) { - CollectionTools.move(this.specifiedSecondaryTables, targetIndex, sourceIndex); - this.resourceTypeMapping.getSecondaryTables().move(targetIndex, sourceIndex); - fireItemMoved(Entity.SPECIFIED_SECONDARY_TABLES_LIST, targetIndex, sourceIndex); - } - - public boolean containsSecondaryTable(String name) { - return containsSecondaryTable(name, secondaryTables()); - } - - public boolean containsSpecifiedSecondaryTable(String name) { - return containsSecondaryTable(name, specifiedSecondaryTables()); - } - - public boolean containsVirtualSecondaryTable(String name) { - return containsSecondaryTable(name, virtualSecondaryTables()); - } - - public boolean containsVirtualSecondaryTable(OrmSecondaryTable secondaryTable) { - return this.virtualSecondaryTables.contains(secondaryTable); - } - - protected boolean containsSecondaryTable(String name, ListIterator<OrmSecondaryTable> secondaryTables) { - for (OrmSecondaryTable secondaryTable : CollectionTools.iterable(secondaryTables)) { - String secondaryTableName = secondaryTable.getName(); - if (secondaryTableName != null && secondaryTableName.equals(name)) { - return true; - } - } - return false; - } - - public boolean secondaryTablesDefinedInXml() { - return virtualSecondaryTablesSize() == 0; - } - - public void setSecondaryTablesDefinedInXml(boolean defineInXml) { - if (defineInXml == secondaryTablesDefinedInXml()) { - return; - } - if (defineInXml) { - specifySecondaryTablesInXml(); - } - else { - removeSecondaryTablesFromXml(); - } - } - - /** - * This is used to take all the java secondary tables and specify them in the xml. You must - * use setSecondaryTablesDefinedInXml(boolean) before calling addSpecifiedSecondaryTable(). - * - * Yes this code looks odd, but be careful making changes to it - */ - protected void specifySecondaryTablesInXml() { - if (virtualSecondaryTablesSize() != 0) { - List<OrmSecondaryTable> virtualSecondaryTables1 = CollectionTools.list(this.virtualSecondaryTables()); - List<OrmSecondaryTable> virtualSecondaryTables2 = CollectionTools.list(this.virtualSecondaryTables()); - //remove all the virtual secondary tables without firing change notification. - for (OrmSecondaryTable virtualSecondaryTable : CollectionTools.iterable(virtualSecondaryTables())) { - this.virtualSecondaryTables.remove(virtualSecondaryTable); - } - //add specified secondary tables for each virtual secondary table. If the virtual secondary tables - //are not removed first, they will be removed as a side effect of adding the first specified secondary table. - //This screws up the change notification to the UI, since that change notification is in a different thread - for (OrmSecondaryTable virtualSecondaryTable : virtualSecondaryTables2) { - XmlSecondaryTable secondaryTableResource = OrmFactory.eINSTANCE.createXmlSecondaryTableImpl(); - OrmSecondaryTable specifiedSecondaryTable = buildSecondaryTable(secondaryTableResource); - this.specifiedSecondaryTables.add(specifiedSecondaryTable); - this.resourceTypeMapping.getSecondaryTables().add(secondaryTableResource); - specifiedSecondaryTable.initializeFrom(virtualSecondaryTable); - } - //fire change notification at the end - fireItemsRemoved(OrmEntity.VIRTUAL_SECONDARY_TABLES_LIST, 0, virtualSecondaryTables1); - fireItemsAdded(Entity.SPECIFIED_SECONDARY_TABLES_LIST, 0, this.specifiedSecondaryTables); - } - } - - protected void removeSecondaryTablesFromXml() { - if (specifiedSecondaryTablesSize() != 0) { - List<OrmSecondaryTable> specifiedSecondaryTablesCopy = CollectionTools.list(this.specifiedSecondaryTables()); - for (OrmSecondaryTable specifiedSecondaryTable : CollectionTools.iterable(specifiedSecondaryTables())) { - int index = this.specifiedSecondaryTables.indexOf(specifiedSecondaryTable); - this.specifiedSecondaryTables.remove(specifiedSecondaryTable); - if (this.specifiedSecondaryTables.size() == 0) { - initializeVirtualSecondaryTables(); - } - this.resourceTypeMapping.getSecondaryTables().remove(index); - } - fireItemsRemoved(Entity.SPECIFIED_SECONDARY_TABLES_LIST, 0, specifiedSecondaryTablesCopy); - if (this.virtualSecondaryTables.size() != 0) { - fireItemsAdded(OrmEntity.VIRTUAL_SECONDARY_TABLES_LIST, 0, this.virtualSecondaryTables); - } - } - } - - protected Iterator<String> tableNames(Iterator<Table> tables) { - return new TransformationIterator<Table, String>(tables) { - @Override - protected String transform(Table t) { - return t.getName(); - } - }; - } - - public Iterator<String> associatedTableNamesIncludingInherited() { - return this.nonNullTableNames(this.associatedTablesIncludingInherited()); - } - - protected Iterator<String> nonNullTableNames(Iterator<Table> tables) { - return new FilteringIterator<String, String>(this.tableNames(tables)) { - @Override - protected boolean accept(String o) { - return o != null; - } - }; - } - - public Iterator<Table> associatedTables() { - return new CompositeIterator<Table>(this.table, this.secondaryTables()); - } - - public Iterator<Table> associatedTablesIncludingInherited() { - return new CompositeIterator<Table>(new TransformationIterator<TypeMapping, Iterator<Table>>(this.inheritanceHierarchy()) { - @Override - protected Iterator<Table> transform(TypeMapping mapping) { - return new FilteringIterator<Table, Table>(mapping.associatedTables()) { - @Override - protected boolean accept(Table o) { - return true; - //TODO - //filtering these out so as to avoid the duplicate table, root and children share the same table - //return !(o instanceof SingleTableInheritanceChildTableImpl); - } - }; - } - }); - } - - public boolean tableNameIsInvalid(String tableName) { - return ! CollectionTools.contains(this.associatedTableNamesIncludingInherited(), tableName); - } - - @Override - public boolean shouldValidateAgainstDatabase() { - return super.shouldValidateAgainstDatabase() && ! isAbstractTablePerClass(); - } - - public InheritanceType getInheritanceStrategy() { - return (this.getSpecifiedInheritanceStrategy() == null) ? this.getDefaultInheritanceStrategy() : this.getSpecifiedInheritanceStrategy(); - } - - public InheritanceType getDefaultInheritanceStrategy() { - return this.defaultInheritanceStrategy; - } - - protected void setDefaultInheritanceStrategy(InheritanceType newInheritanceType) { - InheritanceType oldInheritanceType = this.defaultInheritanceStrategy; - this.defaultInheritanceStrategy = newInheritanceType; - firePropertyChanged(DEFAULT_INHERITANCE_STRATEGY_PROPERTY, oldInheritanceType, newInheritanceType); - } - - public InheritanceType getSpecifiedInheritanceStrategy() { - return this.specifiedInheritanceStrategy; - } - - public void setSpecifiedInheritanceStrategy(InheritanceType newInheritanceType) { - InheritanceType oldInheritanceType = this.specifiedInheritanceStrategy; - this.specifiedInheritanceStrategy = newInheritanceType; - if (oldInheritanceType != newInheritanceType) { - if (this.getResourceInheritance() != null) { - this.getResourceInheritance().setStrategy(InheritanceType.toOrmResourceModel(newInheritanceType)); - if (this.getResourceInheritance().isUnset()) { - removeResourceInheritance(); - } - } - else if (newInheritanceType != null) { - addResourceInheritance(); - getResourceInheritance().setStrategy(InheritanceType.toOrmResourceModel(newInheritanceType)); - } - } - firePropertyChanged(SPECIFIED_INHERITANCE_STRATEGY_PROPERTY, oldInheritanceType, newInheritanceType); - } - - protected void setSpecifiedInheritanceStrategy_(InheritanceType newInheritanceType) { - InheritanceType oldInheritanceType = this.specifiedInheritanceStrategy; - this.specifiedInheritanceStrategy = newInheritanceType; - firePropertyChanged(SPECIFIED_INHERITANCE_STRATEGY_PROPERTY, oldInheritanceType, newInheritanceType); - } - - protected Inheritance getResourceInheritance() { - return this.resourceTypeMapping.getInheritance(); - } - - protected void addResourceInheritance() { - this.resourceTypeMapping.setInheritance(OrmFactory.eINSTANCE.createInheritance()); - } - - protected void removeResourceInheritance() { - this.resourceTypeMapping.setInheritance(null); - } - - public OrmDiscriminatorColumn getDiscriminatorColumn() { - return this.discriminatorColumn; - } - - public OrmSequenceGenerator addSequenceGenerator() { - if (getSequenceGenerator() != null) { - throw new IllegalStateException("sequenceGenerator already exists"); //$NON-NLS-1$ - } - XmlSequenceGenerator resourceSequenceGenerator = OrmFactory.eINSTANCE.createXmlSequenceGeneratorImpl(); - this.sequenceGenerator = buildSequenceGenerator(resourceSequenceGenerator); - this.resourceTypeMapping.setSequenceGenerator(resourceSequenceGenerator); - firePropertyChanged(SEQUENCE_GENERATOR_PROPERTY, null, this.sequenceGenerator); - return this.sequenceGenerator; - } - - public void removeSequenceGenerator() { - if (getSequenceGenerator() == null) { - throw new IllegalStateException("sequenceGenerator does not exist, cannot be removed"); //$NON-NLS-1$ - } - OrmSequenceGenerator oldSequenceGenerator = this.sequenceGenerator; - this.sequenceGenerator = null; - this.resourceTypeMapping.setSequenceGenerator(null); - firePropertyChanged(SEQUENCE_GENERATOR_PROPERTY, oldSequenceGenerator, null); - } - - public OrmSequenceGenerator getSequenceGenerator() { - return this.sequenceGenerator; - } - - protected void setSequenceGenerator(OrmSequenceGenerator newSequenceGenerator) { - OrmSequenceGenerator oldSequenceGenerator = this.sequenceGenerator; - this.sequenceGenerator = newSequenceGenerator; - firePropertyChanged(SEQUENCE_GENERATOR_PROPERTY, oldSequenceGenerator, newSequenceGenerator); - } - - public OrmTableGenerator addTableGenerator() { - if (getTableGenerator() != null) { - throw new IllegalStateException("tableGenerator already exists"); //$NON-NLS-1$ - } - XmlTableGenerator resourceTableGenerator = OrmFactory.eINSTANCE.createXmlTableGeneratorImpl(); - this.tableGenerator = buildTableGenerator(resourceTableGenerator); - this.resourceTypeMapping.setTableGenerator(resourceTableGenerator); - firePropertyChanged(TABLE_GENERATOR_PROPERTY, null, this.tableGenerator); - return this.tableGenerator; - } - - public void removeTableGenerator() { - if (getTableGenerator() == null) { - throw new IllegalStateException("tableGenerator does not exist, cannot be removed"); //$NON-NLS-1$ - } - OrmTableGenerator oldTableGenerator = this.tableGenerator; - this.tableGenerator = null; - this.resourceTypeMapping.setTableGenerator(null); - firePropertyChanged(TABLE_GENERATOR_PROPERTY, oldTableGenerator, null); - } - - public OrmTableGenerator getTableGenerator() { - return this.tableGenerator; - } - - protected void setTableGenerator(OrmTableGenerator newTableGenerator) { - OrmTableGenerator oldTableGenerator = this.tableGenerator; - this.tableGenerator = newTableGenerator; - firePropertyChanged(TABLE_GENERATOR_PROPERTY, oldTableGenerator, newTableGenerator); - } - - protected Iterator<OrmGenerator> generators() { - ArrayList<OrmGenerator> generators = new ArrayList<OrmGenerator>(); - this.addGeneratorsTo(generators); - return generators.iterator(); - } - - protected void addGeneratorsTo(ArrayList<OrmGenerator> generators) { - if (this.sequenceGenerator != null) { - generators.add(this.sequenceGenerator); - } - if (this.tableGenerator != null) { - generators.add(this.tableGenerator); - } - } - - public String getDefaultDiscriminatorValue() { - return this.defaultDiscriminatorValue; - } - - protected void setDefaultDiscriminatorValue(String newDefaultDiscriminatorValue) { - String oldDefaultDiscriminatorValue = this.defaultDiscriminatorValue; - this.defaultDiscriminatorValue = newDefaultDiscriminatorValue; - firePropertyChanged(DEFAULT_DISCRIMINATOR_VALUE_PROPERTY, oldDefaultDiscriminatorValue, newDefaultDiscriminatorValue); - } - - public String getSpecifiedDiscriminatorValue() { - return this.specifiedDiscriminatorValue; - } - - public void setSpecifiedDiscriminatorValue(String newSpecifiedDiscriminatorValue) { - String oldSpecifiedDiscriminatorValue = this.specifiedDiscriminatorValue; - this.specifiedDiscriminatorValue = newSpecifiedDiscriminatorValue; - this.resourceTypeMapping.setDiscriminatorValue(newSpecifiedDiscriminatorValue); - firePropertyChanged(SPECIFIED_DISCRIMINATOR_VALUE_PROPERTY, oldSpecifiedDiscriminatorValue, newSpecifiedDiscriminatorValue); - } - - public String getDiscriminatorValue() { - return (this.getSpecifiedDiscriminatorValue() == null) ? getDefaultDiscriminatorValue() : this.getSpecifiedDiscriminatorValue(); - } - - public boolean specifiedDiscriminatorValueIsAllowed() { - return this.specifiedDiscriminatorValueIsAllowed; - } - - protected void setSpecifiedDiscriminatorValueIsAllowed(boolean specifiedDiscriminatorValueIsAllowed) { - boolean old = this.specifiedDiscriminatorValueIsAllowed; - this.specifiedDiscriminatorValueIsAllowed = specifiedDiscriminatorValueIsAllowed; - firePropertyChanged(Entity.SPECIFIED_DISCRIMINATOR_VALUE_IS_ALLOWED_PROPERTY, old, specifiedDiscriminatorValueIsAllowed); - } - - public boolean discriminatorValueIsUndefined() { - return this.discriminatorValueIsUndefined; - } - - protected void setDiscriminatorValueIsUndefined(boolean discriminatorValueIsUndefined) { - boolean old = this.discriminatorValueIsUndefined; - this.discriminatorValueIsUndefined = discriminatorValueIsUndefined; - firePropertyChanged(Entity.DISCRIMINATOR_VALUE_IS_UNDEFINED_PROPERTY, old, discriminatorValueIsUndefined); - } - - public boolean specifiedDiscriminatorColumnIsAllowed() { - return this.specifiedDiscriminatorColumnIsAllowed; - } - - protected void setSpecifiedDiscriminatorColumnIsAllowed(boolean specifiedDiscriminatorColumnIsAllowed) { - boolean old = this.specifiedDiscriminatorColumnIsAllowed; - this.specifiedDiscriminatorColumnIsAllowed = specifiedDiscriminatorColumnIsAllowed; - firePropertyChanged(Entity.SPECIFIED_DISCRIMINATOR_COLUMN_IS_ALLOWED_PROPERTY, old, specifiedDiscriminatorColumnIsAllowed); - } - - public boolean discriminatorColumnIsUndefined() { - return this.discriminatorColumnIsUndefined; - } - - protected void setDiscriminatorColumnIsUndefined(boolean discriminatorColumnIsUndefined) { - boolean old = this.discriminatorColumnIsUndefined; - this.discriminatorColumnIsUndefined = discriminatorColumnIsUndefined; - firePropertyChanged(Entity.DISCRIMINATOR_COLUMN_IS_UNDEFINED_PROPERTY, old, discriminatorColumnIsUndefined); - } - - - public boolean specifiedTableIsAllowed() { - return this.specifiedTableIsAllowed; - } - - protected void setSpecifiedTableIsAllowed(boolean specifiedTableIsAllowed) { - boolean old = this.specifiedTableIsAllowed; - this.specifiedTableIsAllowed = specifiedTableIsAllowed; - firePropertyChanged(Entity.SPECIFIED_TABLE_IS_ALLOWED_PROPERTY, old, specifiedTableIsAllowed); - } - - public boolean tableIsUndefined() { - return this.tableIsUndefined; - } - - protected void setTableIsUndefined(boolean tableIsUndefined) { - boolean old = this.tableIsUndefined; - this.tableIsUndefined = tableIsUndefined; - firePropertyChanged(Entity.TABLE_IS_UNDEFINED_PROPERTY, old, tableIsUndefined); - } - - public ListIterator<OrmPrimaryKeyJoinColumn> defaultPrimaryKeyJoinColumns() { - return new CloneListIterator<OrmPrimaryKeyJoinColumn>(this.defaultPrimaryKeyJoinColumns); - } - - public int defaultPrimaryKeyJoinColumnsSize() { - return this.defaultPrimaryKeyJoinColumns.size(); - } - - public OrmPrimaryKeyJoinColumn getDefaultPrimaryKeyJoinColumn() { - throw new UnsupportedOperationException("use defaultPrimaryKeyJoinColumns() instead"); //$NON-NLS-1$ - } - - protected void addDefaultPrimaryKeyJoinColumn(OrmPrimaryKeyJoinColumn defaultPkJoinColumn) { - addItemToList(defaultPkJoinColumn, this.defaultPrimaryKeyJoinColumns, OrmEntity.DEFAULT_PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - protected void removeDefaultPrimaryKeyJoinColumn(PrimaryKeyJoinColumn defaultPkJoinColumn) { - removeItemFromList(defaultPkJoinColumn, this.defaultPrimaryKeyJoinColumns, OrmEntity.DEFAULT_PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - public ListIterator<OrmPrimaryKeyJoinColumn> primaryKeyJoinColumns() { - return this.specifiedPrimaryKeyJoinColumns.isEmpty() ? this.defaultPrimaryKeyJoinColumns() : this.specifiedPrimaryKeyJoinColumns(); - } - - public int primaryKeyJoinColumnsSize() { - return this.specifiedPrimaryKeyJoinColumns.isEmpty() ? this.defaultPrimaryKeyJoinColumnsSize() : this.specifiedPrimaryKeyJoinColumnsSize(); - } - - public ListIterator<OrmPrimaryKeyJoinColumn> specifiedPrimaryKeyJoinColumns() { - return new CloneListIterator<OrmPrimaryKeyJoinColumn>(this.specifiedPrimaryKeyJoinColumns); - } - - public int specifiedPrimaryKeyJoinColumnsSize() { - return this.specifiedPrimaryKeyJoinColumns.size(); - } - - public boolean containsSpecifiedPrimaryKeyJoinColumns() { - return !this.specifiedPrimaryKeyJoinColumns.isEmpty(); - } - - public OrmPrimaryKeyJoinColumn addSpecifiedPrimaryKeyJoinColumn(int index) { - if (!this.defaultPrimaryKeyJoinColumns.isEmpty()) { - this.defaultPrimaryKeyJoinColumns.clear(); - } - XmlPrimaryKeyJoinColumn resourcePkJoinColumn = OrmFactory.eINSTANCE.createXmlPrimaryKeyJoinColumnImpl(); - OrmPrimaryKeyJoinColumn contextPkJoinColumn = buildPrimaryKeyJoinColumn(resourcePkJoinColumn); - this.specifiedPrimaryKeyJoinColumns.add(index, contextPkJoinColumn); - this.resourceTypeMapping.getPrimaryKeyJoinColumns().add(index, resourcePkJoinColumn); - - this.fireItemAdded(Entity.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST, index, contextPkJoinColumn); - this.fireListCleared(OrmEntity.DEFAULT_PRIMARY_KEY_JOIN_COLUMNS_LIST); - return contextPkJoinColumn; - } - - protected OrmBaseJoinColumn.Owner createPrimaryKeyJoinColumnOwner() { - return new PrimaryKeyJoinColumnOwner(); - } - - protected void addSpecifiedPrimaryKeyJoinColumn(int index, OrmPrimaryKeyJoinColumn primaryKeyJoinColumn) { - addItemToList(index, primaryKeyJoinColumn, this.specifiedPrimaryKeyJoinColumns, Entity.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - protected void addSpecifiedPrimaryKeyJoinColumn(OrmPrimaryKeyJoinColumn primaryKeyJoinColumn) { - this.addSpecifiedPrimaryKeyJoinColumn(this.specifiedPrimaryKeyJoinColumns.size(), primaryKeyJoinColumn); - } - - public void removeSpecifiedPrimaryKeyJoinColumn(PrimaryKeyJoinColumn primaryKeyJoinColumn) { - this.removeSpecifiedPrimaryKeyJoinColumn(this.specifiedPrimaryKeyJoinColumns.indexOf(primaryKeyJoinColumn)); - } - - public void removeSpecifiedPrimaryKeyJoinColumn(int index) { - OrmPrimaryKeyJoinColumn removedPrimaryKeyJoinColumn = this.specifiedPrimaryKeyJoinColumns.remove(index); - if (!containsSpecifiedPrimaryKeyJoinColumns()) { - //create the defaultJoinColumn now or this will happen during project update - //after removing the join column from the resource model. That causes problems - //in the UI because the change notifications end up in the wrong order. - initializeDefaultPrimaryKeyJoinColumns(); - } - this.resourceTypeMapping.getPrimaryKeyJoinColumns().remove(index); - fireItemRemoved(Entity.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST, index, removedPrimaryKeyJoinColumn); - if (!this.defaultPrimaryKeyJoinColumns.isEmpty()) { - fireListChanged(OrmEntity.DEFAULT_PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - } - - protected void removeSpecifiedPrimaryKeyJoinColumn_(OrmPrimaryKeyJoinColumn primaryKeyJoinColumn) { - removeItemFromList(primaryKeyJoinColumn, this.specifiedPrimaryKeyJoinColumns, Entity.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - public void moveSpecifiedPrimaryKeyJoinColumn(int targetIndex, int sourceIndex) { - CollectionTools.move(this.specifiedPrimaryKeyJoinColumns, targetIndex, sourceIndex); - this.resourceTypeMapping.getPrimaryKeyJoinColumns().move(targetIndex, sourceIndex); - fireItemMoved(Entity.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST, targetIndex, sourceIndex); - } - - @SuppressWarnings("unchecked") - public ListIterator<OrmAttributeOverride> attributeOverrides() { - return new CompositeListIterator<OrmAttributeOverride>(specifiedAttributeOverrides(), virtualAttributeOverrides()); - } - - public int attributeOverridesSize() { - return this.specifiedAttributeOverridesSize() + this.virtualAttributeOverridesSize(); - } - - public ListIterator<OrmAttributeOverride> virtualAttributeOverrides() { - return new CloneListIterator<OrmAttributeOverride>(this.virtualAttributeOverrides); - } - - public int virtualAttributeOverridesSize() { - return this.virtualAttributeOverrides.size(); - } - - protected void addVirtualAttributeOverride(OrmAttributeOverride attributeOverride) { - addItemToList(attributeOverride, this.virtualAttributeOverrides, Entity.VIRTUAL_ATTRIBUTE_OVERRIDES_LIST); - } - - protected void removeVirtualAttributeOverride(OrmAttributeOverride attributeOverride) { - removeItemFromList(attributeOverride, this.virtualAttributeOverrides, Entity.VIRTUAL_ATTRIBUTE_OVERRIDES_LIST); - } - - protected OrmAttributeOverride setAttributeOverrideVirtual(boolean virtual, OrmAttributeOverride attributeOverride) { - if (virtual) { - return setAttributeOverrideVirtual(attributeOverride); - } - return setAttributeOverrideSpecified(attributeOverride); - } - - protected OrmAttributeOverride setAttributeOverrideVirtual(OrmAttributeOverride attributeOverride) { - int index = this.specifiedAttributeOverrides.indexOf(attributeOverride); - this.specifiedAttributeOverrides.remove(index); - String attributeOverrideName = attributeOverride.getName(); - //add the virtual attribute override so that I can control the order that change notification is sent. - //otherwise when we remove the annotation from java we will get an update and add the attribute override - //during the udpate. This causes the UI to be flaky, since change notification might not occur in the correct order - OrmAttributeOverride virtualAttributeOverride = null; - if (attributeOverrideName != null) { - for (PersistentAttribute persistentAttribute : CollectionTools.iterable(allOverridableAttributes())) { - if (persistentAttribute.getName().equals(attributeOverrideName)) { - JavaAttributeOverride javaAttributeOverride = null; - if (getJavaEntity() != null) { - javaAttributeOverride = getJavaEntity().getAttributeOverrideNamed(attributeOverrideName); - } - //store the virtualAttributeOverride so we can fire change notification later - virtualAttributeOverride = buildVirtualAttributeOverride(persistentAttribute, javaAttributeOverride); - this.virtualAttributeOverrides.add(virtualAttributeOverride); - } - } - } - - this.resourceTypeMapping.getAttributeOverrides().remove(index); - fireItemRemoved(Entity.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST, index, attributeOverride); - - if (virtualAttributeOverride != null) { - fireItemAdded(Entity.VIRTUAL_ATTRIBUTE_OVERRIDES_LIST, virtualAttributeOverridesSize() - 1, virtualAttributeOverride); - } - return virtualAttributeOverride; - } - - protected OrmAttributeOverride setAttributeOverrideSpecified(OrmAttributeOverride oldAttributeOverride) { - int index = specifiedAttributeOverridesSize(); - XmlAttributeOverride xmlAttributeOverride = OrmFactory.eINSTANCE.createXmlAttributeOverrideImpl(); - OrmAttributeOverride newAttributeOverride = getJpaFactory().buildOrmAttributeOverride(this, createAttributeOverrideOwner(), xmlAttributeOverride); - this.specifiedAttributeOverrides.add(index, newAttributeOverride); - - this.resourceTypeMapping.getAttributeOverrides().add(xmlAttributeOverride); - - int defaultIndex = this.virtualAttributeOverrides.indexOf(oldAttributeOverride); - this.virtualAttributeOverrides.remove(defaultIndex); - - newAttributeOverride.setName(oldAttributeOverride.getName()); - newAttributeOverride.getColumn().setSpecifiedName(oldAttributeOverride.getColumn().getName()); - - this.fireItemRemoved(Entity.VIRTUAL_ATTRIBUTE_OVERRIDES_LIST, defaultIndex, oldAttributeOverride); - this.fireItemAdded(Entity.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST, index, newAttributeOverride); - - return newAttributeOverride; - } - - public ListIterator<OrmAttributeOverride> specifiedAttributeOverrides() { - return new CloneListIterator<OrmAttributeOverride>(this.specifiedAttributeOverrides); - } - - public int specifiedAttributeOverridesSize() { - return this.specifiedAttributeOverrides.size(); - } - - protected void addSpecifiedAttributeOverride(int index, OrmAttributeOverride attributeOverride) { - addItemToList(index, attributeOverride, this.specifiedAttributeOverrides, Entity.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST); - } - - protected void addSpecifiedAttributeOverride(OrmAttributeOverride attributeOverride) { - this.addSpecifiedAttributeOverride(this.specifiedAttributeOverrides.size(), attributeOverride); - } - - protected void removeSpecifiedAttributeOverride_(OrmAttributeOverride attributeOverride) { - removeItemFromList(attributeOverride, this.specifiedAttributeOverrides, Entity.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST); - } - - public void moveSpecifiedAttributeOverride(int targetIndex, int sourceIndex) { - CollectionTools.move(this.specifiedAttributeOverrides, targetIndex, sourceIndex); - this.resourceTypeMapping.getAttributeOverrides().move(targetIndex, sourceIndex); - fireItemMoved(Entity.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST, targetIndex, sourceIndex); - } - - @SuppressWarnings("unchecked") - public ListIterator<OrmAssociationOverride> associationOverrides() { - return new CompositeListIterator<OrmAssociationOverride>(specifiedAssociationOverrides(), virtualAssociationOverrides()); - } - - public int associationOverridesSize() { - return this.specifiedAssociationOverridesSize() + this.virtualAssociationOverridesSize(); - } - - public ListIterator<OrmAssociationOverride> virtualAssociationOverrides() { - return new CloneListIterator<OrmAssociationOverride>(this.virtualAssociationOverrides); - } - - public int virtualAssociationOverridesSize() { - return this.virtualAssociationOverrides.size(); - } - - public ListIterator<OrmAssociationOverride> specifiedAssociationOverrides() { - return new CloneListIterator<OrmAssociationOverride>(this.specifiedAssociationOverrides); - } - - public int specifiedAssociationOverridesSize() { - return this.specifiedAssociationOverrides.size(); - } - - protected void addSpecifiedAssociationOverride(int index, OrmAssociationOverride associationOverride) { - addItemToList(index, associationOverride, this.specifiedAssociationOverrides, Entity.SPECIFIED_ASSOCIATION_OVERRIDES_LIST); - } - - protected void addSpecifiedAssociationOverride(OrmAssociationOverride associationOverride) { - this.addSpecifiedAssociationOverride(this.specifiedAssociationOverrides.size(), associationOverride); - } - - protected void removeSpecifiedAssociationOverride_(OrmAssociationOverride associationOverride) { - removeItemFromList(associationOverride, this.specifiedAssociationOverrides, Entity.SPECIFIED_ASSOCIATION_OVERRIDES_LIST); - } - - public void moveSpecifiedAssociationOverride(int targetIndex, int sourceIndex) { - CollectionTools.move(this.specifiedAssociationOverrides, targetIndex, sourceIndex); - this.resourceTypeMapping.getAssociationOverrides().move(targetIndex, sourceIndex); - fireItemMoved(Entity.SPECIFIED_ASSOCIATION_OVERRIDES_LIST, targetIndex, sourceIndex); - } - - public OrmAttributeOverride getAttributeOverrideNamed(String name) { - return (OrmAttributeOverride) getOverrideNamed(name, attributeOverrides()); - } - - public boolean containsAttributeOverride(String name) { - return containsOverride(name, attributeOverrides()); - } - - public boolean containsDefaultAttributeOverride(String name) { - return containsOverride(name, virtualAttributeOverrides()); - } - - public boolean containsSpecifiedAttributeOverride(String name) { - return containsOverride(name, specifiedAttributeOverrides()); - } - - public OrmAssociationOverride getAssociationOverrideNamed(String name) { - return (OrmAssociationOverride) getOverrideNamed(name, associationOverrides()); - } - - public boolean containsAssociationOverride(String name) { - return containsOverride(name, associationOverrides()); - } - - public boolean containsSpecifiedAssociationOverride(String name) { - return containsOverride(name, specifiedAssociationOverrides()); - } - - public boolean containsDefaultAssociationOverride(String name) { - return containsOverride(name, virtualAssociationOverrides()); - } - - private BaseOverride getOverrideNamed(String name, ListIterator<? extends BaseOverride> overrides) { - for (BaseOverride override : CollectionTools.iterable(overrides)) { - String overrideName = override.getName(); - if (overrideName == null && name == null) { - return override; - } - if (overrideName != null && overrideName.equals(name)) { - return override; - } - } - return null; - } - - private boolean containsOverride(String name, ListIterator<? extends BaseOverride> overrides) { - return getOverrideNamed(name, overrides) != null; - } - - - public ListIterator<OrmNamedQuery> namedQueries() { - return new CloneListIterator<OrmNamedQuery>(this.namedQueries); - } - - public int namedQueriesSize() { - return this.namedQueries.size(); - } - - public OrmNamedQuery addNamedQuery(int index) { - XmlNamedQuery resourceNamedQuery = OrmFactory.eINSTANCE.createXmlNamedQuery(); - OrmNamedQuery contextNamedQuery = buildNamedQuery(resourceNamedQuery); - this.namedQueries.add(index, contextNamedQuery); - this.resourceTypeMapping.getNamedQueries().add(index, resourceNamedQuery); - this.fireItemAdded(NAMED_QUERIES_LIST, index, contextNamedQuery); - return contextNamedQuery; - } - - protected void addNamedQuery(int index, OrmNamedQuery namedQuery) { - addItemToList(index, namedQuery, this.namedQueries, NAMED_QUERIES_LIST); - } - - protected void addNamedQuery(OrmNamedQuery namedQuery) { - this.addNamedQuery(this.namedQueries.size(), namedQuery); - } - - public void removeNamedQuery(NamedQuery namedQuery) { - removeNamedQuery(this.namedQueries.indexOf(namedQuery)); - } - - public void removeNamedQuery(int index) { - OrmNamedQuery namedQuery = this.namedQueries.remove(index); - this.resourceTypeMapping.getNamedQueries().remove(index); - fireItemRemoved(NAMED_QUERIES_LIST, index, namedQuery); - } - - protected void removeNamedQuery_(OrmNamedQuery namedQuery) { - removeItemFromList(namedQuery, this.namedQueries, NAMED_QUERIES_LIST); - } - - public void moveNamedQuery(int targetIndex, int sourceIndex) { - CollectionTools.move(this.namedQueries, targetIndex, sourceIndex); - this.resourceTypeMapping.getNamedQueries().move(targetIndex, sourceIndex); - fireItemMoved(NAMED_QUERIES_LIST, targetIndex, sourceIndex); - } - - public ListIterator<OrmNamedNativeQuery> namedNativeQueries() { - return new CloneListIterator<OrmNamedNativeQuery>(this.namedNativeQueries); - } - - public int namedNativeQueriesSize() { - return this.namedNativeQueries.size(); - } - - public OrmNamedNativeQuery addNamedNativeQuery(int index) { - XmlNamedNativeQuery resourceNamedNativeQuery = OrmFactory.eINSTANCE.createXmlNamedNativeQuery(); - OrmNamedNativeQuery contextNamedNativeQuery = buildNamedNativeQuery(resourceNamedNativeQuery); - this.namedNativeQueries.add(index, contextNamedNativeQuery); - this.resourceTypeMapping.getNamedNativeQueries().add(index, resourceNamedNativeQuery); - this.fireItemAdded(NAMED_NATIVE_QUERIES_LIST, index, contextNamedNativeQuery); - return contextNamedNativeQuery; - } - - protected void addNamedNativeQuery(int index, OrmNamedNativeQuery namedNativeQuery) { - addItemToList(index, namedNativeQuery, this.namedNativeQueries, NAMED_NATIVE_QUERIES_LIST); - } - - protected void addNamedNativeQuery(OrmNamedNativeQuery namedNativeQuery) { - this.addNamedNativeQuery(this.namedNativeQueries.size(), namedNativeQuery); - } - - public void removeNamedNativeQuery(NamedNativeQuery namedNativeQuery) { - this.removeNamedNativeQuery(this.namedNativeQueries.indexOf(namedNativeQuery)); - } - - public void removeNamedNativeQuery(int index) { - OrmNamedNativeQuery namedNativeQuery = this.namedNativeQueries.remove(index); - this.resourceTypeMapping.getNamedNativeQueries().remove(index); - fireItemRemoved(NAMED_NATIVE_QUERIES_LIST, index, namedNativeQuery); - } - - protected void removeNamedNativeQuery_(OrmNamedNativeQuery namedNativeQuery) { - removeItemFromList(namedNativeQuery, this.namedNativeQueries, NAMED_NATIVE_QUERIES_LIST); - } - - public void moveNamedNativeQuery(int targetIndex, int sourceIndex) { - CollectionTools.move(this.namedNativeQueries, targetIndex, sourceIndex); - this.resourceTypeMapping.getNamedNativeQueries().move(targetIndex, sourceIndex); - fireItemMoved(NAMED_NATIVE_QUERIES_LIST, targetIndex, sourceIndex); - } - - @SuppressWarnings("unchecked") - public Iterator<OrmQuery> queries() { - return new CompositeIterator<OrmQuery>(this.namedQueries(), this.namedNativeQueries()); - } - - public char getIdClassEnclosingTypeSeparator() { - return '$'; - } - - public String getIdClass() { - return this.idClass; - } - - public void setIdClass(String newIdClass) { - String oldIdClass = this.idClass; - this.idClass = newIdClass; - if (oldIdClass != newIdClass) { - if (this.getResourceIdClass() != null) { - this.getResourceIdClass().setClassName(newIdClass); - if (this.getResourceIdClass().isUnset()) { - removeResourceIdClass(); - } - } - else if (newIdClass != null) { - addResourceIdClass(); - getResourceIdClass().setClassName(newIdClass); - } - } - firePropertyChanged(ID_CLASS_PROPERTY, oldIdClass, newIdClass); - } - - protected void setIdClass_(String newIdClass) { - String oldIdClass = this.idClass; - this.idClass = newIdClass; - firePropertyChanged(ID_CLASS_PROPERTY, oldIdClass, newIdClass); - } - - protected XmlIdClass getResourceIdClass() { - return this.resourceTypeMapping.getIdClass(); - } - - protected void addResourceIdClass() { - this.resourceTypeMapping.setIdClass(OrmFactory.eINSTANCE.createXmlIdClass()); - } - - protected void removeResourceIdClass() { - this.resourceTypeMapping.setIdClass(null); - } - - public Entity getParentEntity() { - for (Iterator<PersistentType> stream = getPersistentType().ancestors(); stream.hasNext();) { - TypeMapping tm = stream.next().getMapping(); - if (tm instanceof Entity) { - return (Entity) tm; - } - } - return this; - } - - /** - * Return the ultimate top of the inheritance hierarchy - * This method should never return null. The root - * is defined as the persistent type in the inheritance hierarchy - * that has no parent. The root should be an entity - * - * Non-entities in the hierarchy should be ignored, ie skip - * over them in the search for the root. - */ - protected Entity getRootEntity() { - return this.rootEntity; - } - - public String getDefaultTableName() { - JavaEntity javaEntity = this.getJavaEntity(); - if (javaEntity != null) { - JavaTable javaTable = javaEntity.getTable(); - if ( ! this.isMetadataComplete() - && ! this.table.isResourceSpecified() - && javaTable.getSpecifiedName() != null) { - return javaTable.getSpecifiedName(); - } - } - return this.isSingleTableDescendant() ? - this.getRootEntity().getTable().getName() - : - this.isAbstractTablePerClass() ? - null - : - this.getName(); - } - - public String getDefaultSchema() { - JavaEntity javaEntity = this.getJavaEntity(); - if (javaEntity != null) { - JavaTable javaTable = javaEntity.getTable(); - if ( ! this.isMetadataComplete() - && ! this.table.isResourceSpecified() - && javaTable.getSpecifiedSchema() != null) { - return javaTable.getSpecifiedSchema(); - } - } - - return this.isSingleTableDescendant() ? - this.getRootEntity().getTable().getSchema() - : - this.isAbstractTablePerClass() ? - null - : - this.getContextDefaultSchema(); - } - - public String getDefaultCatalog() { - JavaEntity javaEntity = this.getJavaEntity(); - if (javaEntity != null) { - JavaTable javaTable = javaEntity.getTable(); - if ( ! this.isMetadataComplete() - && ! this.table.isResourceSpecified() - && javaTable.getSpecifiedCatalog() != null) { - return javaTable.getSpecifiedCatalog(); - } - } - - return this.isSingleTableDescendant() ? - this.getRootEntity().getTable().getCatalog() - : - this.isAbstractTablePerClass() ? - null - : - this.getContextDefaultCatalog(); - } - - /** - * Return whether the entity is a descendant of the root entity - * of a "single table" inheritance hierarchy. - */ - protected boolean isSingleTableDescendant() { - return this.isDescendant() && (this.getInheritanceStrategy() == InheritanceType.SINGLE_TABLE); - } - - /** - * Return whether the entity is a descendant in (as opposed to the root of) - * an inheritance hierarchy. - */ - protected boolean isDescendant() { - return ! this.isRoot(); - } - - /** - * Return whether the entity is the top of an inheritance hierarchy. - */ - protected boolean isRoot() { - return this == this.getRootEntity(); - } - - /** - * Return whether the entity is the top of an inheritance hierarchy - * and has no descendants and no specified inheritance strategy has been defined. - */ - protected boolean isRootNoDescendantsNoStrategyDefined() { - return isRoot() && !getPersistenceUnit().isRootWithSubEntities(this.getName()) && getSpecifiedInheritanceStrategy() == null; - } - - /** - * Return whether the entity is abstract and is a part of a - * "table per class" inheritance hierarchy. - */ - protected boolean isAbstractTablePerClass() { - return isAbstract() && isTablePerClass(); - } - - /** - * Return whether the entity is a part of a "table per class" - * inheritance hierarchy. - */ - protected boolean isTablePerClass() { - return (this.getInheritanceStrategy() == InheritanceType.TABLE_PER_CLASS); - } - - /** - * Return whether the type is abstract, false if no java type exists. - */ - protected boolean isAbstract() { - JavaResourcePersistentType javaResourcePersistentType = getJavaResourcePersistentType(); - return javaResourcePersistentType == null ? false : javaResourcePersistentType.isAbstract(); - } - -// public String primaryKeyColumnName() { -// String pkColumnName = null; -// for (Iterator<IPersistentAttribute> stream = getPersistentType().allAttributes(); stream.hasNext();) { -// IPersistentAttribute attribute = stream.next(); -// String name = attribute.primaryKeyColumnName(); -// if (pkColumnName == null) { -// pkColumnName = name; -// } -// else if (name != null) { -// // if we encounter a composite primary key, return null -// return null; -// } -// } -// // if we encounter only a single primary key column name, return it -// return pkColumnName; -// } -// -// public String primaryKeyAttributeName() { -// String pkColumnName = null; -// String pkAttributeName = null; -// for (Iterator<IPersistentAttribute> stream = getPersistentType().allAttributes(); stream.hasNext();) { -// IPersistentAttribute attribute = stream.next(); -// String name = attribute.primaryKeyColumnName(); -// if (pkColumnName == null) { -// pkColumnName = name; -// pkAttributeName = attribute.getName(); -// } -// else if (name != null) { -// // if we encounter a composite primary key, return null -// return null; -// } -// } -// // if we encounter only a single primary key column name, return it -// return pkAttributeName; -// } -// - - - public int getXmlSequence() { - return 1; - } - - /** - * Return an iterator of Entities, each which inherits from the one before, - * and terminates at the root entity (or at the point of cyclicity). - */ - protected Iterator<TypeMapping> inheritanceHierarchy() { - return new TransformationIterator<PersistentType, TypeMapping>(getPersistentType().inheritanceHierarchy()) { - @Override - protected TypeMapping transform(PersistentType type) { - return type.getMapping(); - } - }; - } - /** - * Return an iterator of Entities, each which inherits from the one before, - * and terminates at the root entity (or at the point of cyclicity). - */ - protected Iterator<TypeMapping> ancestors() { - return new TransformationIterator<PersistentType, TypeMapping>(getPersistentType().ancestors()) { - @Override - protected TypeMapping transform(PersistentType type) { - return type.getMapping(); - } - }; - } - - @Override - public Iterator<OrmPersistentAttribute> overridableAttributes() { - if (!isTablePerClass()) { - return EmptyIterator.instance(); - } - return new FilteringIterator<OrmPersistentAttribute, OrmPersistentAttribute>(this.getPersistentType().attributes()) { - @Override - protected boolean accept(OrmPersistentAttribute o) { - return o.isOverridableAttribute(); - } - }; - } - - @Override - public Iterator<OrmPersistentAttribute> overridableAssociations() { - if (!isTablePerClass()) { - return EmptyIterator.instance(); - } - return new FilteringIterator<OrmPersistentAttribute, OrmPersistentAttribute>(this.getPersistentType().attributes()) { - @Override - protected boolean accept(OrmPersistentAttribute o) { - return o.isOverridableAssociation(); - } - }; - } - - @Override - public Iterator<PersistentAttribute> allOverridableAttributes() { - return new CompositeIterator<PersistentAttribute>(new TransformationIterator<TypeMapping, Iterator<PersistentAttribute>>(this.ancestors()) { - @Override - protected Iterator<PersistentAttribute> transform(TypeMapping mapping) { - return mapping.overridableAttributes(); - } - }); - } - - @Override - public Iterator<PersistentAttribute> allOverridableAssociations() { - return new CompositeIterator<PersistentAttribute>(new TransformationIterator<TypeMapping, Iterator<PersistentAttribute>>(this.ancestors()) { - @Override - protected Iterator<PersistentAttribute> transform(TypeMapping mapping) { - return mapping.overridableAssociations(); - } - }); - } - -// -// public IAttributeOverride createAttributeOverride(int index) { -// return OrmFactory.eINSTANCE.createXmlAttributeOverride(new IEntity.AttributeOverrideOwner(this)); -// } -// -// public IAssociationOverride createAssociationOverride(int index) { -// return OrmFactory.eINSTANCE.createXmlAssociationOverride(new IEntity.AssociationOverrideOwner(this)); -// } -// -// public IAttributeOverride attributeOverrideNamed(String name) { -// return (IAttributeOverride) overrideNamed(name, getAttributeOverrides()); -// } -// -// public boolean containsAttributeOverride(String name) { -// return containsOverride(name, getAttributeOverrides()); -// } -// -// public boolean containsSpecifiedAttributeOverride(String name) { -// return containsOverride(name, getSpecifiedAttributeOverrides()); -// } -// -// public boolean containsAssociationOverride(String name) { -// return containsOverride(name, getAssociationOverrides()); -// } -// -// public boolean containsSpecifiedAssociationOverride(String name) { -// return containsOverride(name, getSpecifiedAssociationOverrides()); -// } -// -// private IOverride overrideNamed(String name, List<? extends IOverride> overrides) { -// for (IOverride override : overrides) { -// String overrideName = override.getName(); -// if (overrideName == null && name == null) { -// return override; -// } -// if (overrideName != null && overrideName.equals(name)) { -// return override; -// } -// } -// return null; -// } -// -// private boolean containsOverride(String name, List<? extends IOverride> overrides) { -// return overrideNamed(name, overrides) != null; -// } -// -// public boolean containsSpecifiedPrimaryKeyJoinColumns() { -// return !this.getSpecifiedPrimaryKeyJoinColumns().isEmpty(); -// } - - - protected void initializeInheritance(Inheritance inheritanceResource) { - this.specifiedInheritanceStrategy = this.getResourceInheritanceStrategy(inheritanceResource); - //no need to initialize defaultInheritanceStrategy, need to get all the persistentTypes in the model first - } - - protected void initializeSpecifiedSecondaryTables() { - for (XmlSecondaryTable secondaryTable : this.resourceTypeMapping.getSecondaryTables()) { - this.specifiedSecondaryTables.add(buildSecondaryTable(secondaryTable)); - } - } - - protected void initializeVirtualSecondaryTables() { - if (isMetadataComplete()) { - return; - } - if (getJavaEntity() == null) { - return; - } - if (specifiedSecondaryTablesSize() > 0) { - return; - } - ListIterator<JavaSecondaryTable> javaSecondaryTables = getJavaEntity().secondaryTables(); - while(javaSecondaryTables.hasNext()) { - JavaSecondaryTable javaSecondaryTable = javaSecondaryTables.next(); - if (javaSecondaryTable.getName() != null) { - this.virtualSecondaryTables.add(buildVirtualSecondaryTable(javaSecondaryTable)); - } - } - } - - protected void initializeDefaultPrimaryKeyJoinColumns() { - if (isMetadataComplete()) { - return; - } - if (getJavaEntity() == null) { - this.defaultPrimaryKeyJoinColumns.add(buildPrimaryKeyJoinColumn(null)); - return; - } - if (specifiedPrimaryKeyJoinColumnsSize() > 0) { - return; - } - ListIterator<JavaPrimaryKeyJoinColumn> javaPkJoinColumns = getJavaEntity().primaryKeyJoinColumns(); - while(javaPkJoinColumns.hasNext()) { - JavaPrimaryKeyJoinColumn javaPkJoinColumn = javaPkJoinColumns.next(); - if (javaPkJoinColumn.getName() != null) { - this.defaultPrimaryKeyJoinColumns.add(buildVirtualPrimaryKeyJoinColumn(javaPkJoinColumn)); - } - } - } - - protected void initializeTableGenerator() { - if (this.resourceTypeMapping.getTableGenerator() != null) { - this.tableGenerator = buildTableGenerator(this.resourceTypeMapping.getTableGenerator()); - } - } - - protected OrmTableGenerator buildTableGenerator(XmlTableGenerator resourceTableGenerator) { - return getJpaFactory().buildOrmTableGenerator(this, resourceTableGenerator); - } - - protected void initializeSequenceGenerator() { - if (this.resourceTypeMapping.getSequenceGenerator() != null) { - this.sequenceGenerator = buildSequenceGenerator(this.resourceTypeMapping.getSequenceGenerator()); - } - } - - protected OrmSequenceGenerator buildSequenceGenerator(XmlSequenceGenerator resourceSequenceGenerator) { - return getJpaFactory().buildOrmSequenceGenerator(this, resourceSequenceGenerator); - } - - protected void initializeSpecifiedPrimaryKeyJoinColumns() { - for (XmlPrimaryKeyJoinColumn resourcePkJoinColumn : this.resourceTypeMapping.getPrimaryKeyJoinColumns()) { - this.specifiedPrimaryKeyJoinColumns.add(buildPrimaryKeyJoinColumn(resourcePkJoinColumn)); - } - } - - protected void initializeSpecifiedAttributeOverrides() { - for (XmlAttributeOverride attributeOverride : this.resourceTypeMapping.getAttributeOverrides()) { - this.specifiedAttributeOverrides.add(buildAttributeOverride(attributeOverride)); - } - } - - protected OrmAttributeOverride buildVirtualAttributeOverride(PersistentAttribute persistentAttribute, JavaAttributeOverride javaAttributeOverride) { - return buildAttributeOverride(buildVirtualXmlAttributeOverride(persistentAttribute, javaAttributeOverride)); - } - - protected XmlAttributeOverride buildVirtualXmlAttributeOverride(PersistentAttribute persistentAttribute, JavaAttributeOverride javaAttributeOverride) { - XmlColumn xmlColumn; - if (javaAttributeOverride == null) { - ColumnMapping columnMapping = (ColumnMapping) persistentAttribute.getMapping(); - xmlColumn = new VirtualXmlColumn(this, columnMapping.getColumn()); - } - else { - xmlColumn = new VirtualXmlColumn(this, javaAttributeOverride.getColumn()); - } - return new VirtualXmlAttributeOverride(persistentAttribute.getName(), xmlColumn); - } - - protected void initializeSpecifiedAssociationOverrides() { - for (XmlAssociationOverride associationOverride : this.resourceTypeMapping.getAssociationOverrides()) { - this.specifiedAssociationOverrides.add(buildAssociationOverride(associationOverride)); - } - } - - protected void initializeNamedQueries() { - for (XmlNamedQuery namedQuery : this.resourceTypeMapping.getNamedQueries()) { - this.namedQueries.add(buildNamedQuery(namedQuery)); - } - } - - protected void initializeNamedNativeQueries() { - for (XmlNamedNativeQuery namedNativeQuery : this.resourceTypeMapping.getNamedNativeQueries()) { - this.namedNativeQueries.add(buildNamedNativeQuery(namedNativeQuery)); - } - } - - protected void initializeIdClass(XmlIdClass idClassResource) { - this.idClass = this.getResourceIdClass(idClassResource); - } - - protected String getResourceIdClass(XmlIdClass idClassResource) { - return idClassResource == null ? null : idClassResource.getClassName(); - } - - @Override - public void update() { - super.update(); - this.setSpecifiedName(this.resourceTypeMapping.getName()); - this.setDefaultName(this.buildDefaultName()); - this.updateInheritance(this.getResourceInheritance()); - this.updateRootEntity(); - this.updateDiscriminatorColumn(); - this.updateDiscriminatorValue(); - this.setSpecifiedTableIsAllowed(this.buildSpecifiedTableIsAllowed()); - this.setTableIsUndefined(this.buildTableIsUndefined()); - this.table.update(this.resourceTypeMapping); - this.updateSpecifiedSecondaryTables(); - this.updateVirtualSecondaryTables(); - this.updateSequenceGenerator(); - this.updateTableGenerator(); - this.updateSpecifiedPrimaryKeyJoinColumns(); - this.updateDefaultPrimaryKeyJoinColumns(); - this.updateSpecifiedAttributeOverrides(); - this.updateVirtualAttributeOverrides(); - this.updateSpecifiedAssociationOverrides(); - this.updateNamedQueries(); - this.updateNamedNativeQueries(); - this.updateIdClass(this.getResourceIdClass()); - } - - @Override - public void postUpdate() { - super.postUpdate(); - this.setDiscriminatorColumnIsUndefined(this.buildDiscriminatorColumnIsUndefined()); - getDiscriminatorColumn().postUpdate(); - postUpdateDiscriminatorValue(); - } - - protected String buildDefaultName() { - if (!isMetadataComplete()) { - JavaEntity javaEntity = getJavaEntity(); - if (javaEntity != null) { - return javaEntity.getName(); - } - } - String className = getClass_(); - if (className != null) { - return ClassTools.shortNameForClassNamed(className); - } - return null; - } - - protected void updateDiscriminatorColumn() { - this.setSpecifiedDiscriminatorColumnIsAllowed(this.buildSpecifiedDiscriminatorColumnIsAllowed()); - getDiscriminatorColumn().update(this.resourceTypeMapping); - } - - protected void postUpdateDiscriminatorColumn() { - this.setDiscriminatorColumnIsUndefined(this.buildDiscriminatorColumnIsUndefined()); - getDiscriminatorColumn().postUpdate(); - } - - protected void updateDiscriminatorValue() { - this.setSpecifiedDiscriminatorValueIsAllowed(this.buildSpecifiedDiscriminatorValueIsAllowed()); - this.setSpecifiedDiscriminatorValue(this.resourceTypeMapping.getDiscriminatorValue()); - } - - protected void postUpdateDiscriminatorValue() { - this.setDiscriminatorValueIsUndefined(this.buildDiscriminatorValueIsUndefined()); - this.setDefaultDiscriminatorValue(this.buildDefaultDiscriminatorValue()); - } - - /** - * From the Spec: - * If the DiscriminatorValue annotation is not specified, a - * provider-specific function to generate a value representing - * the entity type is used for the value of the discriminator - * column. If the DiscriminatorType is STRING, the discriminator - * value default is the entity name. - * - * TODO extension point for provider-specific function? - */ - protected String buildDefaultDiscriminatorValue() { - if (!isMetadataComplete() && getJavaEntity() != null) { - return getJavaEntity().getDiscriminatorValue(); - } - if (discriminatorValueIsUndefined()) { - return null; - } - if (this.getDiscriminatorType() != DiscriminatorType.STRING) { - return null; - } - return this.getName(); - } - - protected DiscriminatorType getDiscriminatorType() { - return this.getDiscriminatorColumn().getDiscriminatorType(); - } - - protected JavaResourcePersistentType getJavaResourcePersistentType() { - if (getPersistentType().getJavaPersistentType() != null) { - return getPersistentType().getJavaPersistentType().getResourcePersistentType(); - } - return null; - } - - protected boolean buildSpecifiedDiscriminatorValueIsAllowed() { - return !isTablePerClass() && !isAbstract(); - } - - protected boolean buildDiscriminatorValueIsUndefined() { - return isTablePerClass() || isAbstract() || isRootNoDescendantsNoStrategyDefined(); - } - - protected boolean buildSpecifiedDiscriminatorColumnIsAllowed() { - return !isTablePerClass() && isRoot(); - } - - protected boolean buildDiscriminatorColumnIsUndefined() { - return isTablePerClass() || isRootNoDescendantsNoStrategyDefined(); - } - - protected boolean buildSpecifiedTableIsAllowed() { - return !isAbstractTablePerClass() && !isSingleTableDescendant(); - } - - protected boolean buildTableIsUndefined() { - return isAbstractTablePerClass(); - } - - - protected void updateInheritance(Inheritance inheritanceResource) { - this.setSpecifiedInheritanceStrategy_(this.getResourceInheritanceStrategy(inheritanceResource)); - this.setDefaultInheritanceStrategy(this.buildDefaultInheritanceStrategy()); - } - - protected void updateRootEntity() { - //I am making an assumption here that we don't need property change notification for rootEntity, this might be wrong - this.rootEntity = calculateRootEntity(); - if (this.rootEntity != this) { - this.rootEntity.addSubEntity(this); - } - } - - protected Entity calculateRootEntity() { - Entity rootEntity = this; - for (Iterator<PersistentType> stream = getPersistentType().inheritanceHierarchy(); stream.hasNext();) { - PersistentType persistentType = stream.next(); - if (persistentType.getMapping() instanceof Entity) { - rootEntity = (Entity) persistentType.getMapping(); - } - } - return rootEntity; - } - - public void addSubEntity(Entity subEntity) { - getPersistenceUnit().addRootWithSubEntities(getName()); - } - - protected void updateSpecifiedSecondaryTables() { - // make a copy of the XML tables (to prevent ConcurrentModificationException) - Iterator<XmlSecondaryTable> xmlTables = new CloneIterator<XmlSecondaryTable>(this.resourceTypeMapping.getSecondaryTables()); - - for (Iterator<OrmSecondaryTable> contextTables = this.specifiedSecondaryTables(); contextTables.hasNext(); ) { - OrmSecondaryTable contextTable = contextTables.next(); - if (xmlTables.hasNext()) { - contextTable.update(xmlTables.next()); - } - else { - removeSpecifiedSecondaryTable_(contextTable); - } - } - - while (xmlTables.hasNext()) { - addSpecifiedSecondaryTable(buildSecondaryTable(xmlTables.next())); - } - } - - //if any secondary-tables are specified in the xml file, then all of the java secondaryTables are overriden - protected void updateVirtualSecondaryTables() { - ListIterator<OrmSecondaryTable> secondaryTables = virtualSecondaryTables(); - ListIterator<JavaSecondaryTable> javaSecondaryTables = EmptyListIterator.instance(); - - if (getJavaEntity() != null && !isMetadataComplete() && specifiedSecondaryTablesSize() == 0) { - javaSecondaryTables = getJavaEntity().secondaryTables(); - } - while (secondaryTables.hasNext()) { - OrmSecondaryTable virtualSecondaryTable = secondaryTables.next(); - if (javaSecondaryTables.hasNext()) { - JavaSecondaryTable javaSecondaryTable = javaSecondaryTables.next(); - virtualSecondaryTable.update(new VirtualXmlSecondaryTable(javaSecondaryTable)); - } - else { - removeVirtualSecondaryTable(virtualSecondaryTable); - } - } - - while (javaSecondaryTables.hasNext()) { - JavaSecondaryTable javaSecondaryTable = javaSecondaryTables.next(); - addVirtualSecondaryTable(buildVirtualSecondaryTable(javaSecondaryTable)); - } - } - - protected OrmSecondaryTable buildSecondaryTable(XmlSecondaryTable xmlSecondaryTable) { - return getJpaFactory().buildOrmSecondaryTable(this, xmlSecondaryTable); - } - - protected OrmSecondaryTable buildVirtualSecondaryTable(JavaSecondaryTable javaSecondaryTable) { - return buildSecondaryTable(new VirtualXmlSecondaryTable(javaSecondaryTable)); - } - - protected void updateTableGenerator() { - if (this.resourceTypeMapping.getTableGenerator() == null) { - if (getTableGenerator() != null) { - setTableGenerator(null); - } - } - else { - if (getTableGenerator() == null) { - setTableGenerator(buildTableGenerator(this.resourceTypeMapping.getTableGenerator())); - } - else { - getTableGenerator().update(this.resourceTypeMapping.getTableGenerator()); - } - } - } - - protected void updateSequenceGenerator() { - if (this.resourceTypeMapping.getSequenceGenerator() == null) { - if (getSequenceGenerator() != null) { - setSequenceGenerator(null); - } - } - else { - if (getSequenceGenerator() == null) { - setSequenceGenerator(buildSequenceGenerator(this.resourceTypeMapping.getSequenceGenerator())); - } - else { - getSequenceGenerator().update(this.resourceTypeMapping.getSequenceGenerator()); - } - } - } - - protected InheritanceType getResourceInheritanceStrategy(Inheritance inheritanceResource) { - if (inheritanceResource == null) { - return null; - } - return InheritanceType.fromOrmResourceModel(inheritanceResource.getStrategy()); - } - - protected InheritanceType buildDefaultInheritanceStrategy() { - if ((this.getResourceInheritance() == null) - && ! this.isMetadataComplete() - && (this.getJavaEntity() != null)) { - return this.getJavaEntity().getInheritanceStrategy(); - } - return this.isRoot() ? InheritanceType.SINGLE_TABLE : this.getRootEntity().getInheritanceStrategy(); - } - - protected void updateSpecifiedPrimaryKeyJoinColumns() { - // make a copy of the XML join columns (to prevent ConcurrentModificationException) - Iterator<XmlPrimaryKeyJoinColumn> xmlPkJoinColumns = new CloneIterator<XmlPrimaryKeyJoinColumn>(this.resourceTypeMapping.getPrimaryKeyJoinColumns()); - - for (Iterator<OrmPrimaryKeyJoinColumn> contextPkJoinColumns = this.specifiedPrimaryKeyJoinColumns(); contextPkJoinColumns.hasNext(); ) { - OrmPrimaryKeyJoinColumn contextPkJoinColumn = contextPkJoinColumns.next(); - if (xmlPkJoinColumns.hasNext()) { - contextPkJoinColumn.update(xmlPkJoinColumns.next()); - } - else { - removeSpecifiedPrimaryKeyJoinColumn_(contextPkJoinColumn); - } - } - - while (xmlPkJoinColumns.hasNext()) { - addSpecifiedPrimaryKeyJoinColumn(buildPrimaryKeyJoinColumn(xmlPkJoinColumns.next())); - } - } - - //if there are any specified pkJoinColumns, then no default pkJoinColumns - //if the java has specified pkJoinColumns, then those are the default pkJoinColumns - //otherwise, just 1 pkJoinColumn, defaults being null if multiple primaryKey columns - protected void updateDefaultPrimaryKeyJoinColumns() { - ListIterator<OrmPrimaryKeyJoinColumn> defaultPkJoinColumns = defaultPrimaryKeyJoinColumns(); - ListIterator<JavaPrimaryKeyJoinColumn> javaPkJoinColumns = EmptyListIterator.instance(); - - if (getJavaEntity() != null && !isMetadataComplete() && specifiedPrimaryKeyJoinColumnsSize() == 0) { - javaPkJoinColumns = getJavaEntity().primaryKeyJoinColumns(); - } - while (defaultPkJoinColumns.hasNext()) { - OrmPrimaryKeyJoinColumn defaultPkJoinColumn = defaultPkJoinColumns.next(); - if (javaPkJoinColumns.hasNext()) { - JavaPrimaryKeyJoinColumn javaPkJoinColumn = javaPkJoinColumns.next(); - defaultPkJoinColumn.update(new VirtualXmlPrimaryKeyJoinColumn(javaPkJoinColumn)); - } - else { - if (defaultPrimaryKeyJoinColumnsSize() == 1) { - defaultPkJoinColumn.update(null); - } - else { - removeDefaultPrimaryKeyJoinColumn(defaultPkJoinColumn); - } - } - } - - while (javaPkJoinColumns.hasNext()) { - JavaPrimaryKeyJoinColumn javaPkJoinColumn = javaPkJoinColumns.next(); - addDefaultPrimaryKeyJoinColumn(buildVirtualPrimaryKeyJoinColumn(javaPkJoinColumn)); - } - - if (defaultPrimaryKeyJoinColumnsSize() == 0 && specifiedPrimaryKeyJoinColumnsSize() == 0) { - addDefaultPrimaryKeyJoinColumn(buildPrimaryKeyJoinColumn(null)); - } - } - - protected OrmPrimaryKeyJoinColumn buildVirtualPrimaryKeyJoinColumn(JavaPrimaryKeyJoinColumn javaSecondaryTable) { - return buildPrimaryKeyJoinColumn(new VirtualXmlPrimaryKeyJoinColumn(javaSecondaryTable)); - } - - protected OrmPrimaryKeyJoinColumn buildPrimaryKeyJoinColumn(XmlPrimaryKeyJoinColumn resourcePkJoinColumn) { - return getJpaFactory().buildOrmPrimaryKeyJoinColumn(this, createPrimaryKeyJoinColumnOwner(), resourcePkJoinColumn); - } - - protected void updateSpecifiedAttributeOverrides() { - // make a copy of the XML overrides (to prevent ConcurrentModificationException) - Iterator<XmlAttributeOverride> xmlOverrides = new CloneIterator<XmlAttributeOverride>(this.resourceTypeMapping.getAttributeOverrides()); - - for (Iterator<OrmAttributeOverride> contextOverrides = this.specifiedAttributeOverrides(); contextOverrides.hasNext(); ) { - OrmAttributeOverride contextOverride = contextOverrides.next(); - if (xmlOverrides.hasNext()) { - contextOverride.update(xmlOverrides.next()); - } - else { - removeSpecifiedAttributeOverride_(contextOverride); - } - } - - while (xmlOverrides.hasNext()) { - addSpecifiedAttributeOverride(buildAttributeOverride(xmlOverrides.next())); - } - } - - protected void updateVirtualAttributeOverrides() { - Iterator<PersistentAttribute> overridableAttributes = allOverridableAttributes(); - ListIterator<OrmAttributeOverride> virtualAttributeOverridesCopy = virtualAttributeOverrides(); - - for (PersistentAttribute persistentAttribute : CollectionTools.iterable(overridableAttributes)) { - OrmAttributeOverride ormAttributeOverride = getAttributeOverrideNamed(persistentAttribute.getName()); - if (ormAttributeOverride != null && !ormAttributeOverride.isVirtual()) { - continue; - } - JavaAttributeOverride javaAttributeOverride = null; - if (getJavaEntity() != null) { - javaAttributeOverride = getJavaEntity().getAttributeOverrideNamed(persistentAttribute.getName()); - } - if (ormAttributeOverride != null) { - if (virtualAttributeOverridesCopy.hasNext()) { - OrmAttributeOverride virtualAttributeOverride = virtualAttributeOverridesCopy.next(); - virtualAttributeOverride.update(buildVirtualXmlAttributeOverride(persistentAttribute, javaAttributeOverride)); - } - else { - addVirtualAttributeOverride(buildVirtualAttributeOverride(persistentAttribute, javaAttributeOverride)); - } - } - else { - addVirtualAttributeOverride(buildVirtualAttributeOverride(persistentAttribute, javaAttributeOverride)); - } - } - for (OrmAttributeOverride virtualAttributeOverride : CollectionTools.iterable(virtualAttributeOverridesCopy)) { - removeVirtualAttributeOverride(virtualAttributeOverride); - } - } - - protected OrmAttributeOverride buildAttributeOverride(XmlAttributeOverride attributeOverride) { - return getJpaFactory().buildOrmAttributeOverride(this, createAttributeOverrideOwner(), attributeOverride); - } - - protected AttributeOverride.Owner createAttributeOverrideOwner() { - return new AttributeOverrideOwner(); - } - - protected void updateSpecifiedAssociationOverrides() { - // make a copy of the XML overrides (to prevent ConcurrentModificationException) - Iterator<XmlAssociationOverride> xmlOverrides = new CloneIterator<XmlAssociationOverride>(this.resourceTypeMapping.getAssociationOverrides()); - - for (Iterator<OrmAssociationOverride> contextOverrides = this.specifiedAssociationOverrides(); contextOverrides.hasNext(); ) { - OrmAssociationOverride contextOverride = contextOverrides.next(); - if (xmlOverrides.hasNext()) { - contextOverride.update(xmlOverrides.next()); - } - else { - removeSpecifiedAssociationOverride_(contextOverride); - } - } - - while (xmlOverrides.hasNext()) { - addSpecifiedAssociationOverride(buildAssociationOverride(xmlOverrides.next())); - } - } - - protected OrmAssociationOverride buildAssociationOverride(XmlAssociationOverride associationOverride) { - return getJpaFactory().buildOrmAssociationOverride(this, createAssociationOverrideOwner(), associationOverride); - } - - protected AssociationOverride.Owner createAssociationOverrideOwner() { - return new AssociationOverrideOwner(); - } - - protected void updateNamedQueries() { - // make a copy of the XML queries (to prevent ConcurrentModificationException) - Iterator<XmlNamedQuery> xmlQueries = new CloneIterator<XmlNamedQuery>(this.resourceTypeMapping.getNamedQueries()); - - for (Iterator<OrmNamedQuery> contextQueries = this.namedQueries(); contextQueries.hasNext(); ) { - OrmNamedQuery contextQuery = contextQueries.next(); - if (xmlQueries.hasNext()) { - contextQuery.update(xmlQueries.next()); - } - else { - removeNamedQuery_(contextQuery); - } - } - - while (xmlQueries.hasNext()) { - addNamedQuery(buildNamedQuery(xmlQueries.next())); - } - } - - protected OrmNamedQuery buildNamedQuery(XmlNamedQuery resourceNamedQuery) { - return getJpaFactory().buildOrmNamedQuery(this, resourceNamedQuery); - } - - protected void updateNamedNativeQueries() { - // make a copy of the XML queries (to prevent ConcurrentModificationException) - Iterator<XmlNamedNativeQuery> xmlQueries = new CloneIterator<XmlNamedNativeQuery>(this.resourceTypeMapping.getNamedNativeQueries()); - - for (Iterator<OrmNamedNativeQuery> contextQueries = this.namedNativeQueries(); contextQueries.hasNext(); ) { - OrmNamedNativeQuery contextQuery = contextQueries.next(); - if (xmlQueries.hasNext()) { - contextQuery.update(xmlQueries.next()); - } - else { - removeNamedNativeQuery_(contextQuery); - } - } - - while (xmlQueries.hasNext()) { - addNamedNativeQuery(buildNamedNativeQuery(xmlQueries.next())); - } - } - - protected OrmNamedNativeQuery buildNamedNativeQuery(XmlNamedNativeQuery resourceNamedNativeQuery) { - return getJpaFactory().buildOrmNamedNativeQuery(this, resourceNamedNativeQuery); - } - - protected void updateIdClass(XmlIdClass idClassResource) { - this.setIdClass_(this.getResourceIdClass(idClassResource)); - } - - - // ************************************************************************* - - public String getPrimaryKeyColumnName() { - return getPrimaryKeyColumnName(getPersistentType().allAttributes()); - } - - //copied in GenericJavaEntity to avoid an API change for fixing bug 229423 in RC1 - public String getPrimaryKeyColumnName(Iterator<PersistentAttribute> attributes) { - String pkColumnName = null; - for (Iterator<PersistentAttribute> stream = attributes; stream.hasNext();) { - PersistentAttribute attribute = stream.next(); - String name = attribute.getPrimaryKeyColumnName(); - if (name != null) { - //if the attribute is a primary key then we need to check if there is an attribute override - //and use its column name instead (bug 229423) - AttributeOverride attributeOverride = getAttributeOverrideNamed(attribute.getName()); - if (attributeOverride != null) { - name = attributeOverride.getColumn().getName(); - } - } - if (pkColumnName == null) { - pkColumnName = name; - } - else if (name != null) { - // if we encounter a composite primary key, return null - return null; - } - } - // if we encounter only a single primary key column name, return it - return pkColumnName; - } - - public void addToResourceModel(XmlEntityMappings entityMappings) { - entityMappings.getEntities().add(this.resourceTypeMapping); - } - - public void removeFromResourceModel(XmlEntityMappings entityMappings) { - entityMappings.getEntities().remove(this.resourceTypeMapping); - } - - - // **************** validation ********************************************* - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - - this.validateTable(messages, reporter); - this.validateId(messages); - this.validateInheritance(messages, reporter); - this.validateGenerators(messages); - this.validateQueries(messages); - - for (Iterator<OrmSecondaryTable> stream = this.secondaryTables(); stream.hasNext(); ) { - stream.next().validate(messages, reporter); - } - - for (Iterator<OrmAttributeOverride> stream = this.attributeOverrides(); stream.hasNext(); ) { - stream.next().validate(messages, reporter); - } - - for (Iterator<OrmAssociationOverride> stream = this.associationOverrides(); stream.hasNext(); ) { - stream.next().validate(messages, reporter); - } - } - protected void validateTable(List<IMessage> messages, IReporter reporter) { - if (isAbstractTablePerClass()) { - if (this.table.isResourceSpecified()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.ENTITY_ABSTRACT_TABLE_PER_CLASS_DEFINES_TABLE, - new String[] {this.getName()}, - this, - this.getTable().getValidationTextRange() - ) - ); - } - return; - } - if (isSingleTableDescendant()) { - if (this.table.isResourceSpecified()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.ENTITY_SINGLE_TABLE_DESCENDANT_DEFINES_TABLE, - new String[] {this.getName()}, - this, - this.getTable().getValidationTextRange() - ) - ); - } - return; - } - this.table.validate(messages, reporter); - } - - protected void validateId(List<IMessage> messages) { - if (this.entityHasNoId()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.ENTITY_NO_ID, - new String[] {this.getName()}, - this, - this.getValidationTextRange() - ) - ); - } - } - - protected void validateInheritance(List<IMessage> messages, IReporter reporter) { - validateInheritanceStrategy(messages); - validateDiscriminatorColumn(messages, reporter); - validateDiscriminatorValue(messages); - } - - protected void validateDiscriminatorColumn(List<IMessage> messages, IReporter reporter) { - if (specifiedDiscriminatorColumnIsAllowed() && !discriminatorColumnIsUndefined()) { - getDiscriminatorColumn().validate(messages, reporter); - } - else if (getDiscriminatorColumn().isResourceSpecified()) { - if (!isRoot()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.ENTITY_NON_ROOT_DISCRIMINATOR_COLUMN_DEFINED, - new String[] {this.getName()}, - this, - this.getDiscriminatorColumnTextRange() - ) - ); - } - else if (isTablePerClass()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.ENTITY_TABLE_PER_CLASS_DISCRIMINATOR_COLUMN_DEFINED, - new String[] {this.getName()}, - this, - this.getDiscriminatorColumnTextRange() - ) - ); - - } - } - } - - protected void validateDiscriminatorValue(List<IMessage> messages) { - if (discriminatorValueIsUndefined() && getSpecifiedDiscriminatorValue() != null) { - if (isAbstract()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.NORMAL_SEVERITY, - JpaValidationMessages.ENTITY_ABSTRACT_DISCRIMINATOR_VALUE_DEFINED, - new String[] {this.getName()}, - this, - this.getDiscriminatorValueTextRange() - ) - ); - } - else if (isTablePerClass()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.NORMAL_SEVERITY, - JpaValidationMessages.ENTITY_TABLE_PER_CLASS_DISCRIMINATOR_VALUE_DEFINED, - new String[] {this.getName()}, - this, - this.getDiscriminatorValueTextRange() - ) - ); - } - } - } - - protected void validateInheritanceStrategy(List<IMessage> messages) { - Supported tablePerConcreteClassInheritanceIsSupported = getJpaValidation().getTablePerConcreteClassInheritanceIsSupported(); - if (tablePerConcreteClassInheritanceIsSupported == Supported.YES) { - return; - } - if ((getInheritanceStrategy() == InheritanceType.TABLE_PER_CLASS) && isRoot()) { - if (tablePerConcreteClassInheritanceIsSupported == Supported.NO) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.ENTITY_TABLE_PER_CLASS_NOT_SUPPORTED_ON_PLATFORM, - new String[] {this.getName()}, - this, - this.getInheritanceStrategyTextRange() - ) - ); - } - else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.NORMAL_SEVERITY, - JpaValidationMessages.ENTITY_TABLE_PER_CLASS_NOT_PORTABLE_ON_PLATFORM, - new String[] {this.getName()}, - this, - this.getInheritanceStrategyTextRange() - ) - ); - } - } - } - - protected TextRange getDiscriminatorValueTextRange() { - return this.resourceTypeMapping.getDiscriminatorValueTextRange(); - } - - protected TextRange getDiscriminatorColumnTextRange() { - return this.resourceTypeMapping.getDiscriminatorColumn().getValidationTextRange(); - } - - protected TextRange getInheritanceStrategyTextRange() { - return this.resourceTypeMapping.getInheritanceStrategyTextRange(); - } - - private boolean entityHasNoId() { - return ! this.entityHasId(); - } - - private boolean entityHasId() { - for (Iterator<PersistentAttribute> stream = this.getPersistentType().allAttributes(); stream.hasNext(); ) { - if (stream.next().isIdAttribute()) { - return true; - } - } - return false; - } - - protected void validateGenerators(List<IMessage> messages) { - for (Iterator<OrmGenerator> localGenerators = this.generators(); localGenerators.hasNext(); ) { - OrmGenerator localGenerator = localGenerators.next(); - for (Iterator<Generator> globalGenerators = this.getPersistenceUnit().generators(); globalGenerators.hasNext(); ) { - if (localGenerator.duplicates(globalGenerators.next())) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.GENERATOR_DUPLICATE_NAME, - new String[] {localGenerator.getName()}, - localGenerator, - localGenerator.getNameTextRange() - ) - ); - } - } - } - } - - protected void validateQueries(List<IMessage> messages) { - for (Iterator<OrmQuery> localQueries = this.queries(); localQueries.hasNext(); ) { - OrmQuery localQuery = localQueries.next(); - for (Iterator<Query> globalQueries = this.getPersistenceUnit().queries(); globalQueries.hasNext(); ) { - if (localQuery.duplicates(globalQueries.next())) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.QUERY_DUPLICATE_NAME, - new String[] {localQuery.getName()}, - localQuery, - localQuery.getNameTextRange()) - ); - } - } - } - } - - - class PrimaryKeyJoinColumnOwner implements OrmBaseJoinColumn.Owner - { - public TypeMapping getTypeMapping() { - return AbstractOrmEntity.this; - } - - public org.eclipse.jpt.db.Table getDbTable(String tableName) { - return AbstractOrmEntity.this.getDbTable(tableName); - } - - public org.eclipse.jpt.db.Table getReferencedColumnDbTable() { - Entity parentEntity = AbstractOrmEntity.this.getParentEntity(); - return (parentEntity == null) ? null : parentEntity.getPrimaryDbTable(); - } - - public int joinColumnsSize() { - return AbstractOrmEntity.this.primaryKeyJoinColumnsSize(); - } - - public boolean isVirtual(BaseJoinColumn joinColumn) { - return AbstractOrmEntity.this.defaultPrimaryKeyJoinColumns.contains(joinColumn); - } - - public String getDefaultColumnName() { - if (joinColumnsSize() != 1) { - return null; - } - return AbstractOrmEntity.this.getParentEntity().getPrimaryKeyColumnName(); - } - - public TextRange getValidationTextRange() { - // TODO Auto-generated method stub - return null; - } - } - - class AttributeOverrideOwner implements AttributeOverride.Owner { - - public ColumnMapping getColumnMapping(String attributeName) { - if (attributeName == null) { - return null; - } - for (Iterator<PersistentAttribute> stream = getPersistentType().allAttributes(); stream.hasNext();) { - PersistentAttribute persAttribute = stream.next(); - if (attributeName.equals(persAttribute.getName())) { - if (persAttribute.getMapping() instanceof ColumnMapping) { - return (ColumnMapping) persAttribute.getMapping(); - } - } - } - return null; - } - - public boolean isVirtual(BaseOverride override) { - return AbstractOrmEntity.this.virtualAttributeOverrides.contains(override); - } - - public BaseOverride setVirtual(boolean virtual, BaseOverride override) { - return AbstractOrmEntity.this.setAttributeOverrideVirtual(virtual, (OrmAttributeOverride) override); - } - - public TypeMapping getTypeMapping() { - return AbstractOrmEntity.this; - } - - } - - class AssociationOverrideOwner implements AssociationOverride.Owner { - - public RelationshipMapping getRelationshipMapping(String attributeName) { - if (attributeName == null) { - return null; - } - for (Iterator<PersistentAttribute> stream = getPersistentType().allAttributes(); stream.hasNext();) { - PersistentAttribute persAttribute = stream.next(); - if (attributeName.equals(persAttribute.getName())) { - if (persAttribute.getMapping() instanceof RelationshipMapping) { - return (RelationshipMapping) persAttribute.getMapping(); - } - } - } - return null; - } - - public boolean isVirtual(BaseOverride override) { - return AbstractOrmEntity.this.virtualAssociationOverrides.contains(override); - } - - public BaseOverride setVirtual(boolean virtual, BaseOverride override) { - // TODO Auto-generated method stub - return null; - } - - public TypeMapping getTypeMapping() { - return AbstractOrmEntity.this; - } - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmGenerator.java deleted file mode 100644 index 58a5000fd1..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmGenerator.java +++ /dev/null @@ -1,236 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.jpt.core.context.Generator; -import org.eclipse.jpt.core.context.XmlContextNode; -import org.eclipse.jpt.core.context.java.JavaGenerator; -import org.eclipse.jpt.core.context.orm.OrmGenerator; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.resource.orm.XmlGenerator; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Catalog; -import org.eclipse.jpt.db.Schema; -import org.eclipse.jpt.db.SchemaContainer; -import org.eclipse.jpt.utility.internal.StringTools; - -/** - * - */ -public abstract class AbstractOrmGenerator<T extends XmlGenerator> - extends AbstractXmlContextNode - implements OrmGenerator -{ - - protected String name; - - protected Integer specifiedInitialValue; - protected int defaultInitialValue; - - protected Integer specifiedAllocationSize; - protected int defaultAllocationSize; - - protected T resourceGenerator; - - - protected AbstractOrmGenerator(XmlContextNode parent) { - super(parent); - } - - protected T getResourceGenerator() { - return this.resourceGenerator; - } - - - // ********** name ********** - - public String getName() { - return this.name; - } - - public void setName(String name) { - String old = this.name; - this.name = name; - this.getResourceGenerator().setName(name); - this.firePropertyChanged(NAME_PROPERTY, old, name); - } - - protected void setName_(String name) { - String old = this.name; - this.name = name; - this.firePropertyChanged(NAME_PROPERTY, old, name); - } - - - // ********** initial value ********** - - public int getInitialValue() { - return (this.specifiedInitialValue != null) ? this.specifiedInitialValue.intValue() : this.defaultInitialValue; - } - - public Integer getSpecifiedInitialValue() { - return this.specifiedInitialValue; - } - - public void setSpecifiedInitialValue(Integer specifiedInitialValue) { - Integer old = this.specifiedInitialValue; - this.specifiedInitialValue = specifiedInitialValue; - this.getResourceGenerator().setInitialValue(specifiedInitialValue); - this.firePropertyChanged(SPECIFIED_INITIAL_VALUE_PROPERTY, old, specifiedInitialValue); - } - - protected void setSpecifiedInitialValue_(Integer specifiedInitialValue) { - Integer old = this.specifiedInitialValue; - this.specifiedInitialValue = specifiedInitialValue; - this.firePropertyChanged(SPECIFIED_INITIAL_VALUE_PROPERTY, old, specifiedInitialValue); - } - - public int getDefaultInitialValue() { - return this.defaultInitialValue; - } - - protected void setDefaultInitialValue(int defaultInitialValue) { - int old = this.defaultInitialValue; - this.defaultInitialValue = defaultInitialValue; - this.firePropertyChanged(DEFAULT_INITIAL_VALUE_PROPERTY, old, defaultInitialValue); - } - - - // ********** allocation size ********** - - public int getAllocationSize() { - return (this.specifiedAllocationSize != null) ? this.specifiedAllocationSize.intValue() : this.defaultAllocationSize; - } - - public Integer getSpecifiedAllocationSize() { - return this.specifiedAllocationSize; - } - - public void setSpecifiedAllocationSize(Integer specifiedAllocationSize) { - Integer old = this.specifiedAllocationSize; - this.specifiedAllocationSize = specifiedAllocationSize; - this.getResourceGenerator().setAllocationSize(specifiedAllocationSize); - this.firePropertyChanged(SPECIFIED_ALLOCATION_SIZE_PROPERTY, old, specifiedAllocationSize); - } - - protected void setSpecifiedAllocationSize_(Integer specifiedAllocationSize) { - Integer old = this.specifiedAllocationSize; - this.specifiedAllocationSize = specifiedAllocationSize; - this.firePropertyChanged(SPECIFIED_ALLOCATION_SIZE_PROPERTY, old, specifiedAllocationSize); - } - - public int getDefaultAllocationSize() { - return Generator.DEFAULT_ALLOCATION_SIZE; - } - - protected void setDefaultAllocationSize(int defaultAllocationSize) { - int old = this.defaultAllocationSize; - this.defaultAllocationSize = defaultAllocationSize; - this.firePropertyChanged(DEFAULT_ALLOCATION_SIZE_PROPERTY, old, defaultAllocationSize); - } - - - // ********** text ranges ********** - - public TextRange getValidationTextRange() { - TextRange validationTextRange = this.getResourceGenerator().getValidationTextRange(); - return validationTextRange != null ? validationTextRange : getParent().getValidationTextRange(); - } - - public TextRange getNameTextRange() { - TextRange nameTextRange = this.getResourceGenerator().getNameTextRange(); - return nameTextRange != null ? nameTextRange : getValidationTextRange(); - } - - - // ********** resource => context ********** - - protected void initialize(T xmlResourceGenerator) { - this.resourceGenerator = xmlResourceGenerator; - this.name = xmlResourceGenerator.getName(); - this.specifiedInitialValue = xmlResourceGenerator.getInitialValue(); - this.specifiedAllocationSize = xmlResourceGenerator.getAllocationSize(); - //TODO defaults - } - - protected void update(T xmlResourceGenerator) { - this.resourceGenerator = xmlResourceGenerator; - this.setName_(xmlResourceGenerator.getName()); - this.setSpecifiedInitialValue_(xmlResourceGenerator.getInitialValue()); - this.setSpecifiedAllocationSize_(xmlResourceGenerator.getAllocationSize()); - getPersistenceUnit().addGenerator(this); - //TODO defaults - } - - - // ********** database stuff ********** - - public Schema getDbSchema() { - SchemaContainer dbSchemaContainer = this.getDbSchemaContainer(); - return (dbSchemaContainer == null) ? null : dbSchemaContainer.getSchemaForIdentifier(this.getSchema()); - } - - /** - * If we don't have a catalog (i.e. we don't even have a *default* catalog), - * then the database probably does not support catalogs; and we need to - * get the schema directly from the database. - */ - public SchemaContainer getDbSchemaContainer() { - String catalog = this.getCatalog(); - return (catalog != null) ? this.getDbCatalog(catalog) : this.getDatabase(); - } - - protected abstract String getSchema(); - - public Catalog getDbCatalog() { - String catalog = this.getCatalog(); - if (catalog == null) { - return null; // not even a default catalog (i.e. database probably does not support catalogs) - } - return this.getDbCatalog(catalog); - } - - protected abstract String getCatalog(); - - - // ********** misc ********** - - public boolean isVirtual() { - return getResourceGenerator().isVirtual(); - } - - @Override - public XmlContextNode getParent() { - return (XmlContextNode) super.getParent(); - } - - public boolean overrides(Generator generator) { - if (getName() == null) { - return false; - } - // this isn't ideal, but it will have to do until we have further adopter input - return this.getName().equals(generator.getName()) && generator instanceof JavaGenerator; - } - - public boolean duplicates(Generator other) { - return (this != other) - && ! StringTools.stringIsEmpty(this.name) - && this.name.equals(other.getName()) - && ! this.overrides(other) - && ! other.overrides(this); - } - - @Override - public void toString(StringBuilder sb) { - super.toString(sb); - sb.append(this.name); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMappedSuperclass.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMappedSuperclass.java deleted file mode 100644 index 2a269b996c..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMappedSuperclass.java +++ /dev/null @@ -1,168 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.Table; -import org.eclipse.jpt.core.context.java.JavaMappedSuperclass; -import org.eclipse.jpt.core.context.java.JavaPersistentType; -import org.eclipse.jpt.core.context.orm.OrmMappedSuperclass; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmPersistentType; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlEntityMappings; -import org.eclipse.jpt.core.resource.orm.XmlIdClass; -import org.eclipse.jpt.core.resource.orm.XmlMappedSuperclass; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; -import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; - - -public abstract class AbstractOrmMappedSuperclass extends AbstractOrmTypeMapping<XmlMappedSuperclass> - implements OrmMappedSuperclass -{ - protected String idClass; - - protected AbstractOrmMappedSuperclass(OrmPersistentType parent, XmlMappedSuperclass resourceMapping) { - super(parent, resourceMapping); - this.idClass = this.getResourceIdClassName(this.getResourceIdClass()); - } - - public JavaMappedSuperclass getJavaMappedSuperclass() { - JavaPersistentType javaPersistentType = this.getJavaPersistentType(); - if (javaPersistentType != null && javaPersistentType.getMappingKey() == MappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY) { - return (JavaMappedSuperclass) javaPersistentType.getMapping(); - } - return null; - } - - /** - * This checks metaDataComplete before returning the JavaMappedSuperclass. - * As far as defaults are concerned, if metadataComplete is true, the JavaMappedSuperclass is ignored. - */ - protected JavaMappedSuperclass getJavaMappedSuperclassForDefaults() { - if (isMetadataComplete()) { - return null; - } - return getJavaMappedSuperclass(); - } - - - public char getIdClassEnclosingTypeSeparator() { - return '$'; - } - - public String getIdClass() { - return this.idClass; - } - - public void setIdClass(String newIdClass) { - String oldIdClass = this.idClass; - this.idClass = newIdClass; - if (oldIdClass != newIdClass) { - if (this.getResourceIdClass() != null) { - this.getResourceIdClass().setClassName(newIdClass); - if (this.getResourceIdClass().isUnset()) { - removeResourceIdClass(); - } - } - else if (newIdClass != null) { - addResourceIdClass(); - getResourceIdClass().setClassName(newIdClass); - } - } - firePropertyChanged(ID_CLASS_PROPERTY, oldIdClass, newIdClass); - } - - protected void setIdClass_(String newIdClass) { - String oldIdClass = this.idClass; - this.idClass = newIdClass; - firePropertyChanged(ID_CLASS_PROPERTY, oldIdClass, newIdClass); - } - - protected XmlIdClass getResourceIdClass() { - return this.resourceTypeMapping.getIdClass(); - } - - protected void addResourceIdClass() { - this.resourceTypeMapping.setIdClass(OrmFactory.eINSTANCE.createXmlIdClass()); - } - - protected void removeResourceIdClass() { - this.resourceTypeMapping.setIdClass(null); - } - - public String getKey() { - return MappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY; - } - - public boolean tableNameIsInvalid(String tableName) { - return false; - } - - @Override - public boolean shouldValidateAgainstDatabase() { - return false; - } - - public Iterator<String> associatedTableNamesIncludingInherited() { - return EmptyIterator.instance(); - } - - public Iterator<Table> associatedTables() { - return EmptyIterator.instance(); - } - - public Iterator<Table> associatedTablesIncludingInherited() { - return EmptyIterator.instance(); - } - - @Override - public Iterator<OrmPersistentAttribute> overridableAttributes() { - return new FilteringIterator<OrmPersistentAttribute, OrmPersistentAttribute>(this.getPersistentType().attributes()) { - @Override - protected boolean accept(OrmPersistentAttribute o) { - return o.isOverridableAttribute(); - } - }; - } - - @Override - public Iterator<OrmPersistentAttribute> overridableAssociations() { - return new FilteringIterator<OrmPersistentAttribute, OrmPersistentAttribute>(this.getPersistentType().attributes()) { - @Override - protected boolean accept(OrmPersistentAttribute o) { - return o.isOverridableAssociation(); - } - }; - } - - public int getXmlSequence() { - return 0; - } - - public void addToResourceModel(XmlEntityMappings entityMappings) { - entityMappings.getMappedSuperclasses().add(this.resourceTypeMapping); - } - - public void removeFromResourceModel(XmlEntityMappings entityMappings) { - entityMappings.getMappedSuperclasses().remove(this.resourceTypeMapping); - } - - @Override - public void update() { - super.update(); - this.setIdClass_(this.getResourceIdClassName(this.getResourceIdClass())); - } - - protected String getResourceIdClassName(XmlIdClass idClassResource) { - return idClassResource == null ? null : idClassResource.getClassName(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java deleted file mode 100644 index dec3d47d73..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java +++ /dev/null @@ -1,210 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.jpt.core.context.FetchType; -import org.eclipse.jpt.core.context.MultiRelationshipMapping; -import org.eclipse.jpt.core.context.orm.OrmMultiRelationshipMapping; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.resource.orm.MapKey; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlMultiRelationshipMapping; - - -public abstract class AbstractOrmMultiRelationshipMapping<T extends XmlMultiRelationshipMapping> - extends AbstractOrmRelationshipMapping<T> - implements OrmMultiRelationshipMapping -{ - protected String mapKey; - - protected String orderBy;//TODO change this to defaultOrderBy and specifiedOrderBy? - - protected boolean isNoOrdering; - - protected boolean isPkOrdering; - - protected boolean isCustomOrdering; - - - protected AbstractOrmMultiRelationshipMapping(OrmPersistentAttribute parent, T resourceMapping) { - super(parent, resourceMapping); - this.mapKey = this.getResourceMapKeyName(); - this.orderBy = this.getResourceOrderBy(); - if (this.orderBy == null) { - this.isNoOrdering = true; - } - else { - this.isCustomOrdering = true; - } - } - - - public FetchType getDefaultFetch() { - return MultiRelationshipMapping.DEFAULT_FETCH_TYPE; - } - - - // **************** map key ************************************************ - - public String getMapKey() { - return this.mapKey; - } - - public void setMapKey(String newMapKey) { - String oldMapKey = this.mapKey; - this.mapKey = newMapKey; - if (oldMapKey != newMapKey) { - if (this.getResourceMapKey() != null) { - this.getResourceMapKey().setName(newMapKey); - if (this.getResourceMapKey().isUnset()) { - removeResourceMapKey(); - } - } - else if (newMapKey != null) { - addResourceMapKey(); - getResourceMapKey().setName(newMapKey); - } - } - firePropertyChanged(MAP_KEY_PROPERTY, oldMapKey, newMapKey); - } - - protected void setMapKey_(String newMapKey) { - String oldMapKey = this.mapKey; - this.mapKey = newMapKey; - firePropertyChanged(MAP_KEY_PROPERTY, oldMapKey, newMapKey); - } - - protected MapKey getResourceMapKey() { - return this.resourceAttributeMapping.getMapKey(); - } - - protected void removeResourceMapKey() { - this.resourceAttributeMapping.setMapKey(null); - } - - protected void addResourceMapKey() { - this.resourceAttributeMapping.setMapKey(OrmFactory.eINSTANCE.createMapKeyImpl()); - } - - public Iterator<String> candidateMapKeyNames() { - return this.allTargetEntityAttributeNames(); - } - - - // **************** ordering *********************************************** - - public String getOrderBy() { - return this.orderBy; - } - - public void setOrderBy(String newOrderBy) { - String oldOrderBy = this.orderBy; - this.orderBy = newOrderBy; - this.resourceAttributeMapping.setOrderBy(newOrderBy); - firePropertyChanged(ORDER_BY_PROPERTY, oldOrderBy, newOrderBy); - } - - protected void setOrderBy_(String newOrderBy) { - String oldOrderBy = this.orderBy; - this.orderBy = newOrderBy; - firePropertyChanged(ORDER_BY_PROPERTY, oldOrderBy, newOrderBy); - } - - public boolean isNoOrdering() { - return this.isNoOrdering; - } - - public void setNoOrdering(boolean newNoOrdering) { - boolean oldNoOrdering = this.isNoOrdering; - this.isNoOrdering = newNoOrdering; - if (newNoOrdering) { - this.resourceAttributeMapping.setOrderBy(null); - } - firePropertyChanged(NO_ORDERING_PROPERTY, oldNoOrdering, newNoOrdering); - } - - protected void setNoOrdering_(boolean newNoOrdering) { - boolean oldNoOrdering = this.isNoOrdering; - this.isNoOrdering = newNoOrdering; - firePropertyChanged(NO_ORDERING_PROPERTY, oldNoOrdering, newNoOrdering); - } - - public boolean isPkOrdering() { - return this.isPkOrdering; - } - - public void setPkOrdering(boolean newPkOrdering) { - boolean oldPkOrdering = this.isPkOrdering; - this.isPkOrdering = newPkOrdering; - if (newPkOrdering) { - this.resourceAttributeMapping.setOrderBy(""); //$NON-NLS-1$ - } - firePropertyChanged(PK_ORDERING_PROPERTY, oldPkOrdering, newPkOrdering); - } - - protected void setPkOrdering_(boolean newPkOrdering) { - boolean oldPkOrdering = this.isPkOrdering; - this.isPkOrdering = newPkOrdering; - firePropertyChanged(PK_ORDERING_PROPERTY, oldPkOrdering, newPkOrdering); - } - - public boolean isCustomOrdering() { - return this.isCustomOrdering; - } - - public void setCustomOrdering(boolean newCustomOrdering) { - boolean oldCustomOrdering = this.isCustomOrdering; - this.isCustomOrdering = newCustomOrdering; - if (newCustomOrdering) { - setOrderBy(""); //$NON-NLS-1$ - } - firePropertyChanged(CUSTOM_ORDERING_PROPERTY, oldCustomOrdering, newCustomOrdering); - } - - protected void setCustomOrdering_(boolean newCustomOrdering) { - boolean oldCustomOrdering = this.isCustomOrdering; - this.isCustomOrdering = newCustomOrdering; - firePropertyChanged(CUSTOM_ORDERING_PROPERTY, oldCustomOrdering, newCustomOrdering); - } - - - // **************** resource -> context ************************************ - - @Override - public void update() { - super.update(); - this.setMapKey_(this.getResourceMapKeyName()); - this.setOrderBy_(this.getResourceOrderBy()); - if (getOrderBy() == null) { - setNoOrdering_(true); - setPkOrdering_(false); - setCustomOrdering_(false); - } - else { - setNoOrdering_(false); - setPkOrdering_(false); - setCustomOrdering_(true); - } - } - - protected String getResourceMapKeyName() { - return this.resourceAttributeMapping.getMapKey() == null ? null : this.resourceAttributeMapping.getMapKey().getName(); - } - - protected String getResourceOrderBy() { - return this.resourceAttributeMapping.getOrderBy(); - } - - @Override - protected String getResourceDefaultTargetEntity() { - return this.getJavaPersistentAttribute().getMultiReferenceEntityTypeName(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmNamedColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmNamedColumn.java deleted file mode 100644 index 98e94c6e28..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmNamedColumn.java +++ /dev/null @@ -1,196 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.jpt.core.context.NamedColumn; -import org.eclipse.jpt.core.context.XmlContextNode; -import org.eclipse.jpt.core.context.orm.OrmNamedColumn; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.resource.orm.XmlNamedColumn; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Column; -import org.eclipse.jpt.db.Table; - - -public abstract class AbstractOrmNamedColumn<T extends XmlNamedColumn> extends AbstractXmlContextNode - implements OrmNamedColumn -{ - protected Owner owner; - - protected String specifiedName; - - protected String defaultName; - - protected String columnDefinition; - - protected AbstractOrmNamedColumn(XmlContextNode parent, Owner owner) { - super(parent); - this.owner = owner; - } - - @Override - public XmlContextNode getParent() { - return (XmlContextNode) super.getParent(); - } - - public void initializeFrom(NamedColumn oldColumn) { - setSpecifiedName(oldColumn.getSpecifiedName()); - setColumnDefinition(oldColumn.getColumnDefinition()); - } - - protected abstract T getResourceColumn(); - - protected abstract void removeResourceColumn(); - - protected abstract void addResourceColumn(); - - public Owner getOwner() { - return this.owner; - } - - public String getName() { - return (this.specifiedName != null) ? this.specifiedName : this.defaultName; - } - - public String getSpecifiedName() { - return this.specifiedName; - } - - public void setSpecifiedName(String newSpecifiedName) { - String oldSpecifiedName = this.specifiedName; - this.specifiedName = newSpecifiedName; - if (oldSpecifiedName != newSpecifiedName) { - if (this.getResourceColumn() != null) { - this.getResourceColumn().setName(newSpecifiedName); - if (this.getResourceColumn().isUnset()) { - removeResourceColumn(); - } - } - else if (newSpecifiedName != null) { - addResourceColumn(); - getResourceColumn().setName(newSpecifiedName); - } - } - firePropertyChanged(SPECIFIED_NAME_PROPERTY, oldSpecifiedName, newSpecifiedName); - } - - protected void setSpecifiedName_(String newSpecifiedName) { - String oldSpecifiedName = this.specifiedName; - this.specifiedName = newSpecifiedName; - firePropertyChanged(SPECIFIED_NAME_PROPERTY, oldSpecifiedName, newSpecifiedName); - } - - public String getDefaultName() { - return this.defaultName; - } - - protected void setDefaultName(String newDefaultName) { - String oldDefaultName = this.defaultName; - this.defaultName = newDefaultName; - firePropertyChanged(DEFAULT_NAME_PROPERTY, oldDefaultName, newDefaultName); - } - - public String getColumnDefinition() { - return this.columnDefinition; - } - - public void setColumnDefinition(String newColumnDefinition) { - String oldColumnDefinition = this.columnDefinition; - this.columnDefinition = newColumnDefinition; - if (oldColumnDefinition != newColumnDefinition) { - if (this.getResourceColumn() != null) { - this.getResourceColumn().setColumnDefinition(newColumnDefinition); - if (this.getResourceColumn().isUnset()) { - removeResourceColumn(); - } - } - else if (newColumnDefinition != null) { - addResourceColumn(); - getResourceColumn().setColumnDefinition(newColumnDefinition); - } - } - firePropertyChanged(COLUMN_DEFINITION_PROPERTY, oldColumnDefinition, newColumnDefinition); - } - - protected void setColumnDefinition_(String newColumnDefinition) { - String oldColumnDefinition = this.columnDefinition; - this.columnDefinition = newColumnDefinition; - firePropertyChanged(COLUMN_DEFINITION_PROPERTY, oldColumnDefinition, newColumnDefinition); - } - - public Column getDbColumn() { - Table table = this.getDbTable(); - return (table == null) ? null : table.getColumnForIdentifier(getName()); - } - - public Table getDbTable() { - return getOwner().getDbTable(this.getOwningTableName()); - } - - protected abstract String getOwningTableName(); - - public boolean isResolved() { - return getDbColumn() != null; - } - - public TextRange getNameTextRange() { - if (getResourceColumn() != null) { - TextRange textRange = getResourceColumn().getNameTextRange(); - if (textRange != null) { - return textRange; - } - } - return getOwner().getValidationTextRange(); - } - - public TextRange getValidationTextRange() { - TextRange textRange = getResourceColumn().getValidationTextRange(); - if (textRange != null) { - return textRange; - } - return getOwner().getValidationTextRange(); - } - - - // ******************* initialization from orm xml resource model ******************** - - protected void initialize(T column) { - this.specifiedName = this.getResourceColumnName(column); - this.defaultName = this.getOwnerDefaultColumnName(); - this.columnDefinition = this.getResourceColumnDefinition(column); - } - - protected void update(T column) { - setSpecifiedName_(this.getResourceColumnName(column)); - setDefaultName(this.getOwnerDefaultColumnName()); - setColumnDefinition_(this.getResourceColumnDefinition(column)); - } - - protected String getResourceColumnName(T column) { - return column == null ? null : column.getName(); - } - - protected String getResourceColumnDefinition(T column) { - return column == null ? null : column.getColumnDefinition(); - } - - /** - * Return the default column name. - */ - protected String getOwnerDefaultColumnName() { - return this.getOwner().getDefaultColumnName(); - } - - @Override - public void toString(StringBuilder sb) { - sb.append(this.getName()); - } - -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmPersistentAttribute.java deleted file mode 100644 index 1896d37d40..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmPersistentAttribute.java +++ /dev/null @@ -1,267 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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.List; -import org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaStructureNode; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.AccessType; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmPersistentType; -import org.eclipse.jpt.core.context.orm.OrmStructureNodes; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; -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 abstract class AbstractOrmPersistentAttribute extends AbstractXmlContextNode - implements OrmPersistentAttribute -{ - protected final Owner owner; - - protected OrmAttributeMapping attributeMapping; - - protected JavaPersistentAttribute javaPersistentAttribute; - - protected AbstractOrmPersistentAttribute(OrmPersistentType parent, Owner owner, XmlAttributeMapping resourceMapping) { - super(parent); - this.owner = owner; - this.attributeMapping = buildAttributeMapping(resourceMapping); - this.javaPersistentAttribute = findJavaPersistentAttribute(); - } - - public XmlAttributeMapping getResourceAttributeMapping() { - return this.attributeMapping.getResourceAttributeMapping(); - } - - public JavaPersistentAttribute getJavaPersistentAttribute() { - return this.javaPersistentAttribute; - } - - protected void setJavaPersistentAttribute(JavaPersistentAttribute javaPersistentAttribute) { - JavaPersistentAttribute old = this.javaPersistentAttribute; - this.javaPersistentAttribute = javaPersistentAttribute; - this.firePropertyChanged(JAVA_PERSISTENT_ATTRIBUTE_PROPERTY, old, javaPersistentAttribute); - } - - protected OrmAttributeMapping buildAttributeMapping(XmlAttributeMapping resourceMapping) { - return getJpaPlatform().buildOrmAttributeMappingFromMappingKey(this, resourceMapping); - } - - public String getId() { - return OrmStructureNodes.PERSISTENT_ATTRIBUTE_ID; - } - - public AccessType getAccess() { - return getSpecifiedAccess() != null ? getSpecifiedAccess() : getDefaultAccess(); - } - - public AccessType getDefaultAccess() { - return getPersistentType().getAccess(); - } - - public String getName() { - return this.attributeMapping.getName(); - } - - public void nameChanged(String oldName, String newName) { - firePropertyChanged(NAME_PROPERTY, oldName, newName); - } - - public OrmAttributeMapping getSpecifiedMapping() { - return this.attributeMapping; - } - - public OrmAttributeMapping getMapping() { - return this.attributeMapping; - } - - public String getMappingKey() { - return this.attributeMapping.getKey(); - } - - public String getDefaultMappingKey() { - return null; - } - - public void setSpecifiedMappingKey(String newMappingKey) { - if (this.getMappingKey() == newMappingKey) { - return; - } - OrmAttributeMapping oldMapping = this.attributeMapping; - XmlAttributeMapping resourceAttributeMapping = getJpaPlatform().buildOrmResourceAttributeMapping(newMappingKey, getContentType()); - this.attributeMapping = buildAttributeMapping(resourceAttributeMapping); - - getPersistentType().changeMapping(this, oldMapping, this.attributeMapping); - firePropertyChanged(SPECIFIED_MAPPING_PROPERTY, oldMapping, this.attributeMapping); - } - - public OrmPersistentType getPersistentType() { - return (OrmPersistentType) getParent(); - } - - public OrmTypeMapping getTypeMapping() { - return getPersistentType().getMapping(); - } - - public boolean isVirtual() { - return getPersistentType().containsVirtualPersistentAttribute(this); - } - - public void makeVirtual() { - if (isVirtual()) { - throw new IllegalStateException("Attribute is already virtual"); //$NON-NLS-1$ - } - getPersistentType().makePersistentAttributeVirtual(this); - } - - public void makeSpecified() { - if (!isVirtual()) { - throw new IllegalStateException("Attribute is already specified"); //$NON-NLS-1$ - } - if (getMappingKey() == MappingKeys.NULL_ATTRIBUTE_MAPPING_KEY) { - throw new IllegalStateException("Use makeSpecified(String) instead and specify a mapping type"); //$NON-NLS-1$ - } - getPersistentType().makePersistentAttributeSpecified(this); - } - - public void makeSpecified(String mappingKey) { - if (!isVirtual()) { - throw new IllegalStateException("Attribute is already specified"); //$NON-NLS-1$ - } - getPersistentType().makePersistentAttributeSpecified(this, mappingKey); - } - - public String getPrimaryKeyColumnName() { - return this.attributeMapping.getPrimaryKeyColumnName(); - } - - public boolean isOverridableAttribute() { - return this.attributeMapping.isOverridableAttributeMapping(); - } - - public boolean isOverridableAssociation() { - return this.attributeMapping.isOverridableAssociationMapping(); - } - - public boolean isIdAttribute() { - return this.attributeMapping.isIdMapping(); - } - - public void update() { - this.attributeMapping.update(); - this.setJavaPersistentAttribute(findJavaPersistentAttribute()); - this.owner.updateJavaPersistentAttribute(); - } - - protected JavaPersistentAttribute findJavaPersistentAttribute() { - return this.owner.findJavaPersistentAttribute(this); - } - - public JpaStructureNode getStructureNode(int offset) { - return this; - } - - public IContentType getContentType() { - return this.getPersistentType().getContentType(); - } - - public boolean contains(int textOffset) { - if (isVirtual()) { - return false; - } - return this.attributeMapping.contains(textOffset); - } - - public TextRange getSelectionTextRange() { - if (isVirtual()) { - return null; - } - return this.attributeMapping.getSelectionTextRange(); - } - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - this.validateAttribute(messages); - this.validateModifiers(messages); - this.attributeMapping.validate(messages, reporter); - } - - protected void validateAttribute(List<IMessage> messages) { - if (this.javaPersistentAttribute == null) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.PERSISTENT_ATTRIBUTE_UNRESOLVED_NAME, - new String[] {this.getName(), this.getPersistentType().getMapping().getClass_()}, - this.attributeMapping, - this.attributeMapping.getNameTextRange() - ) - ); - } - } - - protected void validateModifiers(List<IMessage> messages) { - if (this.getMappingKey() == MappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY) { - return; - } - if (this.javaPersistentAttribute == null) { - return; - } - - if (this.javaPersistentAttribute.isField()) { - if (this.javaPersistentAttribute.isFinal()) { - messages.add(this.buildAttributeMessage(JpaValidationMessages.PERSISTENT_ATTRIBUTE_FINAL_FIELD)); - } - if (this.javaPersistentAttribute.isPublic()) { - messages.add(this.buildAttributeMessage(JpaValidationMessages.PERSISTENT_ATTRIBUTE_PUBLIC_FIELD)); - } - } else { - //TODO validation : need to have a validation message for final methods as well. - //From the JPA spec : No methods or persistent instance variables of the entity class may be final. - } - } - - protected IMessage buildAttributeMessage(String msgID) { - return DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - msgID, - new String[] {this.getName()}, - this, - getValidationTextRange() - ); - } - - public TextRange getValidationTextRange() { - if (isVirtual()) { - return getPersistentType().getMapping().getAttributesTextRange(); - } - return this.attributeMapping.getValidationTextRange(); - } - - @Override - public void toString(StringBuilder sb) { - sb.append(this.getName()); - } - - public void dispose() { - //nothing to dispose - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmPersistentType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmPersistentType.java deleted file mode 100644 index 12e07cc191..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmPersistentType.java +++ /dev/null @@ -1,970 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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.ArrayList; -import java.util.Collection; -import java.util.Comparator; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaStructureNode; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.AccessType; -import org.eclipse.jpt.core.context.PersistentAttribute; -import org.eclipse.jpt.core.context.PersistentType; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.context.java.JavaPersistentType; -import org.eclipse.jpt.core.context.orm.EntityMappings; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmPersistentType; -import org.eclipse.jpt.core.context.orm.OrmStructureNodes; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; -import org.eclipse.jpt.core.resource.orm.Attributes; -import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; -import org.eclipse.jpt.core.resource.orm.XmlTypeMapping; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.internal.ClassTools; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterators.ChainIterator; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; -import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; -import org.eclipse.jpt.utility.internal.iterators.CompositeListIterator; -import org.eclipse.jpt.utility.internal.iterators.EmptyListIterator; -import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; -import org.eclipse.jpt.utility.internal.iterators.TransformationIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -public abstract class AbstractOrmPersistentType - extends AbstractXmlContextNode - implements OrmPersistentType -{ - protected final List<OrmPersistentAttribute> specifiedPersistentAttributes; - - protected final List<OrmPersistentAttribute> virtualPersistentAttributes; - - protected AccessType defaultAccess; - - protected AccessType specifiedAccess; - - protected OrmTypeMapping typeMapping; - - protected PersistentType parentPersistentType; - - protected JavaPersistentType javaPersistentType; - - - protected AbstractOrmPersistentType(EntityMappings parent, XmlTypeMapping resourceMapping) { - super(parent); - this.specifiedPersistentAttributes = new ArrayList<OrmPersistentAttribute>(); - this.virtualPersistentAttributes = new ArrayList<OrmPersistentAttribute>(); - this.typeMapping = buildTypeMapping(resourceMapping); - this.specifiedAccess = this.getResourceAccess(); - this.defaultAccess = this.buildDefaultAccess(); - this.javaPersistentType = this.buildJavaPersistentType(); - this.parentPersistentType = this.buildParentPersistentType(); - this.initializePersistentAttributes(); - } - - - // ********** OrmPersistentType implementation ********** - - @Override - public EntityMappings getParent() { - return (EntityMappings) super.getParent(); - } - - protected EntityMappings getEntityMappings() { - return this.getParent(); - } - - public IContentType getContentType() { - return this.getEntityMappings().getContentType(); - } - - public String getDefaultPackage() { - return this.getEntityMappings().getDefaultPersistentTypePackage(); - } - - public boolean isDefaultMetadataComplete() { - return this.getEntityMappings().isDefaultPersistentTypeMetadataComplete(); - } - - public String getId() { - return OrmStructureNodes.PERSISTENT_TYPE_ID; - } - - public boolean isFor(String typeName) { - String className = this.getName(); - if (className == null) { - return false; - } - if (className.equals(typeName)) { - return true; - } - String defaultPackage = this.getDefaultPackage(); - if (defaultPackage == null) { - return false; - } - return (defaultPackage + '.' + className).equals(typeName); - } - - protected OrmTypeMapping buildTypeMapping(XmlTypeMapping resourceMapping) { - return this.getJpaPlatform().buildOrmTypeMappingFromMappingKey(this, resourceMapping); - } - - public OrmTypeMapping getMapping() { - return this.typeMapping; - } - - // **************** PersistentType.Owner implementation ***************************** - - public AccessType getOverridePersistentTypeAccess() { - if (this.getSpecifiedAccess() != null) { - return this.getSpecifiedAccess(); - } - - PersistentType ppt = this.getParentPersistentType(); - if (ppt instanceof OrmPersistentType) { - AccessType accessType = ((OrmPersistentType) ppt).getSpecifiedAccess(); - if (accessType != null) { - return accessType; - } - } - - if (this.getMapping().isMetadataComplete()) { - AccessType accessType = this.getOwnerDefaultAccess(); - if (accessType != null) { - return accessType; - } - } - - // no override access type - return null; - } - - public AccessType getDefaultPersistentTypeAccess() { - PersistentType ppt = this.getParentPersistentType(); - if (ppt instanceof OrmPersistentType) { - AccessType accessType = ((OrmPersistentType) ppt).getDefaultAccess(); - if (accessType != null) { - return accessType; - } - } - - return this.getOwnerDefaultAccess(); - } - - // ********** PersistentType implementation ********** - - public void setMappingKey(String newMappingKey) { - if (this.getMappingKey() == newMappingKey) { - return; - } - OrmTypeMapping oldMapping = getMapping(); - XmlTypeMapping resourceTypeMapping = getJpaPlatform().buildOrmResourceTypeMapping(newMappingKey, getContentType()); - this.typeMapping = buildTypeMapping(resourceTypeMapping); - this.getEntityMappings().changeMapping(this, oldMapping, this.typeMapping); - firePropertyChanged(MAPPING_PROPERTY, oldMapping, this.typeMapping); - } - - public Iterator<PersistentType> inheritanceHierarchy() { - // using a chain iterator to traverse up the inheritance tree - return new ChainIterator<PersistentType>(this) { - @Override - protected PersistentType nextLink(PersistentType pt) { - return pt.getParentPersistentType(); - } - }; - } - - public Iterator<PersistentType> ancestors() { - // using a chain iterator to traverse up the inheritance tree - return new ChainIterator<PersistentType>(this.getParentPersistentType()) { - @Override - protected PersistentType nextLink(PersistentType pt) { - return pt.getParentPersistentType(); - } - }; - } - - public PersistentType getParentPersistentType() { - return this.parentPersistentType; - } - - public void setParentPersistentType(PersistentType newParentPersistentType) { - if (attributeValueHasNotChanged(this.parentPersistentType, newParentPersistentType)) { - return; - } - PersistentType oldParentPersistentType = this.parentPersistentType; - this.parentPersistentType = newParentPersistentType; - firePropertyChanged(PersistentType.PARENT_PERSISTENT_TYPE_PROPERTY, oldParentPersistentType, newParentPersistentType); - } - - public AccessType getDefaultAccess() { - return this.defaultAccess; - } - - protected void setDefaultAccess(AccessType newDefaultAccess) { - AccessType oldDefaultAccess = this.defaultAccess; - this.defaultAccess = newDefaultAccess; - firePropertyChanged(DEFAULT_ACCESS_PROPERTY, oldDefaultAccess, newDefaultAccess); - } - - public AccessType getSpecifiedAccess() { - return this.specifiedAccess; - } - - public void setSpecifiedAccess(AccessType newSpecifiedAccess) { - AccessType oldSpecifiedAccess = this.specifiedAccess; - this.specifiedAccess = newSpecifiedAccess; - this.getResourceTypeMapping().setAccess(AccessType.toOrmResourceModel(newSpecifiedAccess)); - firePropertyChanged(SPECIFIED_ACCESS_PROPERTY, oldSpecifiedAccess, newSpecifiedAccess); - } - - public AccessType getAccess() { - return (this.getSpecifiedAccess() == null) ? this.getDefaultAccess() : this.getSpecifiedAccess(); - } - - public AccessType getOwnerOverrideAccess() { - return this.getEntityMappings().getOverridePersistentTypeAccess(); - } - - public AccessType getOwnerDefaultAccess() { - return this.getEntityMappings().getDefaultPersistentTypeAccess(); - } - - public void changeMapping(OrmPersistentAttribute ormPersistentAttribute, OrmAttributeMapping oldMapping, OrmAttributeMapping newMapping) { - int sourceIndex = this.specifiedPersistentAttributes.indexOf(ormPersistentAttribute); - this.specifiedPersistentAttributes.remove(sourceIndex); - oldMapping.removeFromResourceModel(getResourceAttributes()); - int targetIndex = insertionIndex(ormPersistentAttribute); - this.specifiedPersistentAttributes.add(targetIndex, ormPersistentAttribute); - newMapping.addToResourceModel(getResourceAttributes()); - oldMapping.initializeOn(newMapping); - fireItemMoved(ATTRIBUTES_LIST, targetIndex, sourceIndex); - } - - public void makePersistentAttributeVirtual(OrmPersistentAttribute ormPersistentAttribute) { - if (ormPersistentAttribute.isVirtual()) { - throw new IllegalStateException("Attribute is already virtual"); //$NON-NLS-1$ - } - JavaPersistentAttribute javaPersistentAttribute = ormPersistentAttribute.getJavaPersistentAttribute(); - OrmPersistentAttribute virtualPersistentAttribute = null; - if (javaPersistentAttribute != null) { - virtualPersistentAttribute = addVirtualPersistentAttribute(javaPersistentAttribute.getResourcePersistentAttribute()); - } - this.removeSpecifiedPersistentAttribute(ormPersistentAttribute); - if (virtualPersistentAttribute != null) { - fireItemAdded(VIRTUAL_ATTRIBUTES_LIST, virtualAttributesSize() - 1, virtualPersistentAttribute); - } - } - - public void makePersistentAttributeSpecified(OrmPersistentAttribute ormPersistentAttribute) { - makePersistentAttributeSpecified(ormPersistentAttribute, ormPersistentAttribute.getMappingKey()); - } - - public void makePersistentAttributeSpecified(OrmPersistentAttribute ormPersistentAttribute, String mappingKey) { - if (!ormPersistentAttribute.isVirtual()) { - throw new IllegalStateException("Attribute is already specified"); //$NON-NLS-1$ - } - if (mappingKey == MappingKeys.NULL_ATTRIBUTE_MAPPING_KEY) { - throw new IllegalStateException("Use makePersistentAttributeSpecified(OrmPersistentAttribute, String) instead and specify a mapping type"); //$NON-NLS-1$ - } - - Attributes resourceAttributes = getResourceAttributes(); - if (resourceAttributes == null) { - resourceAttributes = createResourceAttributes(); - getMapping().getResourceTypeMapping().setAttributes(resourceAttributes); - } - - XmlAttributeMapping resourceMapping = getJpaPlatform().buildOrmResourceAttributeMapping(mappingKey, getContentType()); - - OrmPersistentAttribute newPersistentAttribute = buildSpecifiedOrmPersistentAttribute(resourceMapping); - int insertionIndex = insertionIndex(newPersistentAttribute); - this.specifiedPersistentAttributes.add(insertionIndex, newPersistentAttribute); - newPersistentAttribute.getMapping().addToResourceModel(resourceAttributes); - - int removalIndex = this.virtualPersistentAttributes.indexOf(ormPersistentAttribute); - this.virtualPersistentAttributes.remove(ormPersistentAttribute); - newPersistentAttribute.getSpecifiedMapping().setName(ormPersistentAttribute.getName()); - if (ormPersistentAttribute.getJavaPersistentAttribute().getSpecifiedAccess() != null) { - newPersistentAttribute.setSpecifiedAccess(ormPersistentAttribute.getJavaPersistentAttribute().getSpecifiedAccess()); - } - - fireItemAdded(ATTRIBUTES_LIST, insertionIndex, newPersistentAttribute); - fireItemRemoved(VIRTUAL_ATTRIBUTES_LIST, removalIndex, ormPersistentAttribute); - } - - protected XmlTypeMapping getResourceTypeMapping() { - return this.typeMapping.getResourceTypeMapping(); - } - - protected Attributes getResourceAttributes() { - return this.getResourceTypeMapping().getAttributes(); - } - - protected abstract Attributes createResourceAttributes(); - - public Iterator<String> allAttributeNames() { - return this.attributeNames(this.allAttributes()); - } - - public Iterator<PersistentAttribute> allAttributes() { - return new CompositeIterator<PersistentAttribute>(new TransformationIterator<PersistentType, Iterator<PersistentAttribute>>(this.inheritanceHierarchy()) { - @Override - protected Iterator<PersistentAttribute> transform(PersistentType pt) { - return pt.attributes(); - } - }); - } - - protected Iterator<OrmPersistentAttribute> attributesNamed(final String attributeName) { - return new FilteringIterator<OrmPersistentAttribute, OrmPersistentAttribute>(attributes()) { - @Override - protected boolean accept(OrmPersistentAttribute o) { - if (attributeName == null && o.getName() == null) { - return true; - } - if (attributeName != null && attributeName.equals(o.getName())) { - return true; - } - return false; - } - }; - } - - public OrmPersistentAttribute getAttributeNamed(String attributeName) { - Iterator<OrmPersistentAttribute> stream = attributesNamed(attributeName); - return (stream.hasNext()) ? stream.next() : null; - } - - public Iterator<String> attributeNames() { - return this.attributeNames(this.attributes()); - } - - protected Iterator<String> attributeNames(Iterator<? extends PersistentAttribute> attrs) { - return new TransformationIterator<PersistentAttribute, String>(attrs) { - @Override - protected String transform(PersistentAttribute attribute) { - return attribute.getName(); - } - }; - } - - protected OrmPersistentAttribute getSpecifiedAttributeFor(final JavaResourcePersistentAttribute jrpa) { - for (OrmPersistentAttribute persistentAttribute : CollectionTools.iterable(specifiedAttributes())) { - if (persistentAttribute.getJavaPersistentAttribute() == null) { - continue; - } - if ( jrpa.equals(persistentAttribute.getJavaPersistentAttribute().getResourcePersistentAttribute())) { - return persistentAttribute; - } - } - return null; - } - - @SuppressWarnings("unchecked") - public ListIterator<OrmPersistentAttribute> attributes() { - return new CompositeListIterator<OrmPersistentAttribute>(specifiedAttributes(), virtualAttributes()); - } - - public int attributesSize() { - return specifiedAttributesSize() + virtualAttributesSize(); - } - - public ListIterator<OrmPersistentAttribute> specifiedAttributes() { - return new CloneListIterator<OrmPersistentAttribute>(this.specifiedPersistentAttributes); - } - - public int specifiedAttributesSize() { - return this.specifiedPersistentAttributes.size(); - } - - public ListIterator<OrmPersistentAttribute> virtualAttributes() { - return new CloneListIterator<OrmPersistentAttribute>(this.virtualPersistentAttributes); - } - - public int virtualAttributesSize() { - return this.virtualPersistentAttributes.size(); - } - - protected void addVirtualPersistentAttribute(OrmPersistentAttribute ormPersistentAttribute) { - addItemToList(ormPersistentAttribute, this.virtualPersistentAttributes, OrmPersistentType.VIRTUAL_ATTRIBUTES_LIST); - } - - protected void removeVirtualPersistentAttribute(OrmPersistentAttribute ormPersistentAttribute) { - removeItemFromList(ormPersistentAttribute, this.virtualPersistentAttributes, OrmPersistentType.VIRTUAL_ATTRIBUTES_LIST); - } - - protected void moveVirtualPersistentAttribute_(int index, OrmPersistentAttribute attribute) { - moveItemInList(index, this.virtualPersistentAttributes.indexOf(attribute), this.virtualPersistentAttributes, OrmPersistentType.VIRTUAL_ATTRIBUTES_LIST); - } - - public boolean containsVirtualPersistentAttribute(OrmPersistentAttribute ormPersistentAttribute) { - return this.virtualPersistentAttributes.contains(ormPersistentAttribute); - } - - public OrmPersistentAttribute addSpecifiedPersistentAttribute(String mappingKey, String attributeName) { - Attributes resourceAttributes = getResourceAttributes(); - if (resourceAttributes == null) { - resourceAttributes = createResourceAttributes(); - getMapping().getResourceTypeMapping().setAttributes(resourceAttributes); - } - - XmlAttributeMapping resourceMapping = getJpaPlatform().buildOrmResourceAttributeMapping(mappingKey, getContentType()); - OrmPersistentAttribute persistentAttribute = buildSpecifiedOrmPersistentAttribute(resourceMapping); - int index = insertionIndex(persistentAttribute); - this.specifiedPersistentAttributes.add(index, persistentAttribute); - persistentAttribute.getMapping().addToResourceModel(resourceAttributes); - - persistentAttribute.getSpecifiedMapping().setName(attributeName); - fireItemAdded(ATTRIBUTES_LIST, index, persistentAttribute); - return persistentAttribute; - } - - protected int insertionIndex(OrmPersistentAttribute persistentAttribute) { - return CollectionTools.insertionIndexOf(this.specifiedPersistentAttributes, persistentAttribute, buildMappingComparator()); - } - - protected Comparator<OrmPersistentAttribute> buildMappingComparator() { - return new Comparator<OrmPersistentAttribute>() { - public int compare(OrmPersistentAttribute o1, OrmPersistentAttribute o2) { - int o1Sequence = o1.getMapping().getXmlSequence(); - int o2Sequence = o2.getMapping().getXmlSequence(); - if (o1Sequence < o2Sequence) { - return -1; - } - if (o1Sequence == o2Sequence) { - return 0; - } - return 1; - } - }; - } - - protected void removeSpecifiedPersistentAttribute_(OrmPersistentAttribute ormPersistentAttribute) { - removeItemFromList(ormPersistentAttribute, this.specifiedPersistentAttributes, ATTRIBUTES_LIST); - } - - protected void moveSpecifiedPersistentAttribute_(int index, OrmPersistentAttribute attribute) { - moveItemInList(index, this.specifiedPersistentAttributes.indexOf(attribute), this.specifiedPersistentAttributes, ATTRIBUTES_LIST); - } - - public void removeSpecifiedPersistentAttribute(OrmPersistentAttribute ormPersistentAttribute) { - int index = this.specifiedPersistentAttributes.indexOf(ormPersistentAttribute); - this.specifiedPersistentAttributes.remove(ormPersistentAttribute); - ormPersistentAttribute.getMapping().removeFromResourceModel(getResourceAttributes()); - if (getResourceAttributes().isUnset()) { - this.typeMapping.getResourceTypeMapping().setAttributes(null); - } - fireItemRemoved(ATTRIBUTES_LIST, index, ormPersistentAttribute); - } - - public String getName() { - return this.getMapping().getClass_(); - } - - public String getShortName(){ - String className = this.getName(); - return (className == null) ? null : ClassTools.shortNameForClassNamed(className); - } - - public void classChanged(String oldClass, String newClass) { - firePropertyChanged(NAME_PROPERTY, oldClass, newClass); - } - - public boolean isMapped() { - return true; - } - - public String getMappingKey() { - return getMapping().getKey(); - } - - public JavaPersistentType getJavaPersistentType() { - return this.javaPersistentType; - } - - protected void setJavaPersistentType(JavaPersistentType newJavaPersistentType) { - JavaPersistentType oldJavaPersistentType = this.javaPersistentType; - this.javaPersistentType = newJavaPersistentType; - firePropertyChanged(JAVA_PERSISTENT_TYPE_PROPERTY, oldJavaPersistentType, newJavaPersistentType); - } - - protected AccessType getResourceAccess() { - return AccessType.fromOrmResourceModel(this.getResourceTypeMapping().getAccess()); - } - - protected AccessType buildDefaultAccess() { - if (! getMapping().isMetadataComplete()) { - if (this.javaPersistentType != null) { - if (javaPersistentTypeHasSpecifiedAccess()) { - return this.javaPersistentType.getAccess(); - } - if (getParentPersistentType() != null) { - return getParentPersistentType().getAccess(); - } - } - } - AccessType access = getMappingFileRoot().getAccess(); - return access != null ? access : AccessType.FIELD; //default to FIELD if no specified access found - } - - protected boolean javaPersistentTypeHasSpecifiedAccess() { - return this.javaPersistentType.getSpecifiedAccess() != null || - this.javaPersistentType.hasAnyAttributePersistenceAnnotations(); - } - - protected JavaPersistentType buildJavaPersistentType() { - JavaResourcePersistentType jrpt = this.getJavaResourcePersistentType(); - return (jrpt == null) ? null : this.buildJavaPersistentType(jrpt); - } - - protected JavaResourcePersistentType getJavaResourcePersistentType() { - String className = this.getName(); - if (className == null) { - return null; - } - className = className.replace('$', '.'); - - // first try to resolve using only the locally specified name... - JavaResourcePersistentType jrpt = this.getJavaResourcePersistentType(className); - if (jrpt != null) { - return jrpt; - } - - // ...then try to resolve by prepending the global package name - String defaultPackage = this.getDefaultPackage(); - if (defaultPackage == null) { - return null; - } - return this.getJavaResourcePersistentType(defaultPackage + '.' + className); - } - - protected JavaResourcePersistentType getJavaResourcePersistentType(String className) { - return this.getJpaProject().getJavaResourcePersistentType(className); - } - - protected JavaPersistentType buildJavaPersistentType(JavaResourcePersistentType jrpt) { - return getJpaFactory().buildJavaPersistentType(this, jrpt); - } - - protected void initializePersistentAttributes() { - this.initializeSpecifiedPersistentAttributes(); - this.initializeVirtualPersistentAttributes(); - } - - protected OrmPersistentAttribute buildSpecifiedOrmPersistentAttribute(XmlAttributeMapping resourceMapping) { - return buildOrmPersistentAttribute(buildSpecifiedPersistentAttributeOwner(), resourceMapping); - } - - protected OrmPersistentAttribute.Owner buildSpecifiedPersistentAttributeOwner() { - return new SpecifiedPersistentAttributeOwner(); - } - - protected AccessType getAccess(@SuppressWarnings("unused") OrmPersistentAttribute ormPersistentAttribute) { - return getAccess(); - } - - protected class SpecifiedPersistentAttributeOwner implements OrmPersistentAttribute.Owner { - - private JavaPersistentAttribute cachedJavaPersistentAttribute; - - public JavaPersistentAttribute findJavaPersistentAttribute(OrmPersistentAttribute ormPersistentAttribute) { - if (AbstractOrmPersistentType.this.javaPersistentType == null) { - return null; - } - String ormName = ormPersistentAttribute.getName(); - if (ormName == null) { - return null; - } - AccessType ormAccess = AbstractOrmPersistentType.this.getAccess(ormPersistentAttribute); - - JavaPersistentAttribute javaPersistentAttribute = this.findExistingJavaPersistentAttribute(ormName); - if ((javaPersistentAttribute != null) && (javaPersistentAttribute.getAccess() == ormAccess)) { - this.cachedJavaPersistentAttribute = null; // we only want to cache the persistent attribute if we build it - return javaPersistentAttribute; - } - - // if 'javaPersistentAttribute' is null, it might exist in a superclass that is not persistent, we need to build it ourselves. - // if access is different, we won't be able to find the corresponding java persistent attribute, it won't exist so we build it ourselves - return this.buildJavaPersistentAttribute(ormName, ormAccess); - } - - protected JavaPersistentAttribute findExistingJavaPersistentAttribute(String attributeName) { - return AbstractOrmPersistentType.this.javaPersistentType.getAttributeNamed(attributeName); - } - - protected JavaPersistentAttribute buildJavaPersistentAttribute(String ormName, AccessType ormAccess) { - JavaResourcePersistentAttribute jrpa = this.getJavaResourcePersistentAttribute(this.getJavaResourcePersistentType(), ormName, ormAccess); - if (this.cachedJavaPersistentAttribute != null && - this.cachedJavaPersistentAttribute.getResourcePersistentAttribute() == jrpa) { - return this.cachedJavaPersistentAttribute; - } - return this.cachedJavaPersistentAttribute = (jrpa == null) ? null : AbstractOrmPersistentType.this.buildJavaPersistentAttribute(jrpa); - } - - protected JavaResourcePersistentType getJavaResourcePersistentType() { - return AbstractOrmPersistentType.this.javaPersistentType.getResourcePersistentType(); - } - - protected JavaResourcePersistentAttribute getJavaResourcePersistentAttribute(JavaResourcePersistentType javaResourcePersistentType, String ormName, AccessType ormAccess) { - for (Iterator<JavaResourcePersistentAttribute> stream = this.attributes(javaResourcePersistentType, ormAccess); stream.hasNext(); ) { - JavaResourcePersistentAttribute jrpa = stream.next(); - if (jrpa.getName().equals(ormName)) { - return jrpa; - } - } - // climb up inheritance hierarchy - String superclassName = javaResourcePersistentType.getSuperclassQualifiedName(); - if (superclassName == null) { - return null; - } - JavaResourcePersistentType superclass = AbstractOrmPersistentType.this.getJavaResourcePersistentType(superclassName); - if (superclass == null) { - return null; - } - // recurse - return this.getJavaResourcePersistentAttribute(superclass, ormName, ormAccess); - } - - protected Iterator<JavaResourcePersistentAttribute> attributes(JavaResourcePersistentType javaResourcePersistentType, AccessType ormAccess) { - return (ormAccess == AccessType.PROPERTY) ? javaResourcePersistentType.persistableProperties() : javaResourcePersistentType.persistableFields(); - } - - public void updateJavaPersistentAttribute() { - if (this.cachedJavaPersistentAttribute != null) { - this.cachedJavaPersistentAttribute.update(); - } - //else { - //don't update, we don't own the java persistent attribute, - //it will be updated through the java context model - //} - } - } - - protected JavaPersistentAttribute buildJavaPersistentAttribute(JavaResourcePersistentAttribute jrpa) { - return this.getJpaFactory().buildJavaPersistentAttribute(this, jrpa); - } - - protected OrmPersistentAttribute buildVirtualOrmPersistentAttribute(JavaAttributeMapping javaAttributeMapping, XmlAttributeMapping resourceMapping) { - return buildOrmPersistentAttribute(buildVirtualPersistentAttributeOwner(javaAttributeMapping.getPersistentAttribute()), resourceMapping); - } - - protected OrmPersistentAttribute buildOrmPersistentAttribute(OrmPersistentAttribute.Owner owner, XmlAttributeMapping resourceMapping) { - return getJpaFactory().buildOrmPersistentAttribute(this, owner, resourceMapping); - } - - protected OrmPersistentAttribute.Owner buildVirtualPersistentAttributeOwner(final JavaPersistentAttribute javaPersistentAttribute) { - return new OrmPersistentAttribute.Owner() { - public JavaPersistentAttribute findJavaPersistentAttribute(OrmPersistentAttribute ormPersistentAttribute) { - return javaPersistentAttribute; - } - - public void updateJavaPersistentAttribute() { - //update the attribute, since we own it and it will not get updated otherwise - javaPersistentAttribute.update(); - } - }; - } - - protected void initializeSpecifiedPersistentAttributes() { - Attributes attributes = this.getResourceAttributes(); - if (attributes == null) { - return; - } - for (XmlAttributeMapping resourceMapping : attributes.getAttributeMappings()) { - addSpecifiedPersistentAttribute(resourceMapping); - } - } - - protected void initializeVirtualPersistentAttributes() { - Iterator<JavaResourcePersistentAttribute> javaResourceAttributes = javaPersistentAttributes(); - - while (javaResourceAttributes.hasNext()) { - JavaResourcePersistentAttribute javaResourceAttribute = javaResourceAttributes.next(); - if (getSpecifiedAttributeFor(javaResourceAttribute) == null) { - addVirtualPersistentAttribute(javaResourceAttribute); - } - } - } - - protected Iterator<JavaResourcePersistentAttribute> javaPersistentAttributes() { - return (this.javaPersistentType == null) ? EmptyListIterator.<JavaResourcePersistentAttribute>instance() : - this.javaPersistentAttributes(this.javaPersistentType.getResourcePersistentType()); - } - - protected Iterator<JavaResourcePersistentAttribute> javaPersistentAttributes(JavaResourcePersistentType resourcePersistentType) { - return (this.getAccess() == AccessType.PROPERTY) ? - resourcePersistentType.persistableProperties() : - resourcePersistentType.persistableFields(); - } - - protected PersistentType buildParentPersistentType() { - return (this.javaPersistentType == null) ? null : this.javaPersistentType.getParentPersistentType(); - } - - public void update() { - this.setSpecifiedAccess(this.getResourceAccess()); - this.setDefaultAccess(this.buildDefaultAccess()); - this.getMapping().update(); - this.updateJavaPersistentType(); - this.updateParentPersistentType(); - this.updatePersistentAttributes(); - } - - protected void updateJavaPersistentType() { - JavaResourcePersistentType jrpt = this.getJavaResourcePersistentType(); - if (jrpt == null) { - this.setJavaPersistentType(null); - } else { - if (this.javaPersistentType == null) { - this.setJavaPersistentType(this.buildJavaPersistentType(jrpt)); - } else { - this.javaPersistentType.update(jrpt); - } - } - } - - protected void updateParentPersistentType() { - PersistentType ppt = this.buildParentPersistentType(); - // check for circular inheritance - if ((ppt == null) || CollectionTools.contains(ppt.inheritanceHierarchy(), this)) { - this.setParentPersistentType(null); - } else { - this.setParentPersistentType(ppt); - } - } - - protected void updatePersistentAttributes() { - this.updateSpecifiedPersistentAttributes(); - this.updateVirtualPersistentAttributes(); - } - - protected void updateSpecifiedPersistentAttributes() { - Attributes attributes = this.getResourceAttributes(); - Collection<OrmPersistentAttribute> contextAttributesToRemove = CollectionTools.collection(specifiedAttributes()); - Collection<OrmPersistentAttribute> contextAttributesToUpdate = new ArrayList<OrmPersistentAttribute>(); - int resourceIndex = 0; - - if (attributes != null) { - for (XmlAttributeMapping resourceMapping : attributes.getAttributeMappings()) { - boolean contextAttributeFound = false; - for (OrmPersistentAttribute contextAttribute : contextAttributesToRemove) { - if (contextAttribute.getMapping().getResourceAttributeMapping() == resourceMapping) { - moveSpecifiedPersistentAttribute_(resourceIndex, contextAttribute); - contextAttributesToRemove.remove(contextAttribute); - contextAttributesToUpdate.add(contextAttribute); - contextAttributeFound = true; - break; - } - } - if (!contextAttributeFound) { - OrmPersistentAttribute ormPersistentAttribute = addSpecifiedPersistentAttribute(resourceMapping); - fireItemAdded(ATTRIBUTES_LIST, specifiedAttributesSize(), ormPersistentAttribute); - } - resourceIndex++; - } - } - for (OrmPersistentAttribute contextAttribute : contextAttributesToRemove) { - removeSpecifiedPersistentAttribute_(contextAttribute); - } - //first handle adding/removing of the persistent attributes, then update the others last, - //this causes less churn in the update process - for (OrmPersistentAttribute contextAttribute : contextAttributesToUpdate) { - contextAttribute.update(); - } - } - - //not firing change notification so this can be reused in initialize and update - protected OrmPersistentAttribute addSpecifiedPersistentAttribute(XmlAttributeMapping resourceMapping) { - OrmPersistentAttribute ormPersistentAttribute = buildSpecifiedOrmPersistentAttribute(resourceMapping); - this.specifiedPersistentAttributes.add(ormPersistentAttribute); - return ormPersistentAttribute; - } - - protected void updateVirtualPersistentAttributes() { - Collection<OrmPersistentAttribute> contextAttributesToRemove = CollectionTools.collection(virtualAttributes()); - Collection<OrmPersistentAttribute> contextAttributesToUpdate = new ArrayList<OrmPersistentAttribute>(); - int resourceIndex = 0; - - Iterator<JavaResourcePersistentAttribute> javaResourceAttributes = this.javaPersistentAttributes(); - for (JavaResourcePersistentAttribute javaResourceAttribute : CollectionTools.iterable(javaResourceAttributes)) { - OrmPersistentAttribute specifiedAttribute = getSpecifiedAttributeFor(javaResourceAttribute); - if (specifiedAttribute == null) { - JavaPersistentAttribute javaAttribute = getJpaFactory().buildJavaPersistentAttribute(this, javaResourceAttribute); - JavaAttributeMapping javaAttributeMapping = javaAttribute.getMapping(); - if (getMapping().isMetadataComplete()) { - javaAttributeMapping = javaAttribute.getDefaultMapping(); - } - boolean contextAttributeFound = false; - for (OrmPersistentAttribute contextAttribute : contextAttributesToRemove) { - JavaPersistentAttribute javaPersistentAttribute = contextAttribute.getJavaPersistentAttribute(); - if (javaPersistentAttribute.getResourcePersistentAttribute() == javaResourceAttribute) { - if (contextAttribute.getMappingKey() == javaAttributeMapping.getKey()) { - //the mapping key would change if metaDataComplete flag changes, rebuild the orm attribute - moveVirtualPersistentAttribute_(resourceIndex, contextAttribute); - contextAttributesToRemove.remove(contextAttribute); - contextAttributesToUpdate.add(contextAttribute); - contextAttributeFound = true; - break; - } - } - } - if (!contextAttributeFound) { - OrmPersistentAttribute virtualPersistentAttribute = addVirtualPersistentAttribute(javaAttributeMapping); - fireItemAdded(VIRTUAL_ATTRIBUTES_LIST, virtualAttributesSize() - 1, virtualPersistentAttribute); - } - resourceIndex++; - } - } - - for (OrmPersistentAttribute contextAttribute : contextAttributesToRemove) { - removeVirtualPersistentAttribute(contextAttribute); - } - //first handle adding/removing of the persistent attributes, then update the others last, - //this causes less churn in the update process - for (OrmPersistentAttribute contextAttribute : contextAttributesToUpdate) { - contextAttribute.update(); - } - } - - protected OrmPersistentAttribute addVirtualPersistentAttribute(JavaResourcePersistentAttribute resourceAttribute) { - JavaPersistentAttribute javaAttribute = getJpaFactory().buildJavaPersistentAttribute(this, resourceAttribute); - - JavaAttributeMapping javaAttributeMapping = javaAttribute.getMapping(); - if (getMapping().isMetadataComplete()) { - javaAttributeMapping = javaAttribute.getDefaultMapping(); - } - return addVirtualPersistentAttribute(javaAttributeMapping); - } - - //not firing change notification so this can be reused in initialize and update - protected OrmPersistentAttribute addVirtualPersistentAttribute(JavaAttributeMapping javaAttributeMapping) { - XmlAttributeMapping resourceMapping = getJpaPlatform().buildVirtualOrmResourceMappingFromMappingKey(javaAttributeMapping.getKey(), getMapping(), javaAttributeMapping); - OrmPersistentAttribute virtualPersistentAttribute = buildVirtualOrmPersistentAttribute(javaAttributeMapping, resourceMapping); - this.virtualPersistentAttributes.add(virtualPersistentAttribute); - return virtualPersistentAttribute; - } - - public PersistentAttribute resolveAttribute(String attributeName) { - Iterator<OrmPersistentAttribute> attributes = attributesNamed(attributeName); - if (attributes.hasNext()) { - OrmPersistentAttribute attribute = attributes.next(); - return attributes.hasNext() ? null /* more than one */: attribute; - } - else if (getParentPersistentType() != null) { - return getParentPersistentType().resolveAttribute(attributeName); - } - else { - return null; - } - } - - @Override - public void postUpdate() { - super.postUpdate(); - if (this.javaPersistentType != null) { - this.javaPersistentType.postUpdate(); - } - getMapping().postUpdate(); - } - - public JpaStructureNode getStructureNode(int textOffset) { - for (OrmPersistentAttribute attribute : CollectionTools.iterable(specifiedAttributes())) { - if (attribute.contains(textOffset)) { - return attribute; - } - } - return this; - } - - public boolean contains(int textOffset) { - return this.typeMapping.containsOffset(textOffset); - } - - public TextRange getSelectionTextRange() { - return this.typeMapping.getSelectionTextRange(); - } - - //******************** validation ********************** - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - this.validateClass(messages); - this.validateMapping(messages, reporter); - this.validateAttributes(messages, reporter); - } - - protected void validateClass(List<IMessage> messages) { - if (this.javaPersistentType == null) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.PERSISTENT_TYPE_UNRESOLVED_CLASS, - new String[] {this.getName()}, - this, - this.getMapping().getClassTextRange() - ) - ); - } - } - - protected void validateMapping(List<IMessage> messages, IReporter reporter) { - try { - this.typeMapping.validate(messages, reporter); - } catch(Throwable t) { - JptCorePlugin.log(t); - } - } - - protected void validateAttributes(List<IMessage> messages, IReporter reporter) { - for (Iterator<OrmPersistentAttribute> stream = this.attributes(); stream.hasNext(); ) { - this.validateAttribute(stream.next(), messages, reporter); - } - } - - protected void validateAttribute(OrmPersistentAttribute attribute, List<IMessage> messages, IReporter reporter) { - try { - attribute.validate(messages, reporter); - } catch(Throwable t) { - JptCorePlugin.log(t); - } - } - - public TextRange getValidationTextRange() { - return this.typeMapping.getValidationTextRange(); - } - - public void dispose() { - if (this.javaPersistentType != null) { - this.javaPersistentType.dispose(); - } - } - - @Override - public void toString(StringBuilder sb) { - sb.append(this.getName()); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmQuery.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmQuery.java deleted file mode 100644 index 054284178e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmQuery.java +++ /dev/null @@ -1,194 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.eclipse.jpt.core.context.Query; -import org.eclipse.jpt.core.context.QueryHint; -import org.eclipse.jpt.core.context.XmlContextNode; -import org.eclipse.jpt.core.context.java.JavaQuery; -import org.eclipse.jpt.core.context.orm.OrmQuery; -import org.eclipse.jpt.core.context.orm.OrmQueryHint; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlQuery; -import org.eclipse.jpt.core.resource.orm.XmlQueryHint; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.internal.StringTools; -import org.eclipse.jpt.utility.internal.iterators.CloneIterator; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; - - -public abstract class AbstractOrmQuery<E extends XmlQuery> extends AbstractXmlContextNode - implements OrmQuery -{ - - protected String name; - - protected String query; - - protected final List<OrmQueryHint> hints; - - protected E resourceQuery; - - protected AbstractOrmQuery(XmlContextNode parent, E resourceQuery) { - super(parent); - this.hints = new ArrayList<OrmQueryHint>(); - this.initialize(resourceQuery); - } - - protected E getResourceQuery() { - return this.resourceQuery; - } - - public String getName() { - return this.name; - } - - public void setName(String newName) { - String oldName = this.name; - this.name = newName; - this.getResourceQuery().setName(newName); - firePropertyChanged(Query.NAME_PROPERTY, oldName, newName); - } - - public String getQuery() { - return this.query; - } - - public void setQuery(String newQuery) { - String oldQuery = this.query; - this.query = newQuery; - this.getResourceQuery().setQuery(newQuery); - firePropertyChanged(Query.QUERY_PROPERTY, oldQuery, newQuery); - } - - public ListIterator<OrmQueryHint> hints() { - return new CloneListIterator<OrmQueryHint>(this.hints); - } - - public int hintsSize() { - return this.hints.size(); - } - - public OrmQueryHint addHint(int index) { - XmlQueryHint resourceQueryHint = OrmFactory.eINSTANCE.createXmlQueryHint(); - OrmQueryHint contextQueryHint = buildQueryHint(resourceQueryHint); - this.hints.add(index, contextQueryHint); - this.getResourceQuery().getHints().add(index, resourceQueryHint); - this.fireItemAdded(Query.HINTS_LIST, index, contextQueryHint); - return contextQueryHint; - } - - protected void addHint(int index, OrmQueryHint queryHint) { - addItemToList(index, queryHint, this.hints, Query.HINTS_LIST); - } - - protected void addHint(OrmQueryHint queryHint) { - this.addHint(this.hints.size(), queryHint); - } - - public void removeHint(QueryHint queryHint) { - removeHint(this.hints.indexOf(queryHint)); - } - - public void removeHint(int index) { - OrmQueryHint queryHint = this.hints.remove(index); - this.getResourceQuery().getHints().remove(index); - fireItemRemoved(Query.HINTS_LIST, index, queryHint); - } - - protected void removeHint_(OrmQueryHint queryHint) { - removeItemFromList(queryHint, this.hints, Query.HINTS_LIST); - } - - public void moveHint(int targetIndex, int sourceIndex) { - this.getResourceQuery().getHints().move(targetIndex, sourceIndex); - moveItemInList(targetIndex, sourceIndex, this.hints, Query.HINTS_LIST); - } - - - protected void initialize(E xmlQuery) { - this.resourceQuery = xmlQuery; - this.name = xmlQuery.getName(); - this.query = xmlQuery.getQuery(); - this.initializeHints(); - } - - protected void initializeHints() { - for (XmlQueryHint resourceQueryHint : this.resourceQuery.getHints()) { - this.hints.add(buildQueryHint(resourceQueryHint)); - } - } - - protected OrmQueryHint buildQueryHint(XmlQueryHint resourceQueryHint) { - return getJpaFactory().buildOrmQueryHint(this, resourceQueryHint); - } - - public void update(E xmlQuery) { - this.resourceQuery = xmlQuery; - this.setName(xmlQuery.getName()); - this.setQuery(xmlQuery.getQuery()); - this.updateHints(); - getPersistenceUnit().addQuery(this); - } - - protected void updateHints() { - // make a copy of the XML hints (to prevent ConcurrentModificationException) - Iterator<XmlQueryHint> xmlHints = new CloneIterator<XmlQueryHint>(this.resourceQuery.getHints()); - - for (Iterator<OrmQueryHint> contextHints = this.hints(); contextHints.hasNext(); ) { - OrmQueryHint contextHint = contextHints.next(); - if (xmlHints.hasNext()) { - contextHint.update(xmlHints.next()); - } - else { - removeHint_(contextHint); - } - } - - while (xmlHints.hasNext()) { - addHint(buildQueryHint(xmlHints.next())); - } - } - - public boolean overrides(Query other) { - // this isn't ideal, but it will have to do until we have further adopter input - return (this.name != null) - && this.name.equals(other.getName()) - && (other instanceof JavaQuery); - } - - public boolean duplicates(Query other) { - return (this != other) - && ! StringTools.stringIsEmpty(this.name) - && this.name.equals(other.getName()) - && ! this.overrides(other) - && ! other.overrides(this); - } - - public TextRange getValidationTextRange() { - return this.getResourceQuery().getValidationTextRange(); - } - - public TextRange getNameTextRange() { - return this.getResourceQuery().getNameTextRange(); - } - - @Override - public void toString(StringBuilder sb) { - sb.append(this.name); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmRelationshipMapping.java deleted file mode 100644 index edfd175bd8..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmRelationshipMapping.java +++ /dev/null @@ -1,333 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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.jpt.core.context.AttributeMapping; -import org.eclipse.jpt.core.context.Entity; -import org.eclipse.jpt.core.context.FetchType; -import org.eclipse.jpt.core.context.RelationshipMapping; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmRelationshipMapping; -import org.eclipse.jpt.core.context.orm.OrmRelationshipReference; -import org.eclipse.jpt.core.internal.context.MappingTools; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.orm.XmlRelationshipMapping; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - - -public abstract class AbstractOrmRelationshipMapping<T extends XmlRelationshipMapping> - extends AbstractOrmAttributeMapping<T> - implements OrmRelationshipMapping -{ - protected String specifiedTargetEntity; - protected String defaultTargetEntity; - protected Entity resolvedTargetEntity; - - protected final OrmRelationshipReference relationshipReference; - - protected final OrmCascade cascade; - - protected FetchType specifiedFetch; - - - protected AbstractOrmRelationshipMapping(OrmPersistentAttribute parent, T resourceMapping) { - super(parent, resourceMapping); - this.relationshipReference = buildRelationshipReference(); - this.cascade = new OrmCascade(this, this.resourceAttributeMapping); - this.specifiedTargetEntity = getResourceTargetEntity(); - this.defaultTargetEntity = buildDefaultTargetEntity(); - this.resolvedTargetEntity = buildResolvedTargetEntity(); - this.specifiedFetch = getResourceFetch(); - } - - - protected abstract OrmRelationshipReference buildRelationshipReference(); - - @Override - public OrmPersistentAttribute getParent() { - return (OrmPersistentAttribute) super.getParent(); - } - - public boolean isRelationshipOwner() { - return this.relationshipReference.isRelationshipOwner(); - } - - @Override - public boolean isOwnedBy(RelationshipMapping mapping) { - return this.relationshipReference.isOwnedBy(mapping); - } - - - // **************** target entity ****************************************** - - public char getTargetEntityEnclosingTypeSeparator() { - return '$'; - } - - public String getTargetEntity() { - return (this.specifiedTargetEntity != null) ? this.specifiedTargetEntity : this.defaultTargetEntity; - } - - public String getSpecifiedTargetEntity() { - return this.specifiedTargetEntity; - } - - public void setSpecifiedTargetEntity(String targetEntity) { - String old = this.specifiedTargetEntity; - this.specifiedTargetEntity = targetEntity; - this.resourceAttributeMapping.setTargetEntity(targetEntity); - this.firePropertyChanged(SPECIFIED_TARGET_ENTITY_PROPERTY, old, targetEntity); - } - - protected void setSpecifiedTargetEntity_(String targetEntity) { - String old = this.specifiedTargetEntity; - this.specifiedTargetEntity = targetEntity; - this.firePropertyChanged(SPECIFIED_TARGET_ENTITY_PROPERTY, old, targetEntity); - } - - public String getDefaultTargetEntity() { - return this.defaultTargetEntity; - } - - protected void setDefaultTargetEntity(String targetEntity) { - String old = this.defaultTargetEntity; - this.defaultTargetEntity = targetEntity; - this.firePropertyChanged(DEFAULT_TARGET_ENTITY_PROPERTY, old, targetEntity); - } - - public Entity getResolvedTargetEntity() { - return this.resolvedTargetEntity; - } - - protected void setResolvedTargetEntity(Entity targetEntity) { - Entity old = this.resolvedTargetEntity; - this.resolvedTargetEntity = targetEntity; - this.firePropertyChanged(RESOLVED_TARGET_ENTITY_PROPERTY, old, targetEntity); - } - - - // **************** reference ********************************************** - - public OrmRelationshipReference getRelationshipReference() { - return this.relationshipReference; - } - - - // **************** cascade ************************************************ - - public OrmCascade getCascade() { - return this.cascade; - } - - - // **************** fetch ************************************************** - - public FetchType getFetch() { - return (this.specifiedFetch != null) ? this.specifiedFetch : this.getDefaultFetch(); - } - - public FetchType getSpecifiedFetch() { - return this.specifiedFetch; - } - - public void setSpecifiedFetch(FetchType fetch) { - FetchType old = this.specifiedFetch; - this.specifiedFetch = fetch; - this.resourceAttributeMapping.setFetch(FetchType.toOrmResourceModel(fetch)); - this.firePropertyChanged(SPECIFIED_FETCH_PROPERTY, old, fetch); - } - - protected void setSpecifiedFetch_(FetchType fetch) { - FetchType old = this.specifiedFetch; - this.specifiedFetch = fetch; - this.firePropertyChanged(SPECIFIED_FETCH_PROPERTY, old, fetch); - } - - - // **************** resource => context ************************************ - - @Override - public void update() { - super.update(); - this.setSpecifiedTargetEntity_(this.getResourceTargetEntity()); - this.setDefaultTargetEntity(this.buildDefaultTargetEntity()); - this.setResolvedTargetEntity(this.buildResolvedTargetEntity()); - this.relationshipReference.update(); - this.setSpecifiedFetch_(this.getResourceFetch()); - this.cascade.update(); - } - - protected String getResourceTargetEntity() { - return this.resourceAttributeMapping.getTargetEntity(); - } - - protected FetchType getResourceFetch() { - return FetchType.fromOrmResourceModel(this.resourceAttributeMapping.getFetch()); - } - - protected String buildDefaultTargetEntity() { - RelationshipMapping javaMapping = getJavaRelationshipMapping(); - if (javaMapping != null) { - if (getPersistentAttribute().isVirtual() && !getTypeMapping().isMetadataComplete()) { - return javaMapping.getTargetEntity(); - } - } - if (this.getJavaPersistentAttribute() != null) { - return getResourceDefaultTargetEntity(); - } - return null; - } - - protected RelationshipMapping getJavaRelationshipMapping() { - if (this.getJavaPersistentAttribute() == null) { - return null; - } - AttributeMapping javaAttributeMapping = this.getJavaPersistentAttribute().getMapping(); - if (javaAttributeMapping instanceof RelationshipMapping) { - return ((RelationshipMapping) javaAttributeMapping); - } - return null; - } - - protected abstract String getResourceDefaultTargetEntity(); - - protected Entity buildResolvedTargetEntity() { - String targetEntityName = this.getTargetEntity(); - if (targetEntityName == null) { - return null; - } - - // first try to resolve using only the locally specified name... - Entity targetEntity = this.getEntity(targetEntityName); - if (targetEntity != null) { - return targetEntity; - } - - // ...then try to resolve by prepending the global package name - String defaultPackageName = this.getDefaultPackageName(); - if (defaultPackageName == null) { - return null; - } - return this.getEntity(defaultPackageName + '.' + targetEntityName); - } - - protected String getDefaultPackageName() { - return this.getPersistentAttribute().getPersistentType().getDefaultPackage(); - } - - protected Entity getEntity(String typeName) { - return this.getPersistenceUnit().getEntity(typeName); - } - - - // ********** RelationshipMapping implementation ********** - - public Entity getEntity() { - if (getTypeMapping() instanceof Entity) { - return (Entity) getTypeMapping(); - } - return null; - } - - public String getJoinTableDefaultName() { - return MappingTools.buildJoinTableDefaultName(this); - } - - @Override - public void initializeFromOrmRelationshipMapping(OrmRelationshipMapping oldMapping) { - super.initializeFromOrmRelationshipMapping(oldMapping); - setSpecifiedTargetEntity(oldMapping.getSpecifiedTargetEntity()); - setSpecifiedFetch(oldMapping.getSpecifiedFetch()); - oldMapping.getRelationshipReference().initializeOn(this.relationshipReference); - this.cascade.initializeFrom(oldMapping.getCascade()); - //TODO should we set the fetch type from a BasicMapping?? - } - - public Iterator<String> allTargetEntityAttributeNames() { - Entity targetEntity = this.getResolvedTargetEntity(); - return (targetEntity == null) ? EmptyIterator.<String> instance() : targetEntity.getPersistentType().allAttributeNames(); - } - - public Iterator<String> candidateMappedByAttributeNames() { - return this.allTargetEntityAttributeNames(); - } - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - validateTargetEntity(messages); - this.relationshipReference.validate(messages, reporter); - } - - protected void validateTargetEntity(List<IMessage> messages) { - if (getTargetEntity() == null) { - if (getPersistentAttribute().isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_TARGET_ENTITY_NOT_DEFINED, - new String[] {this.getName()}, - this, - this.getValidationTextRange() - ) - ); - } - else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.TARGET_ENTITY_NOT_DEFINED, - new String[] {this.getName()}, - this, - this.getValidationTextRange() - ) - ); - } - } - else if (getResolvedTargetEntity() == null) { - if (getPersistentAttribute().isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_TARGET_ENTITY_IS_NOT_AN_ENTITY, - new String[] {this.getName(), getTargetEntity()}, - this, - this.getValidationTextRange() - ) - ); - } - else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.TARGET_ENTITY_IS_NOT_AN_ENTITY, - new String[] {getTargetEntity(), this.getName()}, - this, - this.getTargetEntityTextRange() - ) - ); - } - } - } - - protected TextRange getTextRange(TextRange textRange) { - return (textRange != null) ? textRange : this.getParent().getValidationTextRange(); - } - - protected TextRange getTargetEntityTextRange() { - return this.getTextRange(this.getResourceAttributeMapping().getTargetEntityTextRange()); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmRelationshipReference.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmRelationshipReference.java deleted file mode 100644 index 83ae413d7e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmRelationshipReference.java +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 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 org.eclipse.jpt.core.context.JoiningStrategy; -import org.eclipse.jpt.core.context.orm.OrmJoinColumnEnabledRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmJoinTableEnabledRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmOwnableRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmRelationshipMapping; -import org.eclipse.jpt.core.context.orm.OrmRelationshipReference; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.resource.orm.XmlRelationshipMapping; -import org.eclipse.jpt.core.utility.TextRange; - -public abstract class AbstractOrmRelationshipReference - extends AbstractXmlContextNode - implements OrmRelationshipReference -{ - protected XmlRelationshipMapping resourceMapping; - - // cache the strategy for property change notification - protected JoiningStrategy cachedPredominantJoiningStrategy; - - - protected AbstractOrmRelationshipReference( - OrmRelationshipMapping parent, XmlRelationshipMapping resourceMapping) { - super(parent); - this.resourceMapping = resourceMapping; - initializeJoiningStrategies(); - } - - protected abstract void initializeJoiningStrategies(); - - - public void initializeFromOwnableRelationshipReference( - OrmOwnableRelationshipReference oldRelationshipReference) { - // no op - } - - public void initializeFromJoinColumnEnabledRelationshipReference( - OrmJoinColumnEnabledRelationshipReference oldRelationshipReference) { - // no op - } - - public void initializeFromJoinTableEnabledRelationshipReference( - OrmJoinTableEnabledRelationshipReference oldRelationshipReference) { - // no op - } - - public OrmRelationshipMapping getRelationshipMapping() { - return (OrmRelationshipMapping) getParent(); - } - - - // **************** predominant joining strategy *************************** - - public JoiningStrategy getPredominantJoiningStrategy() { - if (this.cachedPredominantJoiningStrategy == null) { - this.cachedPredominantJoiningStrategy = calculatePredominantJoiningStrategy(); - } - return this.cachedPredominantJoiningStrategy; - } - - protected void setPredominantJoiningStrategy(JoiningStrategy newJoiningStrategy) { - JoiningStrategy oldJoiningStrategy = this.cachedPredominantJoiningStrategy; - this.cachedPredominantJoiningStrategy = newJoiningStrategy; - firePropertyChanged(PREDOMINANT_JOINING_STRATEGY_PROPERTY, oldJoiningStrategy, newJoiningStrategy); - } - - - // **************** resource -> context ************************************ - - public void update() { - updateJoiningStrategies(); - setPredominantJoiningStrategy(calculatePredominantJoiningStrategy()); - } - - protected abstract void updateJoiningStrategies(); - - protected abstract JoiningStrategy calculatePredominantJoiningStrategy(); - - - // **************** validation ********************************************* - - public TextRange getValidationTextRange() { - return getRelationshipMapping().getValidationTextRange(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmSingleRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmSingleRelationshipMapping.java deleted file mode 100644 index 0f04a1fee2..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmSingleRelationshipMapping.java +++ /dev/null @@ -1,82 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.jpt.core.context.FetchType; -import org.eclipse.jpt.core.context.Nullable; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmSingleRelationshipMapping; -import org.eclipse.jpt.core.resource.orm.XmlSingleRelationshipMapping; - - -public abstract class AbstractOrmSingleRelationshipMapping<T extends XmlSingleRelationshipMapping> - extends AbstractOrmRelationshipMapping<T> - implements OrmSingleRelationshipMapping -{ - protected Boolean specifiedOptional; - - - protected AbstractOrmSingleRelationshipMapping(OrmPersistentAttribute parent, T resourceMapping) { - super(parent, resourceMapping); - this.specifiedOptional = this.getResourceOptional(); - //TODO defaultOptional - } - - - @Override - protected String getResourceDefaultTargetEntity() { - return this.getJavaPersistentAttribute().getSingleReferenceEntityTypeName(); - } - - public FetchType getDefaultFetch() { - 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) { - Boolean old = this.specifiedOptional; - this.specifiedOptional = optional; - this.resourceAttributeMapping.setOptional(optional); - this.firePropertyChanged(Nullable.SPECIFIED_OPTIONAL_PROPERTY, old, optional); - } - - protected void setSpecifiedOptional_(Boolean optional) { - Boolean old = this.specifiedOptional; - this.specifiedOptional = optional; - this.firePropertyChanged(Nullable.SPECIFIED_OPTIONAL_PROPERTY, old, optional); - } - - public boolean isDefaultOptional() { - return Nullable.DEFAULT_OPTIONAL; - } - - - // **************** resource => context ************************************ - - @Override - public void update() { - super.update(); - this.setSpecifiedOptional_(this.getResourceOptional()); - } - - protected Boolean getResourceOptional() { - return this.resourceAttributeMapping.getOptional(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmTable.java deleted file mode 100644 index d5a4a86455..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmTable.java +++ /dev/null @@ -1,474 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.eclipse.jpt.core.context.Table; -import org.eclipse.jpt.core.context.UniqueConstraint; -import org.eclipse.jpt.core.context.XmlContextNode; -import org.eclipse.jpt.core.context.orm.OrmUniqueConstraint; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlBaseTable; -import org.eclipse.jpt.core.resource.orm.XmlUniqueConstraint; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Catalog; -import org.eclipse.jpt.db.Schema; -import org.eclipse.jpt.db.SchemaContainer; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.NameTools; -import org.eclipse.jpt.utility.internal.iterators.CloneIterator; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; - -/** - * - */ -public abstract class AbstractOrmTable - extends AbstractXmlContextNode - implements Table, UniqueConstraint.Owner -{ - protected String specifiedName; - protected String defaultName; - - protected String specifiedSchema; - protected String defaultSchema; - - protected String specifiedCatalog; - protected String defaultCatalog; - - protected final List<OrmUniqueConstraint> uniqueConstraints; - - - // ********** constructor ********** - - protected AbstractOrmTable(XmlContextNode parent) { - super(parent); - this.uniqueConstraints = new ArrayList<OrmUniqueConstraint>(); - } - - - // ********** abstract methods ********** - - /** - * Return null if no resource table exists. - */ - protected abstract XmlBaseTable getResourceTable(); - - /** - * Return the added resource table. - */ - protected abstract XmlBaseTable addResourceTable(); - - protected abstract void removeResourceTable(); - - protected abstract String buildDefaultName(); - - protected abstract String buildDefaultSchema(); - - protected abstract String buildDefaultCatalog(); - - - public boolean isResourceSpecified() { - return this.getResourceTable() != null; - } - - // ********** name ********** - - public String getName() { - return (this.specifiedName != null) ? this.specifiedName : this.defaultName; - } - - public String getSpecifiedName() { - return this.specifiedName; - } - - public void setSpecifiedName(String name) { - String old = this.specifiedName; - this.specifiedName = name; - if (this.attributeValueHasChanged(old, name)) { - XmlBaseTable resourceTable = this.getResourceTable(); - if (resourceTable == null) { - resourceTable = this.addResourceTable(); - } - resourceTable.setName(name); - if (resourceTable.isUnset()) { - this.removeResourceTable(); - } - this.firePropertyChanged(SPECIFIED_NAME_PROPERTY, old, name); - } - } - - protected void setSpecifiedName_(String name) { - String old = this.specifiedName; - this.specifiedName = name; - this.firePropertyChanged(SPECIFIED_NAME_PROPERTY, old, name); - } - - public String getDefaultName() { - return this.defaultName; - } - - protected void setDefaultName(String name) { - String old = this.defaultName; - this.defaultName = name; - this.firePropertyChanged(DEFAULT_NAME_PROPERTY, old, name); - } - - - // ********** schema ********** - - public String getSchema() { - return (this.specifiedSchema != null) ? this.specifiedSchema : this.defaultSchema; - } - - public String getSpecifiedSchema() { - return this.specifiedSchema; - } - - public void setSpecifiedSchema(String schema) { - String old = this.specifiedSchema; - this.specifiedSchema = schema; - if (this.attributeValueHasChanged(old, schema)) { - XmlBaseTable resourceTable = this.getResourceTable(); - if (resourceTable == null) { - resourceTable = this.addResourceTable(); - } - resourceTable.setSchema(schema); - if (resourceTable.isUnset()) { - this.removeResourceTable(); - } - this.firePropertyChanged(SPECIFIED_SCHEMA_PROPERTY, old, schema); - } - } - - protected void setSpecifiedSchema_(String schema) { - String old = this.specifiedSchema; - this.specifiedSchema = schema; - this.firePropertyChanged(SPECIFIED_SCHEMA_PROPERTY, old, schema); - } - - public String getDefaultSchema() { - return this.defaultSchema; - } - - protected void setDefaultSchema(String schema) { - String old = this.defaultSchema; - this.defaultSchema = schema; - this.firePropertyChanged(DEFAULT_SCHEMA_PROPERTY, old, schema); - } - - - // ********** catalog ********** - - public String getCatalog() { - return (this.specifiedCatalog != null) ? this.specifiedCatalog : this.defaultCatalog; - } - - public String getSpecifiedCatalog() { - return this.specifiedCatalog; - } - - public void setSpecifiedCatalog(String catalog) { - String old = this.specifiedCatalog; - this.specifiedCatalog = catalog; - if (this.attributeValueHasChanged(old, catalog)) { - XmlBaseTable resourceTable = this.getResourceTable(); - if (resourceTable == null) { - resourceTable = this.addResourceTable(); - } - resourceTable.setCatalog(catalog); - if (resourceTable.isUnset()) { - this.removeResourceTable(); - } - this.firePropertyChanged(SPECIFIED_CATALOG_PROPERTY, old, catalog); - } - } - - protected void setSpecifiedCatalog_(String newSpecifiedCatalog) { - String oldSpecifiedCatalog = this.specifiedCatalog; - this.specifiedCatalog = newSpecifiedCatalog; - firePropertyChanged(SPECIFIED_CATALOG_PROPERTY, oldSpecifiedCatalog, newSpecifiedCatalog); - } - - public String getDefaultCatalog() { - return this.defaultCatalog; - } - - protected void setDefaultCatalog(String newDefaultCatalog) { - String oldDefaultCatalog = this.defaultCatalog; - this.defaultCatalog = newDefaultCatalog; - firePropertyChanged(DEFAULT_CATALOG_PROPERTY, oldDefaultCatalog, newDefaultCatalog); - } - - - // ********** unique constraints ********** - - public @SuppressWarnings("unchecked") ListIterator<OrmUniqueConstraint> uniqueConstraints() { - return new CloneListIterator<OrmUniqueConstraint>(this.uniqueConstraints); - } - - public int uniqueConstraintsSize() { - return this.uniqueConstraints.size(); - } - - public OrmUniqueConstraint addUniqueConstraint(int index) { - XmlUniqueConstraint resourceConstraint = OrmFactory.eINSTANCE.createXmlUniqueConstraintImpl(); - OrmUniqueConstraint contextConstraint = this.buildUniqueConstraint(resourceConstraint); - this.uniqueConstraints.add(index, contextConstraint); - - XmlBaseTable resourceTable = this.getResourceTable(); - if (resourceTable == null) { - resourceTable = this.addResourceTable(); - } - resourceTable.getUniqueConstraints().add(index, resourceConstraint); - - this.fireItemAdded(UNIQUE_CONSTRAINTS_LIST, index, contextConstraint); - return contextConstraint; - } - - protected void addUniqueConstraint(int index, OrmUniqueConstraint uniqueConstraint) { - this.addItemToList(index, uniqueConstraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); - } - - protected void addUniqueConstraint(OrmUniqueConstraint uniqueConstraint) { - this.addUniqueConstraint(this.uniqueConstraints.size(), uniqueConstraint); - } - - public void removeUniqueConstraint(UniqueConstraint uniqueConstraint) { - this.removeUniqueConstraint(this.uniqueConstraints.indexOf(uniqueConstraint)); - } - - public void removeUniqueConstraint(int index) { - OrmUniqueConstraint removedUniqueConstraint = this.uniqueConstraints.remove(index); - this.getResourceTable().getUniqueConstraints().remove(index); - this.fireItemRemoved(UNIQUE_CONSTRAINTS_LIST, index, removedUniqueConstraint); - } - - protected void removeUniqueConstraint_(OrmUniqueConstraint uniqueConstraint) { - this.removeItemFromList(uniqueConstraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); - } - - public void moveUniqueConstraint(int targetIndex, int sourceIndex) { - CollectionTools.move(this.uniqueConstraints, targetIndex, sourceIndex); - this.getResourceTable().getUniqueConstraints().move(targetIndex, sourceIndex); - this.fireItemMoved(UNIQUE_CONSTRAINTS_LIST, targetIndex, sourceIndex); - } - - - // ********** convenience methods ********** - - protected TextRange getTextRange(TextRange textRange) { - return (textRange != null) ? textRange : this.getParent().getValidationTextRange(); - } - - protected TextRange getNameTextRange() { - return this.getTextRange(this.getResourceTableNameTextRange()); - } - - protected TextRange getResourceTableNameTextRange() { - XmlBaseTable resourceTable = this.getResourceTable(); - return (resourceTable == null) ? null : resourceTable.getNameTextRange(); - } - - protected TextRange getSchemaTextRange() { - return this.getTextRange(this.getResourceTableSchemaTextRange()); - } - - protected TextRange getResourceTableSchemaTextRange() { - XmlBaseTable resourceTable = this.getResourceTable(); - return (resourceTable == null) ? null : resourceTable.getSchemaTextRange(); - } - - protected TextRange getCatalogTextRange() { - return this.getTextRange(this.getResourceTableCatalogTextRange()); - } - - protected TextRange getResourceTableCatalogTextRange() { - XmlBaseTable resourceTable = this.getResourceTable(); - return (resourceTable == null) ? null : resourceTable.getCatalogTextRange(); - } - - protected OrmUniqueConstraint buildUniqueConstraint(XmlUniqueConstraint resourceUniqueConstraint) { - return this.getJpaFactory().buildOrmUniqueConstraint(this, this, resourceUniqueConstraint); - } - - - // ********** resource => context ********** - - protected void initialize(XmlBaseTable xmlTable) { - this.defaultName = this.buildDefaultName(); - this.specifiedName = this.getResourceTableName(xmlTable); - - this.defaultSchema = this.buildDefaultSchema(); - this.specifiedSchema = this.getResourceTableSchema(xmlTable); - - this.defaultCatalog = this.buildDefaultCatalog(); - this.specifiedCatalog = this.getResourceTableCatalog(xmlTable); - - this.initializeUniqueContraints(xmlTable); - } - - protected void initializeUniqueContraints(XmlBaseTable xmlTable) { - if (xmlTable == null) { - return; - } - for (XmlUniqueConstraint uniqueConstraint : xmlTable.getUniqueConstraints()) { - this.uniqueConstraints.add(this.buildUniqueConstraint(uniqueConstraint)); - } - } - - protected void update(XmlBaseTable xmlTable) { - this.setDefaultName(this.buildDefaultName()); - this.setSpecifiedName_(this.getResourceTableName(xmlTable)); - - this.setDefaultSchema(this.buildDefaultSchema()); - this.setSpecifiedSchema_(this.getResourceTableSchema(xmlTable)); - - this.setDefaultCatalog(this.buildDefaultCatalog()); - this.setSpecifiedCatalog_(this.getResourceTableCatalog(xmlTable)); - - this.updateUniqueConstraints(xmlTable); - } - - protected String getResourceTableName(XmlBaseTable xmlTable) { - return (xmlTable == null) ? null : xmlTable.getName(); - } - - protected String getResourceTableSchema(XmlBaseTable xmlTable) { - return (xmlTable == null) ? null : xmlTable.getSchema(); - } - - protected String getResourceTableCatalog(XmlBaseTable xmlTable) { - return (xmlTable == null) ? null : xmlTable.getCatalog(); - } - - protected void updateUniqueConstraints(XmlBaseTable xmlTable) { - Iterator<XmlUniqueConstraint> xmlConstraints = this.xmlUniqueConstraints(xmlTable); - - for (Iterator<OrmUniqueConstraint> contextConstraints = this.uniqueConstraints(); contextConstraints.hasNext(); ) { - OrmUniqueConstraint contextConstraint = contextConstraints.next(); - if (xmlConstraints.hasNext()) { - contextConstraint.update(xmlConstraints.next()); - } else { - this.removeUniqueConstraint_(contextConstraint); - } - } - - while (xmlConstraints.hasNext()) { - this.addUniqueConstraint(this.buildUniqueConstraint(xmlConstraints.next())); - } - } - - protected Iterator<XmlUniqueConstraint> xmlUniqueConstraints(XmlBaseTable xmlTable) { - // make a copy of the XML constraints (to prevent ConcurrentModificationException) - return (xmlTable == null) ? EmptyIterator.<XmlUniqueConstraint>instance() - : new CloneIterator<XmlUniqueConstraint>(xmlTable.getUniqueConstraints()); - } - - public void initializeFrom(Table oldTable) { - this.setSpecifiedName(oldTable.getSpecifiedName()); - this.setSpecifiedCatalog(oldTable.getSpecifiedCatalog()); - this.setSpecifiedSchema(oldTable.getSpecifiedSchema()); - } - - - // ********** database stuff ********** - - public org.eclipse.jpt.db.Table getDbTable() { - Schema dbSchema = this.getDbSchema(); - return (dbSchema == null) ? null : dbSchema.getTableForIdentifier(this.getName()); - } - - public Schema getDbSchema() { - SchemaContainer dbSchemaContainer = this.getDbSchemaContainer(); - return (dbSchemaContainer == null) ? null : dbSchemaContainer.getSchemaForIdentifier(this.getSchema()); - } - - /** - * If we don't have a catalog (i.e. we don't even have a *default* catalog), - * then the database probably does not support catalogs; and we need to - * get the schema directly from the database. - */ - public SchemaContainer getDbSchemaContainer() { - String catalog = this.getCatalog(); - return (catalog != null) ? this.getDbCatalog(catalog) : this.getDatabase(); - } - - public Catalog getDbCatalog() { - String catalog = this.getCatalog(); - if (catalog == null) { - return null; // not even a default catalog (i.e. database probably does not support catalogs) - } - return this.getDbCatalog(catalog); - } - - public boolean isResolved() { - return this.getDbTable() != null; - } - - public boolean hasResolvedSchema() { - return this.getDbSchema() != null; - } - - public boolean hasResolvedCatalog() { - String catalog = this.getCatalog(); - if (catalog == null) { - return true; // not even a default catalog (i.e. database probably does not support catalogs) - } - return this.getDbCatalog(catalog) != null; - } - - - // ********** UniqueConstraint.Owner implementation ********** - - public Iterator<String> candidateUniqueConstraintColumnNames() { - org.eclipse.jpt.db.Table dbTable = this.getDbTable(); - return (dbTable != null) ? dbTable.sortedColumnIdentifiers() : EmptyIterator.<String>instance(); - } - - - // ********** validation ********** - - public TextRange getValidationTextRange() { - return this.getTextRange(this.getResourceTableValidationTextRange()); - } - - protected TextRange getResourceTableValidationTextRange() { - XmlBaseTable resourceTable = this.getResourceTable(); - return (resourceTable == null) ? null : resourceTable.getValidationTextRange(); - } - - - // ********** misc ********** - - /** - * covariant override - */ - @Override - public XmlContextNode getParent() { - return (XmlContextNode) super.getParent(); - } - - @Override - public void toString(StringBuilder sb) { - super.toString(sb); - sb.append(this.getQualifiedName()); - } - - protected String getQualifiedName() { - return NameTools.buildQualifiedDatabaseObjectName(this.getCatalog(), this.getSchema(), this.getName()); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmTypeMapping.java deleted file mode 100644 index 1f4f56f59d..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmTypeMapping.java +++ /dev/null @@ -1,272 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaStructureNode; -import org.eclipse.jpt.core.context.PersistentAttribute; -import org.eclipse.jpt.core.context.java.JavaPersistentType; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmPersistentType; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.orm.XmlTypeMapping; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Schema; -import org.eclipse.jpt.db.Table; -import org.eclipse.jpt.utility.internal.StringTools; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; -import org.eclipse.jpt.utility.internal.iterators.TransformationIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - - -public abstract class AbstractOrmTypeMapping<T extends XmlTypeMapping> - extends AbstractXmlContextNode - implements OrmTypeMapping -{ - protected String class_; - - public boolean defaultMetadataComplete; - - protected Boolean specifiedMetadataComplete; - - protected final T resourceTypeMapping; - - - protected AbstractOrmTypeMapping(OrmPersistentType parent, T resourceMapping) { - super(parent); - this.resourceTypeMapping = resourceMapping; - this.class_ = this.getResourceClassName(); - this.specifiedMetadataComplete = this.getResourceMetadataComplete(); - this.defaultMetadataComplete = this.getPersistentType().isDefaultMetadataComplete(); - } - - // **************** Type Mapping implementation ***************************** - - @Override - public OrmPersistentType getParent() { - return (OrmPersistentType) super.getParent(); - } - - public OrmPersistentType getPersistentType() { - return this.getParent(); - } - - protected JavaPersistentType getJavaPersistentType() { - return this.getPersistentType().getJavaPersistentType(); - } - - public boolean isMapped() { - return true; - } - - public String getPrimaryTableName() { - return null; - } - - public String getClass_() { - return this.class_; - } - - public void setClass(String newClass) { - String oldClass = this.class_; - this.class_ = newClass; - this.resourceTypeMapping.setClassName(newClass); - firePropertyChanged(CLASS_PROPERTY, oldClass, newClass); - getPersistentType().classChanged(oldClass, newClass); - } - - - public boolean isMetadataComplete() { - if (isDefaultMetadataComplete()) { - //entity-mappings/persistence-unit-metadata/xml-mapping-metadata-complete is specified, then it overrides - //anything set here - return true; - } - return (this.getSpecifiedMetadataComplete() == null) ? this.isDefaultMetadataComplete() : this.getSpecifiedMetadataComplete().booleanValue(); - } - - public boolean isDefaultMetadataComplete() { - return this.defaultMetadataComplete; - } - - protected void setDefaultMetadataComplete(boolean newDefaultMetadataComplete) { - boolean oldMetadataComplete = this.defaultMetadataComplete; - this.defaultMetadataComplete = newDefaultMetadataComplete; - firePropertyChanged(DEFAULT_METADATA_COMPLETE_PROPERTY, oldMetadataComplete, newDefaultMetadataComplete); - } - - public Boolean getSpecifiedMetadataComplete() { - return this.specifiedMetadataComplete; - } - - public void setSpecifiedMetadataComplete(Boolean newSpecifiedMetadataComplete) { - Boolean oldMetadataComplete = this.specifiedMetadataComplete; - this.specifiedMetadataComplete = newSpecifiedMetadataComplete; - this.resourceTypeMapping.setMetadataComplete(newSpecifiedMetadataComplete); - firePropertyChanged(SPECIFIED_METADATA_COMPLETE_PROPERTY, oldMetadataComplete, newSpecifiedMetadataComplete); - } - - /** - * ITypeMapping is changed and various ITypeMappings may have - * common settings. In this method initialize the new ITypeMapping (this) - * fromthe old ITypeMapping (oldMapping) - */ - public void initializeFrom(OrmTypeMapping oldMapping) { - this.setClass(oldMapping.getClass_()); - this.setSpecifiedMetadataComplete(oldMapping.getSpecifiedMetadataComplete()); - this.setDefaultMetadataComplete(oldMapping.isDefaultMetadataComplete()); - } - - public Table getPrimaryDbTable() { - return null; - } - - public Table getDbTable(String tableName) { - return null; - } - - public Schema getDbSchema() { - return null; - } - - public boolean attributeMappingKeyAllowed(String attributeMappingKey) { - return true; - } - - public Iterator<OrmPersistentAttribute> overridableAttributes() { - return EmptyIterator.instance(); - } - - public Iterator<String> overridableAttributeNames() { - return this.namesOf(this.overridableAttributes()); - } - - public Iterator<PersistentAttribute> allOverridableAttributes() { - return EmptyIterator.instance(); - } - - public Iterator<String> allOverridableAttributeNames() { - return this.namesOf(this.allOverridableAttributes()); - } - - public Iterator<OrmPersistentAttribute> overridableAssociations() { - return EmptyIterator.instance(); - } - - public Iterator<String> overridableAssociationNames() { - return this.namesOf(this.overridableAssociations()); - } - - public Iterator<PersistentAttribute> allOverridableAssociations() { - return EmptyIterator.instance(); - } - - private Iterator<String> namesOf(Iterator<? extends PersistentAttribute> attributes) { - return new TransformationIterator<PersistentAttribute, String>(attributes) { - @Override - protected String transform(PersistentAttribute attribute) { - return attribute.getName(); - } - }; - } - - public Iterator<String> allOverridableAssociationNames() { - return this.namesOf(this.allOverridableAssociations()); - } - - public T getResourceTypeMapping() { - return this.resourceTypeMapping; - } - - public void update() { - this.setClass(this.getResourceClassName()); - this.setSpecifiedMetadataComplete(this.getResourceMetadataComplete()); - this.setDefaultMetadataComplete(this.getPersistentType().isDefaultMetadataComplete()); - } - - protected String getResourceClassName() { - return this.resourceTypeMapping.getClassName(); - } - - protected Boolean getResourceMetadataComplete() { - return this.resourceTypeMapping.getMetadataComplete(); - } - - public IContentType getContentType() { - return this.getPersistentType().getContentType(); - } - - - // ************************************************************************* - - public JpaStructureNode getStructureNode(int offset) { - if (this.resourceTypeMapping.containsOffset(offset)) { - return getPersistentType(); - } - return null; - } - - public TextRange getSelectionTextRange() { - return this.resourceTypeMapping.getSelectionTextRange(); - } - - public TextRange getClassTextRange() { - return this.resourceTypeMapping.getClassTextRange(); - } - - public TextRange getAttributesTextRange() { - return this.resourceTypeMapping.getAttributesTextRange(); - } - - public boolean containsOffset(int textOffset) { - return (this.resourceTypeMapping != null) - && this.resourceTypeMapping.containsOffset(textOffset); - } - - //************************* validation ************************ - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - this.validateClass(messages); - } - - protected void validateClass(List<IMessage> messages) { - if (StringTools.stringIsEmpty(this.class_)) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.PERSISTENT_TYPE_UNSPECIFIED_CLASS, - this, - this.getClassTextRange() - ) - ); - return; - } - } - - public boolean shouldValidateAgainstDatabase() { - return getPersistenceUnit().shouldValidateAgainstDatabase(); - } - - public TextRange getValidationTextRange() { - return this.resourceTypeMapping.getValidationTextRange(); - } - - @Override - public void toString(StringBuilder sb) { - sb.append(this.getPersistentType().getName()); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmXml.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmXml.java deleted file mode 100644 index 475d3d47d4..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmXml.java +++ /dev/null @@ -1,224 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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.List; - -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.content.IContentType; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.jpt.core.JpaStructureNode; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.context.MappingFileRoot; -import org.eclipse.jpt.core.context.orm.EntityMappings; -import org.eclipse.jpt.core.context.orm.OrmPersistentType; -import org.eclipse.jpt.core.context.orm.OrmXml; -import org.eclipse.jpt.core.context.persistence.MappingFileRef; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.resource.orm.XmlEntityMappings; -import org.eclipse.jpt.core.resource.xml.JpaXmlResource; -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 abstract class AbstractOrmXml - extends AbstractXmlContextNode - implements OrmXml -{ - protected JpaXmlResource xmlResource; - - protected EntityMappings entityMappings; - - - public AbstractOrmXml(MappingFileRef parent, JpaXmlResource resource) { - super(parent); - if (!resource.getContentType().isKindOf(JptCorePlugin.MAPPING_FILE_CONTENT_TYPE)) { - throw new IllegalArgumentException(resource + " does not have mapping file content type"); //$NON-NLS-1$ - } - this.xmlResource = resource; - XmlEntityMappings xmlEntityMappings = (XmlEntityMappings) this.xmlResource.getRootObject(); - if (xmlEntityMappings != null) { - this.entityMappings = this.buildEntityMappings(xmlEntityMappings); - } - } - - - // ********** overrides ********** - - @Override - public MappingFileRef getParent() { - return (MappingFileRef) super.getParent(); - } - - @Override - public IResource getResource() { - return this.xmlResource.getFile(); - } - - @Override - public MappingFileRoot getMappingFileRoot() { - return getEntityMappings(); - } - - - // ********** JpaStructureNode implementation ********** - - public String getId() { - // isn't actually displayed, so needs no details page - return null; - } - - public IContentType getContentType() { - return this.xmlResource.getContentType(); - } - - - // ********** MappingFile implementation ********** - - public JpaXmlResource getXmlResource() { - return this.xmlResource; - } - - public MappingFileRoot getRoot() { - return getEntityMappings(); - } - - public OrmPersistentType getPersistentType(String fullyQualifiedTypeName) { - return (this.entityMappings == null) ? null : this.entityMappings.getPersistentType(fullyQualifiedTypeName); - } - - - // ********** entity mappings ********** - - public EntityMappings getEntityMappings() { - return this.entityMappings; - } - - protected void setEntityMappings(EntityMappings entityMappings) { - EntityMappings old = this.entityMappings; - this.entityMappings = entityMappings; - this.firePropertyChanged(ENTITY_MAPPINGS_PROPERTY, old, entityMappings); - } - - public EntityMappings addEntityMappings() { - if (this.entityMappings != null) { - throw new IllegalStateException(); - } - - XmlEntityMappings xmlEntityMappings = this.buildEntityMappingsResource(); - this.entityMappings = this.buildEntityMappings(xmlEntityMappings); - this.xmlResource.getContents().add(xmlEntityMappings); - this.firePropertyChanged(ENTITY_MAPPINGS_PROPERTY, null, this.entityMappings); - return this.entityMappings; - } - - protected abstract XmlEntityMappings buildEntityMappingsResource(); - - public void removeEntityMappings() { - if (this.entityMappings == null) { - throw new IllegalStateException(); - } - this.getJpaFile(this.xmlResource.getFile()).removeRootStructureNode(this.xmlResource); - this.entityMappings.dispose(); - EntityMappings old = this.entityMappings; - - this.entityMappings = null; - EObject xmlEntityMappings = this.xmlResource.getRootObject(); //TODO helper removeEntityMappings method on ormResource?? - this.xmlResource.getContents().remove(xmlEntityMappings); - firePropertyChanged(ENTITY_MAPPINGS_PROPERTY, old, null); - } - - - // ********** updating ********** - - public void update(JpaXmlResource resource) { - if (!resource.getContentType().isKindOf(JptCorePlugin.MAPPING_FILE_CONTENT_TYPE)) { - throw new IllegalArgumentException(resource + " does not have mapping file content type"); //$NON-NLS-1$ - } - this.xmlResource = resource; - this.update(); - } - - protected void update() { - XmlEntityMappings oldXmlEntityMappings = - (this.entityMappings == null) ? null : this.entityMappings.getXmlEntityMappings(); - XmlEntityMappings newXmlEntityMappings = (XmlEntityMappings) this.xmlResource.getRootObject(); - - // if the old and new xml entity mappings are different instances, - // we scrap the old and rebuild. this can happen when the resource - // model drastically changes, such as a cvs checkout or an edit reversion - if (oldXmlEntityMappings != newXmlEntityMappings) { - if (this.entityMappings != null) { - this.getJpaFile(this.xmlResource.getFile()).removeRootStructureNode(this.xmlResource); - this.entityMappings.dispose(); - this.setEntityMappings(null); - } - } - - if (newXmlEntityMappings != null) { - if (this.entityMappings != null) { - this.getJpaFile(this.xmlResource.getFile()).addRootStructureNode(this.xmlResource, this.entityMappings); - this.entityMappings.update(); - } else { - this.setEntityMappings(this.buildEntityMappings(newXmlEntityMappings)); - } - } - } - - protected abstract EntityMappings buildEntityMappings(XmlEntityMappings xmlEntityMappings); - - @Override - public void postUpdate() { - super.postUpdate(); - if (this.entityMappings != null) { - this.entityMappings.postUpdate(); - } - } - - - // ********** text ********** - - public JpaStructureNode getStructureNode(int textOffset) { - if (this.entityMappings.containsOffset(textOffset)) { - return this.entityMappings.getStructureNode(textOffset); - } - return this; - } - - // never actually selected - public TextRange getSelectionTextRange() { - return TextRange.Empty.instance(); - } - - public TextRange getValidationTextRange() { - return TextRange.Empty.instance(); - } - - - // ********** validation ********** - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - if (this.entityMappings != null) { - this.entityMappings.validate(messages, reporter); - } - } - - - // ********** dispose ********** - - public void dispose() { - if (this.entityMappings != null) { - this.entityMappings.dispose(); - } - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractPersistenceUnitMetadata.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractPersistenceUnitMetadata.java deleted file mode 100644 index 2858c3902a..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractPersistenceUnitMetadata.java +++ /dev/null @@ -1,89 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.jpt.core.context.orm.EntityMappings; -import org.eclipse.jpt.core.context.orm.OrmPersistenceUnitDefaults; -import org.eclipse.jpt.core.context.orm.PersistenceUnitMetadata; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.resource.orm.XmlEntityMappings; -import org.eclipse.jpt.core.resource.orm.XmlPersistenceUnitMetadata; -import org.eclipse.jpt.core.utility.TextRange; - -public abstract class AbstractPersistenceUnitMetadata extends AbstractXmlContextNode - implements PersistenceUnitMetadata -{ - protected boolean xmlMappingMetadataComplete; - - protected final OrmPersistenceUnitDefaults persistenceUnitDefaults; - - protected final XmlEntityMappings xmlEntityMappings; - - protected AbstractPersistenceUnitMetadata(EntityMappings parent, XmlEntityMappings resource) { - super(parent); - this.xmlEntityMappings = resource; - this.xmlMappingMetadataComplete = this.getResourceXmlMappingMetadataComplete(); - this.persistenceUnitDefaults = getJpaFactory().buildPersistenceUnitDefaults(this, this.xmlEntityMappings); - } - - public boolean isXmlMappingMetadataComplete() { - return this.xmlMappingMetadataComplete; - } - - public void setXmlMappingMetadataComplete(boolean newXmlMappingMetadataComplete) { - boolean oldXmlMappingMetadataComplete = this.xmlMappingMetadataComplete; - this.xmlMappingMetadataComplete = newXmlMappingMetadataComplete; - if (oldXmlMappingMetadataComplete != newXmlMappingMetadataComplete) { - if (this.getResourcePersistenceUnitMetadata() != null) { - this.getResourcePersistenceUnitMetadata().setXmlMappingMetadataComplete(newXmlMappingMetadataComplete); - if (this.getResourcePersistenceUnitMetadata().isUnset()) { - this.xmlEntityMappings.setPersistenceUnitMetadata(null); - } - } - else if (newXmlMappingMetadataComplete) { - this.xmlEntityMappings.setPersistenceUnitMetadata(createResourcePersistenceUnitMetadata()); - this.getResourcePersistenceUnitMetadata().setXmlMappingMetadataComplete(newXmlMappingMetadataComplete); - } - } - firePropertyChanged(PersistenceUnitMetadata.XML_MAPPING_METADATA_COMPLETE_PROPERTY, oldXmlMappingMetadataComplete, newXmlMappingMetadataComplete); - } - - protected void setXmlMappingMetadataComplete_(boolean newXmlMappingMetadataComplete) { - boolean oldXmlMappingMetadataComplete = this.xmlMappingMetadataComplete; - this.xmlMappingMetadataComplete = newXmlMappingMetadataComplete; - firePropertyChanged(PersistenceUnitMetadata.XML_MAPPING_METADATA_COMPLETE_PROPERTY, oldXmlMappingMetadataComplete, newXmlMappingMetadataComplete); - } - - public OrmPersistenceUnitDefaults getPersistenceUnitDefaults() { - return this.persistenceUnitDefaults; - } - - public void update() { - this.setXmlMappingMetadataComplete_(this.getResourceXmlMappingMetadataComplete()); - this.persistenceUnitDefaults.update(); - } - - - protected boolean getResourceXmlMappingMetadataComplete() { - XmlPersistenceUnitMetadata resourcePersistenceUnitMetadata = getResourcePersistenceUnitMetadata(); - return resourcePersistenceUnitMetadata != null ? resourcePersistenceUnitMetadata.isXmlMappingMetadataComplete() : false; - } - - public XmlPersistenceUnitMetadata getResourcePersistenceUnitMetadata() { - return this.xmlEntityMappings.getPersistenceUnitMetadata(); - } - - public TextRange getValidationTextRange() { - if (getResourcePersistenceUnitMetadata() != null) { - return getResourcePersistenceUnitMetadata().getValidationTextRange(); - } - return this.xmlEntityMappings.getValidationTextRange(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericEntityMappings.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericEntityMappings.java deleted file mode 100644 index 8254d7becd..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericEntityMappings.java +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.jpt.core.context.orm.OrmPersistentType; -import org.eclipse.jpt.core.context.orm.OrmXml; -import org.eclipse.jpt.core.context.orm.PersistenceUnitMetadata; -import org.eclipse.jpt.core.resource.orm.XmlEntityMappings; -import org.eclipse.jpt.core.resource.orm.XmlTypeMapping; - -public class GenericEntityMappings - extends AbstractEntityMappings -{ - - public GenericEntityMappings(OrmXml parent, XmlEntityMappings resource) { - super(parent, resource); - } - - @Override - protected PersistenceUnitMetadata buildPersistenceUnitMetadata() { - return getJpaFactory().buildPersistenceUnitMetadata(this, this.xmlEntityMappings); - } - - @Override - protected OrmPersistentType buildPersistentType(XmlTypeMapping resourceMapping) { - return getJpaFactory().buildOrmPersistentType(this, resourceMapping); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmAssociationOverride.java deleted file mode 100644 index 35201dfb72..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmAssociationOverride.java +++ /dev/null @@ -1,265 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2009 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.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.eclipse.jpt.core.context.AssociationOverride; -import org.eclipse.jpt.core.context.BaseJoinColumn; -import org.eclipse.jpt.core.context.BaseOverride; -import org.eclipse.jpt.core.context.Entity; -import org.eclipse.jpt.core.context.RelationshipMapping; -import org.eclipse.jpt.core.context.TypeMapping; -import org.eclipse.jpt.core.context.XmlContextNode; -import org.eclipse.jpt.core.context.orm.OrmAssociationOverride; -import org.eclipse.jpt.core.context.orm.OrmJoinColumn; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlAssociationOverride; -import org.eclipse.jpt.core.resource.orm.XmlJoinColumn; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Table; -import org.eclipse.jpt.utility.internal.iterators.CloneIterator; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; - -public class GenericOrmAssociationOverride extends AbstractXmlContextNode - implements OrmAssociationOverride -{ - - protected String name; - - protected final List<OrmJoinColumn> specifiedJoinColumns; - - protected final List<OrmJoinColumn> defaultJoinColumns; - - private final AssociationOverride.Owner owner; - - protected XmlAssociationOverride resourceAssociationOverride; - - - public GenericOrmAssociationOverride(XmlContextNode parent, AssociationOverride.Owner owner, XmlAssociationOverride resourceAssociationOverride) { - super(parent); - this.owner = owner; - this.specifiedJoinColumns = new ArrayList<OrmJoinColumn>(); - this.defaultJoinColumns = new ArrayList<OrmJoinColumn>(); - this.resourceAssociationOverride = resourceAssociationOverride; - this.name = resourceAssociationOverride.getName(); - initializeSpecifiedJoinColumns(); - } - - public OrmAssociationOverride setVirtual(boolean virtual) { - return (OrmAssociationOverride) getOwner().setVirtual(virtual, this); - } - - public Owner getOwner() { - return this.owner; - } - - // ********** IAssociationOverride implementation ********** - - public String getName() { - return this.name; - } - - public void setName(String newName) { - String oldName = this.name; - this.name = newName; - this.resourceAssociationOverride.setName(newName); - firePropertyChanged(BaseOverride.NAME_PROPERTY, oldName, newName); - } - - - public ListIterator<OrmJoinColumn> joinColumns() { - return this.specifiedJoinColumns.isEmpty() ? this.defaultJoinColumns() : this.specifiedJoinColumns(); - } - - public int joinColumnsSize() { - return this.specifiedJoinColumns.isEmpty() ? this.defaultJoinColumnsSize() : this.specifiedJoinColumnsSize(); - } - - public ListIterator<OrmJoinColumn> defaultJoinColumns() { - return new CloneListIterator<OrmJoinColumn>(this.defaultJoinColumns); - } - - public int defaultJoinColumnsSize() { - return this.defaultJoinColumns.size(); - } - - public ListIterator<OrmJoinColumn> specifiedJoinColumns() { - return new CloneListIterator<OrmJoinColumn>(this.specifiedJoinColumns); - } - - public int specifiedJoinColumnsSize() { - return this.specifiedJoinColumns.size(); - } - - public OrmJoinColumn addSpecifiedJoinColumn(int index) { - XmlJoinColumn resourceJoinColumn = OrmFactory.eINSTANCE.createXmlJoinColumnImpl(); - OrmJoinColumn contextJoinColumn = buildJoinColumn(resourceJoinColumn); - this.specifiedJoinColumns.add(index, contextJoinColumn); - this.resourceAssociationOverride.getJoinColumns().add(index, resourceJoinColumn); - this.fireItemAdded(AssociationOverride.SPECIFIED_JOIN_COLUMNS_LIST, index, contextJoinColumn); - return contextJoinColumn; - } - - protected OrmJoinColumn.Owner createJoinColumnOwner() { - return new JoinColumnOwner(); - } - - protected void addSpecifiedJoinColumn(int index, OrmJoinColumn joinColumn) { - addItemToList(index, joinColumn, this.specifiedJoinColumns, AssociationOverride.SPECIFIED_JOIN_COLUMNS_LIST); - } - - protected void addSpecifiedJoinColumn(OrmJoinColumn joinColumn) { - this.addSpecifiedJoinColumn(this.specifiedJoinColumns.size(), joinColumn); - } - - public void removeSpecifiedJoinColumn(int index) { - OrmJoinColumn removedJoinColumn = this.specifiedJoinColumns.remove(index); - this.resourceAssociationOverride.getJoinColumns().remove(index); - fireItemRemoved(Entity.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST, index, removedJoinColumn); - } - - protected void removeSpecifiedJoinColumn(OrmJoinColumn joinColumn) { - removeItemFromList(joinColumn, this.specifiedJoinColumns, AssociationOverride.SPECIFIED_JOIN_COLUMNS_LIST); - } - - public void moveSpecifiedJoinColumn(int targetIndex, int sourceIndex) { - this.resourceAssociationOverride.getJoinColumns().move(targetIndex, sourceIndex); - moveItemInList(targetIndex, sourceIndex, this.specifiedJoinColumns, AssociationOverride.SPECIFIED_JOIN_COLUMNS_LIST); - } - - public boolean containsSpecifiedJoinColumns() { - return !this.specifiedJoinColumns.isEmpty(); - } - - public boolean isVirtual() { - return getOwner().isVirtual(this); - } - - protected void initializeSpecifiedJoinColumns() { - for (XmlJoinColumn joinColumn : this.resourceAssociationOverride.getJoinColumns()) { - this.specifiedJoinColumns.add(buildJoinColumn(joinColumn)); - } - } - - public void update(XmlAssociationOverride resourceAssociationOverride) { - this.resourceAssociationOverride = resourceAssociationOverride; - this.setName(resourceAssociationOverride.getName()); - updateSpecifiedJoinColumns(); - } - - protected void updateSpecifiedJoinColumns() { - // make a copy of the XML join columns (to prevent ConcurrentModificationException) - Iterator<XmlJoinColumn> xmlJoinColumns = new CloneIterator<XmlJoinColumn>(this.resourceAssociationOverride.getJoinColumns()); - - for (Iterator<OrmJoinColumn> contextJoinColumns = this.specifiedJoinColumns(); contextJoinColumns.hasNext(); ) { - OrmJoinColumn contextJoinColumn = contextJoinColumns.next(); - if (xmlJoinColumns.hasNext()) { - contextJoinColumn.update(xmlJoinColumns.next()); - } - else { - removeSpecifiedJoinColumn(contextJoinColumn); - } - } - - while (xmlJoinColumns.hasNext()) { - addSpecifiedJoinColumn(buildJoinColumn(xmlJoinColumns.next())); - } - } - - protected OrmJoinColumn buildJoinColumn(XmlJoinColumn resourceJoinColumn) { - return getJpaFactory().buildOrmJoinColumn(this, new JoinColumnOwner(), resourceJoinColumn); - } - - public TextRange getValidationTextRange() { - // TODO Auto-generated method stub - return null; - } - - @Override - public void toString(StringBuilder sb) { - sb.append(this.name); - } - - class JoinColumnOwner implements OrmJoinColumn.Owner - { - - public JoinColumnOwner() { - super(); - } - - /** - * by default, the join column is in the type mapping's primary table - */ - public String getDefaultTableName() { - return GenericOrmAssociationOverride.this.owner.getTypeMapping().getPrimaryTableName(); - } - - public String getDefaultColumnName() { - return null; - } - - public Entity getTargetEntity() { - RelationshipMapping relationshipMapping = getRelationshipMapping(); - return relationshipMapping == null ? null : relationshipMapping.getResolvedTargetEntity(); - } - - public String getAttributeName() { - return GenericOrmAssociationOverride.this.getName(); - } - - public RelationshipMapping getRelationshipMapping() { - return GenericOrmAssociationOverride.this.owner.getRelationshipMapping(GenericOrmAssociationOverride.this.getName()); - } - - public boolean tableNameIsInvalid(String tableName) { - return getTypeMapping().tableNameIsInvalid(tableName); - } - - /** - * the join column can be on a secondary table - */ - public boolean tableIsAllowed() { - return true; - } - - public TypeMapping getTypeMapping() { - return GenericOrmAssociationOverride.this.owner.getTypeMapping(); - } - - public Table getDbTable(String tableName) { - return getTypeMapping().getDbTable(tableName); - } - - public Table getReferencedColumnDbTable() { - Entity targetEntity = getTargetEntity(); - return (targetEntity == null) ? null : targetEntity.getPrimaryDbTable(); - } - - public boolean isVirtual(BaseJoinColumn joinColumn) { - return GenericOrmAssociationOverride.this.defaultJoinColumns.contains(joinColumn); - } - - public int joinColumnsSize() { - return GenericOrmAssociationOverride.this.joinColumnsSize(); - } - - public TextRange getValidationTextRange() { - // TODO Auto-generated method stub - return null; - } - - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmAttributeOverride.java deleted file mode 100644 index eab88aa6bb..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmAttributeOverride.java +++ /dev/null @@ -1,220 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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.List; -import org.eclipse.jpt.core.context.AttributeOverride; -import org.eclipse.jpt.core.context.BaseOverride; -import org.eclipse.jpt.core.context.ColumnMapping; -import org.eclipse.jpt.core.context.TypeMapping; -import org.eclipse.jpt.core.context.XmlContextNode; -import org.eclipse.jpt.core.context.orm.OrmAttributeOverride; -import org.eclipse.jpt.core.context.orm.OrmColumn; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -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.core.utility.TextRange; -import org.eclipse.jpt.db.Table; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - - -public class GenericOrmAttributeOverride extends AbstractXmlContextNode - implements OrmAttributeOverride, OrmColumn.Owner -{ - - protected String name; - - private final Owner owner; - - protected XmlAttributeOverride resourceAttributeOverride; - - - protected final OrmColumn column; - - public GenericOrmAttributeOverride(XmlContextNode parent, AttributeOverride.Owner owner, XmlAttributeOverride resourceAttributeOverride) { - super(parent); - this.owner = owner; - this.column = getJpaFactory().buildOrmColumn(this, this); - this.resourceAttributeOverride = resourceAttributeOverride; - this.name = resourceAttributeOverride.getName(); - this.column.initialize(resourceAttributeOverride.getColumn()); - } - - @Override - public XmlContextNode getParent() { - return (XmlContextNode) super.getParent(); - } - - public OrmAttributeOverride setVirtual(boolean virtual) { - return (OrmAttributeOverride) getOwner().setVirtual(virtual, this); - } - - public Owner getOwner() { - return this.owner; - } - - public String getName() { - return this.name; - } - - public void setName(String newName) { - String oldName = this.name; - this.name = newName; - this.resourceAttributeOverride.setName(newName); - firePropertyChanged(BaseOverride.NAME_PROPERTY, oldName, newName); - } - - protected void setName_(String newName) { - String oldName = this.name; - this.name = newName; - firePropertyChanged(BaseOverride.NAME_PROPERTY, oldName, newName); - } - - public OrmColumn getColumn() { - return this.column; - } - - public TypeMapping getTypeMapping() { - return getOwner().getTypeMapping(); - } - - public Table getDbTable(String tablename) { - return this.getTypeMapping().getDbTable(getColumn().getTable()); - } - - public String getDefaultColumnName() { - ColumnMapping columnMapping = getColumnMapping(); - if (columnMapping == null) { - return null; - } - return columnMapping.getColumn().getName(); - } - - public String getDefaultTableName() { - ColumnMapping columnMapping = getColumnMapping(); - if (columnMapping == null) { - return null; - } - String tableName = columnMapping.getColumn().getSpecifiedTable(); - if (tableName != null) { - return tableName; - } - return getOwner().getTypeMapping().getPrimaryTableName(); - } - - protected ColumnMapping getColumnMapping() { - return getOwner().getColumnMapping(getName()); - } - - public boolean isVirtual() { - return getOwner().isVirtual(this); - } - - public TextRange getValidationTextRange() { - TextRange textRange = this.resourceAttributeOverride.getValidationTextRange(); - return textRange == null ? getParent().getValidationTextRange() : textRange; - } - - - //***************** IXmlColumn.Owner implementation **************** - - public XmlColumn getResourceColumn() { - return this.resourceAttributeOverride.getColumn(); - } - - public void addResourceColumn() { - this.resourceAttributeOverride.setColumn(OrmFactory.eINSTANCE.createXmlColumnImpl()); - } - - public void removeResourceColumn() { - this.resourceAttributeOverride.setColumn(null); - } - - - //***************** updating **************** - - public void update(XmlAttributeOverride xmlAttributeOverride) { - this.resourceAttributeOverride = xmlAttributeOverride; - this.setName_(xmlAttributeOverride.getName()); - this.column.update(xmlAttributeOverride.getColumn()); - } - - //****************** validation ******************** - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - if (this.connectionProfileIsActive()) { - this.validateColumn(messages); - } - } - - protected void validateColumn(List<IMessage> messages) { - String tableName = this.column.getTable(); - if (this.getTypeMapping().tableNameIsInvalid(tableName)) { - if (this.isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_TABLE, - new String[] {this.getName(), tableName, this.column.getName()}, - this.column, - this.column.getTableTextRange() - ) - ); - } else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.COLUMN_UNRESOLVED_TABLE, - new String[] {tableName, this.column.getName()}, - this.column, - this.column.getTableTextRange() - ) - ); - } - return; - } - - if ( ! this.column.isResolved() && this.column.getDbTable() != null) { - if (this.isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_NAME, - new String[] {this.getName(), this.column.getName()}, - this.column, - this.column.getNameTextRange() - ) - ); - } else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.COLUMN_UNRESOLVED_NAME, - new String[] {this.column.getName()}, - this.column, - this.column.getNameTextRange() - ) - ); - } - } - } - - @Override - public void toString(StringBuilder sb) { - sb.append(this.name); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmBasicMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmBasicMapping.java deleted file mode 100644 index c4382ac846..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmBasicMapping.java +++ /dev/null @@ -1,325 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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.List; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.BasicMapping; -import org.eclipse.jpt.core.context.Converter; -import org.eclipse.jpt.core.context.FetchType; -import org.eclipse.jpt.core.context.Fetchable; -import org.eclipse.jpt.core.context.Nullable; -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.OrmPersistentAttribute; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -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.db.Table; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - - -public class GenericOrmBasicMapping<T extends XmlBasic> - extends AbstractOrmAttributeMapping<T> - implements OrmBasicMapping -{ - protected final OrmColumn column; - - protected FetchType specifiedFetch; - - protected Boolean specifiedOptional; - - protected OrmConverter defaultConverter; - - protected OrmConverter specifiedConverter; - - public GenericOrmBasicMapping(OrmPersistentAttribute parent, T resourceMapping) { - super(parent, resourceMapping); - this.column = getJpaFactory().buildOrmColumn(this, this); - this.column.initialize(this.getResourceColumn());//TODO pass in to factory - this.specifiedFetch = this.getResourceFetch(); - this.specifiedOptional = this.getResourceOptional(); - this.defaultConverter = new GenericOrmNullConverter(this); - this.specifiedConverter = this.buildSpecifiedConverter(this.getResourceConverterType()); - } - - public FetchType getFetch() { - return (this.getSpecifiedFetch() == null) ? this.getDefaultFetch() : this.getSpecifiedFetch(); - } - - public FetchType getDefaultFetch() { - return BasicMapping.DEFAULT_FETCH_TYPE; - } - - public FetchType getSpecifiedFetch() { - return this.specifiedFetch; - } - - public void setSpecifiedFetch(FetchType newSpecifiedFetch) { - FetchType oldFetch = this.specifiedFetch; - this.specifiedFetch = newSpecifiedFetch; - this.resourceAttributeMapping.setFetch(FetchType.toOrmResourceModel(newSpecifiedFetch)); - firePropertyChanged(Fetchable.SPECIFIED_FETCH_PROPERTY, oldFetch, newSpecifiedFetch); - } - - protected void setSpecifiedFetch_(FetchType newSpecifiedFetch) { - FetchType oldFetch = this.specifiedFetch; - this.specifiedFetch = newSpecifiedFetch; - firePropertyChanged(Fetchable.SPECIFIED_FETCH_PROPERTY, oldFetch, newSpecifiedFetch); - } - - public boolean isOptional() { - return (this.getSpecifiedOptional() == null) ? this.isDefaultOptional() : this.getSpecifiedOptional().booleanValue(); - } - - public boolean isDefaultOptional() { - return Nullable.DEFAULT_OPTIONAL; - } - - public Boolean getSpecifiedOptional() { - return this.specifiedOptional; - } - - public void setSpecifiedOptional(Boolean newSpecifiedOptional) { - Boolean oldOptional = this.specifiedOptional; - this.specifiedOptional = newSpecifiedOptional; - this.resourceAttributeMapping.setOptional(newSpecifiedOptional); - firePropertyChanged(Nullable.SPECIFIED_OPTIONAL_PROPERTY, oldOptional, newSpecifiedOptional); - } - - protected void setSpecifiedOptional_(Boolean newSpecifiedOptional) { - Boolean oldOptional = this.specifiedOptional; - this.specifiedOptional = newSpecifiedOptional; - firePropertyChanged(Nullable.SPECIFIED_OPTIONAL_PROPERTY, oldOptional, newSpecifiedOptional); - } - - public OrmConverter getConverter() { - return getSpecifiedConverter() == null ? getDefaultConverter() : getSpecifiedConverter(); - } - - public OrmConverter getDefaultConverter() { - return this.defaultConverter; - } - - public OrmConverter getSpecifiedConverter() { - return this.specifiedConverter; - } - - protected String getSpecifedConverterType() { - if (this.specifiedConverter == null) { - return Converter.NO_CONVERTER; - } - return this.specifiedConverter.getType(); - } - - public void setSpecifiedConverter(String converterType) { - if (getSpecifedConverterType() == converterType) { - return; - } - OrmConverter oldConverter = this.specifiedConverter; - OrmConverter newConverter = buildSpecifiedConverter(converterType); - this.specifiedConverter = null; - if (oldConverter != null) { - oldConverter.removeFromResourceModel(); - } - this.specifiedConverter = newConverter; - if (newConverter != null) { - newConverter.addToResourceModel(); - } - firePropertyChanged(SPECIFIED_CONVERTER_PROPERTY, oldConverter, newConverter); - } - - protected void setSpecifiedConverter(OrmConverter newConverter) { - OrmConverter oldConverter = this.specifiedConverter; - this.specifiedConverter = newConverter; - firePropertyChanged(SPECIFIED_CONVERTER_PROPERTY, oldConverter, newConverter); - } - - public String getKey() { - return MappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY; - } - - public void initializeOn(OrmAttributeMapping newMapping) { - newMapping.initializeFromOrmBasicMapping(this); - } - - - @Override - public void initializeFromOrmColumnMapping(OrmColumnMapping oldMapping) { - super.initializeFromOrmColumnMapping(oldMapping); - getColumn().initializeFrom(oldMapping.getColumn()); - } - - public int getXmlSequence() { - return 20; - } - - @Override - public boolean isOverridableAttributeMapping() { - return true; - } - - public OrmColumn getColumn() { - return this.column; - } - - public String getDefaultColumnName() { - return getName(); - } - - public String getDefaultTableName() { - return getTypeMapping().getPrimaryTableName(); - } - - public Table getDbTable(String tableName) { - return getTypeMapping().getDbTable(tableName); - } - - @Override - public void update() { - super.update(); - this.setSpecifiedFetch_(this.getResourceFetch()); - this.setSpecifiedOptional_(this.getResourceOptional()); - this.column.update(this.getResourceColumn()); - if (getResourceConverterType() == getSpecifedConverterType()) { - getSpecifiedConverter().update(); - } - else { - setSpecifiedConverter(buildSpecifiedConverter(getResourceConverterType())); - } - } - - protected Boolean getResourceOptional() { - return this.resourceAttributeMapping.getOptional(); - } - - protected FetchType getResourceFetch() { - return FetchType.fromOrmResourceModel(this.resourceAttributeMapping.getFetch()); - } - - protected OrmConverter buildSpecifiedConverter(String converterType) { - if (converterType == Converter.ENUMERATED_CONVERTER) { - return new GenericOrmEnumeratedConverter(this, this.resourceAttributeMapping); - } - else if (converterType == Converter.TEMPORAL_CONVERTER) { - return new GenericOrmTemporalConverter(this, this.resourceAttributeMapping); - } - else if (converterType == Converter.LOB_CONVERTER) { - return new GenericOrmLobConverter(this, this.resourceAttributeMapping); - } - return null; - } - - protected String getResourceConverterType() { - if (this.resourceAttributeMapping.getEnumerated() != null) { - return Converter.ENUMERATED_CONVERTER; - } - else if (this.resourceAttributeMapping.getTemporal() != null) { - return Converter.TEMPORAL_CONVERTER; - } - else if (this.resourceAttributeMapping.isLob()) { - return Converter.LOB_CONVERTER; - } - - return null; - } - - public void addToResourceModel(Attributes resourceAttributes) { - resourceAttributes.getBasics().add(this.resourceAttributeMapping); - } - - public void removeFromResourceModel(Attributes resourceAttributes) { - resourceAttributes.getBasics().remove(this.resourceAttributeMapping); - } - - //***************** XmlColumn.Owner implementation **************** - - public XmlColumn getResourceColumn() { - return this.resourceAttributeMapping.getColumn(); - } - - public void addResourceColumn() { - this.resourceAttributeMapping.setColumn(OrmFactory.eINSTANCE.createXmlColumnImpl()); - } - - public void removeResourceColumn() { - this.resourceAttributeMapping.setColumn(null); - } - - // ****************** validation **************** - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - if (this.shouldValidateAgainstDatabase()) { - this.validateColumn(messages); - } - } - - protected void validateColumn(List<IMessage> messages) { - String tableName = this.column.getTable(); - if (this.getTypeMapping().tableNameIsInvalid(tableName)) { - if (this.getPersistentAttribute().isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_TABLE, - new String[] {this.getName(), tableName, this.column.getName()}, - this.column, - this.column.getTableTextRange() - ) - ); - } else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.COLUMN_UNRESOLVED_TABLE, - new String[] {tableName, this.column.getName()}, - this.column, - this.column.getTableTextRange() - ) - ); - } - return; - } - - if ( ! this.column.isResolved() && this.column.getDbTable() != null) { - if (this.getPersistentAttribute().isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_NAME, - new String[] {this.getName(), this.column.getName()}, - this.column, - this.column.getNameTextRange() - ) - ); - } else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.COLUMN_UNRESOLVED_NAME, - new String[] {this.column.getName()}, - this.column, - this.column.getNameTextRange() - ) - ); - } - } - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmColumn.java deleted file mode 100644 index 8d4e87f50b..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmColumn.java +++ /dev/null @@ -1,191 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.jpt.core.context.Column; -import org.eclipse.jpt.core.context.XmlContextNode; -import org.eclipse.jpt.core.context.orm.OrmColumn; -import org.eclipse.jpt.core.resource.orm.XmlColumn; - -public class GenericOrmColumn extends AbstractOrmBaseColumn<XmlColumn> implements OrmColumn -{ - protected Integer specifiedLength; - - protected Integer specifiedPrecision; - - protected Integer specifiedScale; - - public GenericOrmColumn(XmlContextNode parent, OrmColumn.Owner owner) { - super(parent, owner); - } - - @Override - public OrmColumn.Owner getOwner() { - return (OrmColumn.Owner) super.getOwner(); - } - - public void initializeFrom(Column oldColumn) { - super.initializeFrom(oldColumn); - setSpecifiedLength(oldColumn.getSpecifiedLength()); - setSpecifiedPrecision(oldColumn.getSpecifiedPrecision()); - setSpecifiedScale(oldColumn.getSpecifiedScale()); - } - - public int getLength() { - return (this.getSpecifiedLength() == null) ? getDefaultLength() : this.getSpecifiedLength().intValue(); - } - - public int getDefaultLength() { - return Column.DEFAULT_LENGTH; - } - - public Integer getSpecifiedLength() { - return this.specifiedLength; - } - - public void setSpecifiedLength(Integer newSpecifiedLength) { - Integer oldSpecifiedLength = this.specifiedLength; - this.specifiedLength = newSpecifiedLength; - if (oldSpecifiedLength != newSpecifiedLength) { - if (this.getResourceColumn() != null) { - this.getResourceColumn().setLength(newSpecifiedLength); - if (this.getResourceColumn().isUnset()) { - removeResourceColumn(); - } - } - else if (newSpecifiedLength != null) { - addResourceColumn(); - getResourceColumn().setLength(newSpecifiedLength); - } - } - firePropertyChanged(SPECIFIED_LENGTH_PROPERTY, oldSpecifiedLength, newSpecifiedLength); - } - - protected void setSpecifiedLength_(Integer newSpecifiedLength) { - Integer oldSpecifiedLength = this.specifiedLength; - this.specifiedLength = newSpecifiedLength; - firePropertyChanged(SPECIFIED_LENGTH_PROPERTY, oldSpecifiedLength, newSpecifiedLength); - } - - public int getPrecision() { - return (this.getSpecifiedPrecision() == null) ? getDefaultPrecision() : this.getSpecifiedPrecision().intValue(); - } - - public int getDefaultPrecision() { - return Column.DEFAULT_PRECISION; - } - - public Integer getSpecifiedPrecision() { - return this.specifiedPrecision; - } - - public void setSpecifiedPrecision(Integer newSpecifiedPrecision) { - Integer oldSpecifiedPrecision = this.specifiedPrecision; - this.specifiedPrecision = newSpecifiedPrecision; - if (oldSpecifiedPrecision != newSpecifiedPrecision) { - if (this.getResourceColumn() != null) { - this.getResourceColumn().setPrecision(newSpecifiedPrecision); - if (this.getResourceColumn().isUnset()) { - removeResourceColumn(); - } - } - else if (newSpecifiedPrecision != null) { - addResourceColumn(); - getResourceColumn().setPrecision(newSpecifiedPrecision); - } - } - firePropertyChanged(SPECIFIED_PRECISION_PROPERTY, oldSpecifiedPrecision, newSpecifiedPrecision); - } - - protected void setSpecifiedPrecision_(Integer newSpecifiedPrecision) { - Integer oldSpecifiedPrecision = this.specifiedPrecision; - this.specifiedPrecision = newSpecifiedPrecision; - firePropertyChanged(SPECIFIED_PRECISION_PROPERTY, oldSpecifiedPrecision, newSpecifiedPrecision); - } - - public int getScale() { - return (this.getSpecifiedScale() == null) ? getDefaultScale() : this.getSpecifiedScale().intValue(); - } - - public int getDefaultScale() { - return Column.DEFAULT_SCALE; - } - - public Integer getSpecifiedScale() { - return this.specifiedScale; - } - - public void setSpecifiedScale(Integer newSpecifiedScale) { - Integer oldSpecifiedScale = this.specifiedScale; - this.specifiedScale = newSpecifiedScale; - if (oldSpecifiedScale != newSpecifiedScale) { - if (this.getResourceColumn() != null) { - this.getResourceColumn().setScale(newSpecifiedScale); - if (this.getResourceColumn().isUnset()) { - removeResourceColumn(); - } - } - else if (newSpecifiedScale != null) { - addResourceColumn(); - getResourceColumn().setScale(newSpecifiedScale); - } - } - firePropertyChanged(SPECIFIED_SCALE_PROPERTY, oldSpecifiedScale, newSpecifiedScale); - } - - protected void setSpecifiedScale_(Integer newSpecifiedScale) { - Integer oldSpecifiedScale = this.specifiedScale; - this.specifiedScale = newSpecifiedScale; - firePropertyChanged(SPECIFIED_SCALE_PROPERTY, oldSpecifiedScale, newSpecifiedScale); - } - - @Override - protected XmlColumn getResourceColumn() { - return getOwner().getResourceColumn(); - } - - @Override - protected void addResourceColumn() { - getOwner().addResourceColumn(); - } - - @Override - protected void removeResourceColumn() { - getOwner().removeResourceColumn(); - } - - @Override - public void initialize(XmlColumn column) { - super.initialize(column); - this.specifiedLength = this.getResourceLength(column); - this.specifiedPrecision = this.getResourcePrecision(column); - this.specifiedScale = this.getResourceScale(column); - } - - @Override - public void update(XmlColumn column) { - super.update(column); - this.setSpecifiedLength_(this.getResourceLength(column)); - this.setSpecifiedPrecision_(this.getResourcePrecision(column)); - this.setSpecifiedScale_(this.getResourceScale(column)); - } - - protected Integer getResourceLength(XmlColumn column) { - return column == null ? null : column.getLength(); - } - - protected Integer getResourcePrecision(XmlColumn column) { - return column == null ? null : column.getPrecision(); - } - - protected Integer getResourceScale(XmlColumn column) { - return column == null ? null : column.getScale(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmDiscriminatorColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmDiscriminatorColumn.java deleted file mode 100644 index 59067cb62a..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmDiscriminatorColumn.java +++ /dev/null @@ -1,227 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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.List; -import org.eclipse.jpt.core.context.DiscriminatorColumn; -import org.eclipse.jpt.core.context.DiscriminatorType; -import org.eclipse.jpt.core.context.XmlContextNode; -import org.eclipse.jpt.core.context.orm.OrmDiscriminatorColumn; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlDiscriminatorColumn; -import org.eclipse.jpt.core.resource.orm.XmlEntity; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -public class GenericOrmDiscriminatorColumn extends AbstractOrmNamedColumn<XmlDiscriminatorColumn> - implements OrmDiscriminatorColumn -{ - - protected DiscriminatorType specifiedDiscriminatorType; - - protected DiscriminatorType defaultDiscriminatorType; - - protected Integer specifiedLength; - - protected int defaultLength; - - protected XmlEntity entity; - - public GenericOrmDiscriminatorColumn(XmlContextNode parent, OrmDiscriminatorColumn.Owner owner) { - super(parent, owner); - } - - @Override - public OrmDiscriminatorColumn.Owner getOwner() { - return (OrmDiscriminatorColumn.Owner) super.getOwner(); - } - - public DiscriminatorType getDiscriminatorType() { - return (this.getSpecifiedDiscriminatorType() == null) ? this.getDefaultDiscriminatorType() : this.getSpecifiedDiscriminatorType(); - } - - public DiscriminatorType getDefaultDiscriminatorType() { - return this.defaultDiscriminatorType; - } - - protected void setDefaultDiscriminatorType(DiscriminatorType discriminatorType) { - DiscriminatorType old = this.defaultDiscriminatorType; - this.defaultDiscriminatorType = discriminatorType; - firePropertyChanged(DEFAULT_DISCRIMINATOR_TYPE_PROPERTY, old, discriminatorType); - } - - public DiscriminatorType getSpecifiedDiscriminatorType() { - return this.specifiedDiscriminatorType; - } - - public void setSpecifiedDiscriminatorType(DiscriminatorType newSpecifiedDiscriminatorType) { - DiscriminatorType oldDiscriminatorType = this.specifiedDiscriminatorType; - this.specifiedDiscriminatorType = newSpecifiedDiscriminatorType; - if (oldDiscriminatorType != newSpecifiedDiscriminatorType) { - if (this.getResourceColumn() != null) { - this.getResourceColumn().setDiscriminatorType(DiscriminatorType.toOrmResourceModel(newSpecifiedDiscriminatorType)); - if (this.getResourceColumn().isUnset()) { - removeResourceColumn(); - } - } - else if (newSpecifiedDiscriminatorType != null) { - addResourceColumn(); - this.getResourceColumn().setDiscriminatorType(DiscriminatorType.toOrmResourceModel(newSpecifiedDiscriminatorType)); - } - } - firePropertyChanged(DiscriminatorColumn.SPECIFIED_DISCRIMINATOR_TYPE_PROPERTY, oldDiscriminatorType, newSpecifiedDiscriminatorType); - } - - protected void setSpecifiedDiscriminatorType_(DiscriminatorType newSpecifiedDiscriminatorType) { - DiscriminatorType oldDiscriminatorType = this.specifiedDiscriminatorType; - this.specifiedDiscriminatorType = newSpecifiedDiscriminatorType; - firePropertyChanged(DiscriminatorColumn.SPECIFIED_DISCRIMINATOR_TYPE_PROPERTY, oldDiscriminatorType, newSpecifiedDiscriminatorType); - } - - public int getLength() { - return (this.getSpecifiedLength() == null) ? this.getDefaultLength() : this.getSpecifiedLength().intValue(); - } - - public int getDefaultLength() { - return this.defaultLength; - } - - protected void setDefaultLength(int defaultLength) { - int old = this.defaultLength; - this.defaultLength = defaultLength; - firePropertyChanged(DEFAULT_LENGTH_PROPERTY, old, defaultLength); - } - - public Integer getSpecifiedLength() { - return this.specifiedLength; - } - - public void setSpecifiedLength(Integer newSpecifiedLength) { - Integer oldSpecifiedLength = this.specifiedLength; - this.specifiedLength = newSpecifiedLength; - if (oldSpecifiedLength != newSpecifiedLength) { - if (this.getResourceColumn() != null) { - this.getResourceColumn().setLength(newSpecifiedLength); - if (this.getResourceColumn().isUnset()) { - removeResourceColumn(); - } - } - else if (newSpecifiedLength != null) { - addResourceColumn(); - getResourceColumn().setLength(newSpecifiedLength); - } - } - firePropertyChanged(SPECIFIED_LENGTH_PROPERTY, oldSpecifiedLength, newSpecifiedLength); - } - - protected void setSpecifiedLength_(Integer newSpecifiedLength) { - Integer oldSpecifiedLength = this.specifiedLength; - this.specifiedLength = newSpecifiedLength; - firePropertyChanged(SPECIFIED_LENGTH_PROPERTY, oldSpecifiedLength, newSpecifiedLength); - } - - @Override - protected String getOwningTableName() { - return this.getOwner().getTypeMapping().getPrimaryTableName(); - } - - - - @Override - public XmlDiscriminatorColumn getResourceColumn() { - return this.entity.getDiscriminatorColumn(); - } - - @Override - protected void addResourceColumn() { - this.entity.setDiscriminatorColumn(OrmFactory.eINSTANCE.createXmlDiscriminatorColumn()); - } - - @Override - protected void removeResourceColumn() { - this.entity.setDiscriminatorColumn(null); - } - - public boolean isResourceSpecified() { - return getResourceColumn() != null; - } - - public void initialize(XmlEntity entity) { - this.entity = entity; - this.initialize(this.getResourceColumn()); - } - - public void update(XmlEntity entity) { - this.entity = entity; - this.update(this.getResourceColumn()); - } - - - @Override - protected void initialize(XmlDiscriminatorColumn column) { - super.initialize(column); - this.defaultDiscriminatorType = this.buildDefaultDiscriminatorType(); - this.defaultLength = this.buildDefaultLength(); - this.specifiedLength = this.getResourceLength(column); - this.specifiedDiscriminatorType = this.getResourceDiscriminatorType(column); - } - - @Override - protected void update(XmlDiscriminatorColumn column) { - this.setSpecifiedName_(this.getResourceColumnName(column)); - this.setColumnDefinition_(this.getResourceColumnDefinition(column)); - this.setSpecifiedLength_(this.getResourceLength(column)); - this.setSpecifiedDiscriminatorType_(this.getResourceDiscriminatorType(column)); - } - - @Override - public void postUpdate() { - super.postUpdate(); - this.setDefaultName(this.getOwnerDefaultColumnName()); - this.setDefaultDiscriminatorType(this.buildDefaultDiscriminatorType()); - this.setDefaultLength(this.buildDefaultLength()); - } - - protected Integer getResourceLength(XmlDiscriminatorColumn column) { - return column == null ? null : column.getLength(); - } - - protected DiscriminatorType getResourceDiscriminatorType(XmlDiscriminatorColumn column) { - return column == null ? null : DiscriminatorType.fromOrmResourceModel(column.getDiscriminatorType()); - } - - protected int buildDefaultLength() { - return this.getOwner().getDefaultLength(); - } - - protected DiscriminatorType buildDefaultDiscriminatorType() { - return this.getOwner().getDefaultDiscriminatorType(); - } - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - if (this.connectionProfileIsActive()) { - if ( ! this.isResolved()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.DISCRIMINATOR_COLUMN_UNRESOLVED_NAME, - new String[] {this.getName()}, - this, - this.getNameTextRange() - ) - ); - } - } - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmEmbeddable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmEmbeddable.java deleted file mode 100644 index a5a854f034..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmEmbeddable.java +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.orm.OrmEmbeddable; -import org.eclipse.jpt.core.context.orm.OrmPersistentType; -import org.eclipse.jpt.core.resource.orm.XmlEmbeddable; - - -public class GenericOrmEmbeddable extends AbstractOrmEmbeddable implements OrmEmbeddable -{ - public GenericOrmEmbeddable(OrmPersistentType parent, XmlEmbeddable resourceMapping) { - super(parent, resourceMapping); - } - - @Override - public boolean attributeMappingKeyAllowed(String attributeMappingKey) { - //generic only allows basic and transient within an Embeddable - return attributeMappingKey == MappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY || attributeMappingKey == MappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY; - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmEmbeddedIdMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmEmbeddedIdMapping.java deleted file mode 100644 index 573efb8cfe..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmEmbeddedIdMapping.java +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmEmbeddedIdMapping; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.resource.orm.Attributes; -import org.eclipse.jpt.core.resource.orm.XmlEmbeddedId; - - -public class GenericOrmEmbeddedIdMapping<T extends XmlEmbeddedId> - extends AbstractOrmBaseEmbeddedMapping<T> - implements OrmEmbeddedIdMapping -{ - - public GenericOrmEmbeddedIdMapping(OrmPersistentAttribute parent, T resourceMapping) { - super(parent, resourceMapping); - } - - public void initializeOn(OrmAttributeMapping newMapping) { - newMapping.initializeFromOrmEmbeddedIdMapping(this); - } - - public int getXmlSequence() { - return 10; - } - - //*************** AttributeMapping implementation ********************* - - public String getKey() { - return MappingKeys.EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY; - } - - @Override - public boolean isIdMapping() { - return true; - } - - public void addToResourceModel(Attributes resourceAttributes) { - resourceAttributes.getEmbeddedIds().add(this.resourceAttributeMapping); - } - - public void removeFromResourceModel(Attributes resourceAttributes) { - resourceAttributes.getEmbeddedIds().remove(this.resourceAttributeMapping); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmEmbeddedMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmEmbeddedMapping.java deleted file mode 100644 index 15f717da85..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmEmbeddedMapping.java +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmEmbeddedMapping; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.resource.orm.Attributes; -import org.eclipse.jpt.core.resource.orm.XmlEmbedded; - - -public class GenericOrmEmbeddedMapping<T extends XmlEmbedded> - extends AbstractOrmBaseEmbeddedMapping<T> - implements OrmEmbeddedMapping -{ - - public GenericOrmEmbeddedMapping(OrmPersistentAttribute parent, T resourceMapping) { - super(parent, resourceMapping); - } - - public void initializeOn(OrmAttributeMapping newMapping) { - newMapping.initializeFromOrmEmbeddedMapping(this); - } - - public int getXmlSequence() { - return 80; - } - - public String getKey() { - return MappingKeys.EMBEDDED_ATTRIBUTE_MAPPING_KEY; - } - - public void addToResourceModel(Attributes resourceAttributes) { - resourceAttributes.getEmbeddeds().add(this.resourceAttributeMapping); - } - - public void removeFromResourceModel(Attributes resourceAttributes) { - resourceAttributes.getEmbeddeds().remove(this.resourceAttributeMapping); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmEntity.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmEntity.java deleted file mode 100644 index 1fe1ff5a07..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmEntity.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.jpt.core.context.orm.OrmPersistentType; -import org.eclipse.jpt.core.resource.orm.XmlEntity; - -public class GenericOrmEntity - extends AbstractOrmEntity -{ - - public GenericOrmEntity(OrmPersistentType parent, XmlEntity resourceMapping) { - super(parent, resourceMapping); - } - -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmEnumeratedConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmEnumeratedConverter.java deleted file mode 100644 index 4c0c73eca1..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmEnumeratedConverter.java +++ /dev/null @@ -1,95 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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 org.eclipse.jpt.core.context.Converter; -import org.eclipse.jpt.core.context.EnumType; -import org.eclipse.jpt.core.context.EnumeratedConverter; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmConverter; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.resource.orm.XmlBasic; -import org.eclipse.jpt.core.resource.orm.XmlConvertibleMapping; -import org.eclipse.jpt.core.utility.TextRange; - -public class GenericOrmEnumeratedConverter extends AbstractXmlContextNode - implements EnumeratedConverter, OrmConverter -{ - private EnumType specifiedEnumType; - - private XmlConvertibleMapping resourceConvertibleMapping; - - public GenericOrmEnumeratedConverter(OrmAttributeMapping parent, XmlBasic resourceBasic) { - super(parent); - this.initialize(resourceBasic); - } - - @Override - public OrmAttributeMapping getParent() { - return (OrmAttributeMapping) super.getParent(); - } - - public String getType() { - return Converter.ENUMERATED_CONVERTER; - } - - public EnumType getEnumType() { - return getSpecifiedEnumType() == null ? getDefaultEnumType() : getSpecifiedEnumType(); - } - - public EnumType getDefaultEnumType() { - //there is no default enumType in xml, if you specify the enumerated element, you must - //specify either ORDINAL or STRING - return null; - } - - public EnumType getSpecifiedEnumType() { - return this.specifiedEnumType; - } - - public void setSpecifiedEnumType(EnumType newSpecifiedEnumType) { - EnumType oldSpecifiedEnumType = this.specifiedEnumType; - this.specifiedEnumType = newSpecifiedEnumType; - this.resourceConvertibleMapping.setEnumerated(EnumType.toOrmResourceModel(newSpecifiedEnumType)); - firePropertyChanged(EnumeratedConverter.SPECIFIED_ENUM_TYPE_PROPERTY, oldSpecifiedEnumType, newSpecifiedEnumType); - } - - protected void setSpecifiedEnumType_(EnumType newSpecifiedEnumType) { - EnumType oldSpecifiedEnumType = this.specifiedEnumType; - this.specifiedEnumType = newSpecifiedEnumType; - firePropertyChanged(EnumeratedConverter.SPECIFIED_ENUM_TYPE_PROPERTY, oldSpecifiedEnumType, newSpecifiedEnumType); - } - - protected void initialize(XmlConvertibleMapping resourceConvertibleMapping) { - this.resourceConvertibleMapping = resourceConvertibleMapping; - this.specifiedEnumType = this.specifiedEnumType(); - } - - public void update() { - this.setSpecifiedEnumType_(this.specifiedEnumType()); - } - - protected EnumType specifiedEnumType() { - return EnumType.fromOrmResourceModel(this.resourceConvertibleMapping.getEnumerated()); - } - - public TextRange getValidationTextRange() { - return this.resourceConvertibleMapping.getEnumeratedTextRange(); - } - - public void addToResourceModel() { - this.resourceConvertibleMapping.setEnumerated(org.eclipse.jpt.core.resource.orm.EnumType.ORDINAL); - } - - public void removeFromResourceModel() { - this.resourceConvertibleMapping.setEnumerated(null); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmGeneratedValue.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmGeneratedValue.java deleted file mode 100644 index a5486f3819..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmGeneratedValue.java +++ /dev/null @@ -1,180 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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.jpt.core.context.GeneratedValue; -import org.eclipse.jpt.core.context.GenerationType; -import org.eclipse.jpt.core.context.Generator; -import org.eclipse.jpt.core.context.XmlContextNode; -import org.eclipse.jpt.core.context.orm.OrmGeneratedValue; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.orm.XmlGeneratedValue; -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 GenericOrmGeneratedValue - extends AbstractXmlContextNode - implements OrmGeneratedValue -{ - protected XmlGeneratedValue resourceGeneratedValue; - - protected GenerationType specifiedStrategy; - - protected String specifiedGenerator; - protected String defaultGenerator; - - - public GenericOrmGeneratedValue(XmlContextNode parent, XmlGeneratedValue resourceGeneratedValue) { - super(parent); - this.initialize(resourceGeneratedValue); - } - - protected void initialize(XmlGeneratedValue xmlGeneratedValue) { - this.resourceGeneratedValue = xmlGeneratedValue; - this.specifiedStrategy = this.buildStrategy(); - this.specifiedGenerator = xmlGeneratedValue.getGenerator(); - //TODO - this.defaultGenerator = null; - } - - @Override - public XmlContextNode getParent() { - return (XmlContextNode) super.getParent(); - } - - - // ********** strategy ********** - - public GenerationType getStrategy() { - return (this.specifiedStrategy != null) ? this.specifiedStrategy : this.getDefaultStrategy(); - } - - public GenerationType getDefaultStrategy() { - return GeneratedValue.DEFAULT_STRATEGY; - } - - public GenerationType getSpecifiedStrategy() { - return this.specifiedStrategy; - } - - public void setSpecifiedStrategy(GenerationType strategy) { - GenerationType old = this.specifiedStrategy; - this.specifiedStrategy = strategy; - this.resourceGeneratedValue.setStrategy(GenerationType.toOrmResourceModel(strategy)); - this.firePropertyChanged(SPECIFIED_STRATEGY_PROPERTY, old, strategy); - } - - protected void setSpecifiedStrategy_(GenerationType strategy) { - GenerationType old = this.specifiedStrategy; - this.specifiedStrategy = strategy; - this.firePropertyChanged(SPECIFIED_STRATEGY_PROPERTY, old, strategy); - } - - - // ********** generator ********** - - public String getGenerator() { - return (this.specifiedGenerator != null) ? this.specifiedGenerator : this.defaultGenerator; - } - - public String getDefaultGenerator() { - return this.defaultGenerator; - } - - protected void setDefaultGenerator(String generator) { - String old = this.defaultGenerator; - this.defaultGenerator = generator; - this.firePropertyChanged(DEFAULT_GENERATOR_PROPERTY, old, generator); - } - - public String getSpecifiedGenerator() { - return this.specifiedGenerator; - } - - public void setSpecifiedGenerator(String generator) { - String old = this.specifiedGenerator; - this.specifiedGenerator = generator; - this.resourceGeneratedValue.setGenerator(generator); - this.firePropertyChanged(SPECIFIED_GENERATOR_PROPERTY, old, generator); - } - - protected void setSpecifiedGenerator_(String generator) { - String old = this.specifiedGenerator; - this.specifiedGenerator = generator; - this.firePropertyChanged(SPECIFIED_GENERATOR_PROPERTY, old, generator); - } - - - // ********** text ranges ********** - - public TextRange getValidationTextRange() { - TextRange validationTextRange = this.resourceGeneratedValue.getValidationTextRange(); - return validationTextRange != null ? validationTextRange : getParent().getValidationTextRange(); - } - - public TextRange getGeneratorTextRange() { - TextRange textRange = this.resourceGeneratedValue.getGeneratorTextRange(); - return textRange != null ? textRange : getValidationTextRange(); - } - - - // ********** validation ********** - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - - String generator = this.getGenerator(); - if (generator == null) { - return; - } - - for (Iterator<Generator> stream = this.getPersistenceUnit().generators(); stream.hasNext(); ) { - if (generator.equals(stream.next().getName())) { - return; - } - } - - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.ID_MAPPING_UNRESOLVED_GENERATOR_NAME, - new String[] {generator}, - this.getParent(), - this.getGeneratorTextRange() - ) - ); - } - - - // ********** update from resource model ********** - - public void update(XmlGeneratedValue xmlGeneratedValue) { - this.resourceGeneratedValue = xmlGeneratedValue; - this.setSpecifiedStrategy_(this.buildStrategy()); - this.setSpecifiedGenerator_(xmlGeneratedValue.getGenerator()); - //TODO - this.setDefaultGenerator(null); - } - - protected GenerationType buildStrategy() { - return GenerationType.fromOrmResourceModel(this.resourceGeneratedValue.getStrategy()); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmIdMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmIdMapping.java deleted file mode 100644 index 2276b2d68c..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmIdMapping.java +++ /dev/null @@ -1,488 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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.ArrayList; -import java.util.Iterator; -import java.util.List; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.Converter; -import org.eclipse.jpt.core.context.Generator; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -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.OrmGeneratedValue; -import org.eclipse.jpt.core.context.orm.OrmGenerator; -import org.eclipse.jpt.core.context.orm.OrmIdMapping; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmSequenceGenerator; -import org.eclipse.jpt.core.context.orm.OrmTableGenerator; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.orm.Attributes; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlColumn; -import org.eclipse.jpt.core.resource.orm.XmlGeneratedValue; -import org.eclipse.jpt.core.resource.orm.XmlId; -import org.eclipse.jpt.core.resource.orm.XmlSequenceGenerator; -import org.eclipse.jpt.core.resource.orm.XmlTableGenerator; -import org.eclipse.jpt.db.Table; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -public class GenericOrmIdMapping<T extends XmlId> - extends AbstractOrmAttributeMapping<T> - implements OrmIdMapping -{ - protected final OrmColumn column; - - protected OrmGeneratedValue generatedValue; - - protected OrmConverter defaultConverter; - protected OrmConverter specifiedConverter; - - protected OrmTableGenerator tableGenerator; - protected OrmSequenceGenerator sequenceGenerator; - - - public GenericOrmIdMapping(OrmPersistentAttribute parent, T resourceMapping) { - super(parent, resourceMapping); - this.column = getJpaFactory().buildOrmColumn(this, this); - this.column.initialize(this.resourceAttributeMapping.getColumn());//TODO pass in to constructor - this.initializeSequenceGenerator(); - this.initializeTableGenerator(); - this.initializeGeneratedValue(); - this.defaultConverter = new GenericOrmNullConverter(this); - this.specifiedConverter = this.buildSpecifiedConverter(this.getResourceConverterType()); - } - - - public String getKey() { - return MappingKeys.ID_ATTRIBUTE_MAPPING_KEY; - } - - public int getXmlSequence() { - return 0; - } - - public void initializeOn(OrmAttributeMapping newMapping) { - newMapping.initializeFromOrmIdMapping(this); - } - - @Override - public void initializeFromOrmColumnMapping(OrmColumnMapping oldMapping) { - super.initializeFromOrmColumnMapping(oldMapping); - getColumn().initializeFrom(oldMapping.getColumn()); - } - - - public OrmColumn getColumn() { - return this.column; - } - - public OrmConverter getConverter() { - return getSpecifiedConverter() == null ? getDefaultConverter() : getSpecifiedConverter(); - } - - public OrmConverter getDefaultConverter() { - return this.defaultConverter; - } - - public OrmConverter getSpecifiedConverter() { - return this.specifiedConverter; - } - - protected String getSpecifedConverterType() { - if (this.specifiedConverter == null) { - return Converter.NO_CONVERTER; - } - return this.specifiedConverter.getType(); - } - - public void setSpecifiedConverter(String converterType) { - if (getSpecifedConverterType() == converterType) { - return; - } - OrmConverter oldConverter = this.specifiedConverter; - OrmConverter newConverter = buildSpecifiedConverter(converterType); - this.specifiedConverter = null; - if (oldConverter != null) { - oldConverter.removeFromResourceModel(); - } - this.specifiedConverter = newConverter; - if (newConverter != null) { - newConverter.addToResourceModel(); - } - firePropertyChanged(SPECIFIED_CONVERTER_PROPERTY, oldConverter, newConverter); - } - - protected void setSpecifiedConverter(OrmConverter newConverter) { - OrmConverter oldConverter = this.specifiedConverter; - this.specifiedConverter = newConverter; - firePropertyChanged(SPECIFIED_CONVERTER_PROPERTY, oldConverter, newConverter); - } - - public OrmGeneratedValue addGeneratedValue() { - if (getGeneratedValue() != null) { - throw new IllegalStateException("gemeratedValue already exists"); //$NON-NLS-1$ - } - XmlGeneratedValue resourceGeneratedValue = OrmFactory.eINSTANCE.createXmlGeneratedValueImpl(); - this.generatedValue = buildGeneratedValue(resourceGeneratedValue); - this.resourceAttributeMapping.setGeneratedValue(resourceGeneratedValue); - firePropertyChanged(GENERATED_VALUE_PROPERTY, null, this.generatedValue); - return this.generatedValue; - } - - public void removeGeneratedValue() { - if (getGeneratedValue() == null) { - throw new IllegalStateException("gemeratedValue does not exist, cannot be removed"); //$NON-NLS-1$ - } - OrmGeneratedValue oldGeneratedValue = this.generatedValue; - this.generatedValue = null; - this.resourceAttributeMapping.setGeneratedValue(null); - firePropertyChanged(GENERATED_VALUE_PROPERTY, oldGeneratedValue, null); - } - - public OrmGeneratedValue getGeneratedValue() { - return this.generatedValue; - } - - protected void setGeneratedValue(OrmGeneratedValue newGeneratedValue) { - OrmGeneratedValue oldGeneratedValue = this.generatedValue; - this.generatedValue = newGeneratedValue; - firePropertyChanged(GENERATED_VALUE_PROPERTY, oldGeneratedValue, newGeneratedValue); - } - - public OrmSequenceGenerator addSequenceGenerator() { - if (getSequenceGenerator() != null) { - throw new IllegalStateException("sequenceGenerator already exists"); //$NON-NLS-1$ - } - XmlSequenceGenerator resourceSequenceGenerator = OrmFactory.eINSTANCE.createXmlSequenceGeneratorImpl(); - this.sequenceGenerator = buildSequenceGenerator(resourceSequenceGenerator); - this.resourceAttributeMapping.setSequenceGenerator(resourceSequenceGenerator); - firePropertyChanged(SEQUENCE_GENERATOR_PROPERTY, null, this.sequenceGenerator); - return this.sequenceGenerator; - } - - public void removeSequenceGenerator() { - if (getSequenceGenerator() == null) { - throw new IllegalStateException("sequenceGenerator does not exist, cannot be removed"); //$NON-NLS-1$ - } - OrmSequenceGenerator oldSequenceGenerator = this.sequenceGenerator; - this.sequenceGenerator = null; - this.resourceAttributeMapping.setSequenceGenerator(null); - firePropertyChanged(SEQUENCE_GENERATOR_PROPERTY, oldSequenceGenerator, null); - } - - public OrmSequenceGenerator getSequenceGenerator() { - return this.sequenceGenerator; - } - - protected void setSequenceGenerator(OrmSequenceGenerator newSequenceGenerator) { - OrmSequenceGenerator oldSequenceGenerator = this.sequenceGenerator; - this.sequenceGenerator = newSequenceGenerator; - firePropertyChanged(SEQUENCE_GENERATOR_PROPERTY, oldSequenceGenerator, newSequenceGenerator); - } - - public OrmTableGenerator addTableGenerator() { - if (getTableGenerator() != null) { - throw new IllegalStateException("tableGenerator already exists"); //$NON-NLS-1$ - } - XmlTableGenerator resourceTableGenerator = OrmFactory.eINSTANCE.createXmlTableGeneratorImpl(); - this.tableGenerator = buildTableGenerator(resourceTableGenerator); - this.resourceAttributeMapping.setTableGenerator(resourceTableGenerator); - firePropertyChanged(TABLE_GENERATOR_PROPERTY, null, this.tableGenerator); - return this.tableGenerator; - } - - public void removeTableGenerator() { - if (getTableGenerator() == null) { - throw new IllegalStateException("tableGenerator does not exist, cannot be removed"); //$NON-NLS-1$ - } - OrmTableGenerator oldTableGenerator = this.tableGenerator; - this.tableGenerator = null; - this.resourceAttributeMapping.setTableGenerator(null); - firePropertyChanged(TABLE_GENERATOR_PROPERTY, oldTableGenerator, null); - } - - public OrmTableGenerator getTableGenerator() { - return this.tableGenerator; - } - - protected void setTableGenerator(OrmTableGenerator newTableGenerator) { - OrmTableGenerator oldTableGenerator = this.tableGenerator; - this.tableGenerator = newTableGenerator; - firePropertyChanged(TABLE_GENERATOR_PROPERTY, oldTableGenerator, newTableGenerator); - } - - protected Iterator<OrmGenerator> generators() { - ArrayList<OrmGenerator> generators = new ArrayList<OrmGenerator>(); - this.addGeneratorsTo(generators); - return generators.iterator(); - } - - protected void addGeneratorsTo(ArrayList<OrmGenerator> generators) { - if (this.sequenceGenerator != null) { - generators.add(this.sequenceGenerator); - } - if (this.tableGenerator != null) { - generators.add(this.tableGenerator); - } - } - - @Override - public String getPrimaryKeyColumnName() { - return this.getColumn().getName(); - } - - @Override - public boolean isOverridableAttributeMapping() { - return true; - } - - @Override - public boolean isIdMapping() { - return true; - } - - public void addToResourceModel(Attributes resourceAttributes) { - resourceAttributes.getIds().add(this.resourceAttributeMapping); - } - - public void removeFromResourceModel(Attributes resourceAttributes) { - resourceAttributes.getIds().remove(this.resourceAttributeMapping); - } - - public Table getDbTable(String tableName) { - return getTypeMapping().getDbTable(tableName); - } - - public String getDefaultColumnName() { - return getName(); - } - - public String getDefaultTableName() { - return getTypeMapping().getPrimaryTableName(); - } - - protected void initializeSequenceGenerator() { - if (this.resourceAttributeMapping.getSequenceGenerator() != null) { - this.sequenceGenerator = buildSequenceGenerator(this.resourceAttributeMapping.getSequenceGenerator()); - } - } - - protected OrmSequenceGenerator buildSequenceGenerator(XmlSequenceGenerator resourceSequenceGenerator) { - return getJpaFactory().buildOrmSequenceGenerator(this, resourceSequenceGenerator); - } - - protected void initializeTableGenerator() { - if (this.resourceAttributeMapping.getTableGenerator() != null) { - this.tableGenerator = buildTableGenerator(this.resourceAttributeMapping.getTableGenerator()); - } - } - - protected OrmTableGenerator buildTableGenerator(XmlTableGenerator resourceTableGenerator) { - return getJpaFactory().buildOrmTableGenerator(this, resourceTableGenerator); - } - - protected void initializeGeneratedValue() { - if (this.resourceAttributeMapping.getGeneratedValue() != null) { - this.generatedValue = buildGeneratedValue(this.resourceAttributeMapping.getGeneratedValue()); - } - } - - protected OrmGeneratedValue buildGeneratedValue(XmlGeneratedValue resourceGeneratedValue) { - return getJpaFactory().buildOrmGeneratedValue(this, resourceGeneratedValue); - } - - @Override - public void update() { - super.update(); - this.column.update(getResourceColumn()); - this.updateSequenceGenerator(); - this.updateTableGenerator(); - this.updateGeneratedValue(); - if (getResourceConverterType() == getSpecifedConverterType()) { - getSpecifiedConverter().update(); - } - else { - setSpecifiedConverter(buildSpecifiedConverter(getResourceConverterType())); - } - } - - protected void updateSequenceGenerator() { - if (this.resourceAttributeMapping.getSequenceGenerator() == null) { - if (getSequenceGenerator() != null) { - setSequenceGenerator(null); - } - } - else { - if (getSequenceGenerator() == null) { - setSequenceGenerator(buildSequenceGenerator(this.resourceAttributeMapping.getSequenceGenerator())); - } - else { - getSequenceGenerator().update(this.resourceAttributeMapping.getSequenceGenerator()); - } - } - } - - protected void updateTableGenerator() { - if (this.resourceAttributeMapping.getTableGenerator() == null) { - if (getTableGenerator() != null) { - setTableGenerator(null); - } - } - else { - if (getTableGenerator() == null) { - setTableGenerator(buildTableGenerator(this.resourceAttributeMapping.getTableGenerator())); - } - else { - getTableGenerator().update(this.resourceAttributeMapping.getTableGenerator()); - } - } - } - - protected void updateGeneratedValue() { - if (this.resourceAttributeMapping.getGeneratedValue() == null) { - if (getGeneratedValue() != null) { - setGeneratedValue(null); - } - } - else { - if (getGeneratedValue() == null) { - setGeneratedValue(buildGeneratedValue(this.resourceAttributeMapping.getGeneratedValue())); - } - else { - getGeneratedValue().update(this.resourceAttributeMapping.getGeneratedValue()); - } - } - } - - protected OrmConverter buildSpecifiedConverter(String converterType) { - if (converterType == Converter.TEMPORAL_CONVERTER) { - return new GenericOrmTemporalConverter(this, this.resourceAttributeMapping); - } - return null; - } - - protected String getResourceConverterType() { - if (this.resourceAttributeMapping.getTemporal() != null) { - return Converter.TEMPORAL_CONVERTER; - } - - return null; - } - - //***************** XmlColumn.Owner implementation **************** - - public XmlColumn getResourceColumn() { - return this.resourceAttributeMapping.getColumn(); - } - - public void addResourceColumn() { - this.resourceAttributeMapping.setColumn(OrmFactory.eINSTANCE.createXmlColumnImpl()); - } - - public void removeResourceColumn() { - this.resourceAttributeMapping.setColumn(null); - } - - // ****************** validation **************** - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - - if (this.shouldValidateAgainstDatabase()) { - this.validateColumn(messages); - } - if (this.generatedValue != null) { - this.generatedValue.validate(messages, reporter); - } - this.validateGenerators(messages); - } - - protected void validateColumn(List<IMessage> messages) { - OrmPersistentAttribute pa = this.getPersistentAttribute(); - String tableName = this.column.getTable(); - if (this.getTypeMapping().tableNameIsInvalid(tableName)) { - if (pa.isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_TABLE, - new String[] {pa.getName(), tableName, this.column.getName()}, - this.column, - this.column.getTableTextRange() - ) - ); - } else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.COLUMN_UNRESOLVED_TABLE, - new String[] {tableName, this.column.getName()}, - this.column, - this.column.getTableTextRange() - ) - ); - } - return; - } - - if ( ! this.column.isResolved() && this.column.getDbTable() != null) { - if (pa.isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_NAME, - new String[] {pa.getName(), this.column.getName()}, - this.column, - this.column.getNameTextRange() - ) - ); - } else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.COLUMN_UNRESOLVED_NAME, - new String[] {this.column.getName()}, - this.column, - this.column.getNameTextRange() - ) - ); - } - } - } - - protected void validateGenerators(List<IMessage> messages) { - for (Iterator<OrmGenerator> localGenerators = this.generators(); localGenerators.hasNext(); ) { - OrmGenerator localGenerator = localGenerators.next(); - if (localGenerator.isVirtual()) { - continue; - } - for (Iterator<Generator> globalGenerators = this.getPersistenceUnit().generators(); globalGenerators.hasNext(); ) { - if (localGenerator.duplicates(globalGenerators.next())) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.GENERATOR_DUPLICATE_NAME, - new String[] {localGenerator.getName()}, - localGenerator, - localGenerator.getNameTextRange() - ) - ); - } - } - } - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmJoinColumn.java deleted file mode 100644 index 2ccd4d9e41..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmJoinColumn.java +++ /dev/null @@ -1,246 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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.List; - -import org.eclipse.jpt.core.context.JoinColumn; -import org.eclipse.jpt.core.context.RelationshipMapping; -import org.eclipse.jpt.core.context.XmlContextNode; -import org.eclipse.jpt.core.context.orm.OrmJoinColumn; -import org.eclipse.jpt.core.context.orm.OrmRelationshipMapping; -import org.eclipse.jpt.core.internal.context.MappingTools; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.orm.XmlJoinColumn; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Column; -import org.eclipse.jpt.db.Table; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -public class GenericOrmJoinColumn extends AbstractOrmBaseColumn<XmlJoinColumn> implements OrmJoinColumn -{ - - protected String specifiedReferencedColumnName; - - protected String defaultReferencedColumnName; - - protected XmlJoinColumn resourceJoinColumn; - - public GenericOrmJoinColumn(XmlContextNode parent, OrmJoinColumn.Owner owner, XmlJoinColumn resourceJoinColumn) { - super(parent, owner); - this.initialize(resourceJoinColumn); - } - - public void initializeFrom(JoinColumn oldColumn) { - super.initializeFrom(oldColumn); - setSpecifiedReferencedColumnName(oldColumn.getSpecifiedReferencedColumnName()); - } - - public String getReferencedColumnName() { - return (this.getSpecifiedReferencedColumnName() == null) ? getDefaultReferencedColumnName() : this.getSpecifiedReferencedColumnName(); - } - - public String getSpecifiedReferencedColumnName() { - return this.specifiedReferencedColumnName; - } - - public void setSpecifiedReferencedColumnName(String newSpecifiedReferencedColumnName) { - String oldSpecifiedReferencedColumnName = this.specifiedReferencedColumnName; - this.specifiedReferencedColumnName = newSpecifiedReferencedColumnName; - getResourceColumn().setReferencedColumnName(newSpecifiedReferencedColumnName); - firePropertyChanged(SPECIFIED_REFERENCED_COLUMN_NAME_PROPERTY, oldSpecifiedReferencedColumnName, newSpecifiedReferencedColumnName); - } - - protected void setSpecifiedReferencedColumnName_(String newSpecifiedReferencedColumnName) { - String oldSpecifiedReferencedColumnName = this.specifiedReferencedColumnName; - this.specifiedReferencedColumnName = newSpecifiedReferencedColumnName; - firePropertyChanged(SPECIFIED_REFERENCED_COLUMN_NAME_PROPERTY, oldSpecifiedReferencedColumnName, newSpecifiedReferencedColumnName); - } - - public String getDefaultReferencedColumnName() { - return this.defaultReferencedColumnName; - } - - protected void setDefaultReferencedColumnName(String newDefaultReferencedColumnName) { - String oldDefaultReferencedColumnName = this.defaultReferencedColumnName; - this.defaultReferencedColumnName = newDefaultReferencedColumnName; - firePropertyChanged(DEFAULT_REFERENCED_COLUMN_NAME_PROPERTY, oldDefaultReferencedColumnName, newDefaultReferencedColumnName); - } - - public boolean isVirtual() { - return getOwner().isVirtual(this); - } - - @Override - public OrmJoinColumn.Owner getOwner() { - return (OrmJoinColumn.Owner) this.owner; - } - - public Table getReferencedColumnDbTable() { - return getOwner().getReferencedColumnDbTable(); - } - - public Column getReferencedDbColumn() { - Table table = getReferencedColumnDbTable(); - return (table == null) ? null : table.getColumnForIdentifier(getReferencedColumnName()); - } - - public boolean isReferencedColumnResolved() { - return getReferencedDbColumn() != null; - } - - public TextRange getReferencedColumnNameTextRange() { - if (getResourceColumn() != null) { - TextRange textRange = getResourceColumn().getReferencedColumnNameTextRange(); - if (textRange != null) { - return textRange; - } - } - return getOwner().getValidationTextRange(); - } - - - @Override - protected XmlJoinColumn getResourceColumn() { - return this.resourceJoinColumn; - } - - @Override - protected void addResourceColumn() { - //joinColumns are part of a collection, the join-column element will be removed/added - //when the XmlJoinColumn is removed/added to the XmlEntity collection - } - - @Override - protected void removeResourceColumn() { - //joinColumns are part of a collection, the pk-join-column element will be removed/added - //when the XmlJoinColumn is removed/added to the XmlEntity collection - } - - - @Override - protected void initialize(XmlJoinColumn xjc) { - this.resourceJoinColumn = xjc; - super.initialize(xjc); - this.specifiedReferencedColumnName = buildSpecifiedReferencedColumnName(xjc); - this.defaultReferencedColumnName = buildDefaultReferencedColumnName(); - } - - @Override - public void update(XmlJoinColumn xjc) { - this.resourceJoinColumn = xjc; - super.update(xjc); - this.setSpecifiedReferencedColumnName_(buildSpecifiedReferencedColumnName(xjc)); - this.setDefaultReferencedColumnName(buildDefaultReferencedColumnName()); - } - - protected String buildSpecifiedReferencedColumnName(XmlJoinColumn xjc) { - return (xjc == null) ? null : xjc.getReferencedColumnName(); - } - - @Override - protected String getOwnerDefaultColumnName() { - return MappingTools.buildJoinColumnDefaultName(this); - } - - protected String buildDefaultReferencedColumnName() { - return MappingTools.buildJoinColumnDefaultReferencedColumnName(this.getOwner()); - } - - @Override - protected String getOwnerDefaultTableName() { - RelationshipMapping relationshipMapping = getOwner().getRelationshipMapping(); - if (relationshipMapping == null) { - return null; - } - return super.getOwnerDefaultTableName(); - } - - - //******************* validation *********************** - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - validateName(messages); - validateReferencedColumnName(messages); - } - - protected void validateName(List<IMessage> messages) { - if ( ! this.isResolved() && getDbTable() != null) { - if (getName() != null) { - messages.add(this.buildUnresolvedMessage()); - } - else if (getOwner().joinColumnsSize() > 1) { - - } - } - } - - protected void validateReferencedColumnName(List<IMessage> messages) { - if ( ! this.isReferencedColumnResolved() && getReferencedColumnDbTable() != null) { - if (getReferencedColumnName() != null) { - messages.add(this.buildUnresolvedMessage()); - } - else if (getOwner().joinColumnsSize() > 1) { - - } - } - } - - protected IMessage buildUnresolvedMessage() { - OrmRelationshipMapping mapping = (OrmRelationshipMapping) this.getOwner().getRelationshipMapping(); - return mapping.getPersistentAttribute().isVirtual() ? this.buildVirtualUnresolvedNameMessage(mapping) : this.buildNonVirtualUnresolvedNameMessage(); - } - - protected IMessage buildVirtualUnresolvedNameMessage(OrmRelationshipMapping mapping) { - return this.buildMessage( - JpaValidationMessages.VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_NAME, - new String[] {mapping.getName(), this.getName()}, - this.getNameTextRange() - ); - } - - protected IMessage buildNonVirtualUnresolvedNameMessage() { - return this.buildMessage( - JpaValidationMessages.COLUMN_UNRESOLVED_NAME, - new String[] {this.getName()}, - this.getNameTextRange() - ); - } - - protected IMessage buildUnresolvedReferenceColumnNameMessage() { - OrmRelationshipMapping mapping = (OrmRelationshipMapping) this.getOwner().getRelationshipMapping(); - return mapping.getPersistentAttribute().isVirtual() ? this.buildVirtualUnresolvedReferenceColumnNameMessage(mapping) : this.buildNonVirtualUnresolvedReferenceColumnNameMessage(); - } - - protected IMessage buildVirtualUnresolvedReferenceColumnNameMessage(OrmRelationshipMapping mapping) { - return this.buildMessage( - JpaValidationMessages.VIRTUAL_ATTRIBUTE_JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME, - new String[] {mapping.getName(), this.getName()}, - this.getReferencedColumnNameTextRange() - ); - } - - protected IMessage buildNonVirtualUnresolvedReferenceColumnNameMessage() { - return this.buildMessage( - JpaValidationMessages.JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME, - new String[] {this.getName()}, - this.getReferencedColumnNameTextRange() - ); - } - - protected IMessage buildMessage(String msgID, String[] parms, TextRange textRange) { - return DefaultJpaValidationMessages.buildMessage(IMessage.HIGH_SEVERITY, msgID, parms, this, textRange); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmJoinColumnJoiningStrategy.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmJoinColumnJoiningStrategy.java deleted file mode 100644 index 02bf1c1cc9..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmJoinColumnJoiningStrategy.java +++ /dev/null @@ -1,480 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 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.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.eclipse.jpt.core.context.BaseJoinColumn; -import org.eclipse.jpt.core.context.Entity; -import org.eclipse.jpt.core.context.JoinColumn; -import org.eclipse.jpt.core.context.RelationshipMapping; -import org.eclipse.jpt.core.context.TypeMapping; -import org.eclipse.jpt.core.context.orm.OrmJoinColumn; -import org.eclipse.jpt.core.context.orm.OrmJoinColumnEnabledRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmJoinColumnJoiningStrategy; -import org.eclipse.jpt.core.context.orm.OrmRelationshipMapping; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlJoinColumn; -import org.eclipse.jpt.core.resource.orm.XmlJoinColumnsMapping; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Table; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterators.CloneIterator; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; -import org.eclipse.jpt.utility.internal.iterators.EmptyListIterator; -import org.eclipse.jpt.utility.internal.iterators.SingleElementListIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -public class GenericOrmJoinColumnJoiningStrategy - extends AbstractXmlContextNode - implements OrmJoinColumnJoiningStrategy -{ - protected XmlJoinColumnsMapping resource; - - protected OrmJoinColumn defaultJoinColumn; - - protected final List<OrmJoinColumn> specifiedJoinColumns; - - - public GenericOrmJoinColumnJoiningStrategy( - OrmJoinColumnEnabledRelationshipReference parent, - XmlJoinColumnsMapping resource) { - super(parent); - this.resource = resource; - this.specifiedJoinColumns = new ArrayList<OrmJoinColumn>(); - this.initializeSpecifiedJoinColumns(); - this.initializeDefaultJoinColumn(); - } - - - protected void initializeSpecifiedJoinColumns() { - if (this.resource != null) { - for (XmlJoinColumn resourceJoinColumn : this.resource.getJoinColumns()) { - this.specifiedJoinColumns.add(buildJoinColumn(resourceJoinColumn)); - } - } - } - - protected void initializeDefaultJoinColumn() { - if (mayHaveDefaultJoinColumn()) { - this.defaultJoinColumn = this.buildJoinColumn(null); - } - } - - protected OrmJoinColumn buildJoinColumn(XmlJoinColumn resourceJoinColumn) { - return this.getJpaFactory().buildOrmJoinColumn(this, new JoinColumnOwner(), resourceJoinColumn); - } - - @Override - public OrmJoinColumnEnabledRelationshipReference getParent() { - return (OrmJoinColumnEnabledRelationshipReference) super.getParent(); - } - - public OrmJoinColumnEnabledRelationshipReference getRelationshipReference() { - return this.getParent(); - } - - public OrmRelationshipMapping getRelationshipMapping() { - return this.getRelationshipReference().getRelationshipMapping(); - } - - public void addStrategy() { - if (specifiedJoinColumnsSize() == 0) { - addSpecifiedJoinColumn(0); - } - } - - public void removeStrategy() { - for (JoinColumn each : CollectionTools.iterable(specifiedJoinColumns())) { - removeSpecifiedJoinColumn(each); - } - } - - - // **************** join columns ******************************************* - - public ListIterator<OrmJoinColumn> joinColumns() { - return this.hasSpecifiedJoinColumns() ? - this.specifiedJoinColumns() : this.defaultJoinColumns(); - } - - public int joinColumnsSize() { - return this.hasSpecifiedJoinColumns() ? - this.specifiedJoinColumnsSize() : this.defaultJoinColumnsSize(); - } - - - // **************** default join column ************************************ - - public OrmJoinColumn getDefaultJoinColumn() { - return this.defaultJoinColumn; - } - - protected void setDefaultJoinColumn(OrmJoinColumn joinColumn) { - OrmJoinColumn old = this.defaultJoinColumn; - this.defaultJoinColumn = joinColumn; - this.firePropertyChanged(DEFAULT_JOIN_COLUMN_PROPERTY, old, joinColumn); - } - - protected ListIterator<OrmJoinColumn> defaultJoinColumns() { - if (this.defaultJoinColumn != null) { - return new SingleElementListIterator<OrmJoinColumn>(this.defaultJoinColumn); - } - return EmptyListIterator.instance(); - } - - protected int defaultJoinColumnsSize() { - return (this.defaultJoinColumn == null) ? 0 : 1; - } - - - // **************** specified join columns ********************************* - - public ListIterator<OrmJoinColumn> specifiedJoinColumns() { - return new CloneListIterator<OrmJoinColumn>(this.specifiedJoinColumns); - } - - public int specifiedJoinColumnsSize() { - return this.specifiedJoinColumns.size(); - } - - public boolean hasSpecifiedJoinColumns() { - return ! this.specifiedJoinColumns.isEmpty(); - } - - public OrmJoinColumn addSpecifiedJoinColumn(int index) { - OrmJoinColumn oldDefaultJoinColumn = this.defaultJoinColumn; - if (oldDefaultJoinColumn != null) { - //null the default join column now if one already exists. - //if one does not exist, there is already a specified join column. - //Remove it now so that it doesn't get removed during an update and - //cause change notifications to be sent to the UI in the wrong order - this.defaultJoinColumn = null; - } - XmlJoinColumn resourceJoinColumn = OrmFactory.eINSTANCE.createXmlJoinColumnImpl(); - OrmJoinColumn contextJoinColumn = this.buildJoinColumn(resourceJoinColumn); - this.specifiedJoinColumns.add(index, contextJoinColumn); - this.resource.getJoinColumns().add(index, resourceJoinColumn); - this.fireItemAdded(SPECIFIED_JOIN_COLUMNS_LIST, index, contextJoinColumn); - if (oldDefaultJoinColumn != null) { - this.firePropertyChanged(DEFAULT_JOIN_COLUMN_PROPERTY, oldDefaultJoinColumn, null); - } - return contextJoinColumn; - } - - protected void addSpecifiedJoinColumn(int index, OrmJoinColumn joinColumn) { - this.addItemToList(index, joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); - } - - protected void addSpecifiedJoinColumn(OrmJoinColumn joinColumn) { - this.addSpecifiedJoinColumn(this.specifiedJoinColumns.size(), joinColumn); - } - - public void removeSpecifiedJoinColumn(JoinColumn joinColumn) { - this.removeSpecifiedJoinColumn(this.specifiedJoinColumns.indexOf(joinColumn)); - } - - public void removeSpecifiedJoinColumn(int index) { - OrmJoinColumn removedJoinColumn = this.specifiedJoinColumns.remove(index); - if (this.specifiedJoinColumns.isEmpty()) { - //create the defaultJoinColumn now or this will happen during project update - //after removing the join column from the resource model. That causes problems - //in the UI because the change notifications end up in the wrong order. - this.defaultJoinColumn = this.buildJoinColumn(null); - } - this.resource.getJoinColumns().remove(index); - this.fireItemRemoved(SPECIFIED_JOIN_COLUMNS_LIST, index, removedJoinColumn); - if (this.defaultJoinColumn != null) { - //fire change notification if a defaultJoinColumn was created above - this.firePropertyChanged(DEFAULT_JOIN_COLUMN_PROPERTY, null, this.defaultJoinColumn); - } - } - - protected void removeSpecifiedJoinColumn_(OrmJoinColumn joinColumn) { - removeItemFromList(joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); - } - - public void moveSpecifiedJoinColumn(int targetIndex, int sourceIndex) { - CollectionTools.move(this.specifiedJoinColumns, targetIndex, sourceIndex); - this.resource.getJoinColumns().move(targetIndex, sourceIndex); - fireItemMoved(SPECIFIED_JOIN_COLUMNS_LIST, targetIndex, sourceIndex); - } - - - // **************** resource => context ************************************ - - public void update() { - updateSpecifiedJoinColumns(); - updateDefaultJoinColumn(); - } - - protected void updateSpecifiedJoinColumns() { - // make a copy of the XML join columns (to prevent ConcurrentModificationException) - Iterator<XmlJoinColumn> xmlJoinColumns = - new CloneIterator<XmlJoinColumn>(this.resource.getJoinColumns()); - - for (Iterator<OrmJoinColumn> contextJoinColumns = this.specifiedJoinColumns(); - contextJoinColumns.hasNext(); ) { - OrmJoinColumn contextJoinColumn = contextJoinColumns.next(); - if (xmlJoinColumns.hasNext()) { - contextJoinColumn.update(xmlJoinColumns.next()); - } - else { - removeSpecifiedJoinColumn_(contextJoinColumn); - } - } - - while (xmlJoinColumns.hasNext()) { - addSpecifiedJoinColumn(buildJoinColumn(xmlJoinColumns.next())); - } - } - - protected void updateDefaultJoinColumn() { - if (mayHaveDefaultJoinColumn()) { - if (this.defaultJoinColumn == null) { - this.setDefaultJoinColumn(this.buildJoinColumn(null)); - } else { - this.defaultJoinColumn.update(null); - } - } else { - this.setDefaultJoinColumn(null); - } - } - - protected boolean mayHaveDefaultJoinColumn() { - return getRelationshipReference().mayHaveDefaultJoinColumn() - && ! hasSpecifiedJoinColumns(); - } - - - // **************** validation ********************************************* - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - if (getRelationshipMapping().shouldValidateAgainstDatabase()) { - for (Iterator<OrmJoinColumn> stream = this.joinColumns(); stream.hasNext(); ) { - this.validateJoinColumn(stream.next(), messages); - } - } - } - - protected void validateJoinColumn(OrmJoinColumn joinColumn, List<IMessage> messages) { - if (getRelationshipMapping().getTypeMapping().tableNameIsInvalid(joinColumn.getTable())) { - if (this.getRelationshipMapping().getPersistentAttribute().isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_JOIN_COLUMN_UNRESOLVED_TABLE, - new String[] {getRelationshipMapping().getName(), joinColumn.getTable(), joinColumn.getName()}, - joinColumn, - joinColumn.getTableTextRange() - ) - ); - } - else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_COLUMN_UNRESOLVED_TABLE, - new String[] {joinColumn.getTable(), joinColumn.getName()}, - joinColumn, - joinColumn.getTableTextRange() - ) - ); - } - return; - } - validateJoinColumnName(joinColumn, messages); - validationJoinColumnReferencedColumnName(joinColumn, messages); - } - - protected void validateJoinColumnName(OrmJoinColumn joinColumn, List<IMessage> messages) { - if ( ! joinColumn.isResolved() && joinColumn.getDbTable() != null) { - if (joinColumn.getName() != null) { - if (getRelationshipMapping().getPersistentAttribute().isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_JOIN_COLUMN_UNRESOLVED_NAME, - new String[] {getRelationshipMapping().getName(), joinColumn.getName()}, - joinColumn, - joinColumn.getNameTextRange() - ) - ); - } else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_COLUMN_UNRESOLVED_NAME, - new String[] {joinColumn.getName()}, - joinColumn, - joinColumn.getNameTextRange() - ) - ); - } - } - else if (joinColumn.getOwner().joinColumnsSize() > 1) { - if (getRelationshipMapping().getPersistentAttribute().isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_JOIN_COLUMN_UNRESOLVED_NAME_MULTIPLE_JOIN_COLUMNS, - new String[] {getRelationshipMapping().getName()}, - joinColumn, - joinColumn.getNameTextRange() - ) - ); - } - else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_COLUMN_UNRESOLVED_NAME_MULTIPLE_JOIN_COLUMNS, - joinColumn, - joinColumn.getNameTextRange() - ) - ); - } - } - } - } - - protected void validationJoinColumnReferencedColumnName(OrmJoinColumn joinColumn, List<IMessage> messages) { - if ( ! joinColumn.isReferencedColumnResolved() && joinColumn.getReferencedColumnDbTable() != null) { - if (joinColumn.getReferencedColumnName() != null) { - if (getRelationshipMapping().getPersistentAttribute().isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME, - new String[] {getRelationshipMapping().getName(), joinColumn.getReferencedColumnName(), joinColumn.getName()}, - joinColumn, - joinColumn.getReferencedColumnNameTextRange() - ) - ); - } else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME, - new String[] {joinColumn.getReferencedColumnName(), joinColumn.getName()}, - joinColumn, - joinColumn.getReferencedColumnNameTextRange() - ) - ); - } - } - else if (joinColumn.getOwner().joinColumnsSize() > 1) { - if (getRelationshipMapping().getPersistentAttribute().isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME_MULTIPLE_JOIN_COLUMNS, - new String[] {getRelationshipMapping().getName(), joinColumn.getName()}, - joinColumn, - joinColumn.getReferencedColumnNameTextRange() - ) - ); - } - else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME_MULTIPLE_JOIN_COLUMNS, - joinColumn, - joinColumn.getReferencedColumnNameTextRange() - ) - ); - } - } - } - } - - public TextRange getValidationTextRange() { - return this.getRelationshipReference().getValidationTextRange(); - } - - - public class JoinColumnOwner implements OrmJoinColumn.Owner - { - public JoinColumnOwner() { - super(); - } - - /** - * by default, the join column is in the type mapping's primary table - */ - public String getDefaultTableName() { - return getTypeMapping().getPrimaryTableName(); - } - - public Entity getTargetEntity() { - return getRelationshipMapping().getResolvedTargetEntity(); - } - - public String getAttributeName() { - return getRelationshipMapping().getName(); - } - - public RelationshipMapping getRelationshipMapping() { - return GenericOrmJoinColumnJoiningStrategy.this.getRelationshipMapping(); - } - - public boolean tableNameIsInvalid(String tableName) { - return getTypeMapping().tableNameIsInvalid(tableName); - } - - /** - * the join column can be on a secondary table - */ - public boolean tableIsAllowed() { - return true; - } - - public TypeMapping getTypeMapping() { - return getRelationshipMapping().getTypeMapping(); - } - - public Table getDbTable(String tableName) { - return getTypeMapping().getDbTable(tableName); - } - - public Table getReferencedColumnDbTable() { - Entity targetEntity = getTargetEntity(); - return (targetEntity == null) ? null : targetEntity.getPrimaryDbTable(); - } - - public boolean isVirtual(BaseJoinColumn joinColumn) { - return GenericOrmJoinColumnJoiningStrategy.this.defaultJoinColumn == joinColumn; - } - - public String getDefaultColumnName() { - // TODO Auto-generated method stub - return null; - } - - public int joinColumnsSize() { - return GenericOrmJoinColumnJoiningStrategy.this.joinColumnsSize(); - } - - public TextRange getValidationTextRange() { - return GenericOrmJoinColumnJoiningStrategy.this.getValidationTextRange(); - } - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmJoinTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmJoinTable.java deleted file mode 100644 index ccc0a0860e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmJoinTable.java +++ /dev/null @@ -1,720 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import org.eclipse.jpt.core.context.BaseJoinColumn; -import org.eclipse.jpt.core.context.Entity; -import org.eclipse.jpt.core.context.JoinColumn; -import org.eclipse.jpt.core.context.JoinTable; -import org.eclipse.jpt.core.context.PersistentAttribute; -import org.eclipse.jpt.core.context.RelationshipMapping; -import org.eclipse.jpt.core.context.TypeMapping; -import org.eclipse.jpt.core.context.orm.OrmJoinColumn; -import org.eclipse.jpt.core.context.orm.OrmJoinTable; -import org.eclipse.jpt.core.context.orm.OrmJoinTableJoiningStrategy; -import org.eclipse.jpt.core.context.orm.OrmRelationshipMapping; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlJoinColumn; -import org.eclipse.jpt.core.resource.orm.XmlJoinTable; -import org.eclipse.jpt.core.resource.orm.XmlJoinTableMapping; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterators.CloneIterator; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; -import org.eclipse.jpt.utility.internal.iterators.EmptyListIterator; -import org.eclipse.jpt.utility.internal.iterators.SingleElementListIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - - -public class GenericOrmJoinTable - extends AbstractOrmTable - implements OrmJoinTable -{ - protected final XmlJoinTableMapping resourceMapping; - - protected OrmJoinColumn defaultJoinColumn; - - protected final List<OrmJoinColumn> specifiedJoinColumns; - - protected OrmJoinColumn defaultInverseJoinColumn; - - protected final List<OrmJoinColumn> specifiedInverseJoinColumns; - - - public GenericOrmJoinTable( - OrmJoinTableJoiningStrategy parent, XmlJoinTableMapping resourceMapping) { - super(parent); - this.resourceMapping = resourceMapping; - this.specifiedJoinColumns = new ArrayList<OrmJoinColumn>(); - this.specifiedInverseJoinColumns = new ArrayList<OrmJoinColumn>(); - this.initialize(this.getResourceTable()); - } - - @Override - public OrmJoinTableJoiningStrategy getParent() { - return (OrmJoinTableJoiningStrategy) super.getParent(); - } - - public OrmRelationshipMapping getRelationshipMapping() { - return getParent().getRelationshipReference().getRelationshipMapping(); - } - - public void initializeFrom(JoinTable oldJoinTable) { - super.initializeFrom(oldJoinTable); - int index = 0; - for (JoinColumn joinColumn : CollectionTools.iterable(oldJoinTable.specifiedJoinColumns())) { - OrmJoinColumn newJoinColumn = addSpecifiedJoinColumn(index++); - newJoinColumn.initializeFrom(joinColumn); - } - index = 0; - for (JoinColumn joinColumn : CollectionTools.iterable(oldJoinTable.specifiedInverseJoinColumns())) { - OrmJoinColumn newJoinColumn = addSpecifiedInverseJoinColumn(index++); - newJoinColumn.initializeFrom(joinColumn); - } - } - - - //******************* AbstractOrmTable implementation ***************** - - @Override - protected String buildDefaultName() { - return this.getRelationshipMapping().getJoinTableDefaultName(); - } - - /** - * if the join table is on the "mappedBy" side, it's bogus; - * so don't give it a default schema - */ - @Override - protected String buildDefaultSchema() { - return this.getContextDefaultSchema(); - } - - @Override - protected String buildDefaultCatalog() { - return this.getContextDefaultCatalog(); - } - - @Override - protected XmlJoinTable getResourceTable() { - return this.resourceMapping.getJoinTable(); - } - - @Override - protected XmlJoinTable addResourceTable() { - XmlJoinTable resourceTable = OrmFactory.eINSTANCE.createXmlJoinTableImpl(); - this.resourceMapping.setJoinTable(resourceTable); - return resourceTable; - } - - @Override - protected void removeResourceTable() { - this.resourceMapping.setJoinTable(null); - } - - - //******************* JoinTable implementation ***************** - - //****************** join columns ********************** - public ListIterator<OrmJoinColumn> joinColumns() { - return this.containsSpecifiedJoinColumns() ? this.specifiedJoinColumns() : this.defaultJoinColumns(); - } - - public int joinColumnsSize() { - return this.containsSpecifiedJoinColumns() ? this.specifiedJoinColumnsSize() : this.defaultJoinColumnsSize(); - } - - public ListIterator<OrmJoinColumn> specifiedJoinColumns() { - return new CloneListIterator<OrmJoinColumn>(this.specifiedJoinColumns); - } - - public int specifiedJoinColumnsSize() { - return this.specifiedJoinColumns.size(); - } - - protected ListIterator<OrmJoinColumn> defaultJoinColumns() { - if (this.defaultJoinColumn != null) { - return new SingleElementListIterator<OrmJoinColumn>(this.defaultJoinColumn); - } - return EmptyListIterator.instance(); - } - - protected int defaultJoinColumnsSize() { - return (this.defaultJoinColumn == null) ? 0 : 1; - } - - public OrmJoinColumn getDefaultJoinColumn() { - return this.defaultJoinColumn; - } - - protected void setDefaultJoinColumn(OrmJoinColumn newJoinColumn) { - OrmJoinColumn oldJoinColumn = this.defaultJoinColumn; - this.defaultJoinColumn = newJoinColumn; - firePropertyChanged(JoinTable.DEFAULT_JOIN_COLUMN, oldJoinColumn, newJoinColumn); - } - - public boolean containsSpecifiedJoinColumns() { - return !this.specifiedJoinColumns.isEmpty(); - } - - public OrmJoinColumn addSpecifiedJoinColumn(int index) { - if (getResourceTable() == null) { - addResourceTable(); - } - XmlJoinColumn resourceJoinColumn = OrmFactory.eINSTANCE.createXmlJoinColumnImpl(); - OrmJoinColumn contextJoinColumn = buildJoinColumn(resourceJoinColumn); - this.specifiedJoinColumns.add(index, contextJoinColumn); - this.getResourceTable().getJoinColumns().add(index, resourceJoinColumn); - this.fireItemAdded(JoinTable.SPECIFIED_JOIN_COLUMNS_LIST, index, contextJoinColumn); - return contextJoinColumn; - } - - protected void addSpecifiedJoinColumn(int index, OrmJoinColumn joinColumn) { - addItemToList(index, joinColumn, this.specifiedJoinColumns, JoinTable.SPECIFIED_JOIN_COLUMNS_LIST); - } - - protected void addSpecifiedJoinColumn(OrmJoinColumn joinColumn) { - this.addSpecifiedJoinColumn(this.specifiedJoinColumns.size(), joinColumn); - } - - public void removeSpecifiedJoinColumn(JoinColumn joinColumn) { - this.removeSpecifiedJoinColumn(this.specifiedJoinColumns.indexOf(joinColumn)); - } - - public void removeSpecifiedJoinColumn(int index) { - OrmJoinColumn removedJoinColumn = this.specifiedJoinColumns.remove(index); - if (!containsSpecifiedJoinColumns()) { - //create the defaultJoinColumn now or this will happen during project update - //after removing the join column from the resource model. That causes problems - //in the UI because the change notifications end up in the wrong order. - this.defaultJoinColumn = buildJoinColumn(null); - } - this.getResourceTable().getJoinColumns().remove(index); - fireItemRemoved(JoinTable.SPECIFIED_JOIN_COLUMNS_LIST, index, removedJoinColumn); - if (this.defaultJoinColumn != null) { - //fire change notification if a defaultJoinColumn was created above - this.firePropertyChanged(JoinTable.DEFAULT_JOIN_COLUMN, null, this.defaultJoinColumn); - } - } - - protected void removeSpecifiedJoinColumn_(OrmJoinColumn joinColumn) { - removeItemFromList(joinColumn, this.specifiedJoinColumns, JoinTable.SPECIFIED_JOIN_COLUMNS_LIST); - } - - public void moveSpecifiedJoinColumn(int targetIndex, int sourceIndex) { - CollectionTools.move(this.specifiedJoinColumns, targetIndex, sourceIndex); - this.getResourceTable().getJoinColumns().move(targetIndex, sourceIndex); - fireItemMoved(JoinTable.SPECIFIED_JOIN_COLUMNS_LIST, targetIndex, sourceIndex); - } - - - //****************** inverse join columns ********************** - - public ListIterator<OrmJoinColumn> inverseJoinColumns() { - return this.containsSpecifiedInverseJoinColumns() ? this.specifiedInverseJoinColumns() : this.defaultInverseJoinColumns(); - } - - public int inverseJoinColumnsSize() { - return this.containsSpecifiedInverseJoinColumns() ? this.specifiedInverseJoinColumnsSize() : this.defaultInverseJoinColumnsSize(); - } - - public ListIterator<OrmJoinColumn> specifiedInverseJoinColumns() { - return new CloneListIterator<OrmJoinColumn>(this.specifiedInverseJoinColumns); - } - - public int specifiedInverseJoinColumnsSize() { - return this.specifiedInverseJoinColumns.size(); - } - - protected ListIterator<OrmJoinColumn> defaultInverseJoinColumns() { - if (this.defaultInverseJoinColumn != null) { - return new SingleElementListIterator<OrmJoinColumn>(this.defaultInverseJoinColumn); - } - return EmptyListIterator.instance(); - } - - protected int defaultInverseJoinColumnsSize() { - return (this.defaultInverseJoinColumn == null) ? 0 : 1; - } - - public OrmJoinColumn getDefaultInverseJoinColumn() { - return this.defaultInverseJoinColumn; - } - - protected void setDefaultInverseJoinColumn(OrmJoinColumn newJoinColumn) { - OrmJoinColumn oldJoinColumn = this.defaultInverseJoinColumn; - this.defaultInverseJoinColumn = newJoinColumn; - firePropertyChanged(JoinTable.DEFAULT_INVERSE_JOIN_COLUMN, oldJoinColumn, newJoinColumn); - } - - public boolean containsSpecifiedInverseJoinColumns() { - return !this.specifiedInverseJoinColumns.isEmpty(); - } - - public OrmJoinColumn addSpecifiedInverseJoinColumn(int index) { - if (getResourceTable() == null) { - addResourceTable(); - } - XmlJoinColumn resourceJoinColumn = OrmFactory.eINSTANCE.createXmlJoinColumnImpl(); - OrmJoinColumn contextJoinColumn = buildInverseJoinColumn(resourceJoinColumn); - this.specifiedInverseJoinColumns.add(index, contextJoinColumn); - this.getResourceTable().getInverseJoinColumns().add(index, resourceJoinColumn); - this.fireItemAdded(JoinTable.SPECIFIED_INVERSE_JOIN_COLUMNS_LIST, index, contextJoinColumn); - return contextJoinColumn; - } - - protected void addSpecifiedInverseJoinColumn(int index, OrmJoinColumn joinColumn) { - addItemToList(index, joinColumn, this.specifiedInverseJoinColumns, JoinTable.SPECIFIED_INVERSE_JOIN_COLUMNS_LIST); - } - - protected void addSpecifiedInverseJoinColumn(OrmJoinColumn joinColumn) { - this.addSpecifiedInverseJoinColumn(this.specifiedInverseJoinColumns.size(), joinColumn); - } - - public void removeSpecifiedInverseJoinColumn(JoinColumn joinColumn) { - this.removeSpecifiedInverseJoinColumn(this.specifiedInverseJoinColumns.indexOf(joinColumn)); - } - - public void removeSpecifiedInverseJoinColumn(int index) { - OrmJoinColumn removedJoinColumn = this.specifiedInverseJoinColumns.remove(index); - if (!containsSpecifiedInverseJoinColumns()) { - //create the defaultInverseJoinColumn now or this will happen during project update - //after removing the join column from the resource model. That causes problems - //in the UI because the change notifications end up in the wrong order. - this.defaultInverseJoinColumn = buildInverseJoinColumn(null); - } - this.getResourceTable().getInverseJoinColumns().remove(index); - fireItemRemoved(JoinTable.SPECIFIED_INVERSE_JOIN_COLUMNS_LIST, index, removedJoinColumn); - if (this.defaultInverseJoinColumn != null) { - //fire change notification if a defaultJoinColumn was created above - this.firePropertyChanged(JoinTable.DEFAULT_INVERSE_JOIN_COLUMN, null, this.defaultInverseJoinColumn); - } - } - - protected void removeSpecifiedInverseJoinColumn_(OrmJoinColumn joinColumn) { - removeItemFromList(joinColumn, this.specifiedInverseJoinColumns, JoinTable.SPECIFIED_INVERSE_JOIN_COLUMNS_LIST); - } - - public void moveSpecifiedInverseJoinColumn(int targetIndex, int sourceIndex) { - CollectionTools.move(this.specifiedInverseJoinColumns, targetIndex, sourceIndex); - this.getResourceTable().getInverseJoinColumns().move(targetIndex, sourceIndex); - fireItemMoved(JoinTable.SPECIFIED_INVERSE_JOIN_COLUMNS_LIST, targetIndex, sourceIndex); - } - - - // ****************** OrmJoinTable implementation ***************** - - public void update() { - this.update(this.getResourceTable()); - } - - protected void initialize(XmlJoinTable joinTable) { - super.initialize(joinTable); - this.initializeSpecifiedJoinColumns(joinTable); - this.initializeDefaultJoinColumn(); - this.initializeSpecifiedInverseJoinColumns(joinTable); - this.initializeDefaultInverseJoinColumn(); - } - - protected void initializeSpecifiedJoinColumns(XmlJoinTable joinTable) { - if (joinTable == null) { - return; - } - for (XmlJoinColumn joinColumn : joinTable.getJoinColumns()) { - this.specifiedJoinColumns.add(buildJoinColumn(joinColumn)); - } - } - - protected void initializeDefaultJoinColumn() { - if (!shouldBuildDefaultJoinColumn()) { - return; - } - this.defaultJoinColumn = buildJoinColumn(null); - } - - protected void initializeSpecifiedInverseJoinColumns(XmlJoinTable joinTable) { - if (joinTable == null) { - return; - } - for (XmlJoinColumn joinColumn : joinTable.getInverseJoinColumns()) { - this.specifiedInverseJoinColumns.add(buildInverseJoinColumn(joinColumn)); - } - } - - protected void initializeDefaultInverseJoinColumn() { - if (!shouldBuildDefaultInverseJoinColumn()) { - return; - } - this.defaultInverseJoinColumn = buildInverseJoinColumn(null); - } - - protected void update(XmlJoinTable joinTable) { - super.update(joinTable); - this.updateSpecifiedJoinColumns(joinTable); - this.updateDefaultJoinColumn(); - this.updateSpecifiedInverseJoinColumns(joinTable); - this.updateDefaultInverseJoinColumn(); - } - - protected void updateSpecifiedJoinColumns(XmlJoinTable joinTable) { - Iterator<XmlJoinColumn> xmlJoinColumns = this.xmlJoinColumns(joinTable); - - for (Iterator<OrmJoinColumn> contextJoinColumns = this.specifiedJoinColumns(); contextJoinColumns.hasNext(); ) { - OrmJoinColumn contextJoinColumn = contextJoinColumns.next(); - if (xmlJoinColumns.hasNext()) { - contextJoinColumn.update(xmlJoinColumns.next()); - } - else { - removeSpecifiedJoinColumn_(contextJoinColumn); - } - } - - while (xmlJoinColumns.hasNext()) { - addSpecifiedJoinColumn(buildJoinColumn(xmlJoinColumns.next())); - } - } - - protected Iterator<XmlJoinColumn> xmlJoinColumns(XmlJoinTable xmlJoinTable) { - // make a copy of the XML join columns (to prevent ConcurrentModificationException) - return (xmlJoinTable == null) ? EmptyIterator.<XmlJoinColumn>instance() - : new CloneIterator<XmlJoinColumn>(xmlJoinTable.getJoinColumns()); - } - - protected boolean shouldBuildDefaultJoinColumn() { - return !containsSpecifiedJoinColumns(); - } - - protected void updateDefaultJoinColumn() { - if (!shouldBuildDefaultJoinColumn()) { - setDefaultJoinColumn(null); - return; - } - if (getDefaultJoinColumn() == null) { - this.setDefaultJoinColumn(buildJoinColumn(null)); - } - else { - this.defaultJoinColumn.update(null); - } - } - - protected void updateSpecifiedInverseJoinColumns(XmlJoinTable joinTable) { - Iterator<XmlJoinColumn> xmlJoinColumns = this.xmlInverseJoinColumns(joinTable); - - for (ListIterator<OrmJoinColumn> contextJoinColumns = specifiedInverseJoinColumns(); contextJoinColumns.hasNext(); ) { - OrmJoinColumn contextColumn = contextJoinColumns.next(); - if (xmlJoinColumns.hasNext()) { - contextColumn.update(xmlJoinColumns.next()); - } - else { - removeSpecifiedInverseJoinColumn_(contextColumn); - } - } - - while (xmlJoinColumns.hasNext()) { - addSpecifiedInverseJoinColumn(buildInverseJoinColumn(xmlJoinColumns.next())); - } - } - - protected Iterator<XmlJoinColumn> xmlInverseJoinColumns(XmlJoinTable xmlJoinTable) { - // make a copy of the XML join columns (to prevent ConcurrentModificationException) - return (xmlJoinTable == null) ? EmptyIterator.<XmlJoinColumn>instance() - : new CloneIterator<XmlJoinColumn>(xmlJoinTable.getInverseJoinColumns()); - } - - protected boolean shouldBuildDefaultInverseJoinColumn() { - return !containsSpecifiedInverseJoinColumns(); - } - - protected void updateDefaultInverseJoinColumn() { - if (!shouldBuildDefaultInverseJoinColumn()) { - setDefaultInverseJoinColumn(null); - return; - } - if (getDefaultInverseJoinColumn() == null) { - this.setDefaultInverseJoinColumn(buildInverseJoinColumn(null)); - } - else { - this.defaultInverseJoinColumn.update(null); - } - } - - protected OrmJoinColumn buildJoinColumn(XmlJoinColumn resourceJoinColumn) { - return getJpaFactory().buildOrmJoinColumn(this, new JoinColumnOwner(), resourceJoinColumn); - } - - protected OrmJoinColumn buildInverseJoinColumn(XmlJoinColumn resourceJoinColumn) { - return getJpaFactory().buildOrmJoinColumn(this, new InverseJoinColumnOwner(), resourceJoinColumn); - } - - - // ************************** validation *********************** - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - if (this.connectionProfileIsActive()) { - this.validateAgainstDatabase(messages, reporter); - } - } - - protected void validateAgainstDatabase(List<IMessage> messages, IReporter reporter) { - OrmRelationshipMapping mapping = this.getRelationshipMapping(); - - if ( ! this.hasResolvedCatalog()) { - if (mapping.getPersistentAttribute().isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_JOIN_TABLE_UNRESOLVED_CATALOG, - new String[] {mapping.getName(), this.getCatalog(), this.getName()}, - this, - this.getCatalogTextRange() - ) - ); - - } else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_TABLE_UNRESOLVED_CATALOG, - new String[] {this.getCatalog(), this.getName()}, - this, - this.getCatalogTextRange() - ) - ); - } - return; - } - - if ( ! this.hasResolvedSchema()) { - if (mapping.getPersistentAttribute().isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_JOIN_TABLE_UNRESOLVED_SCHEMA, - new String[] {mapping.getName(), this.getSchema(), this.getName()}, - this, - this.getSchemaTextRange() - ) - ); - } else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_TABLE_UNRESOLVED_SCHEMA, - new String[] {this.getSchema(), this.getName()}, - this, - this.getSchemaTextRange() - ) - ); - } - return; - } - if ( ! this.isResolved()) { - if (getName() != null) { //if name is null, the validation will be handled elsewhere, such as the target entity is not defined - if (mapping.getPersistentAttribute().isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_JOIN_TABLE_UNRESOLVED_NAME, - new String[] {mapping.getName(), this.getName()}, - this, - this.getNameTextRange() - ) - ); - } - else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_TABLE_UNRESOLVED_NAME, - new String[] {this.getName()}, - this, - this.getNameTextRange()) - ); - } - } - return; - } - - this.validateJoinColumns(this.joinColumns(), messages, reporter); - this.validateJoinColumns(this.inverseJoinColumns(), messages, reporter); - } - - protected void validateJoinColumns(Iterator<OrmJoinColumn> joinColumns, List<IMessage> messages, IReporter reporter) { - while (joinColumns.hasNext()) { - joinColumns.next().validate(messages, reporter); - } - } - - /** - * just a little common behavior - */ - abstract class AbstractJoinColumnOwner implements OrmJoinColumn.Owner - { - AbstractJoinColumnOwner() { - super(); - } - - public TypeMapping getTypeMapping() { - return getRelationshipMapping().getTypeMapping(); - } - - public RelationshipMapping getRelationshipMapping() { - return GenericOrmJoinTable.this.getRelationshipMapping(); - } - - /** - * the default table name is always valid and a specified table name - * is prohibited (which will be handled elsewhere) - */ - public boolean tableNameIsInvalid(String tableName) { - return false; - } - - /** - * the join column can only be on the join table itself - */ - public boolean tableIsAllowed() { - return false; - } - - public org.eclipse.jpt.db.Table getDbTable(String tableName) { - if (GenericOrmJoinTable.this.getName() == null) { - return null; - } - return (GenericOrmJoinTable.this.getName().equals(tableName)) ? GenericOrmJoinTable.this.getDbTable() : null; - } - - /** - * by default, the join column is, obviously, in the join table; - * not sure whether it can be anywhere else... - */ - public String getDefaultTableName() { - return GenericOrmJoinTable.this.getName(); - } - - public TextRange getValidationTextRange() { - return GenericOrmJoinTable.this.getValidationTextRange(); - } - } - - - /** - * owner for "forward-pointer" JoinColumns; - * these point at the target/inverse entity - */ - class InverseJoinColumnOwner extends AbstractJoinColumnOwner - { - public InverseJoinColumnOwner() { - super(); - } - - public Entity getTargetEntity() { - return GenericOrmJoinTable.this.getRelationshipMapping().getResolvedTargetEntity(); - } - - public String getAttributeName() { - return GenericOrmJoinTable.this.getRelationshipMapping().getName(); - } - - @Override - public org.eclipse.jpt.db.Table getDbTable(String tableName) { - org.eclipse.jpt.db.Table dbTable = super.getDbTable(tableName); - if (dbTable != null) { - return dbTable; - } - Entity targetEntity = getTargetEntity(); - return (targetEntity == null) ? null : targetEntity.getDbTable(tableName); - } - - public org.eclipse.jpt.db.Table getReferencedColumnDbTable() { - Entity targetEntity = getTargetEntity(); - return (targetEntity == null) ? null : targetEntity.getPrimaryDbTable(); - } - - public boolean isVirtual(BaseJoinColumn joinColumn) { - return GenericOrmJoinTable.this.defaultInverseJoinColumn == joinColumn; - } - - public String getDefaultColumnName() { - // TODO Auto-generated method stub - return null; - } - - public int joinColumnsSize() { - return GenericOrmJoinTable.this.inverseJoinColumnsSize(); - } - - } - - - /** - * owner for "back-pointer" JoinColumns; - * these point at the source/owning entity - */ - class JoinColumnOwner extends AbstractJoinColumnOwner - { - public JoinColumnOwner() { - super(); - } - - public Entity getTargetEntity() { - return GenericOrmJoinTable.this.getRelationshipMapping().getEntity(); - } - - public String getAttributeName() { - Entity targetEntity = GenericOrmJoinTable.this.getRelationshipMapping().getResolvedTargetEntity(); - if (targetEntity == null) { - return null; - } - for (PersistentAttribute each : - CollectionTools.iterable( - targetEntity.getPersistentType().allAttributes())) { - if (each.getMapping().isOwnedBy(getRelationshipMapping())) { - return each.getName(); - } - } - return null; - } - - @Override - public org.eclipse.jpt.db.Table getDbTable(String tableName) { - org.eclipse.jpt.db.Table dbTable = super.getDbTable(tableName); - return (dbTable != null) ? dbTable : this.getTypeMapping().getDbTable(tableName); - } - - public org.eclipse.jpt.db.Table getReferencedColumnDbTable() { - return getTypeMapping().getPrimaryDbTable(); - } - - public boolean isVirtual(BaseJoinColumn joinColumn) { - return GenericOrmJoinTable.this.defaultJoinColumn == joinColumn; - } - - public String getDefaultColumnName() { - // TODO Auto-generated method stub - return null; - } - - public int joinColumnsSize() { - return GenericOrmJoinTable.this.joinColumnsSize(); - } - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmJoinTableJoiningStrategy.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmJoinTableJoiningStrategy.java deleted file mode 100644 index d621749c38..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmJoinTableJoiningStrategy.java +++ /dev/null @@ -1,139 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 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.List; -import org.eclipse.jpt.core.context.orm.OrmJoinTable; -import org.eclipse.jpt.core.context.orm.OrmJoinTableEnabledRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmJoinTableJoiningStrategy; -import org.eclipse.jpt.core.context.orm.OrmRelationshipMapping; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlJoinTable; -import org.eclipse.jpt.core.resource.orm.XmlJoinTableMapping; -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 GenericOrmJoinTableJoiningStrategy - extends AbstractXmlContextNode - implements OrmJoinTableJoiningStrategy -{ - protected XmlJoinTableMapping resource; - - protected OrmJoinTable joinTable; - - - public GenericOrmJoinTableJoiningStrategy( - OrmJoinTableEnabledRelationshipReference parent, - XmlJoinTableMapping resource) { - super(parent); - this.resource = resource; - } - - - @Override - public OrmJoinTableEnabledRelationshipReference getParent() { - return (OrmJoinTableEnabledRelationshipReference) super.getParent(); - } - - public OrmJoinTableEnabledRelationshipReference getRelationshipReference() { - return this.getParent(); - } - - public OrmRelationshipMapping getRelationshipMapping() { - return this.getRelationshipReference().getRelationshipMapping(); - } - - public void addStrategy() { - if (this.joinTable == null) { - setJoinTable_(getJpaFactory().buildOrmJoinTable(this, this.resource)); - addJoinTableResource(); - } - } - - public void removeStrategy() { - if (this.joinTable != null) { - setJoinTable_(null); - removeJoinTableResource(); - } - } - - - // **************** join table ********************************************* - - public OrmJoinTable getJoinTable() { - return this.joinTable; - } - - public OrmJoinTable addJoinTable() { - addStrategy(); - return this.joinTable; - } - - protected void setJoinTable_(OrmJoinTable newJoinTable) { - OrmJoinTable oldJoinTable = this.joinTable; - this.joinTable = newJoinTable; - this.firePropertyChanged(JOIN_TABLE_PROPERTY, oldJoinTable, newJoinTable); - } - - protected XmlJoinTable addJoinTableResource() { - XmlJoinTable resourceTable = OrmFactory.eINSTANCE.createXmlJoinTableImpl(); - this.resource.setJoinTable(resourceTable); - return resourceTable; - } - - protected void removeJoinTableResource() { - this.resource.setJoinTable(null); - } - - protected boolean mayHaveJoinTable() { - return getJoinTableResource() != null - || getRelationshipReference().mayHaveDefaultJoinTable(); - } - - protected XmlJoinTable getJoinTableResource() { - return this.resource.getJoinTable(); - } - - - // **************** resource -> context ************************************ - - public void update() { - if (mayHaveJoinTable()) { - if (this.joinTable == null) { - setJoinTable_(getJpaFactory().buildOrmJoinTable(this, this.resource)); - } - this.joinTable.update(); - } - else { - if (this.joinTable != null) { - // no resource, so no clean up - setJoinTable_(null); - } - } - } - - - // **************** validation ********************************************* - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - if (this.joinTable != null && getRelationshipMapping().shouldValidateAgainstDatabase()) { - this.joinTable.validate(messages, reporter); - } - } - - public TextRange getValidationTextRange() { - return getRelationshipReference().getValidationTextRange(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmLobConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmLobConverter.java deleted file mode 100644 index c22256504f..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmLobConverter.java +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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 org.eclipse.jpt.core.context.Converter; -import org.eclipse.jpt.core.context.LobConverter; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmConverter; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.resource.orm.XmlBasic; -import org.eclipse.jpt.core.resource.orm.XmlConvertibleMapping; -import org.eclipse.jpt.core.utility.TextRange; - -public class GenericOrmLobConverter extends AbstractXmlContextNode - implements LobConverter, OrmConverter -{ - private XmlConvertibleMapping resourceConvertibleMapping; - - public GenericOrmLobConverter(OrmAttributeMapping parent, XmlBasic resourceBasic) { - super(parent); - this.initialize(resourceBasic); - } - - @Override - public OrmAttributeMapping getParent() { - return (OrmAttributeMapping) super.getParent(); - } - - public String getType() { - return Converter.LOB_CONVERTER; - } - - public void initialize(XmlConvertibleMapping resourceConvertibleMapping) { - this.resourceConvertibleMapping = resourceConvertibleMapping; - } - - public void update() { - } - - public TextRange getValidationTextRange() { - return this.resourceConvertibleMapping.getLobTextRange(); - } - - public void addToResourceModel() { - this.resourceConvertibleMapping.setLob(true); - } - - public void removeFromResourceModel() { - this.resourceConvertibleMapping.setLob(false); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmManyToManyMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmManyToManyMapping.java deleted file mode 100644 index 0fc4407685..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmManyToManyMapping.java +++ /dev/null @@ -1,59 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmManyToManyMapping; -import org.eclipse.jpt.core.context.orm.OrmManyToManyRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmRelationshipReference; -import org.eclipse.jpt.core.resource.orm.Attributes; -import org.eclipse.jpt.core.resource.orm.XmlManyToMany; - -public class GenericOrmManyToManyMapping<T extends XmlManyToMany> - extends AbstractOrmMultiRelationshipMapping<T> - implements OrmManyToManyMapping -{ - public GenericOrmManyToManyMapping(OrmPersistentAttribute parent, T resourceMapping) { - super(parent, resourceMapping); - } - - - @Override - protected OrmRelationshipReference buildRelationshipReference() { - return new GenericOrmManyToManyRelationshipReference(this, this.resourceAttributeMapping); - } - - public int getXmlSequence() { - return 70; - } - - public String getKey() { - return MappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY; - } - - public void initializeOn(OrmAttributeMapping newMapping) { - newMapping.initializeFromOrmManyToManyMapping(this); - } - - public void addToResourceModel(Attributes resourceAttributes) { - resourceAttributes.getManyToManys().add(this.resourceAttributeMapping); - } - - public void removeFromResourceModel(Attributes resourceAttributes) { - resourceAttributes.getManyToManys().remove(this.resourceAttributeMapping); - } - - @Override - public OrmManyToManyRelationshipReference getRelationshipReference() { - return (OrmManyToManyRelationshipReference) super.getRelationshipReference(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmManyToManyRelationshipReference.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmManyToManyRelationshipReference.java deleted file mode 100644 index be0a784f15..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmManyToManyRelationshipReference.java +++ /dev/null @@ -1,185 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 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.List; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.AttributeMapping; -import org.eclipse.jpt.core.context.JoiningStrategy; -import org.eclipse.jpt.core.context.RelationshipMapping; -import org.eclipse.jpt.core.context.orm.OrmJoinTable; -import org.eclipse.jpt.core.context.orm.OrmJoinTableEnabledRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmJoinTableJoiningStrategy; -import org.eclipse.jpt.core.context.orm.OrmManyToManyMapping; -import org.eclipse.jpt.core.context.orm.OrmManyToManyRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmMappedByJoiningStrategy; -import org.eclipse.jpt.core.context.orm.OrmOwnableRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmRelationshipReference; -import org.eclipse.jpt.core.resource.orm.XmlManyToMany; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -public class GenericOrmManyToManyRelationshipReference - extends AbstractOrmRelationshipReference - implements OrmManyToManyRelationshipReference -{ - protected OrmMappedByJoiningStrategy mappedByJoiningStrategy; - - protected OrmJoinTableJoiningStrategy joinTableJoiningStrategy; - - - public GenericOrmManyToManyRelationshipReference( - OrmManyToManyMapping parent, XmlManyToMany resource) { - super(parent, resource); - } - - - @Override - protected void initializeJoiningStrategies() { - this.mappedByJoiningStrategy = buildMappedByJoiningStrategy(); - - // initialize join table last, as the existence of a default join - // table is dependent on the other mechanisms (mappedBy) - // not being specified - this.joinTableJoiningStrategy = buildJoinTableJoiningStrategy(); - } - - protected OrmMappedByJoiningStrategy buildMappedByJoiningStrategy() { - return new GenericOrmMappedByJoiningStrategy(this, getResourceMapping()); - } - - protected OrmJoinTableJoiningStrategy buildJoinTableJoiningStrategy() { - return new GenericOrmJoinTableJoiningStrategy(this, getResourceMapping()); - } - - public void initializeOn(OrmRelationshipReference newRelationshipReference) { - newRelationshipReference.initializeFromOwnableRelationshipReference(this); - newRelationshipReference.initializeFromJoinTableEnabledRelationshipReference(this); - } - - @Override - public void initializeFromOwnableRelationshipReference( - OrmOwnableRelationshipReference oldRelationshipReference) { - super.initializeFromOwnableRelationshipReference(oldRelationshipReference); - this.mappedByJoiningStrategy.setMappedByAttribute( - oldRelationshipReference.getMappedByJoiningStrategy().getMappedByAttribute()); - } - - @Override - public void initializeFromJoinTableEnabledRelationshipReference( - OrmJoinTableEnabledRelationshipReference oldRelationshipReference) { - super.initializeFromJoinTableEnabledRelationshipReference(oldRelationshipReference); - OrmJoinTable oldTable = - oldRelationshipReference.getJoinTableJoiningStrategy().getJoinTable(); - if (oldTable != null) { - this.joinTableJoiningStrategy.addJoinTable().initializeFrom(oldTable); - } - } - - - @Override - public OrmManyToManyMapping getRelationshipMapping() { - return (OrmManyToManyMapping) super.getRelationshipMapping(); - } - - public XmlManyToMany getResourceMapping() { - return getRelationshipMapping().getResourceAttributeMapping(); - } - - public boolean isRelationshipOwner() { - return this.mappedByJoiningStrategy.getMappedByAttribute() == null; - } - - public boolean isOwnedBy(RelationshipMapping mapping) { - return this.mappedByJoiningStrategy.relationshipIsOwnedBy(mapping); - } - - @Override - protected JoiningStrategy calculatePredominantJoiningStrategy() { - if (this.mappedByJoiningStrategy.getMappedByAttribute() != null) { - return this.mappedByJoiningStrategy; - } - else { - return this.joinTableJoiningStrategy; - } - } - - - // **************** mapped by ********************************************** - - public OrmMappedByJoiningStrategy getMappedByJoiningStrategy() { - return this.mappedByJoiningStrategy; - } - - public boolean usesMappedByJoiningStrategy() { - return getPredominantJoiningStrategy() == this.mappedByJoiningStrategy; - } - - public void setMappedByJoiningStrategy() { - this.mappedByJoiningStrategy.addStrategy(); - this.joinTableJoiningStrategy.removeStrategy(); - } - - public void unsetMappedByJoiningStrategy() { - this.mappedByJoiningStrategy.removeStrategy(); - } - - public boolean mayBeMappedBy(AttributeMapping mappedByMapping) { - return mappedByMapping.getKey() == MappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY; - } - - - // **************** join table joining strategy *************************** - - public OrmJoinTableJoiningStrategy getJoinTableJoiningStrategy() { - return this.joinTableJoiningStrategy; - } - - public boolean usesJoinTableJoiningStrategy() { - return getPredominantJoiningStrategy() == this.joinTableJoiningStrategy; - } - - public void setJoinTableJoiningStrategy() { - // join table is the default strategy, so no need to add to resource - this.mappedByJoiningStrategy.removeStrategy(); - } - - public void unsetJoinTableJoiningStrategy() { - this.joinTableJoiningStrategy.removeStrategy(); - } - - public boolean mayHaveDefaultJoinTable() { - return getMappedByJoiningStrategy().getMappedByAttribute() == null; - } - - - // **************** resource => context ************************************ - - @Override - protected void updateJoiningStrategies() { - this.mappedByJoiningStrategy.update(); - - // update join table last, as the existence of a default join - // table is dependent on the other mechanisms (mappedBy) - // not being specified - this.joinTableJoiningStrategy.update(); - } - - - // **************** Validation ********************************************* - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - this.mappedByJoiningStrategy.validate(messages, reporter); - this.joinTableJoiningStrategy.validate(messages, reporter); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmManyToOneMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmManyToOneMapping.java deleted file mode 100644 index 413333000e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmManyToOneMapping.java +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmManyToOneMapping; -import org.eclipse.jpt.core.context.orm.OrmManyToOneRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmRelationshipReference; -import org.eclipse.jpt.core.resource.orm.Attributes; -import org.eclipse.jpt.core.resource.orm.XmlManyToOne; - - -public class GenericOrmManyToOneMapping<T extends XmlManyToOne> - extends AbstractOrmSingleRelationshipMapping<T> - implements OrmManyToOneMapping -{ - public GenericOrmManyToOneMapping(OrmPersistentAttribute parent, T resourceMapping) { - super(parent, resourceMapping); - } - - - @Override - protected OrmRelationshipReference buildRelationshipReference() { - return new GenericOrmManyToOneRelationshipReference(this, this.resourceAttributeMapping); - } - - public int getXmlSequence() { - return 40; - } - - public String getKey() { - return MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY; - } - - public void initializeOn(OrmAttributeMapping newMapping) { - newMapping.initializeFromOrmManyToOneMapping(this); - } - - public void addToResourceModel(Attributes resourceAttributes) { - resourceAttributes.getManyToOnes().add(this.resourceAttributeMapping); - } - - public void removeFromResourceModel(Attributes resourceAttributes) { - resourceAttributes.getManyToOnes().remove(this.resourceAttributeMapping); - } - - @Override - public OrmManyToOneRelationshipReference getRelationshipReference() { - return (OrmManyToOneRelationshipReference) super.getRelationshipReference(); - } - - @Override - public boolean isOverridableAssociationMapping() { - return true; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmManyToOneRelationshipReference.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmManyToOneRelationshipReference.java deleted file mode 100644 index 46104045a0..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmManyToOneRelationshipReference.java +++ /dev/null @@ -1,128 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 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.List; -import org.eclipse.jpt.core.context.JoinColumn; -import org.eclipse.jpt.core.context.JoiningStrategy; -import org.eclipse.jpt.core.context.RelationshipMapping; -import org.eclipse.jpt.core.context.orm.OrmJoinColumn; -import org.eclipse.jpt.core.context.orm.OrmJoinColumnEnabledRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmJoinColumnJoiningStrategy; -import org.eclipse.jpt.core.context.orm.OrmManyToOneMapping; -import org.eclipse.jpt.core.context.orm.OrmManyToOneRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmRelationshipReference; -import org.eclipse.jpt.core.resource.orm.XmlManyToOne; -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 class GenericOrmManyToOneRelationshipReference - extends AbstractOrmRelationshipReference - implements OrmManyToOneRelationshipReference -{ - protected OrmJoinColumnJoiningStrategy joinColumnJoiningStrategy; - - - public GenericOrmManyToOneRelationshipReference( - OrmManyToOneMapping parent, XmlManyToOne resource) { - super(parent, resource); - } - - - @Override - protected void initializeJoiningStrategies() { - this.joinColumnJoiningStrategy = buildJoinColumnJoiningStrategy(); - } - - protected OrmJoinColumnJoiningStrategy buildJoinColumnJoiningStrategy() { - return new GenericOrmJoinColumnJoiningStrategy(this, getResourceMapping()); - } - - public void initializeOn(OrmRelationshipReference newRelationshipReference) { - newRelationshipReference.initializeFromJoinColumnEnabledRelationshipReference(this); - } - - @Override - public void initializeFromJoinColumnEnabledRelationshipReference( - OrmJoinColumnEnabledRelationshipReference oldRelationshipReference) { - int index = 0; - for (JoinColumn joinColumn : - CollectionTools.iterable( - oldRelationshipReference.getJoinColumnJoiningStrategy().specifiedJoinColumns())) { - OrmJoinColumn newJoinColumn = getJoinColumnJoiningStrategy().addSpecifiedJoinColumn(index++); - newJoinColumn.initializeFrom(joinColumn); - } - } - - @Override - public OrmManyToOneMapping getRelationshipMapping() { - return (OrmManyToOneMapping) getParent(); - } - - public XmlManyToOne getResourceMapping() { - return getRelationshipMapping().getResourceAttributeMapping(); - } - - public boolean isRelationshipOwner() { - return true; - } - - public boolean isOwnedBy(RelationshipMapping mapping) { - return false; - } - - @Override - protected JoiningStrategy calculatePredominantJoiningStrategy() { - // the only joining strategy - return this.joinColumnJoiningStrategy; - } - - - // **************** join columns ******************************************* - - public OrmJoinColumnJoiningStrategy getJoinColumnJoiningStrategy() { - return this.joinColumnJoiningStrategy; - } - - public boolean usesJoinColumnJoiningStrategy() { - return getPredominantJoiningStrategy() == this.joinColumnJoiningStrategy; - } - - public void setJoinColumnJoiningStrategy() { - // join columns are default (only strategy in fact) so no need to add to resource - } - - public void unsetJoinColumnJoiningStrategy() { - this.joinColumnJoiningStrategy.removeStrategy(); - } - - public boolean mayHaveDefaultJoinColumn() { - return true; - } - - - // **************** resource => context ************************************ - - @Override - protected void updateJoiningStrategies() { - this.joinColumnJoiningStrategy.update(); - } - - - // **************** Validation ********************************************* - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - this.joinColumnJoiningStrategy.validate(messages, reporter); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmMappedByJoiningStrategy.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmMappedByJoiningStrategy.java deleted file mode 100644 index 204b062d7f..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmMappedByJoiningStrategy.java +++ /dev/null @@ -1,177 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 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.jpt.core.context.AttributeMapping; -import org.eclipse.jpt.core.context.Entity; -import org.eclipse.jpt.core.context.PersistentAttribute; -import org.eclipse.jpt.core.context.RelationshipMapping; -import org.eclipse.jpt.core.context.orm.OrmMappedByJoiningStrategy; -import org.eclipse.jpt.core.context.orm.OrmOwnableRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmRelationshipMapping; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.orm.XmlMappedByMapping; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.internal.StringTools; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -public class GenericOrmMappedByJoiningStrategy - extends AbstractXmlContextNode - implements OrmMappedByJoiningStrategy -{ - protected XmlMappedByMapping resource; - - protected String mappedByAttribute; - - - public GenericOrmMappedByJoiningStrategy( - OrmOwnableRelationshipReference parent, - XmlMappedByMapping resource) { - super(parent); - this.resource = resource; - this.mappedByAttribute = this.resource.getMappedBy(); - } - - - @Override - public OrmOwnableRelationshipReference getParent() { - return (OrmOwnableRelationshipReference) super.getParent(); - } - - public OrmOwnableRelationshipReference getRelationshipReference() { - return this.getParent(); - } - - public OrmRelationshipMapping getRelationshipMapping() { - return getParent().getRelationshipMapping(); - } - - public boolean relationshipIsOwnedBy(RelationshipMapping otherMapping) { - String thisEntity = - (getRelationshipMapping().getEntity()) == null ? - null : getRelationshipMapping().getEntity().getName(); - String targetEntity = - (getRelationshipMapping().getResolvedTargetEntity() == null) ? - null : getRelationshipMapping().getResolvedTargetEntity().getName(); - return StringTools.stringsAreEqual( - thisEntity, - targetEntity) - && StringTools.stringsAreEqual( - getMappedByAttribute(), - otherMapping.getName()); - } - - public String getMappedByAttribute() { - return this.mappedByAttribute; - } - - public void setMappedByAttribute(String newMappedByAttribute) { - String oldMappedByAttribute = this.mappedByAttribute; - this.mappedByAttribute = newMappedByAttribute; - this.resource.setMappedBy(newMappedByAttribute); - firePropertyChanged(MAPPED_BY_ATTRIBUTE_PROPERTY, oldMappedByAttribute, newMappedByAttribute); - } - - protected void setMappedByAttribute_(String newMappedByAttribute) { - String oldMappedByAttribute = this.mappedByAttribute; - this.mappedByAttribute = newMappedByAttribute; - firePropertyChanged(MAPPED_BY_ATTRIBUTE_PROPERTY, oldMappedByAttribute, newMappedByAttribute); - } - - public void addStrategy() { - if (this.mappedByAttribute == null) { - setMappedByAttribute(""); - } - } - - public void removeStrategy() { - if (this.mappedByAttribute != null) { - setMappedByAttribute(null); - } - } - - public void update() { - setMappedByAttribute_(this.resource.getMappedBy()); - } - - public Iterator<String> candidateMappedByAttributeNames() { - return getRelationshipMapping().allTargetEntityAttributeNames(); - } - - - // **************** validation ********************************************* - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - - if (getMappedByAttribute() == null) { - return; - } - - Entity targetEntity = this.getRelationshipMapping().getResolvedTargetEntity(); - if (targetEntity == null) { - return; // null target entity is validated elsewhere - } - - PersistentAttribute attribute = targetEntity.getPersistentType().resolveAttribute(this.mappedByAttribute); - - if (attribute == null) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.MAPPING_UNRESOLVED_MAPPED_BY, - new String[] {this.mappedByAttribute}, - this, - this.getValidationTextRange() - ) - ); - return; - } - - AttributeMapping mappedByMapping = attribute.getMapping(); - if ( ! this.getRelationshipReference().mayBeMappedBy(mappedByMapping)) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.MAPPING_INVALID_MAPPED_BY, - new String[] {this.mappedByAttribute}, - this, - this.getValidationTextRange() - ) - ); - return; - } - - // if mappedByMapping is not a relationship owner, then it should have - // been flagged in above rule (mappedByIsValid) - if (! ((RelationshipMapping) mappedByMapping).isRelationshipOwner()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.MAPPING_MAPPED_BY_ON_BOTH_SIDES, - this, - this.getValidationTextRange() - ) - ); - } - } - - public TextRange getValidationTextRange() { - TextRange mappedByTextRange = this.resource.getMappedByTextRange(); - return mappedByTextRange != null ? mappedByTextRange : getRelationshipReference().getValidationTextRange(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmMappedSuperclass.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmMappedSuperclass.java deleted file mode 100644 index 097a4d0a66..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmMappedSuperclass.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.jpt.core.context.orm.OrmPersistentType; -import org.eclipse.jpt.core.resource.orm.XmlMappedSuperclass; - - -public class GenericOrmMappedSuperclass extends AbstractOrmMappedSuperclass -{ - - public GenericOrmMappedSuperclass(OrmPersistentType parent, XmlMappedSuperclass resourceMapping) { - super(parent, resourceMapping); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmNamedNativeQuery.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmNamedNativeQuery.java deleted file mode 100644 index b0f8287712..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmNamedNativeQuery.java +++ /dev/null @@ -1,72 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.jpt.core.context.NamedNativeQuery; -import org.eclipse.jpt.core.context.XmlContextNode; -import org.eclipse.jpt.core.context.orm.OrmNamedNativeQuery; -import org.eclipse.jpt.core.resource.orm.XmlNamedNativeQuery; - - -public class GenericOrmNamedNativeQuery extends AbstractOrmQuery<XmlNamedNativeQuery> - implements OrmNamedNativeQuery -{ - - protected String resultClass; - - protected String resultSetMapping; - - - public GenericOrmNamedNativeQuery(XmlContextNode parent, XmlNamedNativeQuery resourceQuery) { - super(parent, resourceQuery); - } - - public char getResultClassEnclosingTypeSeparator() { - return '$'; - } - - public String getResultClass() { - return this.resultClass; - } - - public void setResultClass(String newResultClass) { - String oldResultClass = this.resultClass; - this.resultClass = newResultClass; - getResourceQuery().setResultClass(newResultClass); - firePropertyChanged(NamedNativeQuery.RESULT_CLASS_PROPERTY, oldResultClass, newResultClass); - } - - public String getResultSetMapping() { - return this.resultSetMapping; - } - - public void setResultSetMapping(String newResultSetMapping) { - String oldResultSetMapping = this.resultSetMapping; - this.resultSetMapping = newResultSetMapping; - getResourceQuery().setResultSetMapping(newResultSetMapping); - firePropertyChanged(NamedNativeQuery.RESULT_SET_MAPPING_PROPERTY, oldResultSetMapping, newResultSetMapping); - } - - - @Override - protected void initialize(XmlNamedNativeQuery resourceQuery) { - super.initialize(resourceQuery); - this.resultClass = resourceQuery.getResultClass(); - this.resultSetMapping = resourceQuery.getResultSetMapping(); - } - - @Override - public void update(XmlNamedNativeQuery resourceQuery) { - super.update(resourceQuery); - this.setResultClass(resourceQuery.getResultClass()); - this.setResultSetMapping(resourceQuery.getResultSetMapping()); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmNamedQuery.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmNamedQuery.java deleted file mode 100644 index 399c45b201..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmNamedQuery.java +++ /dev/null @@ -1,24 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2008 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 org.eclipse.jpt.core.context.XmlContextNode; -import org.eclipse.jpt.core.context.orm.OrmNamedQuery; -import org.eclipse.jpt.core.resource.orm.XmlNamedQuery; - - -public class GenericOrmNamedQuery extends AbstractOrmQuery<XmlNamedQuery> implements OrmNamedQuery -{ - - public GenericOrmNamedQuery(XmlContextNode parent, XmlNamedQuery resourceNamedQuery) { - super(parent, resourceNamedQuery); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmNullAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmNullAttributeMapping.java deleted file mode 100644 index a2b24f7de7..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmNullAttributeMapping.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.resource.orm.Attributes; -import org.eclipse.jpt.core.resource.orm.XmlNullAttributeMapping; - - -public class GenericOrmNullAttributeMapping - extends AbstractOrmAttributeMapping<XmlNullAttributeMapping> -{ - - public GenericOrmNullAttributeMapping(OrmPersistentAttribute parent, XmlNullAttributeMapping resourceMapping) { - super(parent, resourceMapping); - } - - public int getXmlSequence() { - return -1; - } - - public void initializeOn(OrmAttributeMapping newMapping) { - newMapping.initializeFromOrmAttributeMapping(this); - } - - public String getKey() { - return null; - } - - public void addToResourceModel(Attributes resourceAttributes) { - throw new UnsupportedOperationException(); - } - - public void removeFromResourceModel(Attributes resourceAttributes) { - throw new UnsupportedOperationException(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmNullConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmNullConverter.java deleted file mode 100644 index 54a6312e02..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmNullConverter.java +++ /dev/null @@ -1,50 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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 org.eclipse.jpt.core.context.Converter; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmConverter; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.utility.TextRange; - -public class GenericOrmNullConverter extends AbstractXmlContextNode - implements OrmConverter -{ - - public GenericOrmNullConverter(OrmAttributeMapping parent) { - super(parent); - } - - @Override - public OrmAttributeMapping getParent() { - return (OrmAttributeMapping) super.getParent(); - } - - public String getType() { - return Converter.NO_CONVERTER; - } - - public TextRange getValidationTextRange() { - return null; - } - - public void update() { - // do nothing, null implementation - } - - public void addToResourceModel() { - // do nothing, null implementation - } - - public void removeFromResourceModel() { - // do nothing, null implementation - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmOneToManyMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmOneToManyMapping.java deleted file mode 100644 index ea7942295e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmOneToManyMapping.java +++ /dev/null @@ -1,60 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmOneToManyMapping; -import org.eclipse.jpt.core.context.orm.OrmOneToManyRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmRelationshipReference; -import org.eclipse.jpt.core.resource.orm.Attributes; -import org.eclipse.jpt.core.resource.orm.XmlOneToMany; - - -public class GenericOrmOneToManyMapping<T extends XmlOneToMany> - extends AbstractOrmMultiRelationshipMapping<T> - implements OrmOneToManyMapping -{ - public GenericOrmOneToManyMapping(OrmPersistentAttribute parent, T resourceMapping) { - super(parent, resourceMapping); - } - - - @Override - protected OrmRelationshipReference buildRelationshipReference() { - return new GenericOrmOneToManyRelationshipReference(this, this.resourceAttributeMapping); - } - - public int getXmlSequence() { - return 50; - } - - public String getKey() { - return MappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY; - } - - public void initializeOn(OrmAttributeMapping newMapping) { - newMapping.initializeFromOrmOneToManyMapping(this); - } - - public void addToResourceModel(Attributes resourceAttributes) { - resourceAttributes.getOneToManys().add(this.resourceAttributeMapping); - } - - public void removeFromResourceModel(Attributes resourceAttributes) { - resourceAttributes.getOneToManys().remove(this.resourceAttributeMapping); - } - - @Override - public OrmOneToManyRelationshipReference getRelationshipReference() { - return (OrmOneToManyRelationshipReference) super.getRelationshipReference(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmOneToManyRelationshipReference.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmOneToManyRelationshipReference.java deleted file mode 100644 index fe567519de..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmOneToManyRelationshipReference.java +++ /dev/null @@ -1,184 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 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.List; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.AttributeMapping; -import org.eclipse.jpt.core.context.JoiningStrategy; -import org.eclipse.jpt.core.context.RelationshipMapping; -import org.eclipse.jpt.core.context.orm.OrmJoinTable; -import org.eclipse.jpt.core.context.orm.OrmJoinTableEnabledRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmJoinTableJoiningStrategy; -import org.eclipse.jpt.core.context.orm.OrmMappedByJoiningStrategy; -import org.eclipse.jpt.core.context.orm.OrmOneToManyMapping; -import org.eclipse.jpt.core.context.orm.OrmOneToManyRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmOwnableRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmRelationshipReference; -import org.eclipse.jpt.core.resource.orm.XmlOneToMany; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -public class GenericOrmOneToManyRelationshipReference - extends AbstractOrmRelationshipReference - implements OrmOneToManyRelationshipReference -{ - protected OrmMappedByJoiningStrategy mappedByJoiningStrategy; - - protected OrmJoinTableJoiningStrategy joinTableJoiningStrategy; - - - public GenericOrmOneToManyRelationshipReference( - OrmOneToManyMapping parent, XmlOneToMany resource) { - super(parent, resource); - } - - - @Override - protected void initializeJoiningStrategies() { - this.mappedByJoiningStrategy = buildMappedByJoiningStrategy(); - - // initialize join table last, as the existence of a default join - // table is dependent on the other mechanisms (mappedBy) - // not being specified - this.joinTableJoiningStrategy = buildJoinTableJoiningStrategy(); - } - - protected OrmMappedByJoiningStrategy buildMappedByJoiningStrategy() { - return new GenericOrmMappedByJoiningStrategy(this, getResourceMapping()); - } - - protected OrmJoinTableJoiningStrategy buildJoinTableJoiningStrategy() { - return new GenericOrmJoinTableJoiningStrategy(this, getResourceMapping()); - } - - public void initializeOn(OrmRelationshipReference newRelationshipReference) { - newRelationshipReference.initializeFromOwnableRelationshipReference(this); - newRelationshipReference.initializeFromJoinTableEnabledRelationshipReference(this); - } - - @Override - public void initializeFromOwnableRelationshipReference( - OrmOwnableRelationshipReference oldRelationshipReference) { - super.initializeFromOwnableRelationshipReference(oldRelationshipReference); - this.mappedByJoiningStrategy.setMappedByAttribute( - oldRelationshipReference.getMappedByJoiningStrategy().getMappedByAttribute()); - } - - @Override - public void initializeFromJoinTableEnabledRelationshipReference( - OrmJoinTableEnabledRelationshipReference oldRelationshipReference) { - super.initializeFromJoinTableEnabledRelationshipReference(oldRelationshipReference); - OrmJoinTable oldTable = - oldRelationshipReference.getJoinTableJoiningStrategy().getJoinTable(); - if (oldTable != null) { - this.joinTableJoiningStrategy.addJoinTable().initializeFrom(oldTable); - } - } - - @Override - public OrmOneToManyMapping getRelationshipMapping() { - return (OrmOneToManyMapping) getParent(); - } - - public XmlOneToMany getResourceMapping() { - return getRelationshipMapping().getResourceAttributeMapping(); - } - - public boolean isRelationshipOwner() { - return this.getMappedByJoiningStrategy().getMappedByAttribute() == null; - } - - public boolean isOwnedBy(RelationshipMapping mapping) { - return this.mappedByJoiningStrategy.relationshipIsOwnedBy(mapping); - } - - @Override - protected JoiningStrategy calculatePredominantJoiningStrategy() { - if (this.mappedByJoiningStrategy.getMappedByAttribute() != null) { - return this.mappedByJoiningStrategy; - } - else { - return this.joinTableJoiningStrategy; - } - } - - - // **************** mapped by ********************************************** - - public OrmMappedByJoiningStrategy getMappedByJoiningStrategy() { - return this.mappedByJoiningStrategy; - } - - public void setMappedByJoiningStrategy() { - this.mappedByJoiningStrategy.addStrategy(); - this.joinTableJoiningStrategy.removeStrategy(); - } - - public void unsetMappedByJoiningStrategy() { - this.mappedByJoiningStrategy.removeStrategy(); - } - - public boolean usesMappedByJoiningStrategy() { - return this.getPredominantJoiningStrategy() == this.mappedByJoiningStrategy; - } - - public boolean mayBeMappedBy(AttributeMapping mappedByMapping) { - return mappedByMapping.getKey() == MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY; - } - - - // **************** join table ********************************************* - - public OrmJoinTableJoiningStrategy getJoinTableJoiningStrategy() { - return this.joinTableJoiningStrategy; - } - - public boolean usesJoinTableJoiningStrategy() { - return getPredominantJoiningStrategy() == this.joinTableJoiningStrategy; - } - - public void setJoinTableJoiningStrategy() { - // join table is default, so no need to add to resource - this.mappedByJoiningStrategy.removeStrategy(); - } - - public void unsetJoinTableJoiningStrategy() { - this.joinTableJoiningStrategy.removeStrategy(); - } - - public boolean mayHaveDefaultJoinTable() { - return this.mappedByJoiningStrategy.getMappedByAttribute() == null; - } - - - // **************** resource => context ************************************ - - @Override - protected void updateJoiningStrategies() { - this.mappedByJoiningStrategy.update(); - - // update join table last, as the existence of a default join - // table is dependent on the other mechanisms (mappedBy) - // not being specified - this.joinTableJoiningStrategy.update(); - } - - - // **************** Validation ********************************************* - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - this.mappedByJoiningStrategy.validate(messages, reporter); - this.joinTableJoiningStrategy.validate(messages, reporter); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmOneToOneMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmOneToOneMapping.java deleted file mode 100644 index 12e3b6e7b8..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmOneToOneMapping.java +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmOneToOneMapping; -import org.eclipse.jpt.core.context.orm.OrmOneToOneRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmRelationshipReference; -import org.eclipse.jpt.core.resource.orm.Attributes; -import org.eclipse.jpt.core.resource.orm.XmlOneToOne; - - -public class GenericOrmOneToOneMapping<T extends XmlOneToOne> - extends AbstractOrmSingleRelationshipMapping<T> - implements OrmOneToOneMapping -{ - public GenericOrmOneToOneMapping(OrmPersistentAttribute parent, T resourceMapping) { - super(parent, resourceMapping); - } - - - @Override - protected OrmRelationshipReference buildRelationshipReference() { - return new GenericOrmOneToOneRelationshipReference(this, this.resourceAttributeMapping); - } - - public int getXmlSequence() { - return 60; - } - - public String getKey() { - return MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY; - } - - public void initializeOn(OrmAttributeMapping newMapping) { - newMapping.initializeFromOrmOneToOneMapping(this); - } - - public void addToResourceModel(Attributes resourceAttributes) { - resourceAttributes.getOneToOnes().add(this.resourceAttributeMapping); - } - - public void removeFromResourceModel(Attributes resourceAttributes) { - resourceAttributes.getOneToOnes().remove(this.resourceAttributeMapping); - } - - @Override - public OrmOneToOneRelationshipReference getRelationshipReference() { - return (OrmOneToOneRelationshipReference) super.getRelationshipReference(); - } - - @Override - public boolean isOverridableAssociationMapping() { - return true; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmOneToOneRelationshipReference.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmOneToOneRelationshipReference.java deleted file mode 100644 index 31b766c09f..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmOneToOneRelationshipReference.java +++ /dev/null @@ -1,236 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 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.List; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.AttributeMapping; -import org.eclipse.jpt.core.context.JoinColumn; -import org.eclipse.jpt.core.context.JoiningStrategy; -import org.eclipse.jpt.core.context.RelationshipMapping; -import org.eclipse.jpt.core.context.orm.OrmJoinColumn; -import org.eclipse.jpt.core.context.orm.OrmJoinColumnEnabledRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmJoinColumnJoiningStrategy; -import org.eclipse.jpt.core.context.orm.OrmJoinTableEnabledRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmMappedByJoiningStrategy; -import org.eclipse.jpt.core.context.orm.OrmOneToOneMapping; -import org.eclipse.jpt.core.context.orm.OrmOneToOneRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmOwnableRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmPrimaryKeyJoinColumnJoiningStrategy; -import org.eclipse.jpt.core.context.orm.OrmRelationshipReference; -import org.eclipse.jpt.core.resource.orm.XmlOneToOne; -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 class GenericOrmOneToOneRelationshipReference - extends AbstractOrmRelationshipReference - implements OrmOneToOneRelationshipReference -{ - protected OrmMappedByJoiningStrategy mappedByJoiningStrategy; - - protected OrmJoinColumnJoiningStrategy joinColumnJoiningStrategy; - - protected OrmPrimaryKeyJoinColumnJoiningStrategy primaryKeyJoinColumnJoiningStrategy; - - - public GenericOrmOneToOneRelationshipReference( - OrmOneToOneMapping parent, XmlOneToOne resource) { - super(parent, resource); - } - - - @Override - protected void initializeJoiningStrategies() { - this.mappedByJoiningStrategy = buildMappedByJoiningStrategy(); - this.primaryKeyJoinColumnJoiningStrategy = buildPrimaryKeyJoinColumnJoiningStrategy(); - - // initialize join columns last, as the existence of a default join - // column is dependent on the other mechanisms (mappedBy, join table) - // not being specified - this.joinColumnJoiningStrategy = buildJoinColumnJoiningStrategy(); - } - - protected OrmMappedByJoiningStrategy buildMappedByJoiningStrategy() { - return new GenericOrmMappedByJoiningStrategy(this, getResourceMapping()); - } - - protected OrmJoinColumnJoiningStrategy buildJoinColumnJoiningStrategy() { - return new GenericOrmJoinColumnJoiningStrategy(this, getResourceMapping()); - } - - protected OrmPrimaryKeyJoinColumnJoiningStrategy buildPrimaryKeyJoinColumnJoiningStrategy() { - return new GenericOrmPrimaryKeyJoinColumnJoiningStrategy(this, getResourceMapping()); - } - - public void initializeOn(OrmRelationshipReference newRelationshipReference) { - newRelationshipReference.initializeFromOwnableRelationshipReference(this); - newRelationshipReference.initializeFromJoinColumnEnabledRelationshipReference(this); - // no other primary key reference as of yet, so no initialization based on pk join columns - } - - @Override - public void initializeFromOwnableRelationshipReference( - OrmOwnableRelationshipReference oldRelationshipReference) { - this.mappedByJoiningStrategy.setMappedByAttribute( - oldRelationshipReference.getMappedByJoiningStrategy().getMappedByAttribute()); - } - - @Override - public void initializeFromJoinColumnEnabledRelationshipReference( - OrmJoinColumnEnabledRelationshipReference oldRelationshipReference) { - int index = 0; - for (JoinColumn joinColumn : - CollectionTools.iterable( - oldRelationshipReference.getJoinColumnJoiningStrategy().specifiedJoinColumns())) { - OrmJoinColumn newJoinColumn = getJoinColumnJoiningStrategy().addSpecifiedJoinColumn(index++); - newJoinColumn.initializeFrom(joinColumn); - } - } - - @Override - public void initializeFromJoinTableEnabledRelationshipReference( - OrmJoinTableEnabledRelationshipReference oldRelationshipReference) { - // TODO no join table context model support as of yet - - } - - @Override - public OrmOneToOneMapping getRelationshipMapping() { - return (OrmOneToOneMapping) getParent(); - } - - public XmlOneToOne getResourceMapping() { - return getRelationshipMapping().getResourceAttributeMapping(); - } - - public boolean isRelationshipOwner() { - return this.mappedByJoiningStrategy.getMappedByAttribute() == null; - } - - public boolean isOwnedBy(RelationshipMapping mapping) { - return this.mappedByJoiningStrategy.relationshipIsOwnedBy(mapping); - } - - @Override - protected JoiningStrategy calculatePredominantJoiningStrategy() { - if (this.mappedByJoiningStrategy.getMappedByAttribute() != null) { - return this.mappedByJoiningStrategy; - } - else if (this.primaryKeyJoinColumnJoiningStrategy.primaryKeyJoinColumnsSize() > 0) { - return this.primaryKeyJoinColumnJoiningStrategy; - } - else { - return this.joinColumnJoiningStrategy; - } - } - - - // **************** mapped by ********************************************** - - public OrmMappedByJoiningStrategy getMappedByJoiningStrategy() { - return this.mappedByJoiningStrategy; - } - - public boolean usesMappedByJoiningStrategy() { - return getPredominantJoiningStrategy() == this.mappedByJoiningStrategy; - } - - public void setMappedByJoiningStrategy() { - this.mappedByJoiningStrategy.addStrategy(); - this.joinColumnJoiningStrategy.removeStrategy(); - this.primaryKeyJoinColumnJoiningStrategy.removeStrategy(); - } - - public void unsetMappedByJoiningStrategy() { - this.mappedByJoiningStrategy.removeStrategy(); - } - - public boolean mayBeMappedBy(AttributeMapping mappedByMapping) { - return mappedByMapping.getKey() == MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY; - } - - - // **************** join columns ******************************************* - - public OrmJoinColumnJoiningStrategy getJoinColumnJoiningStrategy() { - return this.joinColumnJoiningStrategy; - } - - public boolean usesJoinColumnJoiningStrategy() { - return getPredominantJoiningStrategy() == this.joinColumnJoiningStrategy; - } - - public void setJoinColumnJoiningStrategy() { - this.mappedByJoiningStrategy.removeStrategy(); - this.primaryKeyJoinColumnJoiningStrategy.removeStrategy(); - // join columns are default, so no need to add annotations - } - - public void unsetJoinColumnJoiningStrategy() { - this.joinColumnJoiningStrategy.removeStrategy(); - } - - public boolean mayHaveDefaultJoinColumn() { - return this.getMappedByJoiningStrategy().getMappedByAttribute() == null - && this.getPrimaryKeyJoinColumnJoiningStrategy().primaryKeyJoinColumnsSize() == 0; - } - - - // **************** primary key join columns ******************************* - - public OrmPrimaryKeyJoinColumnJoiningStrategy getPrimaryKeyJoinColumnJoiningStrategy() { - return this.primaryKeyJoinColumnJoiningStrategy; - } - - public boolean usesPrimaryKeyJoinColumnJoiningStrategy() { - return getPredominantJoiningStrategy() == this.primaryKeyJoinColumnJoiningStrategy; - } - - public void setPrimaryKeyJoinColumnJoiningStrategy() { - this.primaryKeyJoinColumnJoiningStrategy.addStrategy(); - this.mappedByJoiningStrategy.removeStrategy(); - this.joinColumnJoiningStrategy.removeStrategy(); - } - - public void unsetPrimaryKeyJoinColumnJoiningStrategy() { - this.primaryKeyJoinColumnJoiningStrategy.removeStrategy(); - } - - public boolean mayHaveDefaultPrimaryKeyJoinColumn() { - return false; - } - - - // **************** resource => context ************************************ - - @Override - protected void updateJoiningStrategies() { - this.mappedByJoiningStrategy.update(); - this.primaryKeyJoinColumnJoiningStrategy.update(); - - // update join columns last, as the existence of a default join - // column is dependent on the other mechanisms (mappedBy, join table) - // not being specified - this.joinColumnJoiningStrategy.update(); - } - - - // **************** Validation ********************************************* - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - this.mappedByJoiningStrategy.validate(messages, reporter); - this.primaryKeyJoinColumnJoiningStrategy.validate(messages, reporter); - this.joinColumnJoiningStrategy.validate(messages, reporter); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmPersistentAttribute.java deleted file mode 100644 index 847d875abc..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmPersistentAttribute.java +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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.List; - -import org.eclipse.jpt.core.context.AccessType; -import org.eclipse.jpt.core.context.java.JavaPersistentType; -import org.eclipse.jpt.core.context.orm.OrmPersistentType; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - - -public class GenericOrmPersistentAttribute extends AbstractOrmPersistentAttribute -{ - - public GenericOrmPersistentAttribute(OrmPersistentType parent, Owner owner, XmlAttributeMapping resourceMapping) { - super(parent, owner, resourceMapping); - } - - //****************** AccessHolder implementation ******************* - - /** - * GenericOrmPersistentAttribute does not support specified access (no access element in 1.0), so we return null - */ - public AccessType getSpecifiedAccess() { - return null; - } - - public void setSpecifiedAccess(AccessType newSpecifiedAccess) { - throw new UnsupportedOperationException("specifiedAccess is not supported for GenericOrmPersistentAttribute"); //$NON-NLS-1$ - } - - @Override - protected void validateAttribute(List<IMessage> messages) { - super.validateAttribute(messages); - if (this.javaPersistentAttribute != null) { - JavaPersistentType javaPersistentType = getPersistentType().getJavaPersistentType(); - if (javaPersistentType != null && javaPersistentType.getAttributeNamed(this.javaPersistentAttribute.getName()) == null) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.NORMAL_SEVERITY, - JpaValidationMessages.PERSISTENT_ATTRIBUTE_INHERITED_ATTRIBUTES_NOT_SUPPORTED, - new String[] {this.getName(), this.getPersistentType().getMapping().getClass_()}, - this.attributeMapping, - this.attributeMapping.getNameTextRange() - ) - ); - } - } - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmPersistentType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmPersistentType.java deleted file mode 100644 index 25838c9966..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmPersistentType.java +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.jpt.core.context.orm.EntityMappings; -import org.eclipse.jpt.core.resource.orm.Attributes; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlTypeMapping; - -public class GenericOrmPersistentType - extends AbstractOrmPersistentType -{ - public GenericOrmPersistentType(EntityMappings parent, XmlTypeMapping resourceMapping) { - super(parent, resourceMapping); - } - - @Override - protected Attributes createResourceAttributes() { - return OrmFactory.eINSTANCE.createAttributes(); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmPrimaryKeyJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmPrimaryKeyJoinColumn.java deleted file mode 100644 index 94d5f43c7f..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmPrimaryKeyJoinColumn.java +++ /dev/null @@ -1,150 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.jpt.core.context.PrimaryKeyJoinColumn; -import org.eclipse.jpt.core.context.XmlContextNode; -import org.eclipse.jpt.core.context.orm.OrmBaseJoinColumn; -import org.eclipse.jpt.core.context.orm.OrmPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.resource.orm.XmlPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Column; -import org.eclipse.jpt.db.Table; - -public class GenericOrmPrimaryKeyJoinColumn extends AbstractOrmNamedColumn<XmlPrimaryKeyJoinColumn> - implements OrmPrimaryKeyJoinColumn -{ - protected String specifiedReferencedColumnName; - - protected String defaultReferencedColumnName; - - protected XmlPrimaryKeyJoinColumn resourcePkJoinColumn; - - public GenericOrmPrimaryKeyJoinColumn(XmlContextNode parent, OrmBaseJoinColumn.Owner owner, XmlPrimaryKeyJoinColumn resourcePkJoinColumn) { - super(parent, owner); - this.initialize(resourcePkJoinColumn); - } - - public void initializeFrom(PrimaryKeyJoinColumn oldPkJoinColumn) { - super.initializeFrom(oldPkJoinColumn); - setSpecifiedReferencedColumnName(oldPkJoinColumn.getSpecifiedReferencedColumnName()); - } - - @Override - protected XmlPrimaryKeyJoinColumn getResourceColumn() { - return this.resourcePkJoinColumn; - } - - @Override - protected void addResourceColumn() { - //primaryKeyJoinColumns are part of a collection, the pk-join-column element will be removed/added - //when the XmlPrimaryKeyJoinColumn is removed/added to the XmlEntity collection - } - - @Override - protected void removeResourceColumn() { - //primaryKeyJoinColumns are part of a collection, the pk-join-column element will be removed/added - //when the XmlPrimaryKeyJoinColumn is removed/added to the XmlEntity collection - } - - public String getReferencedColumnName() { - return (this.getSpecifiedReferencedColumnName() == null) ? getDefaultReferencedColumnName() : this.getSpecifiedReferencedColumnName(); - } - - public String getSpecifiedReferencedColumnName() { - return this.specifiedReferencedColumnName; - } - - public void setSpecifiedReferencedColumnName(String newSpecifiedReferencedColumnName) { - String oldSpecifiedReferencedColumnName = this.specifiedReferencedColumnName; - this.specifiedReferencedColumnName = newSpecifiedReferencedColumnName; - getResourceColumn().setReferencedColumnName(newSpecifiedReferencedColumnName); - firePropertyChanged(SPECIFIED_REFERENCED_COLUMN_NAME_PROPERTY, oldSpecifiedReferencedColumnName, newSpecifiedReferencedColumnName); - } - - protected void setSpecifiedReferencedColumnName_(String newSpecifiedReferencedColumnName) { - String oldSpecifiedReferencedColumnName = this.specifiedReferencedColumnName; - this.specifiedReferencedColumnName = newSpecifiedReferencedColumnName; - firePropertyChanged(SPECIFIED_REFERENCED_COLUMN_NAME_PROPERTY, oldSpecifiedReferencedColumnName, newSpecifiedReferencedColumnName); - } - - public String getDefaultReferencedColumnName() { - return this.defaultReferencedColumnName; - } - - protected void setDefaultReferencedColumnName(String newDefaultReferencedColumnName) { - String oldDefaultReferencedColumnName = this.defaultReferencedColumnName; - this.defaultReferencedColumnName = newDefaultReferencedColumnName; - firePropertyChanged(DEFAULT_REFERENCED_COLUMN_NAME_PROPERTY, oldDefaultReferencedColumnName, newDefaultReferencedColumnName); - } - - @Override - public OrmBaseJoinColumn.Owner getOwner() { - return (OrmBaseJoinColumn.Owner) this.owner; - } - - public Column getReferencedDbColumn() { - Table table = this.getReferencedColumnDbTable(); - return (table == null) ? null : table.getColumnForIdentifier(this.getReferencedColumnName()); - } - - public Table getReferencedColumnDbTable() { - return getOwner().getReferencedColumnDbTable(); - } - - @Override - protected String getOwningTableName() { - return this.getOwner().getTypeMapping().getPrimaryTableName(); - } - - public boolean isReferencedColumnResolved() { - return getReferencedDbColumn() != null; - } - - public TextRange getReferencedColumnNameTextRange() { - if (getResourceColumn() != null) { - TextRange textRange = getResourceColumn().getReferencedColumnNameTextRange(); - if (textRange != null) { - return textRange; - } - } - return getOwner().getValidationTextRange(); - } - - - public boolean isVirtual() { - return getOwner().isVirtual(this); - } - - @Override - protected void initialize(XmlPrimaryKeyJoinColumn resourcePkJoinColumn) { - this.resourcePkJoinColumn = resourcePkJoinColumn; - super.initialize(resourcePkJoinColumn); - this.specifiedReferencedColumnName = specifiedReferencedColumnName(); - this.defaultReferencedColumnName = defaultReferencedColumnName(); - } - - @Override - public void update(XmlPrimaryKeyJoinColumn resourcePkJoinColumn) { - this.resourcePkJoinColumn = resourcePkJoinColumn; - super.update(resourcePkJoinColumn); - this.setSpecifiedReferencedColumnName_(specifiedReferencedColumnName()); - this.setDefaultReferencedColumnName(defaultReferencedColumnName()); - } - - protected String specifiedReferencedColumnName() { - return this.resourcePkJoinColumn == null ? null : this.resourcePkJoinColumn.getReferencedColumnName(); - } - - //TODO not correct when we start supporting primaryKeyJoinColumns in 1-1 mappings - protected String defaultReferencedColumnName() { - return getOwnerDefaultColumnName(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmPrimaryKeyJoinColumnJoiningStrategy.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmPrimaryKeyJoinColumnJoiningStrategy.java deleted file mode 100644 index 1602641d28..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmPrimaryKeyJoinColumnJoiningStrategy.java +++ /dev/null @@ -1,248 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 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.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import org.eclipse.jpt.core.context.BaseJoinColumn; -import org.eclipse.jpt.core.context.Entity; -import org.eclipse.jpt.core.context.PrimaryKeyJoinColumn; -import org.eclipse.jpt.core.context.RelationshipMapping; -import org.eclipse.jpt.core.context.TypeMapping; -import org.eclipse.jpt.core.context.orm.OrmJoinColumn; -import org.eclipse.jpt.core.context.orm.OrmJoinColumnEnabledRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.context.orm.OrmPrimaryKeyJoinColumnEnabledRelationshipReference; -import org.eclipse.jpt.core.context.orm.OrmPrimaryKeyJoinColumnJoiningStrategy; -import org.eclipse.jpt.core.context.orm.OrmRelationshipMapping; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlOneToOne; -import org.eclipse.jpt.core.resource.orm.XmlPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Table; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterators.CloneIterator; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; - -public class GenericOrmPrimaryKeyJoinColumnJoiningStrategy - extends AbstractXmlContextNode - implements OrmPrimaryKeyJoinColumnJoiningStrategy -{ - protected XmlOneToOne resource; - - protected final List<OrmPrimaryKeyJoinColumn> primaryKeyJoinColumns; - - - public GenericOrmPrimaryKeyJoinColumnJoiningStrategy( - OrmPrimaryKeyJoinColumnEnabledRelationshipReference parent, - XmlOneToOne resource) { - super(parent); - this.resource = resource; - this.primaryKeyJoinColumns = new ArrayList<OrmPrimaryKeyJoinColumn>(); - this.initializePrimaryKeyJoinColumns(); - } - - - protected void initializePrimaryKeyJoinColumns() { - if (this.resource != null) { - for (XmlPrimaryKeyJoinColumn resourceJoinColumn : this.resource.getPrimaryKeyJoinColumns()) { - this.primaryKeyJoinColumns.add(buildPrimaryKeyJoinColumn(resourceJoinColumn)); - } - } - } - - protected OrmPrimaryKeyJoinColumn buildPrimaryKeyJoinColumn( - XmlPrimaryKeyJoinColumn resourceJoinColumn) { - return this.getJpaFactory().buildOrmPrimaryKeyJoinColumn(this, new JoinColumnOwner(), resourceJoinColumn); - } - - @Override - public OrmJoinColumnEnabledRelationshipReference getParent() { - return (OrmJoinColumnEnabledRelationshipReference) super.getParent(); - } - - public OrmJoinColumnEnabledRelationshipReference getRelationshipReference() { - return this.getParent(); - } - - public OrmRelationshipMapping getRelationshipMapping() { - return this.getRelationshipReference().getRelationshipMapping(); - } - - public void addStrategy() { - if (primaryKeyJoinColumnsSize() == 0) { - addPrimaryKeyJoinColumn(0); - } - } - - public void removeStrategy() { - for (PrimaryKeyJoinColumn each : CollectionTools.iterable(primaryKeyJoinColumns())) { - removePrimaryKeyJoinColumn(each); - } - } - - - // **************** primary key join columns ******************************* - - public ListIterator<OrmPrimaryKeyJoinColumn> primaryKeyJoinColumns() { - return new CloneListIterator<OrmPrimaryKeyJoinColumn>(this.primaryKeyJoinColumns); - } - - public int primaryKeyJoinColumnsSize() { - return this.primaryKeyJoinColumns.size(); - } - - public boolean hasPrimaryKeyJoinColumns() { - return ! this.primaryKeyJoinColumns.isEmpty(); - } - - public OrmPrimaryKeyJoinColumn addPrimaryKeyJoinColumn(int index) { - XmlPrimaryKeyJoinColumn resourcePkJoinColumn = - OrmFactory.eINSTANCE.createXmlPrimaryKeyJoinColumnImpl(); - OrmPrimaryKeyJoinColumn contextPkJoinColumn = - this.buildPrimaryKeyJoinColumn(resourcePkJoinColumn); - this.primaryKeyJoinColumns.add(index, contextPkJoinColumn); - this.resource.getPrimaryKeyJoinColumns().add(index, resourcePkJoinColumn); - this.fireItemAdded(PRIMARY_KEY_JOIN_COLUMNS_LIST, index, contextPkJoinColumn); - return contextPkJoinColumn; - } - - protected void addPrimaryKeyJoinColumn(int index, OrmPrimaryKeyJoinColumn joinColumn) { - this.addItemToList(index, joinColumn, this.primaryKeyJoinColumns, PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - protected void addPrimaryKeyJoinColumn(OrmPrimaryKeyJoinColumn joinColumn) { - this.addPrimaryKeyJoinColumn(this.primaryKeyJoinColumns.size(), joinColumn); - } - - public void removePrimaryKeyJoinColumn(PrimaryKeyJoinColumn pkJoinColumn) { - this.removePrimaryKeyJoinColumn(this.primaryKeyJoinColumns.indexOf(pkJoinColumn)); - } - - public void removePrimaryKeyJoinColumn(int index) { - OrmPrimaryKeyJoinColumn removedPkJoinColumn = this.primaryKeyJoinColumns.remove(index); - this.resource.getPrimaryKeyJoinColumns().remove(index); - this.fireItemRemoved(PRIMARY_KEY_JOIN_COLUMNS_LIST, index, removedPkJoinColumn); - } - - protected void removePrimaryKeyJoinColumn_(OrmPrimaryKeyJoinColumn joinColumn) { - removeItemFromList(joinColumn, this.primaryKeyJoinColumns, PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - public void movePrimaryKeyJoinColumn(int targetIndex, int sourceIndex) { - CollectionTools.move(this.primaryKeyJoinColumns, targetIndex, sourceIndex); - this.resource.getPrimaryKeyJoinColumns().move(targetIndex, sourceIndex); - fireItemMoved(PRIMARY_KEY_JOIN_COLUMNS_LIST, targetIndex, sourceIndex); - } - - - // **************** resource -> context ************************************ - - public void update() { - updatePrimaryKeyJoinColumns(); - } - - protected void updatePrimaryKeyJoinColumns() { - // make a copy of the XML PK join columns (to prevent ConcurrentModificationException) - Iterator<XmlPrimaryKeyJoinColumn> xmlPkJoinColumns = - new CloneIterator<XmlPrimaryKeyJoinColumn>(this.resource.getPrimaryKeyJoinColumns()); - - for (Iterator<OrmPrimaryKeyJoinColumn> contextPkJoinColumns = primaryKeyJoinColumns(); - contextPkJoinColumns.hasNext(); ) { - OrmPrimaryKeyJoinColumn contextPkJoinColumn = contextPkJoinColumns.next(); - if (xmlPkJoinColumns.hasNext()) { - contextPkJoinColumn.update(xmlPkJoinColumns.next()); - } - else { - removePrimaryKeyJoinColumn_(contextPkJoinColumn); - } - } - - while (xmlPkJoinColumns.hasNext()) { - addPrimaryKeyJoinColumn(buildPrimaryKeyJoinColumn(xmlPkJoinColumns.next())); - } - } - - public TextRange getValidationTextRange() { - return this.getRelationshipReference().getValidationTextRange(); - } - - - public class JoinColumnOwner implements OrmJoinColumn.Owner - { - public JoinColumnOwner() { - super(); - } - - /** - * by default, the join column is in the type mapping's primary table - */ - public String getDefaultTableName() { - return getTypeMapping().getPrimaryTableName(); - } - - public Entity getTargetEntity() { - return getRelationshipMapping().getResolvedTargetEntity(); - } - - public String getAttributeName() { - return getRelationshipMapping().getPersistentAttribute().getName(); - } - - public RelationshipMapping getRelationshipMapping() { - return GenericOrmPrimaryKeyJoinColumnJoiningStrategy.this.getRelationshipMapping(); - } - - public boolean tableNameIsInvalid(String tableName) { - return getTypeMapping().tableNameIsInvalid(tableName); - } - - /** - * the join column can be on a secondary table - */ - public boolean tableIsAllowed() { - return true; - } - - public TypeMapping getTypeMapping() { - return getRelationshipMapping().getTypeMapping(); - } - - public Table getDbTable(String tableName) { - return getTypeMapping().getDbTable(tableName); - } - - public Table getReferencedColumnDbTable() { - Entity targetEntity = getTargetEntity(); - return (targetEntity == null) ? null : targetEntity.getPrimaryDbTable(); - } - - public boolean isVirtual(BaseJoinColumn joinColumn) { - return false; - } - - public String getDefaultColumnName() { - // TODO Auto-generated method stub - return null; - } - - public int joinColumnsSize() { - return GenericOrmPrimaryKeyJoinColumnJoiningStrategy.this.primaryKeyJoinColumnsSize(); - } - - public TextRange getValidationTextRange() { - return GenericOrmPrimaryKeyJoinColumnJoiningStrategy.this.getValidationTextRange(); - } - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmQueryHint.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmQueryHint.java deleted file mode 100644 index e8de5db47d..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmQueryHint.java +++ /dev/null @@ -1,77 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2008 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 org.eclipse.jpt.core.context.QueryHint; -import org.eclipse.jpt.core.context.orm.OrmQuery; -import org.eclipse.jpt.core.context.orm.OrmQueryHint; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.resource.orm.XmlQueryHint; -import org.eclipse.jpt.core.utility.TextRange; - - -public class GenericOrmQueryHint extends AbstractXmlContextNode implements OrmQueryHint -{ - - protected String name; - - protected String value; - - protected XmlQueryHint resourceQueryHint; - - public GenericOrmQueryHint(OrmQuery parent, XmlQueryHint resourceQueryHint) { - super(parent); - this.initialize(resourceQueryHint); - } - - public String getName() { - return this.name; - } - - public void setName(String newName) { - String oldName = this.name; - this.name = newName; - this.resourceQueryHint.setName(newName); - firePropertyChanged(QueryHint.NAME_PROPERTY, oldName, newName); - } - - public String getValue() { - return this.value; - } - - public void setValue(String newValue) { - String oldValue = this.value; - this.value = newValue; - this.resourceQueryHint.setValue(newValue); - firePropertyChanged(QueryHint.VALUE_PROPERTY, oldValue, newValue); - } - - protected void initialize(XmlQueryHint resourceQueryHint) { - this.resourceQueryHint = resourceQueryHint; - this.name = resourceQueryHint.getName(); - this.value = resourceQueryHint.getValue(); - } - - public void update(XmlQueryHint resourceQueryHint) { - this.resourceQueryHint = resourceQueryHint; - this.setName(resourceQueryHint.getName()); - this.setValue(resourceQueryHint.getValue()); - } - - public TextRange getValidationTextRange() { - return this.resourceQueryHint.getValidationTextRange(); - } - - @Override - public void toString(StringBuilder sb) { - sb.append(this.name); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmSecondaryTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmSecondaryTable.java deleted file mode 100644 index 15d42a8f01..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmSecondaryTable.java +++ /dev/null @@ -1,384 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.eclipse.jpt.core.context.BaseJoinColumn; -import org.eclipse.jpt.core.context.Entity; -import org.eclipse.jpt.core.context.PrimaryKeyJoinColumn; -import org.eclipse.jpt.core.context.SecondaryTable; -import org.eclipse.jpt.core.context.TypeMapping; -import org.eclipse.jpt.core.context.orm.OrmBaseJoinColumn; -import org.eclipse.jpt.core.context.orm.OrmEntity; -import org.eclipse.jpt.core.context.orm.OrmPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.context.orm.OrmSecondaryTable; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.resource.orm.XmlSecondaryTable; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Table; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterators.CloneIterator; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; -import org.eclipse.jpt.utility.internal.iterators.EmptyListIterator; -import org.eclipse.jpt.utility.internal.iterators.SingleElementListIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -/** - * - */ -public class GenericOrmSecondaryTable - extends AbstractOrmTable - implements OrmSecondaryTable -{ - protected XmlSecondaryTable secondaryTable; - - protected final List<OrmPrimaryKeyJoinColumn> specifiedPrimaryKeyJoinColumns; - - protected OrmPrimaryKeyJoinColumn defaultPrimaryKeyJoinColumn; - - public GenericOrmSecondaryTable(OrmEntity parent, XmlSecondaryTable xmlSecondaryTable) { - super(parent); - this.specifiedPrimaryKeyJoinColumns = new ArrayList<OrmPrimaryKeyJoinColumn>(); - initialize(xmlSecondaryTable); - } - - public void initializeFrom(SecondaryTable oldSecondaryTable) { - super.initializeFrom(oldSecondaryTable); - for (PrimaryKeyJoinColumn oldPkJoinColumn : CollectionTools.iterable(oldSecondaryTable.specifiedPrimaryKeyJoinColumns())) { - OrmPrimaryKeyJoinColumn newPkJoinColumn = addSpecifiedPrimaryKeyJoinColumn(specifiedPrimaryKeyJoinColumnsSize()); - newPkJoinColumn.initializeFrom(oldPkJoinColumn); - } - } - - @Override - public OrmEntity getParent() { - return (OrmEntity) super.getParent(); - } - - public OrmEntity getOrmEntity() { - return getParent(); - } - - public OrmPrimaryKeyJoinColumn getDefaultPrimaryKeyJoinColumn() { - return this.defaultPrimaryKeyJoinColumn; - } - - protected void setDefaultPrimaryKeyJoinColumn(OrmPrimaryKeyJoinColumn newPkJoinColumn) { - OrmPrimaryKeyJoinColumn oldPkJoinColumn = this.defaultPrimaryKeyJoinColumn; - this.defaultPrimaryKeyJoinColumn = newPkJoinColumn; - firePropertyChanged(SecondaryTable.DEFAULT_PRIMARY_KEY_JOIN_COLUMN, oldPkJoinColumn, newPkJoinColumn); - } - - public ListIterator<OrmPrimaryKeyJoinColumn> primaryKeyJoinColumns() { - return this.containsSpecifiedPrimaryKeyJoinColumns() ? this.specifiedPrimaryKeyJoinColumns() : this.defaultPrimaryKeyJoinColumns(); - } - - public int primaryKeyJoinColumnsSize() { - return this.containsSpecifiedPrimaryKeyJoinColumns() ? this.specifiedPrimaryKeyJoinColumnsSize() : this.defaultPrimaryKeyJoinColumnsSize(); - } - - public ListIterator<OrmPrimaryKeyJoinColumn> specifiedPrimaryKeyJoinColumns() { - return new CloneListIterator<OrmPrimaryKeyJoinColumn>(this.specifiedPrimaryKeyJoinColumns); - } - - public int specifiedPrimaryKeyJoinColumnsSize() { - return this.specifiedPrimaryKeyJoinColumns.size(); - } - - protected ListIterator<OrmPrimaryKeyJoinColumn> defaultPrimaryKeyJoinColumns() { - if (this.defaultPrimaryKeyJoinColumn != null) { - return new SingleElementListIterator<OrmPrimaryKeyJoinColumn>(this.defaultPrimaryKeyJoinColumn); - } - return EmptyListIterator.instance(); - } - - protected int defaultPrimaryKeyJoinColumnsSize() { - return (this.defaultPrimaryKeyJoinColumn == null) ? 0 : 1; - } - - public boolean containsSpecifiedPrimaryKeyJoinColumns() { - return !this.specifiedPrimaryKeyJoinColumns.isEmpty(); - } - - public OrmPrimaryKeyJoinColumn addSpecifiedPrimaryKeyJoinColumn(int index) { - OrmPrimaryKeyJoinColumn oldDefaultPkJoinColumn = this.getDefaultPrimaryKeyJoinColumn(); - if (oldDefaultPkJoinColumn != null) { - //null the default join column now if one already exists. - //if one does not exist, there is already a specified join column. - //Remove it now so that it doesn't get removed during an update and - //cause change notifications to be sent to the UI in the wrong order - this.defaultPrimaryKeyJoinColumn = null; - } - XmlPrimaryKeyJoinColumn resourcePkJoinColumn = OrmFactory.eINSTANCE.createXmlPrimaryKeyJoinColumnImpl(); - OrmPrimaryKeyJoinColumn contextPkJoinColumn = buildPrimaryKeyJoinColumn(resourcePkJoinColumn); - this.specifiedPrimaryKeyJoinColumns.add(index, contextPkJoinColumn); - this.secondaryTable.getPrimaryKeyJoinColumns().add(index, resourcePkJoinColumn); - - this.fireItemAdded(SecondaryTable.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST, index, contextPkJoinColumn); - if (oldDefaultPkJoinColumn != null) { - this.firePropertyChanged(SecondaryTable.DEFAULT_PRIMARY_KEY_JOIN_COLUMN, oldDefaultPkJoinColumn, null); - } - return contextPkJoinColumn; - } - - protected OrmBaseJoinColumn.Owner createPrimaryKeyJoinColumnOwner() { - return new PrimaryKeyJoinColumnOwner(); - } - - protected void addSpecifiedPrimaryKeyJoinColumn(int index, OrmPrimaryKeyJoinColumn primaryKeyJoinColumn) { - addItemToList(index, primaryKeyJoinColumn, this.specifiedPrimaryKeyJoinColumns, SecondaryTable.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - protected void addSpecifiedPrimaryKeyJoinColumn(OrmPrimaryKeyJoinColumn primaryKeyJoinColumn) { - this.addSpecifiedPrimaryKeyJoinColumn(this.specifiedPrimaryKeyJoinColumns.size(), primaryKeyJoinColumn); - } - - public void removeSpecifiedPrimaryKeyJoinColumn(PrimaryKeyJoinColumn pkJoinColumn) { - this.removeSpecifiedPrimaryKeyJoinColumn(this.specifiedPrimaryKeyJoinColumns.indexOf(pkJoinColumn)); - } - - public void removeSpecifiedPrimaryKeyJoinColumn(int index) { - OrmPrimaryKeyJoinColumn removedPrimaryKeyJoinColumn = this.specifiedPrimaryKeyJoinColumns.remove(index); - if (!containsSpecifiedPrimaryKeyJoinColumns()) { - //create the defaultJoinColumn now or this will happen during project update - //after removing the join column from the resource model. That causes problems - //in the UI because the change notifications end up in the wrong order. - this.defaultPrimaryKeyJoinColumn = buildPrimaryKeyJoinColumn(null); - } - this.secondaryTable.getPrimaryKeyJoinColumns().remove(index); - fireItemRemoved(SecondaryTable.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST, index, removedPrimaryKeyJoinColumn); - if (this.defaultPrimaryKeyJoinColumn != null) { - //fire change notification if a defaultJoinColumn was created above - this.firePropertyChanged(Entity.DEFAULT_PRIMARY_KEY_JOIN_COLUMN, null, this.defaultPrimaryKeyJoinColumn); - } - } - - protected void removeSpecifiedPrimaryKeyJoinColumn_(OrmPrimaryKeyJoinColumn primaryKeyJoinColumn) { - removeItemFromList(primaryKeyJoinColumn, this.specifiedPrimaryKeyJoinColumns, SecondaryTable.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - public void moveSpecifiedPrimaryKeyJoinColumn(int targetIndex, int sourceIndex) { - CollectionTools.move(this.specifiedPrimaryKeyJoinColumns, targetIndex, sourceIndex); - this.secondaryTable.getPrimaryKeyJoinColumns().move(targetIndex, sourceIndex); - fireItemMoved(SecondaryTable.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST, targetIndex, sourceIndex); - } - - - public boolean isVirtual() { - return getOrmEntity().containsVirtualSecondaryTable(this); - } - - @Override - protected XmlSecondaryTable getResourceTable() { - return this.secondaryTable; - } - - @Override - protected XmlSecondaryTable addResourceTable() { - //secondaryTables are part of a collection, the secondary-table element will be removed/added - //when the XmlSecondaryTable is removed/added to the XmlEntity collection - throw new IllegalStateException("resource table is missing"); //$NON-NLS-1$ - } - - @Override - protected void removeResourceTable() { - //secondaryTables are part of a collection, the secondary-table element will be removed/added - //when the XmlSecondaryTable is removed/added to the XmlEntity collection - } - - protected void initialize(XmlSecondaryTable xst) { - this.secondaryTable = xst; - super.initialize(xst); - this.initializeSpecifiedPrimaryKeyJoinColumns(); - this.initializeDefaultPrimaryKeyJoinColumn(); - } - - protected void initializeSpecifiedPrimaryKeyJoinColumns() { - for (XmlPrimaryKeyJoinColumn resourcePkJoinColumn : this.secondaryTable.getPrimaryKeyJoinColumns()) { - this.specifiedPrimaryKeyJoinColumns.add(buildPrimaryKeyJoinColumn(resourcePkJoinColumn)); - } - } - - protected boolean shouldBuildDefaultPrimaryKeyJoinColumn() { - return !containsSpecifiedPrimaryKeyJoinColumns(); - } - - protected void initializeDefaultPrimaryKeyJoinColumn() { - if (!shouldBuildDefaultPrimaryKeyJoinColumn()) { - return; - } - this.defaultPrimaryKeyJoinColumn = buildPrimaryKeyJoinColumn(null); - } - - public void update(XmlSecondaryTable xst) { - this.secondaryTable = xst; - super.update(xst); - this.updateSpecifiedPrimaryKeyJoinColumns(); - this.updateDefaultPrimaryKeyJoinColumn(); - } - - protected void updateSpecifiedPrimaryKeyJoinColumns() { - // make a copy of the XML PK join columns (to prevent ConcurrentModificationException) - Iterator<XmlPrimaryKeyJoinColumn> xmlPkJoinColumns = new CloneIterator<XmlPrimaryKeyJoinColumn>(this.secondaryTable.getPrimaryKeyJoinColumns()); - - for (Iterator<OrmPrimaryKeyJoinColumn> contextPkJoinColumns = this.specifiedPrimaryKeyJoinColumns(); contextPkJoinColumns.hasNext(); ) { - OrmPrimaryKeyJoinColumn contextPkJoinColumn = contextPkJoinColumns.next(); - if (xmlPkJoinColumns.hasNext()) { - contextPkJoinColumn.update(xmlPkJoinColumns.next()); - } - else { - removeSpecifiedPrimaryKeyJoinColumn_(contextPkJoinColumn); - } - } - - while (xmlPkJoinColumns.hasNext()) { - addSpecifiedPrimaryKeyJoinColumn(buildPrimaryKeyJoinColumn(xmlPkJoinColumns.next())); - } - } - - protected void updateDefaultPrimaryKeyJoinColumn() { - if (!shouldBuildDefaultPrimaryKeyJoinColumn()) { - setDefaultPrimaryKeyJoinColumn(null); - return; - } - if (getDefaultPrimaryKeyJoinColumn() == null) { - this.setDefaultPrimaryKeyJoinColumn(buildPrimaryKeyJoinColumn(null)); - } - else { - this.defaultPrimaryKeyJoinColumn.update(null); - } - } - - protected OrmPrimaryKeyJoinColumn buildPrimaryKeyJoinColumn(XmlPrimaryKeyJoinColumn resourcePkJoinColumn) { - return getJpaFactory().buildOrmPrimaryKeyJoinColumn(this, createPrimaryKeyJoinColumnOwner(), resourcePkJoinColumn); - } - - /** - * a secondary table doesn't have a default name - */ - @Override - protected String buildDefaultName() { - return null; - } - - @Override - protected String buildDefaultSchema() { - return this.getContextDefaultSchema(); - } - - @Override - protected String buildDefaultCatalog() { - return this.getContextDefaultCatalog(); - } - - - // ********** validation ********** - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - if (this.connectionProfileIsActive()) { - this.validateAgainstDatabase(messages); - } - for (Iterator<OrmPrimaryKeyJoinColumn> stream = this.primaryKeyJoinColumns(); stream.hasNext(); ) { - stream.next().validate(messages, reporter); - } - } - - protected void validateAgainstDatabase(List<IMessage> messages) { - if ( ! this.hasResolvedCatalog()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.SECONDARY_TABLE_UNRESOLVED_CATALOG, - new String[] {this.getCatalog(), this.getName()}, - this, - this.getCatalogTextRange() - ) - ); - return; - } - - if ( ! this.hasResolvedSchema()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.SECONDARY_TABLE_UNRESOLVED_SCHEMA, - new String[] {this.getSchema(), this.getName()}, - this, - this.getSchemaTextRange() - ) - ); - return; - } - - if ( ! this.isResolved()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.SECONDARY_TABLE_UNRESOLVED_NAME, - new String[] {this.getName()}, - this, - this.getNameTextRange() - ) - ); - return; - } - } - - - // ********** pk join column owner adapter ********** - - class PrimaryKeyJoinColumnOwner implements OrmBaseJoinColumn.Owner - { - - public TypeMapping getTypeMapping() { - return GenericOrmSecondaryTable.this.getOrmEntity(); - } - - public Table getDbTable(String tableName) { - return GenericOrmSecondaryTable.this.getDbTable(); - } - - public Table getReferencedColumnDbTable() { - return getTypeMapping().getPrimaryDbTable(); - } - - public int joinColumnsSize() { - return GenericOrmSecondaryTable.this.primaryKeyJoinColumnsSize(); - } - - public boolean isVirtual(BaseJoinColumn joinColumn) { - return GenericOrmSecondaryTable.this.defaultPrimaryKeyJoinColumn == joinColumn; - } - - public String getDefaultColumnName() { - if (joinColumnsSize() != 1) { - return null; - } - return getOrmEntity().getParentEntity().getPrimaryKeyColumnName(); - } - - public TextRange getValidationTextRange() { - // TODO Auto-generated method stub - return null; - } - - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmSequenceGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmSequenceGenerator.java deleted file mode 100644 index ac89db1702..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmSequenceGenerator.java +++ /dev/null @@ -1,109 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2008 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 org.eclipse.jpt.core.context.SequenceGenerator; -import org.eclipse.jpt.core.context.XmlContextNode; -import org.eclipse.jpt.core.context.orm.OrmSequenceGenerator; -import org.eclipse.jpt.core.resource.orm.XmlSequenceGenerator; - -/** - * - */ -public class GenericOrmSequenceGenerator - extends AbstractOrmGenerator<XmlSequenceGenerator> - implements OrmSequenceGenerator -{ - - protected String specifiedSequenceName; - protected String defaultSequenceName; - - - public GenericOrmSequenceGenerator(XmlContextNode parent, XmlSequenceGenerator resourceSequenceGenerator) { - super(parent); - this.initialize(resourceSequenceGenerator); - } - - - @Override - public int getDefaultInitialValue() { - return SequenceGenerator.DEFAULT_INITIAL_VALUE; - } - - // ********** sequence name ********** - - public String getSequenceName() { - return (this.specifiedSequenceName != null) ? this.specifiedSequenceName : this.defaultSequenceName; - } - - public String getSpecifiedSequenceName() { - return this.specifiedSequenceName; - } - - public void setSpecifiedSequenceName(String specifiedSequenceName) { - String old = this.specifiedSequenceName; - this.specifiedSequenceName = specifiedSequenceName; - this.getResourceGenerator().setSequenceName(specifiedSequenceName); - this.firePropertyChanged(SPECIFIED_SEQUENCE_NAME_PROPERTY, old, specifiedSequenceName); - } - - protected void setSpecifiedSequenceName_(String specifiedSequenceName) { - String old = this.specifiedSequenceName; - this.specifiedSequenceName = specifiedSequenceName; - this.firePropertyChanged(SPECIFIED_SEQUENCE_NAME_PROPERTY, old, specifiedSequenceName); - } - - public String getDefaultSequenceName() { - return this.defaultSequenceName; - } - - protected void setDefaultSequenceName(String defaultSequenceName) { - String old = this.defaultSequenceName; - this.defaultSequenceName = defaultSequenceName; - this.firePropertyChanged(DEFAULT_SEQUENCE_NAME_PROPERTY, old, defaultSequenceName); - } - - - // ********** resource => context ********** - - @Override - protected void initialize(XmlSequenceGenerator sequenceGenerator) { - super.initialize(sequenceGenerator); - this.specifiedSequenceName = sequenceGenerator.getSequenceName(); - //TODO default sequence name - } - - @Override - public void update(XmlSequenceGenerator sequenceGenerator) { - super.update(sequenceGenerator); - this.setSpecifiedSequenceName_(sequenceGenerator.getSequenceName()); - //TODO default sequence name - } - - - // ********** database stuff ********** - - /** - * The JPA spec does not allow a sequence to have a schema. - */ - @Override - protected String getSchema() { - return this.getContextDefaultSchema(); - } - - /** - * The JPA spec does not allow a sequence to have a catalog. - */ - @Override - protected String getCatalog() { - return this.getContextDefaultCatalog(); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmTable.java deleted file mode 100644 index 9852214d9a..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmTable.java +++ /dev/null @@ -1,133 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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.List; -import org.eclipse.jpt.core.context.orm.OrmEntity; -import org.eclipse.jpt.core.context.orm.OrmTable; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlEntity; -import org.eclipse.jpt.core.resource.orm.XmlTable; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - -/** - * - */ -public class GenericOrmTable - extends AbstractOrmTable - implements OrmTable -{ - protected XmlEntity resourceEntity; - - public GenericOrmTable(OrmEntity parent) { - super(parent); - } - - public OrmEntity getOrmEntity() { - return (OrmEntity) super.getParent(); - } - - @Override - protected XmlTable getResourceTable() { - return this.resourceEntity.getTable(); - } - - @Override - protected XmlTable addResourceTable() { - XmlTable resourceTable = OrmFactory.eINSTANCE.createXmlTable(); - this.resourceEntity.setTable(resourceTable); - return resourceTable; - } - - @Override - protected void removeResourceTable() { - this.resourceEntity.setTable(null); - } - - public void initialize(XmlEntity xmlEntity) { - this.resourceEntity = xmlEntity; - this.initialize(this.getResourceTable()); - } - - public void update(XmlEntity xmlEntity) { - this.resourceEntity = xmlEntity; - this.update(this.getResourceTable()); - } - - @Override - protected String buildDefaultName() { - return this.getOrmEntity().getDefaultTableName(); - } - - @Override - protected String buildDefaultSchema() { - return this.getOrmEntity().getDefaultSchema(); - } - - @Override - protected String buildDefaultCatalog() { - return this.getOrmEntity().getDefaultCatalog(); - } - - //*********** Validation ******************************* - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - if (this.connectionProfileIsActive()) { - this.validateAgainstDatabase(messages); - } - } - - protected void validateAgainstDatabase(List<IMessage> messages) { - if ( ! this.hasResolvedCatalog()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.TABLE_UNRESOLVED_CATALOG, - new String[] {this.getCatalog(), this.getName()}, - this, - this.getCatalogTextRange() - ) - ); - return; - } - - if ( ! this.hasResolvedSchema()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.TABLE_UNRESOLVED_SCHEMA, - new String[] {this.getSchema(), this.getName()}, - this, - this.getSchemaTextRange() - ) - ); - return; - } - - if ( ! this.isResolved()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.TABLE_UNRESOLVED_NAME, - new String[] {this.getName()}, - this, - this.getNameTextRange() - ) - ); - return; - } - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmTableGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmTableGenerator.java deleted file mode 100644 index e52534c7ea..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmTableGenerator.java +++ /dev/null @@ -1,419 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.eclipse.jpt.core.context.TableGenerator; -import org.eclipse.jpt.core.context.UniqueConstraint; -import org.eclipse.jpt.core.context.XmlContextNode; -import org.eclipse.jpt.core.context.orm.OrmTableGenerator; -import org.eclipse.jpt.core.context.orm.OrmUniqueConstraint; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlTableGenerator; -import org.eclipse.jpt.core.resource.orm.XmlUniqueConstraint; -import org.eclipse.jpt.db.Schema; -import org.eclipse.jpt.db.Table; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterators.CloneIterator; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; - -/** - * - */ -public class GenericOrmTableGenerator - extends AbstractOrmGenerator<XmlTableGenerator> - implements OrmTableGenerator, UniqueConstraint.Owner -{ - protected String specifiedTable; - protected String defaultTable; - - protected String specifiedCatalog; - protected String defaultCatalog; - - protected String specifiedSchema; - protected String defaultSchema; - - protected String specifiedPkColumnName; - protected String defaultPkColumnName; - - protected String specifiedValueColumnName; - protected String defaultValueColumnName; - - protected String specifiedPkColumnValue; - protected String defaultPkColumnValue; - - protected final List<OrmUniqueConstraint> uniqueConstraints; - - - // ********** constructor ********** - - public GenericOrmTableGenerator(XmlContextNode parent, XmlTableGenerator resourceTableGenerator) { - super(parent); - this.uniqueConstraints = new ArrayList<OrmUniqueConstraint>(); - this.initialize(resourceTableGenerator); - } - - @Override - public int getDefaultInitialValue() { - return TableGenerator.DEFAULT_INITIAL_VALUE; - } - - // ********** table ********** - - public String getTable() { - return (this.specifiedTable != null) ? this.specifiedTable : this.defaultTable; - } - - public String getSpecifiedTable() { - return this.specifiedTable; - } - - public void setSpecifiedTable(String table) { - String old = this.specifiedTable; - this.specifiedTable = table; - this.getResourceGenerator().setTable(table); - this.firePropertyChanged(SPECIFIED_TABLE_PROPERTY, old, table); - } - - protected void setSpecifiedTable_(String table) { - String old = this.specifiedTable; - this.specifiedTable = table; - this.firePropertyChanged(SPECIFIED_TABLE_PROPERTY, old, table); - } - - public String getDefaultTable() { - return this.defaultTable; - } - - protected void setDefaultTable(String table) { - String old = this.defaultTable; - this.defaultTable = table; - this.firePropertyChanged(DEFAULT_TABLE_PROPERTY, old, table); - } - - - // ********** schema ********** - - @Override - public String getSchema() { - return (this.specifiedSchema != null) ? this.specifiedSchema : this.defaultSchema; - } - - public String getSpecifiedSchema() { - return this.specifiedSchema; - } - - public void setSpecifiedSchema(String schema) { - String old = this.specifiedSchema; - this.specifiedSchema = schema; - this.getResourceGenerator().setSchema(schema); - this.firePropertyChanged(SPECIFIED_SCHEMA_PROPERTY, old, schema); - } - - protected void setSpecifiedSchema_(String schema) { - String old = this.specifiedSchema; - this.specifiedSchema = schema; - this.firePropertyChanged(SPECIFIED_SCHEMA_PROPERTY, old, schema); - } - - public String getDefaultSchema() { - return this.defaultSchema; - } - - protected void setDefaultSchema(String schema) { - String old = this.defaultSchema; - this.defaultSchema = schema; - this.firePropertyChanged(DEFAULT_SCHEMA_PROPERTY, old, schema); - } - - - // ********** catalog ********** - - @Override - public String getCatalog() { - return (this.specifiedCatalog != null) ? this.specifiedCatalog : this.defaultCatalog; - } - - public String getSpecifiedCatalog() { - return this.specifiedCatalog; - } - - public void setSpecifiedCatalog(String catalog) { - String old = this.specifiedCatalog; - this.specifiedCatalog = catalog; - this.getResourceGenerator().setCatalog(catalog); - this.firePropertyChanged(SPECIFIED_CATALOG_PROPERTY, old, catalog); - } - - protected void setSpecifiedCatalog_(String catalog) { - String old = this.specifiedCatalog; - this.specifiedCatalog = catalog; - this.firePropertyChanged(SPECIFIED_CATALOG_PROPERTY, old, catalog); - } - - public String getDefaultCatalog() { - return this.defaultCatalog; - } - - protected void setDefaultCatalog(String catalog) { - String old = this.defaultCatalog; - this.defaultCatalog = catalog; - firePropertyChanged(DEFAULT_CATALOG_PROPERTY, old, catalog); - } - - - // ********** primary key column name ********** - - public String getPkColumnName() { - return (this.specifiedPkColumnName != null) ? this.specifiedPkColumnName : this.defaultPkColumnName; - } - - public String getSpecifiedPkColumnName() { - return this.specifiedPkColumnName; - } - - public void setSpecifiedPkColumnName(String name) { - String old = this.specifiedPkColumnName; - this.specifiedPkColumnName = name; - this.getResourceGenerator().setPkColumnName(name); - this.firePropertyChanged(SPECIFIED_PK_COLUMN_NAME_PROPERTY, old, name); - } - - protected void setSpecifiedPkColumnName_(String name) { - String old = this.specifiedPkColumnName; - this.specifiedPkColumnName = name; - this.firePropertyChanged(SPECIFIED_PK_COLUMN_NAME_PROPERTY, old, name); - } - - public String getDefaultPkColumnName() { - return this.defaultPkColumnName; - } - - protected void setDefaultPkColumnName(String name) { - String old = this.defaultPkColumnName; - this.defaultPkColumnName = name; - this.firePropertyChanged(DEFAULT_PK_COLUMN_NAME_PROPERTY, old, name); - } - - - // ********** value column name ********** - - public String getValueColumnName() { - return (this.specifiedValueColumnName != null) ? this.specifiedValueColumnName : this.defaultValueColumnName; - } - - public String getSpecifiedValueColumnName() { - return this.specifiedValueColumnName; - } - - public void setSpecifiedValueColumnName(String name) { - String old = this.specifiedValueColumnName; - this.specifiedValueColumnName = name; - this.getResourceGenerator().setValueColumnName(name); - this.firePropertyChanged(SPECIFIED_VALUE_COLUMN_NAME_PROPERTY, old, name); - } - - protected void setSpecifiedValueColumnName_(String name) { - String old = this.specifiedValueColumnName; - this.specifiedValueColumnName = name; - this.firePropertyChanged(SPECIFIED_VALUE_COLUMN_NAME_PROPERTY, old, name); - } - - public String getDefaultValueColumnName() { - return this.defaultValueColumnName; - } - - protected void setDefaultValueColumnName(String name) { - String old = this.defaultValueColumnName; - this.defaultValueColumnName = name; - this.firePropertyChanged(DEFAULT_VALUE_COLUMN_NAME_PROPERTY, old, name); - } - - - // ********** primary key column value ********** - - public String getPkColumnValue() { - return (this.specifiedPkColumnValue != null) ? this.specifiedPkColumnValue : this.defaultPkColumnValue; - } - - public String getSpecifiedPkColumnValue() { - return this.specifiedPkColumnValue; - } - - public void setSpecifiedPkColumnValue(String value) { - String old = this.specifiedPkColumnValue; - this.specifiedPkColumnValue = value; - this.getResourceGenerator().setPkColumnValue(value); - this.firePropertyChanged(SPECIFIED_PK_COLUMN_VALUE_PROPERTY, old, value); - } - - protected void setSpecifiedPkColumnValue_(String value) { - String old = this.specifiedPkColumnValue; - this.specifiedPkColumnValue = value; - this.firePropertyChanged(SPECIFIED_PK_COLUMN_VALUE_PROPERTY, old, value); - } - - public String getDefaultPkColumnValue() { - return this.defaultPkColumnValue; - } - - public void setDefaultPkColumnValue(String value) { - String old = this.defaultPkColumnValue; - this.defaultPkColumnValue = value; - this.firePropertyChanged(DEFAULT_PK_COLUMN_VALUE_PROPERTY, old, value); - } - - - // ********** unique constraints ********** - - public ListIterator<OrmUniqueConstraint> uniqueConstraints() { - return new CloneListIterator<OrmUniqueConstraint>(this.uniqueConstraints); - } - - public int uniqueConstraintsSize() { - return this.uniqueConstraints.size(); - } - - public OrmUniqueConstraint addUniqueConstraint(int index) { - XmlUniqueConstraint resourceUC = OrmFactory.eINSTANCE.createXmlUniqueConstraintImpl(); - OrmUniqueConstraint contextUC = this.buildUniqueConstraint(resourceUC); - this.uniqueConstraints.add(index, contextUC); - this.getResourceGenerator().getUniqueConstraints().add(index, resourceUC); - this.fireItemAdded(UNIQUE_CONSTRAINTS_LIST, index, contextUC); - return contextUC; - } - - protected void addUniqueConstraint(int index, OrmUniqueConstraint uniqueConstraint) { - this.addItemToList(index, uniqueConstraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); - } - - protected void addUniqueConstraint(OrmUniqueConstraint uniqueConstraint) { - this.addUniqueConstraint(this.uniqueConstraints.size(), uniqueConstraint); - } - - public void removeUniqueConstraint(UniqueConstraint uniqueConstraint) { - this.removeUniqueConstraint(this.uniqueConstraints.indexOf(uniqueConstraint)); - } - - public void removeUniqueConstraint(int index) { - OrmUniqueConstraint uniqueConstraint = this.uniqueConstraints.remove(index); - this.getResourceGenerator().getUniqueConstraints().remove(index); - this.fireItemRemoved(UNIQUE_CONSTRAINTS_LIST, index, uniqueConstraint); - } - - protected void removeUniqueConstraint_(OrmUniqueConstraint uniqueConstraint) { - this.removeItemFromList(uniqueConstraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); - } - - public void moveUniqueConstraint(int targetIndex, int sourceIndex) { - CollectionTools.move(this.uniqueConstraints, targetIndex, sourceIndex); - this.getResourceGenerator().getUniqueConstraints().move(targetIndex, sourceIndex); - this.fireItemMoved(UNIQUE_CONSTRAINTS_LIST, targetIndex, sourceIndex); - } - - - //******************* UniqueConstraint.Owner implementation ****************** - - public Iterator<String> candidateUniqueConstraintColumnNames() { - org.eclipse.jpt.db.Table dbTable = this.getDbTable(); - return (dbTable != null) ? dbTable.sortedColumnIdentifiers() : EmptyIterator.<String>instance(); - } - - - // ********** resource => context ********** - - @Override - protected void initialize(XmlTableGenerator xmlTableGenerator) { - super.initialize(xmlTableGenerator); - this.specifiedTable = xmlTableGenerator.getTable(); - this.defaultSchema = this.buildDefaultSchema(); - this.specifiedSchema = xmlTableGenerator.getSchema(); - this.defaultCatalog = this.buildDefaultCatalog(); - this.specifiedCatalog = xmlTableGenerator.getCatalog(); - this.specifiedPkColumnName = xmlTableGenerator.getPkColumnName(); - this.specifiedValueColumnName = xmlTableGenerator.getValueColumnName(); - this.specifiedPkColumnValue = xmlTableGenerator.getPkColumnValue(); - this.initializeUniqueContraints(); - } - - protected void initializeUniqueContraints() { - if (this.resourceGenerator == null) { - return; - } - for (XmlUniqueConstraint uniqueConstraint : this.resourceGenerator.getUniqueConstraints()) { - this.uniqueConstraints.add(this.buildUniqueConstraint(uniqueConstraint)); - } - } - - @Override - public void update(XmlTableGenerator xmlTableGenerator) { - super.update(xmlTableGenerator); - this.setSpecifiedTable_(xmlTableGenerator.getTable()); - this.setDefaultSchema(this.buildDefaultSchema()); - this.setSpecifiedSchema_(xmlTableGenerator.getSchema()); - this.setDefaultCatalog(this.buildDefaultCatalog()); - this.setSpecifiedCatalog_(xmlTableGenerator.getCatalog()); - this.setSpecifiedPkColumnName_(xmlTableGenerator.getPkColumnName()); - this.setSpecifiedValueColumnName_(xmlTableGenerator.getValueColumnName()); - this.setSpecifiedPkColumnValue_(xmlTableGenerator.getPkColumnValue()); - // TODO defaults - this.updateUniqueConstraints(); - } - - protected String buildDefaultSchema() { - return this.getContextDefaultSchema(); - } - - protected String buildDefaultCatalog() { - return this.getContextDefaultCatalog(); - } - - protected void updateUniqueConstraints() { - Iterator<XmlUniqueConstraint> xmlConstraints = this.xmlUniqueConstraints(); - - for (Iterator<OrmUniqueConstraint> contextConstraints = this.uniqueConstraints(); contextConstraints.hasNext(); ) { - OrmUniqueConstraint contextConstraint = contextConstraints.next(); - if (xmlConstraints.hasNext()) { - contextConstraint.update(xmlConstraints.next()); - } - else { - this.removeUniqueConstraint_(contextConstraint); - } - } - - while (xmlConstraints.hasNext()) { - this.addUniqueConstraint(this.buildUniqueConstraint(xmlConstraints.next())); - } - } - - protected Iterator<XmlUniqueConstraint> xmlUniqueConstraints() { - // make a copy of the XML constraints (to prevent ConcurrentModificationException) - return (this.resourceGenerator == null) ? EmptyIterator.<XmlUniqueConstraint>instance() - : new CloneIterator<XmlUniqueConstraint>(this.resourceGenerator.getUniqueConstraints()); - } - - protected OrmUniqueConstraint buildUniqueConstraint(XmlUniqueConstraint resourceUniqueConstraint) { - return this.getJpaFactory().buildOrmUniqueConstraint(this, this, resourceUniqueConstraint); - } - - - // ********** database stuff ********** - - public Table getDbTable() { - Schema dbSchema = this.getDbSchema(); - return (dbSchema == null) ? null : dbSchema.getTableForIdentifier(this.getTable()); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmTemporalConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmTemporalConverter.java deleted file mode 100644 index f3953d8fad..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmTemporalConverter.java +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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 org.eclipse.jpt.core.context.Converter; -import org.eclipse.jpt.core.context.TemporalConverter; -import org.eclipse.jpt.core.context.TemporalType; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmConverter; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.resource.orm.XmlConvertibleMapping; -import org.eclipse.jpt.core.utility.TextRange; - -public class GenericOrmTemporalConverter extends AbstractXmlContextNode - implements TemporalConverter, OrmConverter -{ - private TemporalType temporalType; - - private XmlConvertibleMapping resourceConvertibleMapping; - - public GenericOrmTemporalConverter(OrmAttributeMapping parent, XmlConvertibleMapping resourceConvertableMapping) { - super(parent); - this.initialize(resourceConvertableMapping); - } - - @Override - public OrmAttributeMapping getParent() { - return (OrmAttributeMapping) super.getParent(); - } - - public String getType() { - return Converter.TEMPORAL_CONVERTER; - } - - public TemporalType getTemporalType() { - return this.temporalType; - } - - public void setTemporalType(TemporalType newTemporalType) { - TemporalType oldTemporalType = this.temporalType; - this.temporalType = newTemporalType; - this.resourceConvertibleMapping.setTemporal(TemporalType.toOrmResourceModel(newTemporalType)); - firePropertyChanged(TEMPORAL_TYPE_PROPERTY, oldTemporalType, newTemporalType); - } - - protected void setTemporalType_(TemporalType newTemporalType) { - TemporalType oldTemporalType = this.temporalType; - this.temporalType = newTemporalType; - firePropertyChanged(TEMPORAL_TYPE_PROPERTY, oldTemporalType, newTemporalType); - } - - - protected void initialize(XmlConvertibleMapping resourceConvertibleMapping) { - this.resourceConvertibleMapping = resourceConvertibleMapping; - this.temporalType = this.temporalType(); - } - - public void update() { - this.setTemporalType_(this.temporalType()); - } - - protected TemporalType temporalType() { - return TemporalType.fromOrmResourceModel(this.resourceConvertibleMapping.getTemporal()); - } - - - public TextRange getValidationTextRange() { - return this.resourceConvertibleMapping.getTemporalTextRange(); - } - - public void addToResourceModel() { - this.resourceConvertibleMapping.setTemporal(org.eclipse.jpt.core.resource.orm.TemporalType.DATE); - } - - public void removeFromResourceModel() { - this.resourceConvertibleMapping.setTemporal(null); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmTransientMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmTransientMapping.java deleted file mode 100644 index 8d37952c57..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmTransientMapping.java +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmTransientMapping; -import org.eclipse.jpt.core.resource.orm.Attributes; -import org.eclipse.jpt.core.resource.orm.XmlTransient; - - -public class GenericOrmTransientMapping<T extends XmlTransient> - extends AbstractOrmAttributeMapping<T> - implements OrmTransientMapping -{ - - public GenericOrmTransientMapping(OrmPersistentAttribute parent, T resourceMapping) { - super(parent, resourceMapping); - } - - public void initializeOn(OrmAttributeMapping newMapping) { - newMapping.initializeFromOrmTransientMapping(this); - } - - public int getXmlSequence() { - return 90; - } - - public String getKey() { - return MappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY; - } - - public void addToResourceModel(Attributes resourceAttributes) { - resourceAttributes.getTransients().add(this.resourceAttributeMapping); - } - - public void removeFromResourceModel(Attributes resourceAttributes) { - resourceAttributes.getTransients().remove(this.resourceAttributeMapping); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmUniqueConstraint.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmUniqueConstraint.java deleted file mode 100644 index b2fd325f54..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmUniqueConstraint.java +++ /dev/null @@ -1,126 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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.ArrayList; -import java.util.List; -import java.util.ListIterator; - -import org.eclipse.jpt.core.context.XmlContextNode; -import org.eclipse.jpt.core.context.orm.OrmUniqueConstraint; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.resource.orm.XmlUniqueConstraint; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; - -public class GenericOrmUniqueConstraint - extends AbstractXmlContextNode - implements OrmUniqueConstraint -{ - - protected final List<String> columnNames; - - protected XmlUniqueConstraint resourceUniqueConstraint; - - protected Owner owner; - - public GenericOrmUniqueConstraint(XmlContextNode parent, Owner owner, XmlUniqueConstraint resourceUniqueConstraint) { - super(parent); - this.owner = owner; - this.columnNames = new ArrayList<String>(); - this.initialize(resourceUniqueConstraint); - } - - public ListIterator<String> columnNames() { - return new CloneListIterator<String>(this.columnNames); - } - - public int columnNamesSize() { - return this.columnNames.size(); - } - - public void addColumnName(int index, String columnName) { - this.columnNames.add(index, columnName); - this.resourceUniqueConstraint.getColumnNames().add(index, columnName); - fireItemAdded(COLUMN_NAMES_LIST, index, columnName); - } - - protected void addColumnName_(int index, String columnName) { - this.addItemToList(index, columnName, this.columnNames, COLUMN_NAMES_LIST); - } - - protected void addColumnName_(String columnName) { - this.addItemToList(columnName, this.columnNames, COLUMN_NAMES_LIST); - } - - protected void setColumnName_(int index, String columnName) { - this.setItemInList(index, columnName, this.columnNames, COLUMN_NAMES_LIST); - } - - public void removeColumnName(String columnName) { - this.removeColumnName(this.columnNames.indexOf(columnName)); - } - - public void removeColumnName(int index) { - String removedColumnName = this.columnNames.remove(index); - this.resourceUniqueConstraint.getColumnNames().remove(index); - fireItemRemoved(COLUMN_NAMES_LIST, index, removedColumnName); - } - - protected void removeColumnName_(int index) { - this.removeItemFromList(index, this.columnNames, COLUMN_NAMES_LIST); - } - - public void moveColumnName(int targetIndex, int sourceIndex) { - CollectionTools.move(this.columnNames, targetIndex, sourceIndex); - this.resourceUniqueConstraint.getColumnNames().move(targetIndex, sourceIndex); - fireItemMoved(COLUMN_NAMES_LIST, targetIndex, sourceIndex); - } - - public TextRange getValidationTextRange() { - return this.resourceUniqueConstraint.getValidationTextRange(); - } - - protected void initialize(XmlUniqueConstraint xmlUniqueConstraint) { - this.resourceUniqueConstraint = xmlUniqueConstraint; - this.initializeColumnNames(); - } - - protected void initializeColumnNames() { - for (String annotationColumnName : this.resourceUniqueConstraint.getColumnNames()) { - this.columnNames.add(annotationColumnName); - } - } - - public void update(XmlUniqueConstraint xmlUniqueConstraint) { - this.resourceUniqueConstraint = xmlUniqueConstraint; - this.updateColumnNames(); - } - - protected void updateColumnNames() { - int index = 0; - for (String xmlColumnName : this.resourceUniqueConstraint.getColumnNames()) { - if (this.columnNames.size() > index) { - if ( ! this.columnNames.get(index).equals(xmlColumnName)) { - this.setColumnName_(index, xmlColumnName); - } - } - else { - this.addColumnName_(xmlColumnName); - } - index++; - } - - while (index < this.columnNames.size()) { - this.removeColumnName_(index); - } - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmVersionMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmVersionMapping.java deleted file mode 100644 index 84f645e252..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmVersionMapping.java +++ /dev/null @@ -1,238 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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.List; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.Converter; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -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.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmVersionMapping; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.orm.Attributes; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlColumn; -import org.eclipse.jpt.core.resource.orm.XmlVersion; -import org.eclipse.jpt.db.Table; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; - - -public class GenericOrmVersionMapping<T extends XmlVersion> - extends AbstractOrmAttributeMapping<T> - implements OrmVersionMapping -{ - protected final OrmColumn column; - - protected OrmConverter defaultConverter; - protected OrmConverter specifiedConverter; - - public GenericOrmVersionMapping(OrmPersistentAttribute parent, T resourceMapping) { - super(parent, resourceMapping); - this.column = getJpaFactory().buildOrmColumn(this, this); - this.column.initialize(this.getResourceColumn());//TODO pass in to constructor - this.defaultConverter = new GenericOrmNullConverter(this); - this.specifiedConverter = this.buildSpecifiedConverter(this.getResourceConverterType()); - } - - public int getXmlSequence() { - return 30; - } - - public String getKey() { - return MappingKeys.VERSION_ATTRIBUTE_MAPPING_KEY; - } - - public void initializeOn(OrmAttributeMapping newMapping) { - newMapping.initializeFromOrmVersionMapping(this); - } - - @Override - public void initializeFromOrmColumnMapping(OrmColumnMapping oldMapping) { - super.initializeFromOrmColumnMapping(oldMapping); - getColumn().initializeFrom(oldMapping.getColumn()); - } - - public OrmColumn getColumn() { - return this.column; - } - - public OrmConverter getConverter() { - return getSpecifiedConverter() == null ? getDefaultConverter() : getSpecifiedConverter(); - } - - public OrmConverter getDefaultConverter() { - return this.defaultConverter; - } - - public OrmConverter getSpecifiedConverter() { - return this.specifiedConverter; - } - - protected String getSpecifedConverterType() { - if (this.specifiedConverter == null) { - return Converter.NO_CONVERTER; - } - return this.specifiedConverter.getType(); - } - - public void setSpecifiedConverter(String converterType) { - if (getSpecifedConverterType() == converterType) { - return; - } - OrmConverter oldConverter = this.specifiedConverter; - OrmConverter newConverter = buildSpecifiedConverter(converterType); - this.specifiedConverter = null; - if (oldConverter != null) { - oldConverter.removeFromResourceModel(); - } - this.specifiedConverter = newConverter; - if (newConverter != null) { - newConverter.addToResourceModel(); - } - firePropertyChanged(SPECIFIED_CONVERTER_PROPERTY, oldConverter, newConverter); - } - - protected void setSpecifiedConverter(OrmConverter newConverter) { - OrmConverter oldConverter = this.specifiedConverter; - this.specifiedConverter = newConverter; - firePropertyChanged(SPECIFIED_CONVERTER_PROPERTY, oldConverter, newConverter); - } - - public void addToResourceModel(Attributes resourceAttributes) { - resourceAttributes.getVersions().add(this.resourceAttributeMapping); - } - - public void removeFromResourceModel(Attributes resourceAttributes) { - resourceAttributes.getVersions().remove(this.resourceAttributeMapping); - } - - public String getDefaultColumnName() { - return getName(); - } - - public String getDefaultTableName() { - return getTypeMapping().getPrimaryTableName(); - } - - public Table getDbTable(String tableName) { - return getTypeMapping().getDbTable(tableName); - } - - @Override - public void update() { - super.update(); - this.column.update(this.getResourceColumn()); - if (getResourceConverterType() == getSpecifedConverterType()) { - getSpecifiedConverter().update(); - } - else { - setSpecifiedConverter(buildSpecifiedConverter(getResourceConverterType())); - } - } - - protected OrmConverter buildSpecifiedConverter(String converterType) { - if (converterType == Converter.TEMPORAL_CONVERTER) { - return new GenericOrmTemporalConverter(this, this.resourceAttributeMapping); - } - return null; - } - - protected String getResourceConverterType() { - if (this.resourceAttributeMapping.getTemporal() != null) { - return Converter.TEMPORAL_CONVERTER; - } - - return null; - } - - //***************** XmlColumn.Owner implementation **************** - - public XmlColumn getResourceColumn() { - return this.resourceAttributeMapping.getColumn(); - } - - public void addResourceColumn() { - this.resourceAttributeMapping.setColumn(OrmFactory.eINSTANCE.createXmlColumnImpl()); - } - - public void removeResourceColumn() { - this.resourceAttributeMapping.setColumn(null); - } - - // ****************** validation **************** - - @Override - public void validate(List<IMessage> messages, IReporter reporter) { - super.validate(messages, reporter); - - if (this.shouldValidateAgainstDatabase()) { - this.validateColumn(messages); - } - } - - protected void validateColumn(List<IMessage> messages) { - OrmPersistentAttribute pa = this.getPersistentAttribute(); - String tableName = this.column.getTable(); - if (this.getTypeMapping().tableNameIsInvalid(tableName)) { - if (pa.isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_TABLE, - new String[] {pa.getName(), tableName, this.column.getName()}, - this.column, - this.column.getTableTextRange() - ) - ); - } else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.COLUMN_UNRESOLVED_TABLE, - new String[] {tableName, this.column.getName()}, - this.column, - this.column.getTableTextRange() - ) - ); - } - return; - } - - if ( ! this.column.isResolved() && this.column.getDbTable() != null) { - if (pa.isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_NAME, - new String[] {pa.getName(), this.column.getName()}, - this.column, - this.column.getNameTextRange() - ) - ); - } else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.COLUMN_UNRESOLVED_NAME, - new String[] {this.column.getName()}, - this.column, - this.column.getNameTextRange() - ) - ); - } - } - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmXml.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmXml.java deleted file mode 100644 index 83d7c8f8fc..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmXml.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.context.orm.EntityMappings; -import org.eclipse.jpt.core.context.persistence.MappingFileRef; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlEntityMappings; -import org.eclipse.jpt.core.resource.xml.JpaXmlResource; - -public class GenericOrmXml - extends AbstractOrmXml -{ - - public GenericOrmXml(MappingFileRef parent, JpaXmlResource resource) { - super(parent, resource); - if (!resource.getContentType().isKindOf(JptCorePlugin.ORM_XML_CONTENT_TYPE)) { - throw new IllegalArgumentException(resource + " does not have orm xml content type"); //$NON-NLS-1$ - } - } - - @Override - protected XmlEntityMappings buildEntityMappingsResource() { - return OrmFactory.eINSTANCE.createXmlEntityMappings(); - } - - @Override - protected EntityMappings buildEntityMappings(XmlEntityMappings xmlEntityMappings) { - return getJpaFactory().buildEntityMappings(this, xmlEntityMappings); - } - - // ********** updating ********** - - @Override - public void update(JpaXmlResource resource) { - if (!resource.getContentType().isKindOf(JptCorePlugin.ORM_XML_CONTENT_TYPE)) { - throw new IllegalArgumentException(resource + " does not have orm xml content type"); //$NON-NLS-1$ - } - super.update(resource); - } - - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericPersistenceUnitDefaults.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericPersistenceUnitDefaults.java deleted file mode 100644 index 33030dbb06..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericPersistenceUnitDefaults.java +++ /dev/null @@ -1,296 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.jpt.core.context.AccessType; -import org.eclipse.jpt.core.context.orm.OrmPersistenceUnitDefaults; -import org.eclipse.jpt.core.context.orm.PersistenceUnitMetadata; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlEntityMappings; -import org.eclipse.jpt.core.resource.orm.XmlPersistenceUnitDefaults; -import org.eclipse.jpt.core.resource.orm.XmlPersistenceUnitMetadata; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Catalog; -import org.eclipse.jpt.db.Schema; -import org.eclipse.jpt.db.SchemaContainer; - -/** - * - */ -public class GenericPersistenceUnitDefaults - extends AbstractXmlContextNode - implements OrmPersistenceUnitDefaults -{ - protected final XmlEntityMappings xmlEntityMappings; - - protected AccessType access; - - protected String specifiedCatalog; - protected String defaultCatalog; - - protected String specifiedSchema; - protected String defaultSchema; - - protected boolean cascadePersist; - - - // ********** constructor/initialization ********** - - public GenericPersistenceUnitDefaults(PersistenceUnitMetadata parent, XmlEntityMappings xmlEntityMappings) { - super(parent); - this.xmlEntityMappings = xmlEntityMappings; - XmlPersistenceUnitDefaults resourceDefaults = this.getResourceDefaults(); - if (resourceDefaults != null) { - this.access = AccessType.fromOrmResourceModel(resourceDefaults.getAccess()); - this.specifiedCatalog = resourceDefaults.getCatalog(); - this.specifiedSchema = resourceDefaults.getSchema(); - this.cascadePersist = resourceDefaults.isCascadePersist(); - } - this.defaultCatalog = this.getJpaProject().getDefaultCatalog(); - this.defaultSchema = this.getJpaProject().getDefaultSchema(); - } - - public boolean resourceExists() { - return getResourceDefaults() != null; - } - - @Override - public PersistenceUnitMetadata getParent() { - return (PersistenceUnitMetadata) super.getParent(); - } - - protected XmlPersistenceUnitMetadata getResourcePersistenceUnitMetadata() { - return getParent().getResourcePersistenceUnitMetadata(); - } - - protected XmlPersistenceUnitMetadata createResourcePersistenceUnitMetadata() { - return getParent().createResourcePersistenceUnitMetadata(); - } - - // ********** access ********** - - public AccessType getAccess() { - return this.access; - } - - public void setAccess(AccessType access) { - AccessType old = this.access; - this.access = access; - if (access != old) { - XmlPersistenceUnitDefaults resourceDefaults = this.getResourceDefaults(); - if (resourceDefaults == null) { - resourceDefaults = this.buildResourceDefaults(); - } - resourceDefaults.setAccess(AccessType.toOrmResourceModel(access)); - this.checkResourceDefaults(resourceDefaults); - this.firePropertyChanged(ACCESS_PROPERTY, old, access); - } - } - - protected void setAccess_(AccessType access) { - AccessType old = this.access; - this.access = access; - this.firePropertyChanged(ACCESS_PROPERTY, old, access); - } - - - // ********** schema container ********** - - /** - * If we don't have a catalog (i.e. we don't even have a *default* catalog), - * then the database probably does not support catalogs; and we need to - * get the schema directly from the database. - */ - public SchemaContainer getDbSchemaContainer() { - String catalog = this.getCatalog(); - return (catalog != null) ? this.getDbCatalog(catalog) : this.getDatabase(); - } - - - // ********** catalog ********** - - public String getCatalog() { - return (this.specifiedCatalog != null) ? this.specifiedCatalog : this.defaultCatalog; - } - - public String getSpecifiedCatalog() { - return this.specifiedCatalog; - } - - public void setSpecifiedCatalog(String catalog) { - String old = this.specifiedCatalog; - this.specifiedCatalog = catalog; - if (this.attributeValueHasChanged(old, catalog)) { - XmlPersistenceUnitDefaults resourceDefaults = this.getResourceDefaults(); - if (resourceDefaults == null) { - resourceDefaults = this.buildResourceDefaults(); - } - resourceDefaults.setCatalog(catalog); - this.checkResourceDefaults(resourceDefaults); - this.firePropertyChanged(SPECIFIED_CATALOG_PROPERTY, old, catalog); - } - } - - protected void setSpecifiedCatalog_(String catalog) { - String old = this.specifiedCatalog; - this.specifiedCatalog = catalog; - this.firePropertyChanged(SPECIFIED_CATALOG_PROPERTY, old, catalog); - } - - public String getDefaultCatalog() { - return this.defaultCatalog; - } - - protected void setDefaultCatalog(String catalog) { - String old = this.defaultCatalog; - this.defaultCatalog = catalog; - this.firePropertyChanged(DEFAULT_CATALOG_PROPERTY, old, catalog); - } - - public Catalog getDbCatalog() { - String catalog = this.getCatalog(); - if (catalog == null) { - return null; // not even a default catalog (i.e. database probably does not support catalogs) - } - return this.getDbCatalog(catalog); - } - - - // ********** schema ********** - - public String getSchema() { - return (this.specifiedSchema != null) ? this.specifiedSchema : this.defaultSchema; - } - - public String getSpecifiedSchema() { - return this.specifiedSchema; - } - - public void setSpecifiedSchema(String schema) { - String old = this.specifiedSchema; - this.specifiedSchema = schema; - if (this.attributeValueHasChanged(old, schema)) { - XmlPersistenceUnitDefaults resourceDefaults = this.getResourceDefaults(); - if (resourceDefaults == null) { - resourceDefaults = this.buildResourceDefaults(); - } - resourceDefaults.setSchema(schema); - this.checkResourceDefaults(resourceDefaults); - this.firePropertyChanged(SPECIFIED_SCHEMA_PROPERTY, old, schema); - } - } - - protected void setSpecifiedSchema_(String schema) { - String old = this.specifiedSchema; - this.specifiedSchema = schema; - this.firePropertyChanged(SPECIFIED_SCHEMA_PROPERTY, old, schema); - } - - public String getDefaultSchema() { - return this.defaultSchema; - } - - protected void setDefaultSchema(String schema) { - String old = this.defaultSchema; - this.defaultSchema = schema; - this.firePropertyChanged(DEFAULT_SCHEMA_PROPERTY, old, schema); - } - - public Schema getDbSchema() { - SchemaContainer dbSchemaContainer = this.getDbSchemaContainer(); - return (dbSchemaContainer == null) ? null : dbSchemaContainer.getSchemaForIdentifier(this.getSchema()); - } - - - // ********** cascadePersist ********** - - public boolean isCascadePersist() { - return this.cascadePersist; - } - - public void setCascadePersist(boolean cascadePersist) { - boolean old = this.cascadePersist; - this.cascadePersist = cascadePersist; - if (cascadePersist != old) { - XmlPersistenceUnitDefaults resourceDefaults = this.getResourceDefaults(); - if (resourceDefaults == null) { - resourceDefaults = this.buildResourceDefaults(); - } - resourceDefaults.setCascadePersist(cascadePersist); - this.checkResourceDefaults(resourceDefaults); - this.firePropertyChanged(CASCADE_PERSIST_PROPERTY, old, cascadePersist); - } - } - - protected void setCascadePersist_(boolean cp) { - boolean old = this.cascadePersist; - this.cascadePersist = cp; - this.firePropertyChanged(CASCADE_PERSIST_PROPERTY, old, cp); - } - - - // ********** behavior ********** - - /** - * build the resource defaults and the resource metadata if necessary - */ - protected XmlPersistenceUnitDefaults buildResourceDefaults() { - XmlPersistenceUnitMetadata resourceMetadata = getResourcePersistenceUnitMetadata(); - if (resourceMetadata == null) { - resourceMetadata = createResourcePersistenceUnitMetadata(); - this.xmlEntityMappings.setPersistenceUnitMetadata(resourceMetadata); - } - XmlPersistenceUnitDefaults resourceDefaults = OrmFactory.eINSTANCE.createXmlPersistenceUnitDefaults(); - resourceMetadata.setPersistenceUnitDefaults(resourceDefaults); - return resourceDefaults; - } - - /** - * clear the resource defaults and the resource metadata if appropriate - */ - protected void checkResourceDefaults(XmlPersistenceUnitDefaults resourceDefaults) { - if (resourceDefaults.isUnset()) { - XmlPersistenceUnitMetadata metadata = this.xmlEntityMappings.getPersistenceUnitMetadata(); - metadata.setPersistenceUnitDefaults(null); - if (metadata.isUnset()) { - this.xmlEntityMappings.setPersistenceUnitMetadata(null); - } - } - } - - public void update() { - XmlPersistenceUnitDefaults resourceDefaults = this.getResourceDefaults(); - if (resourceDefaults == null) { - this.setAccess_(null); - this.setSpecifiedCatalog_(null); - this.setSpecifiedSchema_(null); - this.setCascadePersist_(false); - } else { - this.setAccess_(AccessType.fromOrmResourceModel(resourceDefaults.getAccess())); - this.setSpecifiedCatalog_(resourceDefaults.getCatalog()); - this.setSpecifiedSchema_(resourceDefaults.getSchema()); - this.setCascadePersist_(resourceDefaults.isCascadePersist()); - } - this.setDefaultCatalog(this.getJpaProject().getDefaultCatalog()); - this.setDefaultSchema(this.getJpaProject().getDefaultSchema()); - } - - public TextRange getValidationTextRange() { - XmlPersistenceUnitDefaults resourceDefaults = this.getResourceDefaults(); - return (resourceDefaults != null) ? resourceDefaults.getValidationTextRange() : this.xmlEntityMappings.getValidationTextRange(); - } - - protected XmlPersistenceUnitDefaults getResourceDefaults() { - XmlPersistenceUnitMetadata metadata = getResourcePersistenceUnitMetadata(); - return (metadata == null) ? null : metadata.getPersistenceUnitDefaults(); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericPersistenceUnitMetadata.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericPersistenceUnitMetadata.java deleted file mode 100644 index 50a64db4e5..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericPersistenceUnitMetadata.java +++ /dev/null @@ -1,27 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.jpt.core.context.orm.EntityMappings; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlEntityMappings; -import org.eclipse.jpt.core.resource.orm.XmlPersistenceUnitMetadata; - -public class GenericPersistenceUnitMetadata extends AbstractPersistenceUnitMetadata -{ - - public GenericPersistenceUnitMetadata(EntityMappings parent, XmlEntityMappings resource) { - super(parent, resource); - } - - public XmlPersistenceUnitMetadata createResourcePersistenceUnitMetadata() { - return OrmFactory.eINSTANCE.createXmlPersistenceUnitMetadata(); - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmBasicMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmBasicMappingProvider.java deleted file mode 100644 index e98eabbabd..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmBasicMappingProvider.java +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaBasicMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMappingProvider; -import org.eclipse.jpt.core.context.orm.OrmBasicMapping; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; -import org.eclipse.jpt.core.resource.orm.XmlBasic; - -public class OrmBasicMappingProvider - implements OrmAttributeMappingProvider -{ - // singleton - private static final OrmAttributeMappingProvider INSTANCE = new OrmBasicMappingProvider(); - - /** - * Return the singleton. - */ - public static OrmAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure single instance. - */ - private OrmBasicMappingProvider() { - super(); - } - - public IContentType getContentType() { - return JptCorePlugin.ORM_XML_CONTENT_TYPE; - } - - public String getKey() { - return MappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY; - } - - public XmlAttributeMapping buildResourceMapping() { - return OrmFactory.eINSTANCE.createXmlBasicImpl(); - } - - public OrmBasicMapping buildMapping(OrmPersistentAttribute parent, XmlAttributeMapping resourceMapping, JpaFactory factory) { - return factory.buildOrmBasicMapping(parent, (XmlBasic) resourceMapping); - } - - public XmlAttributeMapping buildVirtualResourceMapping(OrmTypeMapping ormTypeMapping, JavaAttributeMapping javaAttributeMapping, JpaFactory factory) { - return factory.buildVirtualXmlBasic(ormTypeMapping, (JavaBasicMapping) javaAttributeMapping); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmCascade.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmCascade.java deleted file mode 100644 index 47bebd013e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmCascade.java +++ /dev/null @@ -1,241 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.jpt.core.context.Cascade; -import org.eclipse.jpt.core.context.orm.OrmRelationshipMapping; -import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode; -import org.eclipse.jpt.core.resource.orm.CascadeType; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlRelationshipMapping; -import org.eclipse.jpt.core.utility.TextRange; - - -public class OrmCascade extends AbstractXmlContextNode implements Cascade -{ - protected boolean all; - - protected boolean persist; - - protected boolean merge; - - protected boolean remove; - - protected boolean refresh; - - - protected final XmlRelationshipMapping relationshipMapping; - - protected OrmCascade(OrmRelationshipMapping parent, XmlRelationshipMapping relationshipMapping) { - super(parent); - this.relationshipMapping = relationshipMapping; - CascadeType cascade = getResourceCascade(); - this.all = this.getResourceAll(cascade); - this.persist = this.getResourcePersist(cascade); - this.merge = this.getResourceMerge(cascade); - this.remove = this.getResourceRemove(cascade); - this.refresh = this.getResourceRefresh(cascade); - } - - public void initializeFrom(Cascade oldCascade) { - setAll(oldCascade.isAll()); - setPersist(oldCascade.isPersist()); - setMerge(oldCascade.isMerge()); - setRemove(oldCascade.isRemove()); - setRefresh(oldCascade.isRefresh()); - } - - public boolean isAll() { - return this.all; - } - - public void setAll(boolean newAll) { - boolean oldAll = this.all; - this.all = newAll; - if (oldAll != newAll) { - if (this.getResourceCascade() != null) { - this.getResourceCascade().setCascadeAll(newAll); - if (this.getResourceCascade().isUnset()) { - removeResourceCascade(); - } - } - else if (newAll != false) { - addResourceCascade(); - getResourceCascade().setCascadeAll(newAll); - } - } - firePropertyChanged(ALL_PROPERTY, oldAll, newAll); - } - - protected void setAll_(boolean newAll) { - boolean oldAll = this.all; - this.all = newAll; - firePropertyChanged(ALL_PROPERTY, oldAll, newAll); - } - - public boolean isPersist() { - return this.persist; - } - - public void setPersist(boolean newPersist) { - boolean oldPersist = this.persist; - this.persist = newPersist; - if (oldPersist != newPersist) { - if (this.getResourceCascade() != null) { - this.getResourceCascade().setCascadePersist(newPersist); - if (this.getResourceCascade().isUnset()) { - removeResourceCascade(); - } - } - else if (newPersist != false) { - addResourceCascade(); - getResourceCascade().setCascadePersist(newPersist); - } - } - firePropertyChanged(PERSIST_PROPERTY, oldPersist, newPersist); - } - - protected void setPersist_(boolean newPersist) { - boolean oldPersist = this.persist; - this.persist = newPersist; - firePropertyChanged(PERSIST_PROPERTY, oldPersist, newPersist); - } - - - public boolean isMerge() { - return this.merge; - } - - public void setMerge(boolean newMerge) { - boolean oldMerge = this.merge; - this.merge = newMerge; - if (oldMerge != newMerge) { - if (this.getResourceCascade() != null) { - this.getResourceCascade().setCascadeMerge(newMerge); - if (this.getResourceCascade().isUnset()) { - removeResourceCascade(); - } - } - else if (newMerge != false) { - addResourceCascade(); - getResourceCascade().setCascadeMerge(newMerge); - } - } - firePropertyChanged(MERGE_PROPERTY, oldMerge, newMerge); - } - - protected void setMerge_(boolean newMerge) { - boolean oldMerge = this.merge; - this.merge = newMerge; - firePropertyChanged(MERGE_PROPERTY, oldMerge, newMerge); - } - - public boolean isRemove() { - return this.remove; - } - - public void setRemove(boolean newRemove) { - boolean oldRemove = this.remove; - this.remove = newRemove; - if (oldRemove != newRemove) { - if (this.getResourceCascade() != null) { - this.getResourceCascade().setCascadeRemove(newRemove); - if (this.getResourceCascade().isUnset()) { - removeResourceCascade(); - } - } - else if (newRemove != false) { - addResourceCascade(); - getResourceCascade().setCascadeRemove(newRemove); - } - } - firePropertyChanged(REMOVE_PROPERTY, oldRemove, newRemove); - } - - protected void setRemove_(boolean newRemove) { - boolean oldRemove = this.remove; - this.remove = newRemove; - firePropertyChanged(REMOVE_PROPERTY, oldRemove, newRemove); - } - - public boolean isRefresh() { - return this.refresh; - } - - public void setRefresh(boolean newRefresh) { - boolean oldRefresh = this.refresh; - this.refresh = newRefresh; - if (oldRefresh != newRefresh) { - if (this.getResourceCascade() != null) { - this.getResourceCascade().setCascadeRefresh(newRefresh); - if (this.getResourceCascade().isUnset()) { - removeResourceCascade(); - } - } - else if (newRefresh != false) { - addResourceCascade(); - getResourceCascade().setCascadeRefresh(newRefresh); - } - } - firePropertyChanged(REFRESH_PROPERTY, oldRefresh, newRefresh); - } - - protected void setRefresh_(boolean newRefresh) { - boolean oldRefresh = this.refresh; - this.refresh = newRefresh; - firePropertyChanged(REFRESH_PROPERTY, oldRefresh, newRefresh); - } - - - protected CascadeType getResourceCascade() { - return this.relationshipMapping.getCascade(); - } - - protected void removeResourceCascade() { - this.relationshipMapping.setCascade(null); - } - - protected void addResourceCascade() { - this.relationshipMapping.setCascade(OrmFactory.eINSTANCE.createCascadeTypeImpl()); - } - - public void update() { - CascadeType cascade = getResourceCascade(); - this.setAll_(this.getResourceAll(cascade)); - this.setPersist_(this.getResourcePersist(cascade)); - this.setMerge_(this.getResourceMerge(cascade)); - this.setRemove_(this.getResourceRemove(cascade)); - this.setRefresh_(this.getResourceRefresh(cascade)); - } - - protected boolean getResourceAll(CascadeType cascade) { - return cascade == null ? false : cascade.isCascadeAll(); - } - - protected boolean getResourcePersist(CascadeType cascade) { - return cascade == null ? false : cascade.isCascadePersist(); - } - - protected boolean getResourceMerge(CascadeType cascade) { - return cascade == null ? false : cascade.isCascadeMerge(); - } - - protected boolean getResourceRemove(CascadeType cascade) { - return cascade == null ? false : cascade.isCascadeRemove(); - } - - protected boolean getResourceRefresh(CascadeType cascade) { - return cascade == null ? false : cascade.isCascadeRefresh(); - } - - public TextRange getValidationTextRange() { - return this.getResourceCascade().getValidationTextRange(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmEmbeddableProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmEmbeddableProvider.java deleted file mode 100644 index 47b1d6c754..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmEmbeddableProvider.java +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.orm.OrmEmbeddable; -import org.eclipse.jpt.core.context.orm.OrmPersistentType; -import org.eclipse.jpt.core.context.orm.OrmTypeMappingProvider; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlEmbeddable; -import org.eclipse.jpt.core.resource.orm.XmlTypeMapping; - -/** - * default ORM Embeddable provider - */ -public class OrmEmbeddableProvider - implements OrmTypeMappingProvider -{ - // singleton - private static final OrmEmbeddableProvider INSTANCE = new OrmEmbeddableProvider(); - - /** - * Return the singleton. - */ - public static OrmTypeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure single instance. - */ - private OrmEmbeddableProvider() { - super(); - } - - public XmlTypeMapping buildResourceMapping() { - return OrmFactory.eINSTANCE.createXmlEmbeddable(); - } - - public OrmEmbeddable buildMapping(OrmPersistentType parent, XmlTypeMapping resourceMapping, JpaFactory factory) { - return factory.buildOrmEmbeddable(parent, (XmlEmbeddable) resourceMapping); - } - - public IContentType getContentType() { - return JptCorePlugin.ORM_XML_CONTENT_TYPE; - } - - public String getKey() { - return MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY; - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmEmbeddedIdMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmEmbeddedIdMappingProvider.java deleted file mode 100644 index a30214867d..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmEmbeddedIdMappingProvider.java +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaEmbeddedIdMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMappingProvider; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; -import org.eclipse.jpt.core.resource.orm.XmlEmbeddedId; - -public class OrmEmbeddedIdMappingProvider - implements OrmAttributeMappingProvider -{ - // singleton - private static final OrmAttributeMappingProvider INSTANCE = new OrmEmbeddedIdMappingProvider(); - - /** - * Return the singleton. - */ - public static OrmAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure single instance. - */ - private OrmEmbeddedIdMappingProvider() { - super(); - } - - public IContentType getContentType() { - return JptCorePlugin.ORM_XML_CONTENT_TYPE; - } - - public String getKey() { - return MappingKeys.EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY; - } - - public XmlAttributeMapping buildResourceMapping() { - return OrmFactory.eINSTANCE.createXmlEmbeddedIdImpl(); - } - - public OrmAttributeMapping buildMapping(OrmPersistentAttribute parent, XmlAttributeMapping resourceMapping, JpaFactory factory) { - return factory.buildOrmEmbeddedIdMapping(parent, (XmlEmbeddedId) resourceMapping); - } - - public XmlAttributeMapping buildVirtualResourceMapping(OrmTypeMapping ormTypeMapping, JavaAttributeMapping javaAttributeMapping, JpaFactory factory) { - return factory.buildVirtualXmlEmbeddedId(ormTypeMapping, (JavaEmbeddedIdMapping) javaAttributeMapping); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmEmbeddedMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmEmbeddedMappingProvider.java deleted file mode 100644 index 96cc779168..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmEmbeddedMappingProvider.java +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaEmbeddedMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMappingProvider; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; -import org.eclipse.jpt.core.resource.orm.XmlEmbedded; - -public class OrmEmbeddedMappingProvider - implements OrmAttributeMappingProvider -{ - // singleton - private static final OrmAttributeMappingProvider INSTANCE = new OrmEmbeddedMappingProvider(); - - /** - * Return the singleton. - */ - public static OrmAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure single instance. - */ - private OrmEmbeddedMappingProvider() { - super(); - } - - public IContentType getContentType() { - return JptCorePlugin.ORM_XML_CONTENT_TYPE; - } - - public String getKey() { - return MappingKeys.EMBEDDED_ATTRIBUTE_MAPPING_KEY; - } - - public XmlAttributeMapping buildResourceMapping() { - return OrmFactory.eINSTANCE.createXmlEmbeddedImpl(); - } - - public OrmAttributeMapping buildMapping(OrmPersistentAttribute parent, XmlAttributeMapping resourceMapping, JpaFactory factory) { - return factory.buildOrmEmbeddedMapping(parent, (XmlEmbedded) resourceMapping); - } - - public XmlAttributeMapping buildVirtualResourceMapping(OrmTypeMapping ormTypeMapping, JavaAttributeMapping javaAttributeMapping, JpaFactory factory) { - return factory.buildVirtualXmlEmbedded(ormTypeMapping, (JavaEmbeddedMapping) javaAttributeMapping); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmEntityProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmEntityProvider.java deleted file mode 100644 index dfc4e22d84..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmEntityProvider.java +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.orm.OrmEntity; -import org.eclipse.jpt.core.context.orm.OrmPersistentType; -import org.eclipse.jpt.core.context.orm.OrmTypeMappingProvider; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlEntity; -import org.eclipse.jpt.core.resource.orm.XmlTypeMapping; - -/** - * default ORM Entity provider - */ -public class OrmEntityProvider - implements OrmTypeMappingProvider -{ - // singleton - private static final OrmEntityProvider INSTANCE = new OrmEntityProvider(); - - /** - * Return the singleton. - */ - public static OrmTypeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure single instance. - */ - private OrmEntityProvider() { - super(); - } - - public XmlTypeMapping buildResourceMapping() { - return OrmFactory.eINSTANCE.createXmlEntity(); - } - - public OrmEntity buildMapping(OrmPersistentType parent, XmlTypeMapping resourceMapping, JpaFactory factory) { - return factory.buildOrmEntity(parent, (XmlEntity) resourceMapping); - } - - public IContentType getContentType() { - return JptCorePlugin.ORM_XML_CONTENT_TYPE; - } - - public String getKey() { - return MappingKeys.ENTITY_TYPE_MAPPING_KEY; - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmIdMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmIdMappingProvider.java deleted file mode 100644 index 3d9fa59d49..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmIdMappingProvider.java +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaIdMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMappingProvider; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; -import org.eclipse.jpt.core.resource.orm.XmlId; - -public class OrmIdMappingProvider - implements OrmAttributeMappingProvider -{ - // singleton - private static final OrmAttributeMappingProvider INSTANCE = new OrmIdMappingProvider(); - - /** - * Return the singleton. - */ - public static OrmAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure single instance. - */ - private OrmIdMappingProvider() { - super(); - } - - public IContentType getContentType() { - return JptCorePlugin.ORM_XML_CONTENT_TYPE; - } - - public String getKey() { - return MappingKeys.ID_ATTRIBUTE_MAPPING_KEY; - } - - public XmlAttributeMapping buildResourceMapping() { - return OrmFactory.eINSTANCE.createXmlIdImpl(); - } - - public OrmAttributeMapping buildMapping(OrmPersistentAttribute parent, XmlAttributeMapping resourceMapping, JpaFactory factory) { - return factory.buildOrmIdMapping(parent, (XmlId) resourceMapping); - } - - public XmlAttributeMapping buildVirtualResourceMapping(OrmTypeMapping ormTypeMapping, JavaAttributeMapping javaAttributeMapping, JpaFactory factory) { - return factory.buildVirtualXmlId(ormTypeMapping, (JavaIdMapping) javaAttributeMapping); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmManyToManyMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmManyToManyMappingProvider.java deleted file mode 100644 index 911ae7858a..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmManyToManyMappingProvider.java +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaManyToManyMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMappingProvider; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; -import org.eclipse.jpt.core.resource.orm.XmlManyToMany; - -public class OrmManyToManyMappingProvider - implements OrmAttributeMappingProvider -{ - // singleton - private static final OrmAttributeMappingProvider INSTANCE = new OrmManyToManyMappingProvider(); - - /** - * Return the singleton. - */ - public static OrmAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure single instance. - */ - private OrmManyToManyMappingProvider() { - super(); - } - - public IContentType getContentType() { - return JptCorePlugin.ORM_XML_CONTENT_TYPE; - } - - public String getKey() { - return MappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY; - } - - public XmlAttributeMapping buildResourceMapping() { - return OrmFactory.eINSTANCE.createXmlManyToManyImpl(); - } - - public OrmAttributeMapping buildMapping(OrmPersistentAttribute parent, XmlAttributeMapping resourceMapping, JpaFactory factory) { - return factory.buildOrmManyToManyMapping(parent, (XmlManyToMany) resourceMapping); - } - - public XmlAttributeMapping buildVirtualResourceMapping(OrmTypeMapping ormTypeMapping, JavaAttributeMapping javaAttributeMapping, JpaFactory factory) { - return factory.buildVirtualXmlManyToMany(ormTypeMapping, (JavaManyToManyMapping) javaAttributeMapping); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmManyToOneMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmManyToOneMappingProvider.java deleted file mode 100644 index 52362e3fde..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmManyToOneMappingProvider.java +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaManyToOneMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMappingProvider; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; -import org.eclipse.jpt.core.resource.orm.XmlManyToOne; - -public class OrmManyToOneMappingProvider - implements OrmAttributeMappingProvider -{ - // singleton - private static final OrmAttributeMappingProvider INSTANCE = new OrmManyToOneMappingProvider(); - - /** - * Return the singleton. - */ - public static OrmAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure single instance. - */ - private OrmManyToOneMappingProvider() { - super(); - } - - public IContentType getContentType() { - return JptCorePlugin.ORM_XML_CONTENT_TYPE; - } - - public String getKey() { - return MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY; - } - - public XmlAttributeMapping buildResourceMapping() { - return OrmFactory.eINSTANCE.createXmlManyToOneImpl(); - } - - public OrmAttributeMapping buildMapping(OrmPersistentAttribute parent, XmlAttributeMapping resourceMapping, JpaFactory factory) { - return factory.buildOrmManyToOneMapping(parent, (XmlManyToOne) resourceMapping); - } - - public XmlAttributeMapping buildVirtualResourceMapping(OrmTypeMapping ormTypeMapping, JavaAttributeMapping javaAttributeMapping, JpaFactory factory) { - return factory.buildVirtualXmlManyToOne(ormTypeMapping, (JavaManyToOneMapping) javaAttributeMapping); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmMappedSuperclassProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmMappedSuperclassProvider.java deleted file mode 100644 index 0ef8d3a001..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmMappedSuperclassProvider.java +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 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 org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.orm.OrmMappedSuperclass; -import org.eclipse.jpt.core.context.orm.OrmPersistentType; -import org.eclipse.jpt.core.context.orm.OrmTypeMappingProvider; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlMappedSuperclass; -import org.eclipse.jpt.core.resource.orm.XmlTypeMapping; - -/** - * default ORM MappedSuperclass provider - */ -public class OrmMappedSuperclassProvider - implements OrmTypeMappingProvider -{ - // singleton - private static final OrmMappedSuperclassProvider INSTANCE = new OrmMappedSuperclassProvider(); - - /** - * Return the singleton. - */ - public static OrmTypeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure single instance. - */ - private OrmMappedSuperclassProvider() { - super(); - } - - public XmlTypeMapping buildResourceMapping() { - return OrmFactory.eINSTANCE.createXmlMappedSuperclass(); - } - - public OrmMappedSuperclass buildMapping(OrmPersistentType parent, XmlTypeMapping resourceMapping, JpaFactory factory) { - return factory.buildOrmMappedSuperclass(parent, (XmlMappedSuperclass) resourceMapping); - } - - public IContentType getContentType() { - return JptCorePlugin.ORM_XML_CONTENT_TYPE; - } - - public String getKey() { - return MappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY; - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmNullAttributeMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmNullAttributeMappingProvider.java deleted file mode 100644 index f0d4d908f0..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmNullAttributeMappingProvider.java +++ /dev/null @@ -1,64 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMappingProvider; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; -import org.eclipse.jpt.core.resource.orm.XmlNullAttributeMapping; - -public class OrmNullAttributeMappingProvider - implements OrmAttributeMappingProvider -{ - // singleton - private static final OrmAttributeMappingProvider INSTANCE = new OrmNullAttributeMappingProvider(); - - /** - * Return the singleton. - */ - public static OrmAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure single instance. - */ - private OrmNullAttributeMappingProvider() { - super(); - } - - public IContentType getContentType() { - return JptCorePlugin.ORM_XML_CONTENT_TYPE; - } - - public String getKey() { - return MappingKeys.NULL_ATTRIBUTE_MAPPING_KEY; - } - - public XmlAttributeMapping buildResourceMapping() { - throw new UnsupportedOperationException(); - } - - public OrmAttributeMapping buildMapping(OrmPersistentAttribute parent, XmlAttributeMapping resourceMapping, JpaFactory factory) { - return factory.buildOrmNullAttributeMapping(parent, (XmlNullAttributeMapping) resourceMapping); - } - - public XmlAttributeMapping buildVirtualResourceMapping(OrmTypeMapping ormTypeMapping, JavaAttributeMapping javaAttributeMapping, JpaFactory factory) { - return factory.buildVirtualXmlNullAttributeMapping(ormTypeMapping, javaAttributeMapping); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmOneToManyMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmOneToManyMappingProvider.java deleted file mode 100644 index b54211f770..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmOneToManyMappingProvider.java +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaOneToManyMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMappingProvider; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; -import org.eclipse.jpt.core.resource.orm.XmlOneToMany; - -public class OrmOneToManyMappingProvider - implements OrmAttributeMappingProvider -{ - // singleton - private static final OrmAttributeMappingProvider INSTANCE = new OrmOneToManyMappingProvider(); - - /** - * Return the singleton. - */ - public static OrmAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure single instance. - */ - private OrmOneToManyMappingProvider() { - super(); - } - - public IContentType getContentType() { - return JptCorePlugin.ORM_XML_CONTENT_TYPE; - } - - public String getKey() { - return MappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY; - } - - public XmlAttributeMapping buildResourceMapping() { - return OrmFactory.eINSTANCE.createXmlOneToManyImpl(); - } - - public OrmAttributeMapping buildMapping(OrmPersistentAttribute parent, XmlAttributeMapping resourceMapping, JpaFactory factory) { - return factory.buildOrmOneToManyMapping(parent, (XmlOneToMany) resourceMapping); - } - - public XmlAttributeMapping buildVirtualResourceMapping(OrmTypeMapping ormTypeMapping, JavaAttributeMapping javaAttributeMapping, JpaFactory factory) { - return factory.buildVirtualXmlOneToMany(ormTypeMapping, (JavaOneToManyMapping) javaAttributeMapping); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmOneToOneMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmOneToOneMappingProvider.java deleted file mode 100644 index 8ab69d26d1..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmOneToOneMappingProvider.java +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaOneToOneMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMappingProvider; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; -import org.eclipse.jpt.core.resource.orm.XmlOneToOne; - -public class OrmOneToOneMappingProvider - implements OrmAttributeMappingProvider -{ - // singleton - private static final OrmAttributeMappingProvider INSTANCE = new OrmOneToOneMappingProvider(); - - /** - * Return the singleton. - */ - public static OrmAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure single instance. - */ - private OrmOneToOneMappingProvider() { - super(); - } - - public IContentType getContentType() { - return JptCorePlugin.ORM_XML_CONTENT_TYPE; - } - - public String getKey() { - return MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY; - } - - public XmlAttributeMapping buildResourceMapping() { - return OrmFactory.eINSTANCE.createXmlOneToOneImpl(); - } - - public OrmAttributeMapping buildMapping(OrmPersistentAttribute parent, XmlAttributeMapping resourceMapping, JpaFactory factory) { - return factory.buildOrmOneToOneMapping(parent, (XmlOneToOne) resourceMapping); - } - - public XmlAttributeMapping buildVirtualResourceMapping(OrmTypeMapping ormTypeMapping, JavaAttributeMapping javaAttributeMapping, JpaFactory factory) { - return factory.buildVirtualXmlOneToOne(ormTypeMapping, (JavaOneToOneMapping) javaAttributeMapping); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmTransientMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmTransientMappingProvider.java deleted file mode 100644 index 10c1b3dfdd..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmTransientMappingProvider.java +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaTransientMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMappingProvider; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; -import org.eclipse.jpt.core.resource.orm.XmlTransient; - -public class OrmTransientMappingProvider - implements OrmAttributeMappingProvider -{ - // singleton - private static final OrmAttributeMappingProvider INSTANCE = new OrmTransientMappingProvider(); - - /** - * Return the singleton. - */ - public static OrmAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure single instance. - */ - private OrmTransientMappingProvider() { - super(); - } - - public IContentType getContentType() { - return JptCorePlugin.ORM_XML_CONTENT_TYPE; - } - - public String getKey() { - return MappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY; - } - - public XmlAttributeMapping buildResourceMapping() { - return OrmFactory.eINSTANCE.createXmlTransientImpl(); - } - - public OrmAttributeMapping buildMapping(OrmPersistentAttribute parent, XmlAttributeMapping resourceMapping, JpaFactory factory) { - return factory.buildOrmTransientMapping(parent, (XmlTransient) resourceMapping); - } - - public XmlAttributeMapping buildVirtualResourceMapping(OrmTypeMapping ormTypeMapping, JavaAttributeMapping javaAttributeMapping, JpaFactory factory) { - return factory.buildVirtualXmlTransient(ormTypeMapping, (JavaTransientMapping) javaAttributeMapping); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmVersionMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmVersionMappingProvider.java deleted file mode 100644 index 2e7dbde043..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/OrmVersionMappingProvider.java +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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 org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaVersionMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmAttributeMappingProvider; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.OrmFactory; -import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; -import org.eclipse.jpt.core.resource.orm.XmlVersion; - -public class OrmVersionMappingProvider - implements OrmAttributeMappingProvider -{ - // singleton - private static final OrmAttributeMappingProvider INSTANCE = new OrmVersionMappingProvider(); - - /** - * Return the singleton. - */ - public static OrmAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure single instance. - */ - private OrmVersionMappingProvider() { - super(); - } - - public IContentType getContentType() { - return JptCorePlugin.ORM_XML_CONTENT_TYPE; - } - - public String getKey() { - return MappingKeys.VERSION_ATTRIBUTE_MAPPING_KEY; - } - - public XmlAttributeMapping buildResourceMapping() { - return OrmFactory.eINSTANCE.createXmlVersionImpl(); - } - - public OrmAttributeMapping buildMapping(OrmPersistentAttribute parent, XmlAttributeMapping resourceMapping, JpaFactory factory) { - return factory.buildOrmVersionMapping(parent, (XmlVersion) resourceMapping); - } - - public XmlAttributeMapping buildVirtualResourceMapping(OrmTypeMapping ormTypeMapping, JavaAttributeMapping javaAttributeMapping, JpaFactory factory) { - return factory.buildVirtualXmlVersion(ormTypeMapping, (JavaVersionMapping) javaAttributeMapping); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualCascadeType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualCascadeType.java deleted file mode 100644 index 52625614b7..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualCascadeType.java +++ /dev/null @@ -1,82 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2009 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 org.eclipse.jpt.core.context.Cascade; -import org.eclipse.jpt.core.resource.orm.CascadeType; -import org.eclipse.jpt.core.resource.xml.AbstractJpaEObject; - -public class VirtualCascadeType extends AbstractJpaEObject implements CascadeType -{ - Cascade javaCascade; - - protected boolean metadataComplete; - - public VirtualCascadeType(Cascade javaCascade, boolean metadataComplete) { - super(); - this.javaCascade = javaCascade; - this.metadataComplete = metadataComplete; - } - - public boolean isCascadeAll() { - if (this.metadataComplete) { - return false; - } - return this.javaCascade.isAll(); - } - - public void setCascadeAll(@SuppressWarnings("unused") boolean value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public boolean isCascadeMerge() { - if (this.metadataComplete) { - return false; - } - return this.javaCascade.isMerge(); - } - - public void setCascadeMerge(@SuppressWarnings("unused") boolean value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public boolean isCascadePersist() { - if (this.metadataComplete) { - return false; - } - return this.javaCascade.isPersist(); - } - - public void setCascadePersist(@SuppressWarnings("unused") boolean value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public boolean isCascadeRefresh() { - if (this.metadataComplete) { - return false; - } - return this.javaCascade.isRefresh(); - } - - public void setCascadeRefresh(@SuppressWarnings("unused") boolean value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public boolean isCascadeRemove() { - if (this.metadataComplete) { - return false; - } - return this.javaCascade.isRemove(); - } - - public void setCascadeRemove(@SuppressWarnings("unused") boolean value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualMapKey.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualMapKey.java deleted file mode 100644 index 6c14783253..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualMapKey.java +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2009 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 org.eclipse.jpt.core.context.java.JavaMultiRelationshipMapping; -import org.eclipse.jpt.core.resource.orm.MapKey; -import org.eclipse.jpt.core.resource.xml.AbstractJpaEObject; - -public class VirtualMapKey extends AbstractJpaEObject implements MapKey -{ - JavaMultiRelationshipMapping javaMultiRelationshipMapping; - - protected boolean metadataComplete; - - public VirtualMapKey(JavaMultiRelationshipMapping javaMultiRelationshipMapping, boolean metadataComplete) { - super(); - this.javaMultiRelationshipMapping = javaMultiRelationshipMapping; - this.metadataComplete = metadataComplete; - } - - public String getName() { - if (this.metadataComplete) { - return null; - } - return this.javaMultiRelationshipMapping.getMapKey(); - } - - public void setName(@SuppressWarnings("unused") String newName) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlAttributeMapping.java deleted file mode 100644 index 1f67fd91e5..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlAttributeMapping.java +++ /dev/null @@ -1,57 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2009 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 org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; -import org.eclipse.jpt.core.resource.xml.AbstractJpaEObject; -import org.eclipse.jpt.core.utility.TextRange; - -public abstract class VirtualXmlAttributeMapping<T extends JavaAttributeMapping> extends AbstractJpaEObject implements XmlAttributeMapping -{ - protected OrmTypeMapping ormTypeMapping; - - protected final T javaAttributeMapping; - - protected VirtualXmlAttributeMapping(OrmTypeMapping ormTypeMapping, T javaAttributeMapping) { - super(); - this.ormTypeMapping = ormTypeMapping; - this.javaAttributeMapping = javaAttributeMapping; - } - - protected boolean isOrmMetadataComplete() { - return this.ormTypeMapping.isMetadataComplete(); - } - - protected T getJavaAttributeMapping() { - return this.javaAttributeMapping; - } - - public String getMappingKey() { - if (this.isOrmMetadataComplete()) { - return this.javaAttributeMapping.getPersistentAttribute().getDefaultMappingKey(); - } - return this.javaAttributeMapping.getKey(); - } - - public String getName() { - return this.javaAttributeMapping.getPersistentAttribute().getName(); - } - - public void setName(@SuppressWarnings("unused")String newName) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public TextRange getNameTextRange() { - return null; - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlAttributeOverride.java deleted file mode 100644 index ea72beacc2..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlAttributeOverride.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2009 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 org.eclipse.jpt.core.resource.orm.XmlAttributeOverride; -import org.eclipse.jpt.core.resource.orm.XmlColumn; -import org.eclipse.jpt.core.resource.xml.AbstractJpaEObject; - -public class VirtualXmlAttributeOverride extends AbstractJpaEObject implements XmlAttributeOverride -{ - - protected String name; - - protected final XmlColumn column; - - protected VirtualXmlAttributeOverride(String name, XmlColumn xmlColumn) { - super(); - this.name = name; - this.column = xmlColumn; - } - - public String getName() { - return this.name; - } - - public void setName(String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - - public XmlColumn getColumn() { - return this.column; - } - - public void setColumn(XmlColumn value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlBasic.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlBasic.java deleted file mode 100644 index 7b298344f2..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlBasic.java +++ /dev/null @@ -1,126 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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 org.eclipse.jpt.core.context.Converter; -import org.eclipse.jpt.core.context.EnumeratedConverter; -import org.eclipse.jpt.core.context.TemporalConverter; -import org.eclipse.jpt.core.context.java.JavaBasicMapping; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.EnumType; -import org.eclipse.jpt.core.resource.orm.FetchType; -import org.eclipse.jpt.core.resource.orm.TemporalType; -import org.eclipse.jpt.core.resource.orm.XmlBasic; -import org.eclipse.jpt.core.resource.orm.XmlColumn; -import org.eclipse.jpt.core.utility.TextRange; - -/** - * VirtualBasic is an implementation of Basic used when there is - * no tag in the orm.xml and an underlying javaBasicMapping exists. - */ -public class VirtualXmlBasic extends VirtualXmlAttributeMapping<JavaBasicMapping> implements XmlBasic -{ - - protected final VirtualXmlColumn column; - - public VirtualXmlBasic(OrmTypeMapping ormTypeMapping, JavaBasicMapping javaBasicMapping) { - super(ormTypeMapping, javaBasicMapping); - this.column = new VirtualXmlColumn(ormTypeMapping, javaBasicMapping.getColumn()); - } - - public XmlColumn getColumn() { - return this.column; - } - - public void setColumn(@SuppressWarnings("unused")XmlColumn value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public FetchType getFetch() { - if (this.isOrmMetadataComplete()) { - return org.eclipse.jpt.core.context.FetchType.toOrmResourceModel(this.javaAttributeMapping.getDefaultFetch()); - } - return org.eclipse.jpt.core.context.FetchType.toOrmResourceModel(this.javaAttributeMapping.getFetch()); - } - - public void setFetch(@SuppressWarnings("unused")FetchType newFetch) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Boolean getOptional() { - if (this.isOrmMetadataComplete()) { - return Boolean.valueOf(this.javaAttributeMapping.isDefaultOptional()); - } - return Boolean.valueOf(this.javaAttributeMapping.isOptional()); - } - - public void setOptional(@SuppressWarnings("unused")Boolean newOptional) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public boolean isLob() { - if (this.isOrmMetadataComplete()) { - return false; - } - return this.javaAttributeMapping.getConverter().getType() == Converter.LOB_CONVERTER; - } - - public void setLob(@SuppressWarnings("unused")boolean newLob) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public TemporalType getTemporal() { - if (this.isOrmMetadataComplete()) { - return null; - } - if (this.javaAttributeMapping.getConverter().getType() == Converter.TEMPORAL_CONVERTER) { - org.eclipse.jpt.core.context.TemporalType javaTemporalType = ((TemporalConverter) this.javaAttributeMapping.getConverter()).getTemporalType(); - return org.eclipse.jpt.core.context.TemporalType.toOrmResourceModel(javaTemporalType); - } - return null; - } - - public void setTemporal(@SuppressWarnings("unused")TemporalType newTemporal){ - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public EnumType getEnumerated() { - if (this.javaAttributeMapping.getConverter().getType() != Converter.ENUMERATED_CONVERTER) { - return null; - } - org.eclipse.jpt.core.context.EnumType javaEnumeratedType; - if (this.isOrmMetadataComplete()) { - if (this.javaAttributeMapping.getDefaultConverter().getType() != Converter.ENUMERATED_CONVERTER) { - return null; - } - javaEnumeratedType = ((EnumeratedConverter) this.javaAttributeMapping.getDefaultConverter()).getSpecifiedEnumType(); - } - else { - javaEnumeratedType = ((EnumeratedConverter) this.javaAttributeMapping.getConverter()).getEnumType(); - } - return org.eclipse.jpt.core.context.EnumType.toOrmResourceModel(javaEnumeratedType); - } - - public void setEnumerated(@SuppressWarnings("unused")EnumType newEnumerated) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public TextRange getEnumeratedTextRange() { - return null; - } - - public TextRange getLobTextRange() { - return null; - } - - public TextRange getTemporalTextRange() { - return null; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlColumn.java deleted file mode 100644 index 0caf0b7384..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlColumn.java +++ /dev/null @@ -1,165 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2009 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 org.eclipse.jpt.core.context.Column; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.XmlColumn; -import org.eclipse.jpt.core.resource.xml.AbstractJpaEObject; -import org.eclipse.jpt.core.utility.TextRange; - -/** - * A virtual column is used to represent the XmlColumn resource object - * within a virtual mapping. A virtual mapping is one which is not specified - * in the orm.xml file, but is implied from the underlying java. Virtual column - * is not used when the mapping is specified in the orm.xml, but the column tag does not exist. - * - * A virtual column delegates to the underlying java column for its state. The metadataComplete - * flag determines whether it will get specified or default information from the java column - * - */ -public class VirtualXmlColumn extends AbstractJpaEObject implements XmlColumn -{ - - protected Column column; - - protected OrmTypeMapping ormTypeMapping; - - - protected VirtualXmlColumn(OrmTypeMapping ormTypeMapping, Column column) { - super(); - this.ormTypeMapping = ormTypeMapping; - this.column = column; - } - - protected boolean isOrmMetadataComplete() { - return this.ormTypeMapping.isMetadataComplete(); - } - - public String getColumnDefinition() { - if (this.isOrmMetadataComplete()) { - return null; - } - return this.column.getColumnDefinition(); - } - - public void setColumnDefinition(@SuppressWarnings("unused")String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Boolean getInsertable() { - if (this.isOrmMetadataComplete()) { - return Boolean.valueOf(this.column.isDefaultInsertable()); - } - return Boolean.valueOf(this.column.isInsertable()); - } - - public void setInsertable(@SuppressWarnings("unused")Boolean value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Integer getLength() { - if (this.isOrmMetadataComplete()) { - return Integer.valueOf(this.column.getDefaultLength()); - } - return Integer.valueOf(this.column.getLength()); - } - - public void setLength(@SuppressWarnings("unused")Integer value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getName() { - if (this.isOrmMetadataComplete()) { - return this.column.getDefaultName(); - } - return this.column.getName(); - } - - public void setName(@SuppressWarnings("unused")String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Boolean getNullable() { - if (this.isOrmMetadataComplete()) { - return Boolean.valueOf(this.column.isDefaultNullable()); - } - return Boolean.valueOf(this.column.isNullable()); - } - - public void setNullable(@SuppressWarnings("unused")Boolean value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Integer getPrecision() { - if (this.isOrmMetadataComplete()) { - return Integer.valueOf(this.column.getDefaultPrecision()); - } - return Integer.valueOf(this.column.getPrecision()); - } - - public void setPrecision(@SuppressWarnings("unused")Integer value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Integer getScale() { - if (this.isOrmMetadataComplete()) { - return Integer.valueOf(this.column.getDefaultScale()); - } - return Integer.valueOf(this.column.getScale()); - } - - public void setScale(@SuppressWarnings("unused")Integer value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getTable() { - if (!this.isOrmMetadataComplete()) { - if (this.column.getSpecifiedTable() != null) { - return this.column.getSpecifiedTable(); - } - } - return this.ormTypeMapping.getPrimaryTableName(); - } - - public void setTable(@SuppressWarnings("unused")String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Boolean getUnique() { - if (this.isOrmMetadataComplete()) { - return Boolean.valueOf(this.column.isDefaultUnique()); - } - return Boolean.valueOf(this.column.isUnique()); - } - - public void setUnique(@SuppressWarnings("unused")Boolean value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Boolean getUpdatable() { - if (this.isOrmMetadataComplete()) { - return Boolean.valueOf(this.column.isDefaultUpdatable()); - } - return Boolean.valueOf(this.column.isUpdatable()); - } - - public void setUpdatable(@SuppressWarnings("unused")Boolean value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public TextRange getNameTextRange() { - return null; - } - - public TextRange getTableTextRange() { - return null; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlEmbedded.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlEmbedded.java deleted file mode 100644 index d3e2c1cfd8..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlEmbedded.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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.ListIterator; -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.util.EObjectContainmentEList; -import org.eclipse.jpt.core.context.java.JavaAttributeOverride; -import org.eclipse.jpt.core.context.java.JavaEmbeddedMapping; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.OrmPackage; -import org.eclipse.jpt.core.resource.orm.XmlAttributeOverride; -import org.eclipse.jpt.core.resource.orm.XmlColumn; -import org.eclipse.jpt.core.resource.orm.XmlEmbedded; -import org.eclipse.jpt.utility.internal.CollectionTools; - -/** - * VirtualEmbedded is an implementation of Embedded used when there is - * no tag in the orm.xml and an underlying javaEmbeddedMapping exists. - */ -public class VirtualXmlEmbedded extends VirtualXmlAttributeMapping<JavaEmbeddedMapping> implements XmlEmbedded -{ - - public VirtualXmlEmbedded(OrmTypeMapping ormTypeMapping, JavaEmbeddedMapping javaEmbeddedMapping) { - super(ormTypeMapping, javaEmbeddedMapping); - } - - public EList<XmlAttributeOverride> getAttributeOverrides() { - EList<XmlAttributeOverride> attributeOverrides = new EObjectContainmentEList<XmlAttributeOverride>(XmlAttributeOverride.class, this, OrmPackage.XML_EMBEDDED__ATTRIBUTE_OVERRIDES); - ListIterator<JavaAttributeOverride> javaAttributeOverrides; - if (!this.isOrmMetadataComplete()) { - javaAttributeOverrides = this.javaAttributeMapping.attributeOverrides(); - } - else { - javaAttributeOverrides = this.javaAttributeMapping.virtualAttributeOverrides(); - } - for (JavaAttributeOverride javaAttributeOverride : CollectionTools.iterable(javaAttributeOverrides)) { - XmlColumn xmlColumn = new VirtualXmlColumn(this.ormTypeMapping, javaAttributeOverride.getColumn()); - XmlAttributeOverride xmlAttributeOverride = new VirtualXmlAttributeOverride(javaAttributeOverride.getName(), xmlColumn); - attributeOverrides.add(xmlAttributeOverride); - } - return attributeOverrides; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlEmbeddedId.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlEmbeddedId.java deleted file mode 100644 index 6eaa9302e9..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlEmbeddedId.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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.ListIterator; -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.util.EObjectContainmentEList; -import org.eclipse.jpt.core.context.java.JavaAttributeOverride; -import org.eclipse.jpt.core.context.java.JavaEmbeddedIdMapping; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.OrmPackage; -import org.eclipse.jpt.core.resource.orm.XmlAttributeOverride; -import org.eclipse.jpt.core.resource.orm.XmlColumn; -import org.eclipse.jpt.core.resource.orm.XmlEmbeddedId; -import org.eclipse.jpt.utility.internal.CollectionTools; - -/** - * VirtualEmbeddedId is an implementation of EmbeddedId used when there is - * no tag in the orm.xml and an underlying javaEmbeddedIdMapping exists. - */ -public class VirtualXmlEmbeddedId extends VirtualXmlAttributeMapping<JavaEmbeddedIdMapping> implements XmlEmbeddedId -{ - - public VirtualXmlEmbeddedId(OrmTypeMapping ormTypeMapping, JavaEmbeddedIdMapping javaEmbeddedIdMapping) { - super(ormTypeMapping, javaEmbeddedIdMapping); - } - - public EList<XmlAttributeOverride> getAttributeOverrides() { - EList<XmlAttributeOverride> attributeOverrides = new EObjectContainmentEList<XmlAttributeOverride>(XmlAttributeOverride.class, this, OrmPackage.XML_EMBEDDED_ID__ATTRIBUTE_OVERRIDES); - ListIterator<JavaAttributeOverride> javaAttributeOverrides; - if (!this.isOrmMetadataComplete()) { - javaAttributeOverrides = this.javaAttributeMapping.attributeOverrides(); - } - else { - javaAttributeOverrides = this.javaAttributeMapping.virtualAttributeOverrides(); - } - for (JavaAttributeOverride javaAttributeOverride : CollectionTools.iterable(javaAttributeOverrides)) { - XmlColumn xmlColumn = new VirtualXmlColumn(this.ormTypeMapping, javaAttributeOverride.getColumn()); - XmlAttributeOverride xmlAttributeOverride = new VirtualXmlAttributeOverride(javaAttributeOverride.getName(), xmlColumn); - attributeOverrides.add(xmlAttributeOverride); - } - return attributeOverrides; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlGeneratedValue.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlGeneratedValue.java deleted file mode 100644 index 895bd3b8f1..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlGeneratedValue.java +++ /dev/null @@ -1,56 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2009 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 org.eclipse.jpt.core.context.java.JavaGeneratedValue; -import org.eclipse.jpt.core.context.java.JavaIdMapping; -import org.eclipse.jpt.core.resource.orm.GenerationType; -import org.eclipse.jpt.core.resource.orm.XmlGeneratedValue; -import org.eclipse.jpt.core.resource.xml.AbstractJpaEObject; -import org.eclipse.jpt.core.utility.TextRange; - -public class VirtualXmlGeneratedValue extends AbstractJpaEObject implements XmlGeneratedValue -{ - JavaIdMapping javaIdMapping; - - protected boolean metadataComplete; - - - public VirtualXmlGeneratedValue(JavaIdMapping javaIdMapping, boolean metadataComplete) { - super(); - this.javaIdMapping = javaIdMapping; - this.metadataComplete = metadataComplete; - } - - protected JavaGeneratedValue getJavaGeneratedValue() { - return this.javaIdMapping.getGeneratedValue(); - } - - - public String getGenerator() { - return this.metadataComplete ? null : this.getJavaGeneratedValue().getGenerator(); - } - - public GenerationType getStrategy() { - return this.metadataComplete ? null : org.eclipse.jpt.core.context.GenerationType.toOrmResourceModel(this.getJavaGeneratedValue().getStrategy()); - } - - public void setGenerator(@SuppressWarnings("unused")String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public void setStrategy(@SuppressWarnings("unused")GenerationType value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public TextRange getGeneratorTextRange() { - return null; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlId.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlId.java deleted file mode 100644 index 71cdff3318..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlId.java +++ /dev/null @@ -1,144 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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 org.eclipse.jpt.core.context.Converter; -import org.eclipse.jpt.core.context.TemporalConverter; -import org.eclipse.jpt.core.context.java.JavaIdMapping; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.EnumType; -import org.eclipse.jpt.core.resource.orm.TemporalType; -import org.eclipse.jpt.core.resource.orm.XmlColumn; -import org.eclipse.jpt.core.resource.orm.XmlGeneratedValue; -import org.eclipse.jpt.core.resource.orm.XmlId; -import org.eclipse.jpt.core.resource.orm.XmlSequenceGenerator; -import org.eclipse.jpt.core.resource.orm.XmlTableGenerator; -import org.eclipse.jpt.core.utility.TextRange; - -/** - * VirtualId is an implementation of Id used when there is - * no tag in the orm.xml and an underlying javaIdMapping exists. - */ -public class VirtualXmlId extends VirtualXmlAttributeMapping<JavaIdMapping> implements XmlId -{ - protected final VirtualXmlColumn column; - - protected final VirtualXmlGeneratedValue virtualGeneratedValue; - - protected final VirtualXmlTableGenerator virtualTableGenerator; - - protected final VirtualXmlSequenceGenerator virtualSequenceGenerator; - - - public VirtualXmlId(OrmTypeMapping ormTypeMapping, JavaIdMapping javaIdMapping) { - super(ormTypeMapping, javaIdMapping); - this.column = new VirtualXmlColumn(ormTypeMapping, javaIdMapping.getColumn()); - this.virtualGeneratedValue = new VirtualXmlGeneratedValue(javaIdMapping, this.isOrmMetadataComplete()); - this.virtualTableGenerator = new VirtualXmlTableGenerator(javaIdMapping, this.isOrmMetadataComplete()); - this.virtualSequenceGenerator = new VirtualXmlSequenceGenerator(javaIdMapping, this.isOrmMetadataComplete()); - } - - public XmlColumn getColumn() { - return this.column; - } - - public void setColumn(@SuppressWarnings("unused")XmlColumn value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public TemporalType getTemporal() { - if (this.isOrmMetadataComplete()) { - return null; - } - if (this.javaAttributeMapping.getConverter().getType() == Converter.TEMPORAL_CONVERTER) { - org.eclipse.jpt.core.context.TemporalType javaTemporalType = ((TemporalConverter) this.javaAttributeMapping.getConverter()).getTemporalType(); - return org.eclipse.jpt.core.context.TemporalType.toOrmResourceModel(javaTemporalType); - } - return null; - } - - public void setTemporal(@SuppressWarnings("unused")TemporalType newTemporal){ - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - - public XmlGeneratedValue getGeneratedValue() { - if (this.isOrmMetadataComplete()) { - return null; - } - if (this.javaAttributeMapping.getGeneratedValue() != null) { - return this.virtualGeneratedValue; - } - return null; - } - - public void setGeneratedValue(@SuppressWarnings("unused")XmlGeneratedValue value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public XmlSequenceGenerator getSequenceGenerator() { - if (this.isOrmMetadataComplete()) { - return null; - } - if (this.javaAttributeMapping.getSequenceGenerator() != null) { - return this.virtualSequenceGenerator; - } - return null; - } - - public void setSequenceGenerator(@SuppressWarnings("unused")XmlSequenceGenerator value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public XmlTableGenerator getTableGenerator() { - if (this.isOrmMetadataComplete()) { - return null; - } - if (this.javaAttributeMapping.getTableGenerator() != null) { - return this.virtualTableGenerator; - } - return null; - } - - public void setTableGenerator(@SuppressWarnings("unused")XmlTableGenerator value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - //see eclipselink bug 247078 for info one why I made the interface XmlConvertibleMapping - public EnumType getEnumerated() { - throw new UnsupportedOperationException("enumerated not supported on id mappings"); //$NON-NLS-1$ - } - - public void setEnumerated(@SuppressWarnings("unused")EnumType value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - //see eclipselink bug 247078 for info one why I made the interface XmlConvertibleMapping - public boolean isLob() { - throw new UnsupportedOperationException("lob not supported on id mappings"); //$NON-NLS-1$ - } - - public void setLob(@SuppressWarnings("unused")boolean value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public TextRange getEnumeratedTextRange() { - return null; - } - - public TextRange getLobTextRange() { - return null; - } - - public TextRange getTemporalTextRange() { - return null; - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlJoinColumn.java deleted file mode 100644 index 8a1922e7e2..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlJoinColumn.java +++ /dev/null @@ -1,129 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2009 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 org.eclipse.jpt.core.context.java.JavaJoinColumn; -import org.eclipse.jpt.core.resource.orm.XmlJoinColumn; -import org.eclipse.jpt.core.resource.xml.AbstractJpaEObject; -import org.eclipse.jpt.core.utility.TextRange; - -public class VirtualXmlJoinColumn extends AbstractJpaEObject implements XmlJoinColumn -{ - protected JavaJoinColumn javaJoinColumn; - - protected boolean metadataComplete; - - public VirtualXmlJoinColumn(JavaJoinColumn javaJoinColumn, boolean metadataComplete) { - super(); - this.javaJoinColumn = javaJoinColumn; - this.metadataComplete = metadataComplete; - } - - public String getColumnDefinition() { - if (this.metadataComplete) { - return null; - } - return this.javaJoinColumn.getColumnDefinition(); - } - - public void setColumnDefinition(@SuppressWarnings("unused")String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Boolean getInsertable() { - if (this.metadataComplete) { - return Boolean.valueOf(this.javaJoinColumn.isDefaultInsertable()); - } - return Boolean.valueOf(this.javaJoinColumn.isInsertable()); - } - - public void setInsertable(@SuppressWarnings("unused")Boolean value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getName() { - if (this.metadataComplete) { - return this.javaJoinColumn.getDefaultName(); - } - return this.javaJoinColumn.getName(); - } - - public void setName(@SuppressWarnings("unused")String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getReferencedColumnName() { - if (this.metadataComplete) { - return this.javaJoinColumn.getDefaultReferencedColumnName(); - } - return this.javaJoinColumn.getReferencedColumnName(); - } - - public void setReferencedColumnName(@SuppressWarnings("unused")String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Boolean getNullable() { - if (this.metadataComplete) { - return Boolean.valueOf(this.javaJoinColumn.isDefaultNullable()); - } - return Boolean.valueOf(this.javaJoinColumn.isNullable()); - } - - public void setNullable(@SuppressWarnings("unused")Boolean value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getTable() { - if (this.metadataComplete) { - return this.javaJoinColumn.getDefaultTable(); - } - return this.javaJoinColumn.getTable(); - } - - public void setTable(@SuppressWarnings("unused")String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Boolean getUnique() { - if (this.metadataComplete) { - return Boolean.valueOf(this.javaJoinColumn.isDefaultUnique()); - } - return Boolean.valueOf(this.javaJoinColumn.isUnique()); - } - - public void setUnique(@SuppressWarnings("unused")Boolean value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Boolean getUpdatable() { - if (this.metadataComplete) { - return Boolean.valueOf(this.javaJoinColumn.isDefaultUpdatable()); - } - return Boolean.valueOf(this.javaJoinColumn.isUpdatable()); - } - - public void setUpdatable(@SuppressWarnings("unused") Boolean value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public TextRange getNameTextRange() { - return null; - } - - public TextRange getTableTextRange() { - return null; - } - - public TextRange getReferencedColumnNameTextRange() { - return null; - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlJoinTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlJoinTable.java deleted file mode 100644 index bd1fa4c10e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlJoinTable.java +++ /dev/null @@ -1,127 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2009 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 org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.util.EObjectContainmentEList; -import org.eclipse.jpt.core.context.java.JavaJoinColumn; -import org.eclipse.jpt.core.context.java.JavaJoinTable; -import org.eclipse.jpt.core.context.java.JavaUniqueConstraint; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.OrmPackage; -import org.eclipse.jpt.core.resource.orm.XmlJoinColumn; -import org.eclipse.jpt.core.resource.orm.XmlJoinTable; -import org.eclipse.jpt.core.resource.orm.XmlUniqueConstraint; -import org.eclipse.jpt.core.resource.xml.AbstractJpaEObject; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.internal.CollectionTools; - -public class VirtualXmlJoinTable - extends AbstractJpaEObject - implements XmlJoinTable -{ - protected OrmTypeMapping ormTypeMapping; - - protected JavaJoinTable javaJoinTable; - - - protected VirtualXmlJoinTable(OrmTypeMapping ormTypeMapping, JavaJoinTable javaJoinTable) { - super(); - this.ormTypeMapping = ormTypeMapping; - this.javaJoinTable = javaJoinTable; - } - - - protected boolean isOrmMetadataComplete() { - return this.ormTypeMapping.isMetadataComplete(); - } - - public String getName() { - if (this.isOrmMetadataComplete()) { - return this.javaJoinTable.getDefaultName(); - } - return this.javaJoinTable.getName(); - } - - public void setName(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getCatalog() { - if (this.isOrmMetadataComplete()) { - return this.javaJoinTable.getDefaultCatalog(); - } - return this.javaJoinTable.getCatalog(); - } - - public void setCatalog(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getSchema() { - if (this.isOrmMetadataComplete()) { - return this.javaJoinTable.getDefaultSchema(); - } - return this.javaJoinTable.getSchema(); - } - - public void setSchema(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - //VirtualXmlJoinTable is rebuilt every time, so just rebuilding the joinColumns list as well - public EList<XmlJoinColumn> getJoinColumns() { - EList<XmlJoinColumn> joinColumns = new EObjectContainmentEList<XmlJoinColumn>(XmlJoinColumn.class, this, OrmPackage.XML_JOIN_TABLE__JOIN_COLUMNS); - if (this.javaJoinTable == null) { - return joinColumns; - } - for (JavaJoinColumn joinColumn : CollectionTools.iterable(this.javaJoinTable.specifiedJoinColumns())) { - XmlJoinColumn xmlJoinColumn = new VirtualXmlJoinColumn(joinColumn, isOrmMetadataComplete()); - joinColumns.add(xmlJoinColumn); - } - return joinColumns; - } - - //VirtualXmlJoinTable is rebuilt every time, so just rebuilding the joinColumns list as well - public EList<XmlJoinColumn> getInverseJoinColumns() { - EList<XmlJoinColumn> inverseJoinColumns = new EObjectContainmentEList<XmlJoinColumn>(XmlJoinColumn.class, this, OrmPackage.XML_JOIN_TABLE__INVERSE_JOIN_COLUMNS); - if (this.javaJoinTable == null) { - return inverseJoinColumns; - } - for (JavaJoinColumn joinColumn : CollectionTools.iterable(this.javaJoinTable.specifiedInverseJoinColumns())) { - XmlJoinColumn xmlJoinColumn = new VirtualXmlJoinColumn(joinColumn, isOrmMetadataComplete()); - inverseJoinColumns.add(xmlJoinColumn); - } - - return inverseJoinColumns; - } - - public EList<XmlUniqueConstraint> getUniqueConstraints() { - EList<XmlUniqueConstraint> xmlUniqueConstraints = new EObjectContainmentEList<XmlUniqueConstraint>(XmlUniqueConstraint.class, this, OrmPackage.XML_JOIN_TABLE__UNIQUE_CONSTRAINTS); - for (JavaUniqueConstraint uniqueConstraint : CollectionTools.iterable(this.javaJoinTable.uniqueConstraints())) { - XmlUniqueConstraint xmlUniqueConstraint = new VirtualXmlUniqueConstraint(uniqueConstraint, isOrmMetadataComplete()); - xmlUniqueConstraints.add(xmlUniqueConstraint); - } - - return xmlUniqueConstraints; - } - - public TextRange getNameTextRange() { - return null; - } - - public TextRange getCatalogTextRange() { - return null; - } - - public TextRange getSchemaTextRange() { - return null; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlManyToMany.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlManyToMany.java deleted file mode 100644 index 779b4ad946..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlManyToMany.java +++ /dev/null @@ -1,133 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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 org.eclipse.emf.common.util.EList; -import org.eclipse.jpt.core.context.java.JavaManyToManyMapping; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.CascadeType; -import org.eclipse.jpt.core.resource.orm.FetchType; -import org.eclipse.jpt.core.resource.orm.MapKey; -import org.eclipse.jpt.core.resource.orm.XmlJoinColumn; -import org.eclipse.jpt.core.resource.orm.XmlJoinTable; -import org.eclipse.jpt.core.resource.orm.XmlManyToMany; -import org.eclipse.jpt.core.utility.TextRange; - -/** - * VirtualManyToMany is an implementation of ManyToMany used when there is - * no tag in the orm.xml and an underlying javaManyToManyMapping exists. - */ -public class VirtualXmlManyToMany - extends VirtualXmlAttributeMapping<JavaManyToManyMapping> - implements XmlManyToMany -{ - protected final VirtualCascadeType virtualCascadeType; - - protected final MapKey mapKey; - - - public VirtualXmlManyToMany( - OrmTypeMapping ormTypeMapping, JavaManyToManyMapping javaManyToManyMapping) { - super(ormTypeMapping, javaManyToManyMapping); - this.virtualCascadeType = - new VirtualCascadeType(javaManyToManyMapping.getCascade(), this.isOrmMetadataComplete()); - this.mapKey = new VirtualMapKey(javaManyToManyMapping, this.isOrmMetadataComplete()); - } - - - public FetchType getFetch() { - if (this.isOrmMetadataComplete()) { - return org.eclipse.jpt.core.context.FetchType.toOrmResourceModel(this.javaAttributeMapping.getDefaultFetch()); - } - return org.eclipse.jpt.core.context.FetchType.toOrmResourceModel(this.javaAttributeMapping.getFetch()); - } - - public void setFetch(@SuppressWarnings("unused") FetchType newFetch) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public EList<XmlJoinColumn> getJoinColumns() { - return null; - } - - public CascadeType getCascade() { - return this.virtualCascadeType; - } - - public void setCascade(@SuppressWarnings("unused") CascadeType value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public XmlJoinTable getJoinTable() { - if (this.javaAttributeMapping.getRelationshipReference().getJoinTableJoiningStrategy().getJoinTable() != null) { - return new VirtualXmlJoinTable( - ormTypeMapping, - this.javaAttributeMapping.getRelationshipReference(). - getJoinTableJoiningStrategy().getJoinTable()); - } - else { - return null; - } - } - - public void setJoinTable(@SuppressWarnings("unused") XmlJoinTable value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getTargetEntity() { - if (this.isOrmMetadataComplete()) { - return this.javaAttributeMapping.getDefaultTargetEntity(); - } - return this.javaAttributeMapping.getTargetEntity(); - } - - public void setTargetEntity(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getMappedBy() { - if (this.isOrmMetadataComplete()) { - return null; - } - return this.javaAttributeMapping.getRelationshipReference().getMappedByJoiningStrategy().getMappedByAttribute(); - } - - public void setMappedBy(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - - public MapKey getMapKey() { - return this.mapKey; - } - - public void setMapKey(@SuppressWarnings("unused") MapKey value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getOrderBy() { - if (this.isOrmMetadataComplete()) { - return null; - } - return this.javaAttributeMapping.getOrderBy(); - } - - public void setOrderBy(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public TextRange getMappedByTextRange() { - return null; - } - - public TextRange getTargetEntityTextRange() { - return null; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlManyToOne.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlManyToOne.java deleted file mode 100644 index 9b036102f6..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlManyToOne.java +++ /dev/null @@ -1,110 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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 org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.util.EObjectContainmentEList; -import org.eclipse.jpt.core.context.java.JavaJoinColumn; -import org.eclipse.jpt.core.context.java.JavaManyToOneMapping; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.CascadeType; -import org.eclipse.jpt.core.resource.orm.FetchType; -import org.eclipse.jpt.core.resource.orm.OrmPackage; -import org.eclipse.jpt.core.resource.orm.XmlJoinColumn; -import org.eclipse.jpt.core.resource.orm.XmlJoinTable; -import org.eclipse.jpt.core.resource.orm.XmlManyToOne; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.internal.CollectionTools; - -/** - * VirtualManyToOne is an implementation of ManyToOne used when there is - * no tag in the orm.xml and an underlying javaManyToOneMapping exists. - */ -public class VirtualXmlManyToOne - extends VirtualXmlAttributeMapping<JavaManyToOneMapping> - implements XmlManyToOne -{ - protected final VirtualCascadeType virtualCascadeType; - - - public VirtualXmlManyToOne( - OrmTypeMapping ormTypeMapping, JavaManyToOneMapping javaManyToOneMapping) { - super(ormTypeMapping, javaManyToOneMapping); - this.virtualCascadeType = - new VirtualCascadeType(javaManyToOneMapping.getCascade(), this.isOrmMetadataComplete()); - } - - public FetchType getFetch() { - if (this.isOrmMetadataComplete()) { - return org.eclipse.jpt.core.context.FetchType.toOrmResourceModel(this.javaAttributeMapping.getDefaultFetch()); - } - return org.eclipse.jpt.core.context.FetchType.toOrmResourceModel(this.javaAttributeMapping.getFetch()); - } - - public void setFetch(@SuppressWarnings("unused") FetchType newFetch) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Boolean getOptional() { - if (this.isOrmMetadataComplete()) { - return Boolean.valueOf(this.javaAttributeMapping.isDefaultOptional()); - } - return Boolean.valueOf(this.javaAttributeMapping.isOptional()); - } - - public void setOptional(@SuppressWarnings("unused") Boolean newOptional) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public EList<XmlJoinColumn> getJoinColumns() { - EList<XmlJoinColumn> joinColumns = new EObjectContainmentEList<XmlJoinColumn>(XmlJoinColumn.class, this, OrmPackage.XML_JOIN_TABLE__JOIN_COLUMNS); - //TODO here i'm using joinColumns() while VirtualXmlJoinTable uses specifiedJoinColumns()??? - for (JavaJoinColumn joinColumn : - CollectionTools.iterable( - this.javaAttributeMapping.getRelationshipReference(). - getJoinColumnJoiningStrategy().joinColumns())) { - XmlJoinColumn xmlJoinColumn = new VirtualXmlJoinColumn(joinColumn, this.isOrmMetadataComplete()); - joinColumns.add(xmlJoinColumn); - } - return joinColumns; - } - - public CascadeType getCascade() { - return this.virtualCascadeType; - } - - public void setCascade(@SuppressWarnings("unused") CascadeType value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public XmlJoinTable getJoinTable() { - //TODO we don't yet support JoinTable in the context model for many-to-one mappings - return null;//this.virtualJoinTable; - } - - public void setJoinTable(@SuppressWarnings("unused") XmlJoinTable value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getTargetEntity() { - if (this.isOrmMetadataComplete()) { - return this.javaAttributeMapping.getDefaultTargetEntity(); - } - return this.javaAttributeMapping.getTargetEntity(); - } - - public void setTargetEntity(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public TextRange getTargetEntityTextRange() { - return null; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlNullAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlNullAttributeMapping.java deleted file mode 100644 index 5c6c196ce3..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlNullAttributeMapping.java +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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 org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.XmlNullAttributeMapping; - -/** - * VirtualVersion is an implementation of Version used when there is - * no tag in the orm.xml and an underlying javaVersionMapping exists. - */ -public class VirtualXmlNullAttributeMapping extends VirtualXmlAttributeMapping<JavaAttributeMapping> implements XmlNullAttributeMapping -{ - - public VirtualXmlNullAttributeMapping(OrmTypeMapping ormTypeMapping, JavaAttributeMapping javaAttributeMapping) { - super(ormTypeMapping, javaAttributeMapping); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlOneToMany.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlOneToMany.java deleted file mode 100644 index e86093d122..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlOneToMany.java +++ /dev/null @@ -1,133 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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 org.eclipse.emf.common.util.EList; -import org.eclipse.jpt.core.context.java.JavaOneToManyMapping; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.CascadeType; -import org.eclipse.jpt.core.resource.orm.FetchType; -import org.eclipse.jpt.core.resource.orm.MapKey; -import org.eclipse.jpt.core.resource.orm.XmlJoinColumn; -import org.eclipse.jpt.core.resource.orm.XmlJoinTable; -import org.eclipse.jpt.core.resource.orm.XmlOneToMany; -import org.eclipse.jpt.core.utility.TextRange; - -/** - * VirtualOneToMany is an implementation of OneToMany used when there is - * no tag in the orm.xml and an underlying javaOneToManyMapping exists. - */ -public class VirtualXmlOneToMany<T extends JavaOneToManyMapping> - extends VirtualXmlAttributeMapping<T> - implements XmlOneToMany -{ - protected final VirtualCascadeType virtualCascadeType; - - protected final MapKey mapKey; - - - public VirtualXmlOneToMany( - OrmTypeMapping ormTypeMapping, T javaOneToManyMapping) { - super(ormTypeMapping, javaOneToManyMapping); - this.virtualCascadeType = - new VirtualCascadeType(javaOneToManyMapping.getCascade(), this.isOrmMetadataComplete()); - this.mapKey = new VirtualMapKey(javaOneToManyMapping, this.isOrmMetadataComplete()); - } - - public FetchType getFetch() { - if (this.isOrmMetadataComplete()) { - return org.eclipse.jpt.core.context.FetchType.toOrmResourceModel(this.javaAttributeMapping.getDefaultFetch()); - } - return org.eclipse.jpt.core.context.FetchType.toOrmResourceModel(this.javaAttributeMapping.getFetch()); - } - - public void setFetch(@SuppressWarnings("unused") FetchType newFetch) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public EList<XmlJoinColumn> getJoinColumns() { - return null; - } - - public CascadeType getCascade() { - return this.virtualCascadeType; - } - - public void setCascade(@SuppressWarnings("unused") CascadeType value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public XmlJoinTable getJoinTable() { - if (this.javaAttributeMapping.getRelationshipReference().getJoinTableJoiningStrategy().getJoinTable() != null) { - return new VirtualXmlJoinTable( - ormTypeMapping, - this.javaAttributeMapping.getRelationshipReference(). - getJoinTableJoiningStrategy().getJoinTable()); - } - else { - return null; - } - } - - public void setJoinTable(@SuppressWarnings("unused") XmlJoinTable value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getTargetEntity() { - if (this.isOrmMetadataComplete()) { - return this.javaAttributeMapping.getDefaultTargetEntity(); - } - return this.javaAttributeMapping.getTargetEntity(); - } - - public void setTargetEntity(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getMappedBy() { - if (this.isOrmMetadataComplete()) { - return null; - } - return this.javaAttributeMapping.getRelationshipReference(). - getMappedByJoiningStrategy().getMappedByAttribute(); - } - - public void setMappedBy(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - - public MapKey getMapKey() { - return this.mapKey; - } - - public void setMapKey(@SuppressWarnings("unused") MapKey value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getOrderBy() { - if (this.isOrmMetadataComplete()) { - return null; - } - return this.javaAttributeMapping.getOrderBy(); - } - - public void setOrderBy(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public TextRange getMappedByTextRange() { - return null; - } - - public TextRange getTargetEntityTextRange() { - return null; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlOneToOne.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlOneToOne.java deleted file mode 100644 index ab47e21289..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlOneToOne.java +++ /dev/null @@ -1,143 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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 org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.util.EObjectContainmentEList; -import org.eclipse.jpt.core.context.java.JavaJoinColumn; -import org.eclipse.jpt.core.context.java.JavaOneToOneMapping; -import org.eclipse.jpt.core.context.java.JavaPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.CascadeType; -import org.eclipse.jpt.core.resource.orm.FetchType; -import org.eclipse.jpt.core.resource.orm.OrmPackage; -import org.eclipse.jpt.core.resource.orm.XmlJoinColumn; -import org.eclipse.jpt.core.resource.orm.XmlJoinTable; -import org.eclipse.jpt.core.resource.orm.XmlOneToOne; -import org.eclipse.jpt.core.resource.orm.XmlPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.internal.CollectionTools; - -/** - * VirtualOneToOne is an implementation of OneToOne used when there is - * no tag in the orm.xml and an underlying javaOneToOneMapping exists. - */ -public class VirtualXmlOneToOne - extends VirtualXmlAttributeMapping<JavaOneToOneMapping> - implements XmlOneToOne -{ - protected final VirtualCascadeType virtualCascadeType; - - - public VirtualXmlOneToOne( - OrmTypeMapping ormTypeMapping, JavaOneToOneMapping javaOneToOneMapping) { - super(ormTypeMapping, javaOneToOneMapping); - this.virtualCascadeType = - new VirtualCascadeType(javaOneToOneMapping.getCascade(), this.isOrmMetadataComplete()); - } - - public FetchType getFetch() { - if (this.isOrmMetadataComplete()) { - return org.eclipse.jpt.core.context.FetchType.toOrmResourceModel(this.javaAttributeMapping.getDefaultFetch()); - } - return org.eclipse.jpt.core.context.FetchType.toOrmResourceModel(this.javaAttributeMapping.getFetch()); - } - - public void setFetch(@SuppressWarnings("unused") FetchType newFetch) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Boolean getOptional() { - if (this.isOrmMetadataComplete()) { - return Boolean.valueOf(this.javaAttributeMapping.isDefaultOptional()); - } - return Boolean.valueOf(this.javaAttributeMapping.isOptional()); - } - - public void setOptional(@SuppressWarnings("unused") Boolean newOptional) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public EList<XmlJoinColumn> getJoinColumns() { - //TODO need to check metadataComplete here - EList<XmlJoinColumn> joinColumns = new EObjectContainmentEList<XmlJoinColumn>(XmlJoinColumn.class, this, OrmPackage.XML_ONE_TO_ONE__JOIN_COLUMNS); - //TODO here i'm using joinColumns() while VirtualXmlJoinTable uses specifiedJoinColumns()??? - for (JavaJoinColumn joinColumn : - CollectionTools.iterable( - this.javaAttributeMapping.getRelationshipReference(). - getJoinColumnJoiningStrategy().joinColumns())) { - XmlJoinColumn xmlJoinColumn = new VirtualXmlJoinColumn(joinColumn, this.isOrmMetadataComplete()); - joinColumns.add(xmlJoinColumn); - } - return joinColumns; - } - - public CascadeType getCascade() { - return this.virtualCascadeType; - } - - public void setCascade(@SuppressWarnings("unused") CascadeType value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public XmlJoinTable getJoinTable() { - //TODO we don't yet support JoinTable in the context model for many-to-one mappings - return null;//this.virtualJoinTable; - } - - public void setJoinTable(@SuppressWarnings("unused") XmlJoinTable value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getTargetEntity() { - if (this.isOrmMetadataComplete()) { - return this.javaAttributeMapping.getDefaultTargetEntity(); - } - return this.javaAttributeMapping.getTargetEntity(); - } - - public void setTargetEntity(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getMappedBy() { - if (this.isOrmMetadataComplete()) { - return null; - } - return this.javaAttributeMapping.getRelationshipReference(). - getMappedByJoiningStrategy().getMappedByAttribute(); - } - - public void setMappedBy(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public EList<XmlPrimaryKeyJoinColumn> getPrimaryKeyJoinColumns() { - EList<XmlPrimaryKeyJoinColumn> joinColumns = new EObjectContainmentEList<XmlPrimaryKeyJoinColumn>(XmlPrimaryKeyJoinColumn.class, this, OrmPackage.XML_ONE_TO_ONE__PRIMARY_KEY_JOIN_COLUMNS); - if (!this.isOrmMetadataComplete()) { - for (JavaPrimaryKeyJoinColumn joinColumn : - CollectionTools.iterable( - this.javaAttributeMapping.getRelationshipReference(). - getPrimaryKeyJoinColumnJoiningStrategy().primaryKeyJoinColumns())) { - XmlPrimaryKeyJoinColumn xmlJoinColumn = new VirtualXmlPrimaryKeyJoinColumn(joinColumn/*, this.metadataComplete*/); - joinColumns.add(xmlJoinColumn); - } - } - return joinColumns; - } - - public TextRange getMappedByTextRange() { - return null; - } - - public TextRange getTargetEntityTextRange() { - return null; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlPrimaryKeyJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlPrimaryKeyJoinColumn.java deleted file mode 100644 index cded97f303..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlPrimaryKeyJoinColumn.java +++ /dev/null @@ -1,67 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2009 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 org.eclipse.jpt.core.context.java.JavaPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.resource.orm.XmlPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.resource.xml.AbstractJpaEObject; -import org.eclipse.jpt.core.utility.TextRange; - -/** - * A virtual primary key join column is used to represent the XmlPrimaryKeyJoinColumn resource object - * within a virtual secondary table. A virtual secondary table is one which is not specified - * in the orm.xml file, but is implied from the underlying java. Virtual pk join column - * is not used when the secondary table is specified in the orm.xml. - * - * A virtual pk join column delegates to the underlying java pk join column for its state. - */ -public class VirtualXmlPrimaryKeyJoinColumn extends AbstractJpaEObject implements XmlPrimaryKeyJoinColumn -{ - - protected JavaPrimaryKeyJoinColumn javaPrimaryKeyJoinColumn; - - - protected VirtualXmlPrimaryKeyJoinColumn(JavaPrimaryKeyJoinColumn javaPrimaryKeyJoinColumn) { - super(); - this.javaPrimaryKeyJoinColumn = javaPrimaryKeyJoinColumn; - } - - public String getName() { - return this.javaPrimaryKeyJoinColumn.getName(); - } - - public void setName(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getColumnDefinition() { - return this.javaPrimaryKeyJoinColumn.getColumnDefinition(); - } - - public void setColumnDefinition(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getReferencedColumnName() { - return this.javaPrimaryKeyJoinColumn.getReferencedColumnName(); - } - - public void setReferencedColumnName(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public TextRange getNameTextRange() { - return null; - } - - public TextRange getReferencedColumnNameTextRange() { - return null; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlSecondaryTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlSecondaryTable.java deleted file mode 100644 index b8127b6c67..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlSecondaryTable.java +++ /dev/null @@ -1,101 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2009 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 org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.util.EObjectContainmentEList; -import org.eclipse.jpt.core.context.java.JavaPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.context.java.JavaSecondaryTable; -import org.eclipse.jpt.core.context.java.JavaUniqueConstraint; -import org.eclipse.jpt.core.resource.orm.OrmPackage; -import org.eclipse.jpt.core.resource.orm.XmlPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.resource.orm.XmlSecondaryTable; -import org.eclipse.jpt.core.resource.orm.XmlUniqueConstraint; -import org.eclipse.jpt.core.resource.xml.AbstractJpaEObject; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.internal.CollectionTools; - -/** - * A virtual secondary table is used to represent the XmlSecondaryTable resource object. - * A virtual secondary table is one which is not specified in the orm.xml file, - * but is implied from the underlying java. Virtual secondary table - * is not used when the secondary table is specified in the orm.xml. - * - * A virtual secondary table delegates to the underlying java secondary table for its state. - */ -public class VirtualXmlSecondaryTable extends AbstractJpaEObject implements XmlSecondaryTable -{ - - protected JavaSecondaryTable javaSecondaryTable; - - protected VirtualXmlSecondaryTable(JavaSecondaryTable javaSecondaryTable) { - super(); - this.javaSecondaryTable = javaSecondaryTable; - } - - public String getName() { - return this.javaSecondaryTable.getSpecifiedName(); - } - - public void setName(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getCatalog() { - return this.javaSecondaryTable.getSpecifiedCatalog(); - } - - public void setCatalog(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getSchema() { - return this.javaSecondaryTable.getSpecifiedSchema(); - } - - public void setSchema(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - //VirtualXmlSecondaryTable is rebuilt everytime, so rebuilding the joinColumns list as well - public EList<XmlPrimaryKeyJoinColumn> getPrimaryKeyJoinColumns() { - EList<XmlPrimaryKeyJoinColumn> primaryKeyJoinColumns = new EObjectContainmentEList<XmlPrimaryKeyJoinColumn>(XmlPrimaryKeyJoinColumn.class, this, OrmPackage.XML_SECONDARY_TABLE_IMPL__PRIMARY_KEY_JOIN_COLUMNS); - - for (JavaPrimaryKeyJoinColumn pkJoinColumn : CollectionTools.iterable(this.javaSecondaryTable.specifiedPrimaryKeyJoinColumns())) { - XmlPrimaryKeyJoinColumn xmlPkJoinColumn = new VirtualXmlPrimaryKeyJoinColumn(pkJoinColumn); - primaryKeyJoinColumns.add(xmlPkJoinColumn); - } - - return primaryKeyJoinColumns; - } - - public EList<XmlUniqueConstraint> getUniqueConstraints() { - EList<XmlUniqueConstraint> xmlUniqueConstraints = new EObjectContainmentEList<XmlUniqueConstraint>(XmlUniqueConstraint.class, this, OrmPackage.XML_SECONDARY_TABLE__UNIQUE_CONSTRAINTS); - - for (JavaUniqueConstraint uniqueConstraint : CollectionTools.iterable(this.javaSecondaryTable.uniqueConstraints())) { - XmlUniqueConstraint xmlUniqueConstraint = new VirtualXmlUniqueConstraint(uniqueConstraint, true); - xmlUniqueConstraints.add(xmlUniqueConstraint); - } - - return xmlUniqueConstraints; - } - - public TextRange getNameTextRange() { - return null; - } - - public TextRange getCatalogTextRange() { - return null; - } - - public TextRange getSchemaTextRange() { - return null; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlSequenceGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlSequenceGenerator.java deleted file mode 100644 index 131f1c5079..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlSequenceGenerator.java +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2009 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 org.eclipse.jpt.core.context.java.JavaGeneratorHolder; -import org.eclipse.jpt.core.context.java.JavaSequenceGenerator; -import org.eclipse.jpt.core.resource.orm.XmlSequenceGenerator; -import org.eclipse.jpt.core.resource.xml.AbstractJpaEObject; -import org.eclipse.jpt.core.utility.TextRange; - -public class VirtualXmlSequenceGenerator extends AbstractJpaEObject implements XmlSequenceGenerator -{ - JavaGeneratorHolder javaGeneratorHolder; - - protected boolean metadataComplete; - - - public VirtualXmlSequenceGenerator(JavaGeneratorHolder javaGeneratorHolder, boolean metadataComplete) { - super(); - this.javaGeneratorHolder = javaGeneratorHolder; - this.metadataComplete = metadataComplete; - } - - protected JavaSequenceGenerator getJavaSequenceGenerator() { - return this.javaGeneratorHolder.getSequenceGenerator(); - } - - public String getSequenceName() { - if (this.metadataComplete) { - return null; - } - return this.getJavaSequenceGenerator().getSequenceName(); - } - - public void setSequenceName(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Integer getAllocationSize() { - if (this.metadataComplete) { - return null; - } - return this.getJavaSequenceGenerator().getAllocationSize(); - } - - public void setAllocationSize(@SuppressWarnings("unused") Integer value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Integer getInitialValue() { - if (this.metadataComplete) { - return null; - } - return this.getJavaSequenceGenerator().getInitialValue(); - } - - public void setInitialValue(@SuppressWarnings("unused") Integer value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getName() { - if (this.metadataComplete) { - return null; - } - return this.getJavaSequenceGenerator().getName(); - } - - public void setName(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public TextRange getNameTextRange() { - return getValidationTextRange(); - } - - public boolean isVirtual() { - return true; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlTableGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlTableGenerator.java deleted file mode 100644 index f4d2228939..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlTableGenerator.java +++ /dev/null @@ -1,160 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2009 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 org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.util.EObjectContainmentEList; -import org.eclipse.jpt.core.context.java.JavaGeneratorHolder; -import org.eclipse.jpt.core.context.java.JavaTableGenerator; -import org.eclipse.jpt.core.context.java.JavaUniqueConstraint; -import org.eclipse.jpt.core.resource.orm.OrmPackage; -import org.eclipse.jpt.core.resource.orm.XmlTableGenerator; -import org.eclipse.jpt.core.resource.orm.XmlUniqueConstraint; -import org.eclipse.jpt.core.resource.xml.AbstractJpaEObject; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.internal.CollectionTools; - -public class VirtualXmlTableGenerator extends AbstractJpaEObject implements XmlTableGenerator -{ - JavaGeneratorHolder javaGeneratorHolder; - - protected boolean metadataComplete; - - - public VirtualXmlTableGenerator(JavaGeneratorHolder javaGeneratorHolder, boolean metadataComplete) { - super(); - this.javaGeneratorHolder = javaGeneratorHolder; - this.metadataComplete = metadataComplete; - } - - protected JavaTableGenerator getJavaTableGenerator() { - return this.javaGeneratorHolder.getTableGenerator(); - } - - public String getCatalog() { - if (this.metadataComplete) { - return null; - } - return this.getJavaTableGenerator().getCatalog(); - } - - public void setCatalog(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getPkColumnName() { - if (this.metadataComplete) { - return null; - } - return this.getJavaTableGenerator().getPkColumnName(); - } - - public void setPkColumnName(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getPkColumnValue() { - if (this.metadataComplete) { - return null; - } - return this.getJavaTableGenerator().getPkColumnValue(); - } - - public void setPkColumnValue(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getSchema() { - if (this.metadataComplete) { - return null; - } - return this.getJavaTableGenerator().getSchema(); - } - - public void setSchema(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getTable() { - if (this.metadataComplete) { - return null; - } - return this.getJavaTableGenerator().getTable(); - } - - public void setTable(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getValueColumnName() { - if (this.metadataComplete) { - return null; - } - return this.getJavaTableGenerator().getValueColumnName(); - } - - public void setValueColumnName(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Integer getAllocationSize() { - if (this.metadataComplete) { - return null; - } - return this.getJavaTableGenerator().getAllocationSize(); - } - - public void setAllocationSize(@SuppressWarnings("unused") Integer value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public Integer getInitialValue() { - if (this.metadataComplete) { - return null; - } - return this.getJavaTableGenerator().getInitialValue(); - } - - public void setInitialValue(@SuppressWarnings("unused") Integer value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public String getName() { - if (this.metadataComplete) { - return null; - } - return this.getJavaTableGenerator().getName(); - } - - public void setName(@SuppressWarnings("unused") String value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - - - public EList<XmlUniqueConstraint> getUniqueConstraints() { - EList<XmlUniqueConstraint> xmlUniqueConstraints = new EObjectContainmentEList<XmlUniqueConstraint>(XmlUniqueConstraint.class, this, OrmPackage.XML_TABLE_GENERATOR__UNIQUE_CONSTRAINTS); - - for (JavaUniqueConstraint uniqueConstraint : CollectionTools.iterable(this.getJavaTableGenerator().uniqueConstraints())) { - XmlUniqueConstraint xmlUniqueConstraint = new VirtualXmlUniqueConstraint(uniqueConstraint, this.metadataComplete); - xmlUniqueConstraints.add(xmlUniqueConstraint); - } - - return xmlUniqueConstraints; - } - - public TextRange getNameTextRange() { - return getValidationTextRange(); - } - - public boolean isVirtual() { - return true; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlTransient.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlTransient.java deleted file mode 100644 index 85ae039f1e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlTransient.java +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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 org.eclipse.jpt.core.context.java.JavaTransientMapping; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.XmlTransient; - -/** - * VirtualTransient is an implementation of Transient used when there is - * no tag in the orm.xml and an underlying javaTransientMapping exists. - */ -public class VirtualXmlTransient extends VirtualXmlAttributeMapping<JavaTransientMapping> implements XmlTransient -{ - - public VirtualXmlTransient(OrmTypeMapping ormTypeMapping, JavaTransientMapping javaTransientMapping) { - super(ormTypeMapping, javaTransientMapping); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlUniqueConstraint.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlUniqueConstraint.java deleted file mode 100644 index 3a8bb7ca75..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlUniqueConstraint.java +++ /dev/null @@ -1,41 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2009 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 org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.util.EDataTypeEList; -import org.eclipse.jpt.core.context.java.JavaUniqueConstraint; -import org.eclipse.jpt.core.resource.orm.OrmPackage; -import org.eclipse.jpt.core.resource.orm.XmlUniqueConstraint; -import org.eclipse.jpt.core.resource.xml.AbstractJpaEObject; -import org.eclipse.jpt.utility.internal.CollectionTools; - -public class VirtualXmlUniqueConstraint extends AbstractJpaEObject implements XmlUniqueConstraint -{ - protected JavaUniqueConstraint javaUniqueConstraint; - - protected boolean metadataComplete; - - protected VirtualXmlUniqueConstraint(JavaUniqueConstraint javaUniqueConstraint, boolean metadataComplete) { - super(); - this.javaUniqueConstraint = javaUniqueConstraint; - this.metadataComplete = metadataComplete; - } - - public EList<String> getColumnNames() { - EList<String> columnNames = new EDataTypeEList<String>(String.class, this, OrmPackage.XML_UNIQUE_CONSTRAINT_IMPL__COLUMN_NAMES); - - for (String columnName : CollectionTools.iterable(this.javaUniqueConstraint.columnNames())) { - columnNames.add(columnName); - } - return columnNames; - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlVersion.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlVersion.java deleted file mode 100644 index 0baea36e3d..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlVersion.java +++ /dev/null @@ -1,89 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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 org.eclipse.jpt.core.context.Converter; -import org.eclipse.jpt.core.context.TemporalConverter; -import org.eclipse.jpt.core.context.java.JavaVersionMapping; -import org.eclipse.jpt.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.core.resource.orm.EnumType; -import org.eclipse.jpt.core.resource.orm.TemporalType; -import org.eclipse.jpt.core.resource.orm.XmlColumn; -import org.eclipse.jpt.core.resource.orm.XmlVersion; -import org.eclipse.jpt.core.utility.TextRange; - -/** - * VirtualVersion is an implementation of Version used when there is - * no tag in the orm.xml and an underlying javaVersionMapping exists. - */ -public class VirtualXmlVersion extends VirtualXmlAttributeMapping<JavaVersionMapping> implements XmlVersion -{ - - protected final VirtualXmlColumn column; - - public VirtualXmlVersion(OrmTypeMapping ormTypeMapping, JavaVersionMapping javaVersionMapping) { - super(ormTypeMapping, javaVersionMapping); - this.column = new VirtualXmlColumn(ormTypeMapping, javaVersionMapping.getColumn()); - } - - public XmlColumn getColumn() { - return this.column; - } - - public void setColumn(@SuppressWarnings("unused") XmlColumn value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public TemporalType getTemporal() { - if (this.isOrmMetadataComplete()) { - return null; - } - if (this.javaAttributeMapping.getConverter().getType() == Converter.TEMPORAL_CONVERTER) { - org.eclipse.jpt.core.context.TemporalType javaTemporalType = ((TemporalConverter) this.javaAttributeMapping.getConverter()).getTemporalType(); - return org.eclipse.jpt.core.context.TemporalType.toOrmResourceModel(javaTemporalType); - } - return null; - } - - public void setTemporal(@SuppressWarnings("unused") TemporalType newTemporal){ - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - //see eclipselink bug 247078 for info one why I made the interface XmlConvertibleMapping - public EnumType getEnumerated() { - throw new UnsupportedOperationException("enumerated not supported on version mappings"); //$NON-NLS-1$ - } - - public void setEnumerated(@SuppressWarnings("unused") EnumType value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - //see eclipselink bug 247078 for info one why I made the interface XmlConvertibleMapping - public boolean isLob() { - throw new UnsupportedOperationException("lob not supported on version mappings"); //$NON-NLS-1$ - } - - public void setLob(@SuppressWarnings("unused") boolean value) { - throw new UnsupportedOperationException("cannot set values on a virtual mapping"); //$NON-NLS-1$ - } - - public TextRange getEnumeratedTextRange() { - return null; - } - - public TextRange getLobTextRange() { - return null; - } - - public TextRange getTemporalTextRange() { - return null; - } - -} |