diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java')
64 files changed, 0 insertions, 12525 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaAttributeMapping.java deleted file mode 100644 index 24ec2e19f3..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaAttributeMapping.java +++ /dev/null @@ -1,176 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.TypeMapping; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.java.JavaResourceNode; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Table; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - - -public abstract class AbstractJavaAttributeMapping<T extends JavaResourceNode> extends AbstractJavaJpaContextNode - implements JavaAttributeMapping -{ - protected JavaResourcePersistentAttribute resourcePersistentAttribute; - - - protected AbstractJavaAttributeMapping(JavaPersistentAttribute parent) { - super(parent); - } - - @SuppressWarnings("unchecked") - protected T getMappingResource() { - if (isDefault()) { - return (T) this.resourcePersistentAttribute.getNullMappingAnnotation(getAnnotationName()); - } - return (T) this.resourcePersistentAttribute.getMappingAnnotation(getAnnotationName()); - } - - public GenericJavaPersistentAttribute getPersistentAttribute() { - return (GenericJavaPersistentAttribute) this.getParent(); - } - - protected JavaResourcePersistentAttribute getResourcePersistentAttribute() { - return this.resourcePersistentAttribute; - } - - /** - * the persistent attribute can tell whether there is a "specified" mapping - * or a "default" one - */ - public boolean isDefault() { - return this.getPersistentAttribute().mappingIsDefault(this); - } - - protected boolean embeddableOwned() { - return this.getTypeMapping().getKey() == MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY; - } - - protected boolean entityOwned() { - return this.getTypeMapping().getKey() == MappingKeys.ENTITY_TYPE_MAPPING_KEY; - } - - public TypeMapping getTypeMapping() { - return this.getPersistentAttribute().getTypeMapping(); - } - - public String getAttributeName() { - return this.getPersistentAttribute().getName(); - } - - public Table getDbTable(String tableName) { - return getTypeMapping().getDbTable(tableName); - } - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - TextRange textRange = null; - T mappingResource = getMappingResource(); - if (mappingResource != null) { - textRange = mappingResource.getTextRange(astRoot); - } - return (textRange != null) ? textRange : this.getPersistentAttribute().getValidationTextRange(astRoot); - } - - public String getPrimaryKeyColumnName() { - return null; - } - - public boolean isOverridableAttributeMapping() { - return false; - } - - public boolean isOverridableAssociationMapping() { - return false; - } - - public boolean isIdMapping() { - return false; - } - - public void initializeFromResource(JavaResourcePersistentAttribute resourcePersistentAttribute) { - this.resourcePersistentAttribute = resourcePersistentAttribute; - initialize(getMappingResource()); - } - - protected void initialize(T mappingResource) { - - } - - public void update(JavaResourcePersistentAttribute resourcePersistentAttribute) { - this.resourcePersistentAttribute = resourcePersistentAttribute; - this.update(getMappingResource()); - } - - protected void update(T mappingResource) { - - } - - - //************ Validation ************************* - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - - addModifierMessages(messages, astRoot); - addInvalidMappingMessage(messages, astRoot); - } - - protected void addModifierMessages(List<IMessage> messages, CompilationUnit astRoot) { - GenericJavaPersistentAttribute attribute = this.getPersistentAttribute(); - if (attribute.getMappingKey() == MappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY) { - return; - } - - if ( this.resourcePersistentAttribute.isForField()) { - if (this.resourcePersistentAttribute.isFinal()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.PERSISTENT_ATTRIBUTE_FINAL_FIELD, - new String[] {attribute.getName()}, - attribute, attribute.getValidationTextRange(astRoot)) - ); - } - - if (this.resourcePersistentAttribute.isPublic()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.PERSISTENT_ATTRIBUTE_PUBLIC_FIELD, - new String[] {attribute.getName()}, - attribute, attribute.getValidationTextRange(astRoot)) - ); - } - } - } - - protected void addInvalidMappingMessage(List<IMessage> messages, CompilationUnit astRoot) { - if (! getTypeMapping().attributeMappingKeyAllowed(this.getKey())) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.PERSISTENT_ATTRIBUTE_INVALID_MAPPING, - new String[] {this.getPersistentAttribute().getName()}, - this, this.getValidationTextRange(astRoot)) - ); - } - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBaseColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBaseColumn.java deleted file mode 100644 index 70a120bbfa..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBaseColumn.java +++ /dev/null @@ -1,302 +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.java; - -import java.util.Iterator; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.BaseColumn; -import org.eclipse.jpt.core.context.java.JavaBaseColumn; -import org.eclipse.jpt.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.core.resource.java.BaseColumnAnnotation; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.StringTools; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; -import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; - -public abstract class AbstractJavaBaseColumn<T extends BaseColumnAnnotation> extends AbstractJavaNamedColumn<T> - implements JavaBaseColumn -{ - - protected String specifiedTable; - - protected String defaultTable; - - protected Boolean specifiedUnique; - - protected Boolean specifiedNullable; - - protected Boolean specifiedInsertable; - - protected Boolean specifiedUpdatable; - - protected AbstractJavaBaseColumn(JavaJpaContextNode parent, JavaBaseColumn.Owner owner) { - super(parent, owner); - } - - @Override - protected void initializeFromResource(T column) { - super.initializeFromResource(column); - this.defaultTable = this.defaultTable(); - this.specifiedTable = this.specifiedTable(column); - this.specifiedUnique = this.specifiedUnique(column); - this.specifiedNullable = this.specifiedNullable(column); - this.specifiedInsertable = this.specifiedInsertable(column); - this.specifiedUpdatable = this.specifiedUpdatable(column); - } - - @Override - public JavaBaseColumn.Owner getOwner() { - return (JavaBaseColumn.Owner) super.getOwner(); - } - - //************** IAbstractColumn implementation ******************* - - - 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; - getColumnResource().setTable(newSpecifiedTable); - firePropertyChanged(BaseColumn.SPECIFIED_TABLE_PROPERTY, oldSpecifiedTable, newSpecifiedTable); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - 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 getUnique() { - return (this.getSpecifiedUnique() == null) ? this.getDefaultUnique() : this.getSpecifiedUnique(); - } - - public Boolean getDefaultUnique() { - return BaseColumn.DEFAULT_UNIQUE; - } - - public Boolean getSpecifiedUnique() { - return this.specifiedUnique; - } - - public void setSpecifiedUnique(Boolean newSpecifiedUnique) { - Boolean oldSpecifiedUnique = this.specifiedUnique; - this.specifiedUnique = newSpecifiedUnique; - this.getColumnResource().setUnique(newSpecifiedUnique); - firePropertyChanged(BaseColumn.SPECIFIED_UNIQUE_PROPERTY, oldSpecifiedUnique, newSpecifiedUnique); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - protected void setSpecifiedUnique_(Boolean newSpecifiedUnique) { - Boolean oldSpecifiedUnique = this.specifiedUnique; - this.specifiedUnique = newSpecifiedUnique; - firePropertyChanged(BaseColumn.SPECIFIED_UNIQUE_PROPERTY, oldSpecifiedUnique, newSpecifiedUnique); - } - - public Boolean getNullable() { - return (this.getSpecifiedNullable() == null) ? this.getDefaultNullable() : this.getSpecifiedNullable(); - } - - public Boolean getDefaultNullable() { - return BaseColumn.DEFAULT_NULLABLE; - } - - public Boolean getSpecifiedNullable() { - return this.specifiedNullable; - } - - public void setSpecifiedNullable(Boolean newSpecifiedNullable) { - Boolean oldSpecifiedNullable = this.specifiedNullable; - this.specifiedNullable = newSpecifiedNullable; - this.getColumnResource().setNullable(newSpecifiedNullable); - firePropertyChanged(BaseColumn.SPECIFIED_NULLABLE_PROPERTY, oldSpecifiedNullable, newSpecifiedNullable); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - protected void setSpecifiedNullable_(Boolean newSpecifiedNullable) { - Boolean oldSpecifiedNullable = this.specifiedNullable; - this.specifiedNullable = newSpecifiedNullable; - firePropertyChanged(BaseColumn.SPECIFIED_NULLABLE_PROPERTY, oldSpecifiedNullable, newSpecifiedNullable); - } - - public Boolean getInsertable() { - return (this.getSpecifiedInsertable() == null) ? this.getDefaultInsertable() : this.getSpecifiedInsertable(); - } - - public Boolean getDefaultInsertable() { - return BaseColumn.DEFAULT_INSERTABLE; - } - - public Boolean getSpecifiedInsertable() { - return this.specifiedInsertable; - } - - public void setSpecifiedInsertable(Boolean newSpecifiedInsertable) { - Boolean oldSpecifiedInsertable = this.specifiedInsertable; - this.specifiedInsertable = newSpecifiedInsertable; - this.getColumnResource().setInsertable(newSpecifiedInsertable); - firePropertyChanged(BaseColumn.SPECIFIED_INSERTABLE_PROPERTY, oldSpecifiedInsertable, newSpecifiedInsertable); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - protected void setSpecifiedInsertable_(Boolean newSpecifiedInsertable) { - Boolean oldSpecifiedInsertable = this.specifiedInsertable; - this.specifiedInsertable = newSpecifiedInsertable; - firePropertyChanged(BaseColumn.SPECIFIED_INSERTABLE_PROPERTY, oldSpecifiedInsertable, newSpecifiedInsertable); - } - - public Boolean getUpdatable() { - return (this.getSpecifiedUpdatable() == null) ? this.getDefaultUpdatable() : this.getSpecifiedUpdatable(); - } - - public Boolean getDefaultUpdatable() { - return BaseColumn.DEFAULT_UPDATABLE; - } - - public Boolean getSpecifiedUpdatable() { - return this.specifiedUpdatable; - } - - public void setSpecifiedUpdatable(Boolean newSpecifiedUpdatable) { - Boolean oldSpecifiedUpdatable = this.specifiedUpdatable; - this.specifiedUpdatable = newSpecifiedUpdatable; - this.getColumnResource().setUpdatable(newSpecifiedUpdatable); - firePropertyChanged(BaseColumn.SPECIFIED_UPDATABLE_PROPERTY, oldSpecifiedUpdatable, newSpecifiedUpdatable); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - protected void setSpecifiedUpdatable_(Boolean newSpecifiedUpdatable) { - Boolean oldSpecifiedUpdatable = this.specifiedUpdatable; - this.specifiedUpdatable = newSpecifiedUpdatable; - firePropertyChanged(BaseColumn.SPECIFIED_UPDATABLE_PROPERTY, oldSpecifiedUpdatable, newSpecifiedUpdatable); - } - - @Override - protected String getTableName() { - return this.getTable(); - } - - public TextRange getTableTextRange(CompilationUnit astRoot) { - TextRange textRange = this.getColumnResource().getTableTextRange(astRoot); - return (textRange != null) ? textRange : this.getOwner().getValidationTextRange(astRoot); - } - - public boolean tableTouches(int pos, CompilationUnit astRoot) { - return getColumnResource().tableTouches(pos, astRoot); - } - - private Iterator<String> candidateTableNames() { - return this.tableIsAllowed() ? this.getOwner().getTypeMapping().associatedTableNamesIncludingInherited() : EmptyIterator.<String> instance(); - } - - private Iterator<String> candidateTableNames(Filter<String> filter) { - return new FilteringIterator<String, String>(this.candidateTableNames(), filter); - } - - private Iterator<String> quotedCandidateTableNames(Filter<String> filter) { - return StringTools.quote(this.candidateTableNames(filter)); - } - - /** - * Return whether the 'table' element is allowed. It is not allowed for - * join columns inside of join tables. - */ - public abstract boolean tableIsAllowed(); - - @Override - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - if (this.tableTouches(pos, astRoot)) { - return this.quotedCandidateTableNames(filter); - } - return null; - } - - @Override - protected void update(T column) { - super.update(column); - this.setDefaultTable(this.defaultTable()); - this.setSpecifiedTable_(this.specifiedTable(column)); - this.setSpecifiedUnique_(this.specifiedUnique(column)); - this.setSpecifiedNullable_(this.specifiedNullable(column)); - this.setSpecifiedInsertable_(this.specifiedInsertable(column)); - this.setSpecifiedUpdatable_(this.specifiedUpdatable(column)); - } - - protected String defaultTable() { - return this.getOwner().getDefaultTableName(); - } - - protected String specifiedTable(BaseColumnAnnotation column) { - return column.getTable(); - } - - protected Boolean specifiedUnique(BaseColumnAnnotation column) { - return column.getUnique(); - } - - protected Boolean specifiedNullable(BaseColumnAnnotation column) { - return column.getNullable(); - } - - protected Boolean specifiedInsertable(BaseColumnAnnotation column) { - return column.getInsertable(); - } - - protected Boolean specifiedUpdatable(BaseColumnAnnotation column) { - return column.getUpdatable(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBaseEmbeddedMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBaseEmbeddedMapping.java deleted file mode 100644 index 64dc6cf3fc..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaBaseEmbeddedMapping.java +++ /dev/null @@ -1,362 +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.java; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.AttributeOverride; -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.Entity; -import org.eclipse.jpt.core.context.PersistentAttribute; -import org.eclipse.jpt.core.context.java.JavaAttributeOverride; -import org.eclipse.jpt.core.context.java.JavaBaseEmbeddedMapping; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.internal.context.MappingTools; -import org.eclipse.jpt.core.internal.resource.java.NullColumn; -import org.eclipse.jpt.core.resource.java.AttributeOverrideAnnotation; -import org.eclipse.jpt.core.resource.java.AttributeOverridesAnnotation; -import org.eclipse.jpt.core.resource.java.JPA; -import org.eclipse.jpt.core.resource.java.JavaResourceNode; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; -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; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - - -public abstract class AbstractJavaBaseEmbeddedMapping<T extends JavaResourceNode> extends AbstractJavaAttributeMapping<T> - implements JavaBaseEmbeddedMapping -{ - protected final List<JavaAttributeOverride> specifiedAttributeOverrides; - - protected final List<JavaAttributeOverride> virtualAttributeOverrides; - - private Embeddable embeddable; - - protected AbstractJavaBaseEmbeddedMapping(JavaPersistentAttribute parent) { - super(parent); - this.specifiedAttributeOverrides = new ArrayList<JavaAttributeOverride>(); - this.virtualAttributeOverrides = new ArrayList<JavaAttributeOverride>(); - } - - //****************** JavaAttributeMapping implemenation ******************* - - public Iterator<String> correspondingAnnotationNames() { - return new ArrayIterator<String>( - JPA.ATTRIBUTE_OVERRIDE, - JPA.ATTRIBUTE_OVERRIDES); - } - - //****************** AttributeOverride.Owner implemenation ******************* - - public ColumnMapping getColumnMapping(String attributeName) { - return MappingTools.getColumnMapping(attributeName, embeddable()); - } - - 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 setAttributeOverrideVirtual((JavaAttributeOverride) override); - } - return setAttributeOverrideSpecified((JavaAttributeOverride) override); - } - - protected JavaAttributeOverride setAttributeOverrideVirtual(JavaAttributeOverride 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 - JavaAttributeOverride virtualAttributeOverride = null; - if (attributeOverrideName != null) { - for (PersistentAttribute persistentAttribute : CollectionTools.iterable(allOverridableAttributes())) { - if (persistentAttribute.getName().equals(attributeOverrideName)) { - //store the virtualAttributeOverride so we can fire change notification later - virtualAttributeOverride = buildVirtualAttributeOverride(getResourcePersistentAttribute(), persistentAttribute.getName()); - this.virtualAttributeOverrides.add(virtualAttributeOverride); - break; - } - } - } - - getResourcePersistentAttribute().removeAnnotation(index, AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME); - fireItemRemoved(Entity.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST, index, attributeOverride); - - if (virtualAttributeOverride != null) { - fireItemAdded(Entity.VIRTUAL_ATTRIBUTE_OVERRIDES_LIST, virtualAttributeOverridesSize() - 1, virtualAttributeOverride); - } - return virtualAttributeOverride; - } - - protected JavaAttributeOverride setAttributeOverrideSpecified(JavaAttributeOverride oldAttributeOverride) { - int index = specifiedAttributeOverridesSize(); - JavaAttributeOverride newAttributeOverride = getJpaFactory().buildJavaAttributeOverride(this, this); - this.specifiedAttributeOverrides.add(index, newAttributeOverride); - - AttributeOverrideAnnotation attributeOverrideResource = (AttributeOverrideAnnotation) getResourcePersistentAttribute().addAnnotation(index, AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME); - newAttributeOverride.initializeFromResource(attributeOverrideResource); - - 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; - } - - - //****************** BaseEmbeddedMapping implemenation ******************* - - @SuppressWarnings("unchecked") - public ListIterator<JavaAttributeOverride> attributeOverrides() { - return new CompositeListIterator<JavaAttributeOverride>(this.specifiedAttributeOverrides(), this.virtualAttributeOverrides()); - } - - public int attributeOverridesSize() { - return this.specifiedAttributeOverridesSize() + this.virtualAttributeOverridesSize(); - } - - public ListIterator<JavaAttributeOverride> virtualAttributeOverrides() { - return new CloneListIterator<JavaAttributeOverride>(this.virtualAttributeOverrides); - } - - public int virtualAttributeOverridesSize() { - return this.virtualAttributeOverrides.size(); - } - - public ListIterator<JavaAttributeOverride> specifiedAttributeOverrides() { - return new CloneListIterator<JavaAttributeOverride>(this.specifiedAttributeOverrides); - } - - public int specifiedAttributeOverridesSize() { - return this.specifiedAttributeOverrides.size(); - } - - protected void addSpecifiedAttributeOverride(int index, JavaAttributeOverride attributeOverride) { - addItemToList(index, attributeOverride, this.specifiedAttributeOverrides, BaseEmbeddedMapping.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST); - } - - protected void removeSpecifiedAttributeOverride_(JavaAttributeOverride attributeOverride) { - removeItemFromList(attributeOverride, this.specifiedAttributeOverrides, BaseEmbeddedMapping.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST); - } - - public void moveSpecifiedAttributeOverride(int targetIndex, int sourceIndex) { - CollectionTools.move(this.specifiedAttributeOverrides, targetIndex, sourceIndex); - getResourcePersistentAttribute().move(targetIndex, sourceIndex, AttributeOverridesAnnotation.ANNOTATION_NAME); - fireItemMoved(BaseEmbeddedMapping.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST, targetIndex, sourceIndex); - } - - protected void addVirtualAttributeOverride(JavaAttributeOverride attributeOverride) { - addItemToList(attributeOverride, this.virtualAttributeOverrides, BaseEmbeddedMapping.VIRTUAL_ATTRIBUTE_OVERRIDES_LIST); - } - - protected void removeVirtualAttributeOverride(JavaAttributeOverride attributeOverride) { - removeItemFromList(attributeOverride, this.virtualAttributeOverrides, BaseEmbeddedMapping.VIRTUAL_ATTRIBUTE_OVERRIDES_LIST); - } - - public JavaAttributeOverride getAttributeOverrideNamed(String name) { - return (JavaAttributeOverride) 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()); - } - - 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; - } - - protected boolean containsOverride(String name, ListIterator<? extends BaseOverride> overrides) { - return getOverrideNamed(name, overrides) != null; - } - - public Embeddable embeddable() { - return this.embeddable; - } - - - - @Override - public void initializeFromResource(JavaResourcePersistentAttribute resourcePersistentAttribute) { - super.initializeFromResource(resourcePersistentAttribute); - this.initializeAttributeOverrides(resourcePersistentAttribute); - this.initializeDefaultAttributeOverrides(resourcePersistentAttribute); - this.embeddable = MappingTools.getEmbeddableFor(getPersistentAttribute()); - } - - protected void initializeAttributeOverrides(JavaResourcePersistentAttribute resourcePersistentAttribute) { - ListIterator<JavaResourceNode> annotations = resourcePersistentAttribute.annotations(AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME); - - while(annotations.hasNext()) { - JavaAttributeOverride attributeOverride = getJpaFactory().buildJavaAttributeOverride(this, this); - attributeOverride.initializeFromResource((AttributeOverrideAnnotation) annotations.next()); - this.specifiedAttributeOverrides.add(attributeOverride); - } - } - - protected void initializeDefaultAttributeOverrides(JavaResourcePersistentAttribute resourcePersistentAttribute) { - for (Iterator<String> i = allOverridableAttributeNames(); i.hasNext(); ) { - String attributeName = i.next(); - JavaAttributeOverride attributeOverride = getAttributeOverrideNamed(attributeName); - if (attributeOverride == null) { - this.virtualAttributeOverrides.add(buildVirtualAttributeOverride(resourcePersistentAttribute, attributeName)); - } - } - } @Override - public void update(JavaResourcePersistentAttribute resourcePersistentAttribute) { - super.update(resourcePersistentAttribute); - this.embeddable = MappingTools.getEmbeddableFor(getPersistentAttribute()); - this.updateSpecifiedAttributeOverrides(resourcePersistentAttribute); - this.updateVirtualAttributeOverrides(resourcePersistentAttribute); - - } - protected void updateSpecifiedAttributeOverrides(JavaResourcePersistentAttribute resourcePersistentAttribute) { - ListIterator<JavaAttributeOverride> attributeOverrides = specifiedAttributeOverrides(); - ListIterator<JavaResourceNode> resourceAttributeOverrides = resourcePersistentAttribute.annotations(AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME); - - while (attributeOverrides.hasNext()) { - JavaAttributeOverride attributeOverride = attributeOverrides.next(); - if (resourceAttributeOverrides.hasNext()) { - attributeOverride.update((AttributeOverrideAnnotation) resourceAttributeOverrides.next()); - } - else { - removeSpecifiedAttributeOverride_(attributeOverride); - } - } - - while (resourceAttributeOverrides.hasNext()) { - addSpecifiedAttributeOverride(specifiedAttributeOverridesSize(), buildAttributeOverride((AttributeOverrideAnnotation) resourceAttributeOverrides.next())); - } - } - - protected JavaAttributeOverride buildAttributeOverride(AttributeOverrideAnnotation attributeOverrideResource) { - JavaAttributeOverride attributeOverride = getJpaFactory().buildJavaAttributeOverride(this, this); - attributeOverride.initializeFromResource(attributeOverrideResource); - return attributeOverride; - } - - protected JavaAttributeOverride buildVirtualAttributeOverride(JavaResourcePersistentAttribute resourcePersistentAttribute, String attributeName) { - return buildAttributeOverride(buildVirtualAttributeOverrideResource(resourcePersistentAttribute, attributeName)); - } - - protected VirtualAttributeOverride buildVirtualAttributeOverrideResource(JavaResourcePersistentAttribute resourcePersistentAttribute, String attributeName) { - ColumnMapping columnMapping = (ColumnMapping) this.embeddable().getPersistentType().getAttributeNamed(attributeName).getMapping(); - return new VirtualAttributeOverride(resourcePersistentAttribute, attributeName, columnMapping.getColumn()); - } - - protected void updateVirtualAttributeOverrides(JavaResourcePersistentAttribute resourcePersistentAttribute) { - for (Iterator<String> i = allOverridableAttributeNames(); i.hasNext(); ) { - String attributeName = i.next(); - JavaAttributeOverride attributeOverride = getAttributeOverrideNamed(attributeName); - if (attributeOverride == null) { - addVirtualAttributeOverride(buildVirtualAttributeOverride(resourcePersistentAttribute, attributeName)); - } - else if (attributeOverride.isVirtual()) { - attributeOverride.getColumn().update(new NullColumn(resourcePersistentAttribute)); - } - } - - Collection<String> attributeNames = CollectionTools.collection(allOverridableAttributeNames()); - - //remove any default mappings that are not included in the attributeNames collection - for (JavaAttributeOverride attributeOverride : CollectionTools.iterable(virtualAttributeOverrides())) { - if (!attributeNames.contains(attributeOverride.getName()) - || containsSpecifiedAttributeOverride(attributeOverride.getName())) { - removeVirtualAttributeOverride(attributeOverride); - } - } - } - - - 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.embeddable() == null) { - return EmptyIterator.instance(); - } - return new FilteringIterator<PersistentAttribute, PersistentAttribute>(this.embeddable().getPersistentType().attributes()) { - @Override - protected boolean accept(PersistentAttribute o) { - return o.isOverridableAttribute(); - } - }; - } - - @Override - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - for (AttributeOverride override : CollectionTools.iterable(this.attributeOverrides())) { - result = ((JavaAttributeOverride) override).javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - } - return null; - } - - //******** Validation ****************** - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - - for (Iterator<JavaAttributeOverride> stream = attributeOverrides(); stream.hasNext();) { - stream.next().addToMessages(messages, astRoot); - } - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaGenerator.java deleted file mode 100644 index e9acc04916..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaGenerator.java +++ /dev/null @@ -1,148 +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.java; - -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.Generator; -import org.eclipse.jpt.core.context.java.JavaGenerator; -import org.eclipse.jpt.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.core.resource.java.GeneratorAnnotation; -import org.eclipse.jpt.core.utility.TextRange; - - -public abstract class AbstractJavaGenerator extends AbstractJavaJpaContextNode - implements JavaGenerator -{ - protected String name; - - protected Integer specifiedInitialValue; - - protected Integer specifiedAllocationSize; - - protected GeneratorAnnotation generatorResource; - - protected AbstractJavaGenerator(JavaJpaContextNode parent) { - super(parent); - } - - public void initializeFromResource(GeneratorAnnotation generatorResource) { - this.generatorResource = generatorResource; - this.name = this.name(generatorResource); - this.specifiedInitialValue = this.specifiedInitialValue(generatorResource); - this.specifiedAllocationSize = this.specifiedAllocationSize(generatorResource); - } - - protected GeneratorAnnotation getGeneratorResource() { - return this.generatorResource; - } - - protected String name(GeneratorAnnotation generatorResource) { - return generatorResource.getName(); - } - - protected Integer specifiedInitialValue(GeneratorAnnotation generatorResource) { - return generatorResource.getInitialValue(); - } - - protected Integer specifiedAllocationSize(GeneratorAnnotation generatorResource) { - return generatorResource.getAllocationSize(); - } - - public String getName() { - return this.name; - } - - public void setName(String newName) { - String oldName = this.name; - this.name = newName; - getGeneratorResource().setName(newName); - firePropertyChanged(Generator.NAME_PROPERTY, oldName, newName); - } - - protected void setName_(String newName) { - String oldName = this.name; - this.name = newName; - firePropertyChanged(Generator.NAME_PROPERTY, oldName, newName); - } - - public Integer getInitialValue() { - return (this.getSpecifiedInitialValue() == null) ? this.getDefaultInitialValue() : this.getSpecifiedInitialValue(); - } - - public Integer getSpecifiedInitialValue() { - return this.specifiedInitialValue; - } - - public void setSpecifiedInitialValue(Integer newSpecifiedInitialValue) { - Integer oldSpecifiedInitialValue = this.specifiedInitialValue; - this.specifiedInitialValue = newSpecifiedInitialValue; - getGeneratorResource().setInitialValue(newSpecifiedInitialValue); - firePropertyChanged(Generator.SPECIFIED_INITIAL_VALUE_PROPERTY, oldSpecifiedInitialValue, newSpecifiedInitialValue); - } - - protected void setSpecifiedInitialValue_(Integer newSpecifiedInitialValue) { - Integer oldSpecifiedInitialValue = this.specifiedInitialValue; - this.specifiedInitialValue = newSpecifiedInitialValue; - firePropertyChanged(Generator.SPECIFIED_INITIAL_VALUE_PROPERTY, oldSpecifiedInitialValue, newSpecifiedInitialValue); - } - - public Integer getAllocationSize() { - return (this.getSpecifiedAllocationSize() == null) ? this.getDefaultAllocationSize() : this.getSpecifiedAllocationSize(); - } - - public Integer getSpecifiedAllocationSize() { - return this.specifiedAllocationSize; - } - - public void setSpecifiedAllocationSize(Integer newSpecifiedAllocationSize) { - Integer oldSpecifiedAllocationSize = this.specifiedAllocationSize; - this.specifiedAllocationSize = newSpecifiedAllocationSize; - getGeneratorResource().setAllocationSize(newSpecifiedAllocationSize); - firePropertyChanged(Generator.SPECIFIED_ALLOCATION_SIZE_PROPERTY, oldSpecifiedAllocationSize, newSpecifiedAllocationSize); - } - - protected void setSpecifiedAllocationSize_(Integer newSpecifiedAllocationSize) { - Integer oldSpecifiedAllocationSize = this.specifiedAllocationSize; - this.specifiedAllocationSize = newSpecifiedAllocationSize; - firePropertyChanged(Generator.SPECIFIED_ALLOCATION_SIZE_PROPERTY, oldSpecifiedAllocationSize, newSpecifiedAllocationSize); - } - - public Integer getDefaultAllocationSize() { - return Generator.DEFAULT_ALLOCATION_SIZE; - } - - public boolean isVirtual() { - return false; - } - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - return this.getSelectionTextRange(astRoot); - } - - public TextRange getSelectionTextRange(CompilationUnit astRoot) { - return this.generatorResource.getTextRange(astRoot); - } - - public TextRange getNameTextRange(CompilationUnit astRoot) { - return this.generatorResource.getNameTextRange(astRoot); - } - - protected void update(GeneratorAnnotation generatorResource) { - this.generatorResource = generatorResource; - this.setName_(this.name(generatorResource)); - this.setSpecifiedInitialValue_(this.specifiedInitialValue(generatorResource)); - this.setSpecifiedAllocationSize_(this.specifiedAllocationSize(generatorResource)); - } - - public boolean overrides(Generator generator) { - // java is at the base of the tree - return false; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaJpaContextNode.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaJpaContextNode.java deleted file mode 100644 index 34bcc085f8..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaJpaContextNode.java +++ /dev/null @@ -1,60 +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.java; - -import java.util.Iterator; -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.JpaContextNode; -import org.eclipse.jpt.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.core.internal.context.AbstractJpaContextNode; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - -public abstract class AbstractJavaJpaContextNode extends AbstractJpaContextNode implements JavaJpaContextNode -{ - // ********** constructor ********** - - protected AbstractJavaJpaContextNode(JpaContextNode parent) { - super(parent); - } - - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - if (this.connectionProfileIsActive()) { - Iterator<String> result = this.connectedJavaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - } - return null; - } - - /** - * This method is called if the database is connected, allowing us to - * get candidates from the various database tables etc. - * This method should NOT be cascaded to "child" objects; it should - * only return candidates for the current object. The cascading is - * handled by #javaCompletionProposals(int, Filter, CompilationUnit). - */ - public Iterator<String> connectedJavaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - return null; - } - - // ********** validation ********** - - /** - * All subclass implementations {@link #addToMessages(List, CompilationUnit))} - * should be preceded by a "super" call to this method - */ - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java deleted file mode 100644 index c755635529..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java +++ /dev/null @@ -1,458 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import java.util.Iterator; -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.Entity; -import org.eclipse.jpt.core.context.FetchType; -import org.eclipse.jpt.core.context.MultiRelationshipMapping; -import org.eclipse.jpt.core.context.NonOwningMapping; -import org.eclipse.jpt.core.context.PersistentAttribute; -import org.eclipse.jpt.core.context.java.JavaJoinTable; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -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.MapKeyAnnotation; -import org.eclipse.jpt.core.resource.java.OrderByAnnotation; -import org.eclipse.jpt.core.resource.java.RelationshipMappingAnnotation; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.StringTools; -import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - - -public abstract class AbstractJavaMultiRelationshipMapping<T extends RelationshipMappingAnnotation> - extends AbstractJavaRelationshipMapping<T> implements MultiRelationshipMapping -{ - - protected String mappedBy; - - protected String orderBy; - - protected boolean isNoOrdering; - - protected boolean isPkOrdering; - - protected boolean isCustomOrdering; - - //TODO should this be null if this is the non-owning side of the relationship?? - protected final JavaJoinTable joinTable; - - protected String mapKey; - - protected AbstractJavaMultiRelationshipMapping(JavaPersistentAttribute parent) { - super(parent); - this.joinTable = getJpaFactory().buildJavaJoinTable(this); - } - - public String getMappedBy() { - return this.mappedBy; - } - - public void setMappedBy(String newMappedBy) { - String oldMappedBy = this.mappedBy; - this.mappedBy = newMappedBy; - this.setMappedByOnResourceModel(newMappedBy); - firePropertyChanged(NonOwningMapping.MAPPED_BY_PROPERTY, oldMappedBy, newMappedBy); - } - - protected void setMappedBy_(String newMappedBy) { - String oldMappedBy = this.mappedBy; - this.mappedBy = newMappedBy; - firePropertyChanged(NonOwningMapping.MAPPED_BY_PROPERTY, oldMappedBy, newMappedBy); - } - - protected abstract void setMappedByOnResourceModel(String mappedBy); - - public String getOrderBy() { - return this.orderBy; - } - - public void setOrderBy(String newOrderBy) { - String oldOrderBy = this.orderBy; - this.orderBy = newOrderBy; - if (newOrderBy == null) { - if (getOrderByResource() != null) { - removeOrderByResource(); - } - } - else { - if (getOrderByResource() == null) { - addOrderByResource(); - } - getOrderByResource().setValue(newOrderBy); - } - firePropertyChanged(MultiRelationshipMapping.ORDER_BY_PROPERTY, oldOrderBy, newOrderBy); - } - - protected void setOrderBy_(String newOrderBy) { - String oldOrderBy = this.orderBy; - this.orderBy = newOrderBy; - firePropertyChanged(MultiRelationshipMapping.ORDER_BY_PROPERTY, oldOrderBy, newOrderBy); - } - - protected OrderByAnnotation getOrderByResource() { - return (OrderByAnnotation) getResourcePersistentAttribute().getAnnotation(OrderByAnnotation.ANNOTATION_NAME); - } - - protected OrderByAnnotation addOrderByResource() { - return (OrderByAnnotation) getResourcePersistentAttribute().addAnnotation(OrderByAnnotation.ANNOTATION_NAME); - } - - protected void removeOrderByResource() { - getResourcePersistentAttribute().removeAnnotation(OrderByAnnotation.ANNOTATION_NAME); - } - - public boolean isNoOrdering() { - return this.isNoOrdering; - } - - public void setNoOrdering(boolean newNoOrdering) { - boolean oldNoOrdering = this.isNoOrdering; - this.isNoOrdering = newNoOrdering; - if (newNoOrdering) { - if (getOrderByResource() != null) { - removeOrderByResource(); - } - } - else { - //?? - } - 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) { - if (getOrderByResource() == null) { - addOrderByResource(); - } - else { - getOrderByResource().setValue(null); - } - } - 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(""); - } - firePropertyChanged(CUSTOM_ORDERING_PROPERTY, oldCustomOrdering, newCustomOrdering); - } - - protected void setCustomOrdering_(boolean newCustomOrdering) { - boolean oldCustomOrdering = this.isCustomOrdering; - this.isCustomOrdering = newCustomOrdering; - firePropertyChanged(CUSTOM_ORDERING_PROPERTY, oldCustomOrdering, newCustomOrdering); - } - - public FetchType getDefaultFetch() { - return MultiRelationshipMapping.DEFAULT_FETCH_TYPE; - } - - public JavaJoinTable getJoinTable() { - return this.joinTable; - } - - public boolean isJoinTableSpecified() { - return getJoinTable().isSpecified(); - } - - public boolean isRelationshipOwner() { - return getMappedBy() == null; - } - - public String getMapKey() { - return this.mapKey; - } - - public void setMapKey(String newMapKey) { - String oldMapKey = this.mapKey; - this.mapKey = newMapKey; - if (oldMapKey != newMapKey) { - if (this.getMapKeyResource(getResourcePersistentAttribute()) != null) { - if (newMapKey != null) { - this.getMapKeyResource(getResourcePersistentAttribute()).setName(newMapKey); - } - else { - getResourcePersistentAttribute().removeAnnotation(MapKeyAnnotation.ANNOTATION_NAME); - } - } - else if (newMapKey != null) { - getResourcePersistentAttribute().addAnnotation(MapKeyAnnotation.ANNOTATION_NAME); - getMapKeyResource(getResourcePersistentAttribute()).setName(newMapKey); - } - } - firePropertyChanged(MultiRelationshipMapping.MAP_KEY_PROPERTY, oldMapKey, newMapKey); - } - - protected void setMapKey_(String newMapKey) { - String oldMapKey = this.mapKey; - this.mapKey = newMapKey; - firePropertyChanged(MultiRelationshipMapping.MAP_KEY_PROPERTY, oldMapKey, newMapKey); - } - -//TODO default orderBy - this wasn't supported in 1.0 either -// public void refreshDefaults(DefaultsContext defaultsContext) { -// super.refreshDefaults(defaultsContext); -// // if (isOrderByPk()) { -// // refreshDefaultOrderBy(defaultsContext); -// // } -// } -// -// //primary key ordering when just the @OrderBy annotation is present -// protected void refreshDefaultOrderBy(DefaultsContext defaultsContext) { -// IEntity targetEntity = getResolvedTargetEntity(); -// if (targetEntity != null) { -// setOrderBy(targetEntity.primaryKeyAttributeName() + " ASC"); -// } -// } - - @Override - protected String defaultTargetEntity(JavaResourcePersistentAttribute resourcePersistentAttribute) { - if (!resourcePersistentAttribute.typeIsContainer()) { - return null; - } - return resourcePersistentAttribute.getQualifiedReferenceEntityElementTypeName(); - } - - protected abstract boolean mappedByTouches(int pos, CompilationUnit astRoot); - - protected boolean mapKeyNameTouches(int pos, CompilationUnit astRoot) { - if (getMapKeyResource(getResourcePersistentAttribute()) != null) { - return getMapKeyResource(getResourcePersistentAttribute()).nameTouches(pos, astRoot); - } - return false; - } - - protected MapKeyAnnotation getMapKeyResource(JavaResourcePersistentAttribute resourcePersistentAttribute) { - return (MapKeyAnnotation) resourcePersistentAttribute.getAnnotation(MapKeyAnnotation.ANNOTATION_NAME); - } - - public Iterator<String> candidateMapKeyNames() { - return this.allTargetEntityAttributeNames(); - } - - protected Iterator<String> candidateMapKeyNames(Filter<String> filter) { - return new FilteringIterator<String, String>(this.candidateMapKeyNames(), filter); - } - - protected Iterator<String> quotedCandidateMapKeyNames(Filter<String> filter) { - return StringTools.quote(this.candidateMapKeyNames(filter)); - } - - @Override - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - result = this.getJoinTable().javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - if (this.mappedByTouches(pos, astRoot)) { - return this.quotedCandidateMappedByAttributeNames(filter); - } - if (this.mapKeyNameTouches(pos, astRoot)) { - return this.quotedCandidateMapKeyNames(filter); - } - return null; - } - - @Override - public void initializeFromResource(JavaResourcePersistentAttribute resourcePersistentAttribute) { - super.initializeFromResource(resourcePersistentAttribute); - MapKeyAnnotation mapKey = this.getMapKeyResource(resourcePersistentAttribute); - if (mapKey != null) { - this.mapKey = mapKey.getName(); - } - this.initializeOrderBy(this.getOrderByResource()); - this.joinTable.initializeFromResource(resourcePersistentAttribute); - } - - @Override - protected void initialize(T relationshipMapping) { - super.initialize(relationshipMapping); - this.mappedBy = this.mappedBy(relationshipMapping); - } - - protected void initializeOrderBy(OrderByAnnotation orderBy) { - if (orderBy != null) { - this.orderBy = orderBy.getValue(); - if (orderBy.getValue() == null) { - this.isPkOrdering = true; - } - else { - this.isCustomOrdering = true; - } - } - else { - this.isNoOrdering = true; - } - } - - @Override - public void update(JavaResourcePersistentAttribute resourcePersistentAttribute) { - super.update(resourcePersistentAttribute); - this.updateMapKey(resourcePersistentAttribute); - this.updateOrderBy(this.getOrderByResource()); - this.joinTable.update(resourcePersistentAttribute); - } - - @Override - protected void update(T relationshipMapping) { - super.update(relationshipMapping); - this.setMappedBy_(this.mappedBy(relationshipMapping)); - } - - protected void updateMapKey(JavaResourcePersistentAttribute resourcePersistentAttribute) { - MapKeyAnnotation mapKey = this.getMapKeyResource(resourcePersistentAttribute); - if (mapKey != null) { - setMapKey_(mapKey.getName()); - } - else { - setMapKey_(null); - } - } - - protected void updateOrderBy(OrderByAnnotation orderBy) { - if (orderBy != null) { - setOrderBy_(orderBy.getValue()); - if (orderBy.getValue() == null) { - setPkOrdering_(true); - setCustomOrdering_(false); - setNoOrdering_(false); - } - else { - setPkOrdering_(false); - setCustomOrdering_(true); - setNoOrdering_(false); - } - } - else { - setOrderBy_(null); - setPkOrdering_(false); - setCustomOrdering_(false); - setNoOrdering_(true); - } - } - protected abstract String mappedBy(T relationshipMapping); - - //******** Validation *********************************** - - public abstract TextRange getMappedByTextRange(CompilationUnit astRoot); - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - - if (entityOwned() && (this.isJoinTableSpecified() || isRelationshipOwner())) { - getJoinTable().addToMessages(messages, astRoot); - } - if (this.getMappedBy() != null) { - addMappedByMessages(messages, astRoot); - } - } - - protected void addMappedByMessages(List<IMessage> messages, CompilationUnit astRoot) { - String mappedBy = this.getMappedBy(); - - if (this.isJoinTableSpecified()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.MAPPING_MAPPED_BY_WITH_JOIN_TABLE, - this.getJoinTable(), - this.getJoinTable().getValidationTextRange(astRoot)) - ); - - } - - Entity targetEntity = this.getResolvedTargetEntity(); - - if (targetEntity == null) { - // already have validation messages for that - return; - } - - PersistentAttribute attribute = targetEntity.getPersistentType().resolveAttribute(mappedBy); - - if (attribute == null) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.MAPPING_UNRESOLVED_MAPPED_BY, - new String[] {mappedBy}, - this, - this.getMappedByTextRange(astRoot)) - ); - return; - } - - if (! this.mappedByIsValid(attribute.getMapping())) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.MAPPING_INVALID_MAPPED_BY, - new String[] {mappedBy}, - this, - this.getMappedByTextRange(astRoot)) - ); - return; - } - - NonOwningMapping mappedByMapping; - try { - mappedByMapping = (NonOwningMapping) attribute.getMapping(); - } catch (ClassCastException cce) { - // there is no error then - return; - } - - if (mappedByMapping.getMappedBy() != null) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.MAPPING_MAPPED_BY_ON_BOTH_SIDES, - this, - this.getMappedByTextRange(astRoot)) - ); - } - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaNamedColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaNamedColumn.java deleted file mode 100644 index 4e80363cbc..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaNamedColumn.java +++ /dev/null @@ -1,189 +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.java; - -import java.util.Iterator; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.NamedColumn; -import org.eclipse.jpt.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.core.context.java.JavaNamedColumn; -import org.eclipse.jpt.core.resource.java.NamedColumnAnnotation; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Column; -import org.eclipse.jpt.db.Table; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.StringTools; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; -import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; - - -public abstract class AbstractJavaNamedColumn<T extends NamedColumnAnnotation> extends AbstractJavaJpaContextNode - implements JavaNamedColumn -{ - - protected Owner owner; - - protected String specifiedName; - - protected String defaultName; - - protected String columnDefinition; - - protected AbstractJavaNamedColumn(JavaJpaContextNode parent, Owner owner) { - super(parent); - this.owner = owner; - } - - // ******************* initialization from java resource model ******************** - - protected void initializeFromResource(T column) { - this.specifiedName = column.getName(); - this.defaultName = this.defaultName(); - this.columnDefinition = column.getColumnDefinition(); - } - - - protected abstract T getColumnResource(); - - - //************** INamedColumn implementation ***************** - 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; - getColumnResource().setName(newSpecifiedName); - firePropertyChanged(NamedColumn.SPECIFIED_NAME_PROPERTY, oldSpecifiedName, newSpecifiedName); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - protected void setSpecifiedName_(String newSpecifiedName) { - String oldSpecifiedName = this.specifiedName; - this.specifiedName = newSpecifiedName; - firePropertyChanged(NamedColumn.SPECIFIED_NAME_PROPERTY, oldSpecifiedName, newSpecifiedName); - } - - public String getDefaultName() { - return this.defaultName; - } - - protected void setDefaultName(String newDefaultName) { - String oldDefaultName = this.defaultName; - this.defaultName = newDefaultName; - firePropertyChanged(NamedColumn.DEFAULT_NAME_PROPERTY, oldDefaultName, newDefaultName); - } - - public String getColumnDefinition() { - return this.columnDefinition; - } - - public void setColumnDefinition(String newColumnDefinition) { - String oldColumnDefinition = this.columnDefinition; - this.columnDefinition = newColumnDefinition; - getColumnResource().setColumnDefinition(newColumnDefinition); - firePropertyChanged(NamedColumn.COLUMN_DEFINITION_PROPERTY, oldColumnDefinition, newColumnDefinition); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - protected void setColumnDefinition_(String newColumnDefinition) { - String oldColumnDefinition = this.columnDefinition; - this.columnDefinition = newColumnDefinition; - firePropertyChanged(NamedColumn.COLUMN_DEFINITION_PROPERTY, oldColumnDefinition, newColumnDefinition); - } - - public Owner getOwner() { - return this.owner; - } - - public TextRange getNameTextRange(CompilationUnit astRoot) { - TextRange textRange = this.getColumnResource().getNameTextRange(astRoot); - return (textRange != null) ? textRange : this.getOwner().getValidationTextRange(astRoot); - } - - public boolean nameTouches(int pos, CompilationUnit astRoot) { - return this.getColumnResource().nameTouches(pos, astRoot); - } - - public Column getDbColumn() { - Table table = this.getDbTable(); - return (table == null) ? null : table.columnNamed(this.getName()); - } - - public Table getDbTable() { - return getOwner().getDbTable(this.getTableName()); - } - - /** - * Return the name of the column's table. - */ - protected abstract String getTableName(); - - public boolean isResolved() { - return this.getDbColumn() != null; - } - - @Override - public Iterator<String> connectedJavaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.connectedJavaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - if (this.nameTouches(pos, astRoot)) { - return this.quotedCandidateNames(filter); - } - return null; - } - - private Iterator<String> candidateNames() { - Table dbTable = this.getDbTable(); - return (dbTable != null) ? dbTable.columnNames() : EmptyIterator.<String> instance(); - } - - private Iterator<String> candidateNames(Filter<String> filter) { - return new FilteringIterator<String, String>(this.candidateNames(), filter); - } - - private Iterator<String> quotedCandidateNames(Filter<String> filter) { - return StringTools.quote(this.candidateNames(filter)); - } - - - // ******************* update from java resource model ******************** - - protected void update(T column) { - this.setSpecifiedName_(column.getName()); - this.setDefaultName(this.defaultName()); - this.setColumnDefinition_(column.getColumnDefinition()); - } - - /** - * Return the default column name. - */ - protected String defaultName() { - return this.getOwner().getDefaultColumnName(); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOverride.java deleted file mode 100644 index b9c3824427..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaOverride.java +++ /dev/null @@ -1,126 +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.java; - -import java.util.Iterator; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.BaseOverride; -import org.eclipse.jpt.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.core.resource.java.OverrideAnnotation; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.StringTools; -import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; - - -public abstract class AbstractJavaOverride extends AbstractJavaJpaContextNode implements BaseOverride -{ - - protected String name; - - protected final Owner owner; - - protected OverrideAnnotation overrideResource; - - public AbstractJavaOverride(JavaJpaContextNode parent, Owner owner) { - super(parent); - this.owner = owner; - } - - protected void initializeFromResource(OverrideAnnotation overrideResource) { - this.overrideResource = overrideResource; - this.name = this.name(overrideResource); - } - - protected OverrideAnnotation getOverrideResource() { - return this.overrideResource; - } - - public String getName() { - return this.name; - } - - public void setName(String newName) { - String oldName = this.name; - this.name = newName; - this.overrideResource.setName(newName); - firePropertyChanged(NAME_PROPERTY, oldName, newName); - } - - protected void setName_(String newName) { - String oldName = this.name; - this.name = newName; - firePropertyChanged(NAME_PROPERTY, oldName, newName); - } - - protected void update(OverrideAnnotation overrideResource) { - this.overrideResource = overrideResource; - this.setName_(this.name(overrideResource)); - } - - protected String name(OverrideAnnotation overrideResource) { - return overrideResource.getName(); - } - - public boolean isVirtual() { - return getOwner().isVirtual(this); - } - - public BaseOverride setVirtual(boolean virtual) { - return getOwner().setVirtual(virtual, this); - } - - public Owner getOwner() { - return this.owner; - } - - @Override - public JavaJpaContextNode getParent() { - return (JavaJpaContextNode) super.getParent(); - } - - protected abstract Iterator<String> candidateNames(); - - private Iterator<String> candidateNames(Filter<String> filter) { - return new FilteringIterator<String, String>(this.candidateNames(), filter); - } - - private Iterator<String> quotedCandidateNames(Filter<String> filter) { - return StringTools.quote(this.candidateNames(filter)); - } - - @Override - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - if (this.nameTouches(pos, astRoot)) { - return this.quotedCandidateNames(filter); - } - return null; - } - - public boolean nameTouches(int pos, CompilationUnit astRoot) { - return this.overrideResource.nameTouches(pos, astRoot); - } - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - TextRange textRange = this.overrideResource.getTextRange(astRoot); - return (textRange != null) ? textRange : this.getParent().getValidationTextRange(astRoot); - } - - @Override - public void toString(StringBuilder sb) { - super.toString(sb); - sb.append(getName()); - } - -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaQuery.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaQuery.java deleted file mode 100644 index bbe49882d2..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaQuery.java +++ /dev/null @@ -1,181 +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.java; - -import java.util.ArrayList; -import java.util.List; -import java.util.ListIterator; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.Query; -import org.eclipse.jpt.core.context.QueryHint; -import org.eclipse.jpt.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.core.context.java.JavaQuery; -import org.eclipse.jpt.core.context.java.JavaQueryHint; -import org.eclipse.jpt.core.resource.java.QueryAnnotation; -import org.eclipse.jpt.core.resource.java.QueryHintAnnotation; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; - - -public abstract class AbstractJavaQuery extends AbstractJavaJpaContextNode - implements JavaQuery -{ - protected String name; - - protected String query; - - protected final List<JavaQueryHint> hints; - - protected QueryAnnotation queryAnnotation; - - protected AbstractJavaQuery(JavaJpaContextNode parent) { - super(parent); - this.hints = new ArrayList<JavaQueryHint>(); - } - - protected QueryAnnotation getQueryResource() { - return this.queryAnnotation; - } - - public String getName() { - return this.name; - } - - public void setName(String newName) { - String oldName = this.name; - this.name = newName; - this.queryAnnotation.setName(newName); - firePropertyChanged(Query.NAME_PROPERTY, oldName, newName); - } - - protected void setName_(String newName) { - String oldName = this.name; - this.name = 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.queryAnnotation.setQuery(newQuery); - firePropertyChanged(Query.QUERY_PROPERTY, oldQuery, newQuery); - } - - protected void setQuery_(String newQuery) { - String oldQuery = this.query; - this.query = newQuery; - firePropertyChanged(Query.QUERY_PROPERTY, oldQuery, newQuery); - } - - public ListIterator<JavaQueryHint> hints() { - return new CloneListIterator<JavaQueryHint>(this.hints); - } - - public int hintsSize() { - return this.hints.size(); - } - - public JavaQueryHint addHint(int index) { - JavaQueryHint hint = getJpaFactory().buildJavaQueryHint(this); - this.hints.add(index, hint); - this.getQueryResource().addHint(index); - this.fireItemAdded(Query.HINTS_LIST, index, hint); - return hint; - } - - protected void addHint(int index, JavaQueryHint hint) { - addItemToList(index, hint, this.hints, Query.HINTS_LIST); - } - - public void removeHint(QueryHint queryHint) { - removeHint(this.hints.indexOf(queryHint)); - } - - public void removeHint(int index) { - JavaQueryHint removedHint = this.hints.remove(index); - this.getQueryResource().removeHint(index); - fireItemRemoved(Query.HINTS_LIST, index, removedHint); - } - - protected void removeHint_(JavaQueryHint hint) { - removeItemFromList(hint, this.hints, Query.HINTS_LIST); - } - - public void moveHint(int targetIndex, int sourceIndex) { - CollectionTools.move(this.hints, targetIndex, sourceIndex); - this.getQueryResource().moveHint(targetIndex, sourceIndex); - fireItemMoved(Query.HINTS_LIST, targetIndex, sourceIndex); - } - - protected void initializeFromResource(QueryAnnotation queryAnnotation) { - this.queryAnnotation = queryAnnotation; - this.name = queryAnnotation.getName(); - this.query = queryAnnotation.getQuery(); - this.initializeQueryHints(queryAnnotation); - } - - protected void update(QueryAnnotation queryAnnotation) { - this.queryAnnotation = queryAnnotation; - this.setName_(queryAnnotation.getName()); - this.setQuery_(queryAnnotation.getQuery()); - this.updateQueryHints(queryAnnotation); - } - - protected void initializeQueryHints(QueryAnnotation queryResource) { - ListIterator<QueryHintAnnotation> annotations = queryResource.hints(); - - while(annotations.hasNext()) { - this.hints.add(createQueryHint(annotations.next())); - } - } - - protected void updateQueryHints(QueryAnnotation queryResource) { - ListIterator<JavaQueryHint> hints = hints(); - ListIterator<QueryHintAnnotation> resourceHints = queryResource.hints(); - - while (hints.hasNext()) { - JavaQueryHint hint = hints.next(); - if (resourceHints.hasNext()) { - hint.update(resourceHints.next()); - } - else { - removeHint_(hint); - } - } - - while (resourceHints.hasNext()) { - addHint(hintsSize(), createQueryHint(resourceHints.next())); - } - } - - protected JavaQueryHint createQueryHint(QueryHintAnnotation hintResource) { - JavaQueryHint queryHint = getJpaFactory().buildJavaQueryHint(this); - queryHint.initializeFromResource(hintResource); - return queryHint; - } - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - return this.queryAnnotation.getTextRange(astRoot); - } - - public TextRange getNameTextRange(CompilationUnit astRoot) { - return this.queryAnnotation.getNameTextRange(astRoot); - } - - public boolean overrides(Query query) { - // java is at the base of the tree - return false; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaRelationshipMapping.java deleted file mode 100644 index 9be2b4b4b7..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaRelationshipMapping.java +++ /dev/null @@ -1,198 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import java.util.Iterator; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.Entity; -import org.eclipse.jpt.core.context.FetchType; -import org.eclipse.jpt.core.context.Fetchable; -import org.eclipse.jpt.core.context.PersistentType; -import org.eclipse.jpt.core.context.RelationshipMapping; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.context.java.JavaRelationshipMapping; -import org.eclipse.jpt.core.internal.context.MappingTools; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.core.resource.java.RelationshipMappingAnnotation; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.StringTools; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; -import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; - -public abstract class AbstractJavaRelationshipMapping<T extends RelationshipMappingAnnotation> extends AbstractJavaAttributeMapping<T> - implements JavaRelationshipMapping -{ - - protected String specifiedTargetEntity; - - protected String defaultTargetEntity; - - protected Entity resolvedTargetEntity; - - protected final JavaCascade cascade; - - protected FetchType specifiedFetch; - - protected AbstractJavaRelationshipMapping(JavaPersistentAttribute parent) { - super(parent); - this.cascade = new JavaCascade(this); - } - - public String getTargetEntity() { - return (this.getSpecifiedTargetEntity() == null) ? getDefaultTargetEntity() : this.getSpecifiedTargetEntity(); - } - - public String getSpecifiedTargetEntity() { - return this.specifiedTargetEntity; - } - - public void setSpecifiedTargetEntity(String newSpecifiedTargetEntity) { - String oldSpecifiedTargetEntity = this.specifiedTargetEntity; - this.specifiedTargetEntity = newSpecifiedTargetEntity; - this.getMappingResource().setTargetEntity(newSpecifiedTargetEntity); - firePropertyChanged(RelationshipMapping.SPECIFIED_TARGET_ENTITY_PROPERTY, oldSpecifiedTargetEntity, newSpecifiedTargetEntity); - } - - protected void setSpecifiedTargetEntity_(String newSpecifiedTargetEntity) { - String oldSpecifiedTargetEntity = this.specifiedTargetEntity; - this.specifiedTargetEntity = newSpecifiedTargetEntity; - firePropertyChanged(RelationshipMapping.SPECIFIED_TARGET_ENTITY_PROPERTY, oldSpecifiedTargetEntity, newSpecifiedTargetEntity); - } - - public String getDefaultTargetEntity() { - return this.defaultTargetEntity; - } - - protected void setDefaultTargetEntity(String newDefaultTargetEntity) { - String oldDefaultTargetEntity = this.defaultTargetEntity; - this.defaultTargetEntity = newDefaultTargetEntity; - firePropertyChanged(RelationshipMapping.DEFAULT_TARGET_ENTITY_PROPERTY, oldDefaultTargetEntity, newDefaultTargetEntity); - } - - public Entity getResolvedTargetEntity() { - return this.resolvedTargetEntity; - } - - protected void setResolvedTargetEntity(Entity newResolvedTargetEntity) { - Entity oldResolvedTargetEntity = this.resolvedTargetEntity; - this.resolvedTargetEntity = newResolvedTargetEntity; - firePropertyChanged(RelationshipMapping.RESOLVED_TARGET_ENTITY_PROPERTY, oldResolvedTargetEntity, newResolvedTargetEntity); - } - - public JavaCascade getCascade() { - return this.cascade; - } - - public FetchType getFetch() { - return (this.getSpecifiedFetch() == null) ? this.getDefaultFetch() : this.getSpecifiedFetch(); - } - - public FetchType getSpecifiedFetch() { - return this.specifiedFetch; - } - - public void setSpecifiedFetch(FetchType newSpecifiedFetch) { - FetchType oldFetch = this.specifiedFetch; - this.specifiedFetch = newSpecifiedFetch; - this.getMappingResource().setFetch(FetchType.toJavaResourceModel(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); - } - - @Override - public void initializeFromResource(JavaResourcePersistentAttribute resourcePersistentAttribute) { - this.defaultTargetEntity = this.defaultTargetEntity(resourcePersistentAttribute); - super.initializeFromResource(resourcePersistentAttribute); - } - - @Override - public void update(JavaResourcePersistentAttribute resourcePersistentAttribute) { - this.setDefaultTargetEntity(this.defaultTargetEntity(resourcePersistentAttribute)); - super.update(resourcePersistentAttribute); - } - - @Override - protected void initialize(T relationshipMapping) { - this.specifiedFetch = this.fetch(relationshipMapping); - this.cascade.initialize(relationshipMapping); - this.specifiedTargetEntity = this.specifiedTargetEntity(relationshipMapping); - this.resolvedTargetEntity = this.resolveTargetEntity(relationshipMapping); - } - - @Override - protected void update(T relationshipMapping) { - super.update(relationshipMapping); - this.setSpecifiedFetch_(this.fetch(relationshipMapping)); - this.cascade.update(relationshipMapping); - this.setSpecifiedTargetEntity_(this.specifiedTargetEntity(relationshipMapping)); - this.setResolvedTargetEntity(this.resolveTargetEntity(relationshipMapping)); - } - - protected FetchType fetch(T relationshipMapping) { - return FetchType.fromJavaResourceModel(relationshipMapping.getFetch()); - } - - protected String specifiedTargetEntity(T relationshipMapping) { - return relationshipMapping.getTargetEntity(); - } - - protected abstract String defaultTargetEntity(JavaResourcePersistentAttribute resourcePersistentAttribute); - - protected Entity resolveTargetEntity(T relationshipMapping) { - String qualifiedTargetEntity = getDefaultTargetEntity(); - if (getSpecifiedTargetEntity() != null) { - qualifiedTargetEntity = relationshipMapping.getFullyQualifiedTargetEntity(); - } - if (qualifiedTargetEntity == null) { - return null; - } - PersistentType persistentType = getPersistenceUnit().getPersistentType(qualifiedTargetEntity); - if (persistentType != null && persistentType.getMappingKey() == MappingKeys.ENTITY_TYPE_MAPPING_KEY) { - return (Entity) persistentType.getMapping(); - } - return null; - } - - public Entity getEntity() { - if (getTypeMapping() instanceof Entity) { - return (Entity) getTypeMapping(); - } - return null; - } - - public Iterator<String> allTargetEntityAttributeNames() { - Entity targetEntity = this.getResolvedTargetEntity(); - return (targetEntity == null) ? EmptyIterator.<String> instance() : targetEntity.getPersistentType().allAttributeNames(); - } - - public Iterator<String> candidateMappedByAttributeNames() { - return this.allTargetEntityAttributeNames(); - } - - protected Iterator<String> candidateMappedByAttributeNames(Filter<String> filter) { - return new FilteringIterator<String, String>(this.candidateMappedByAttributeNames(), filter); - } - - protected Iterator<String> quotedCandidateMappedByAttributeNames(Filter<String> filter) { - return StringTools.quote(this.candidateMappedByAttributeNames(filter)); - } - - - // ********** static methods ********** - - public boolean targetEntityIsValid(String targetEntity) { - return MappingTools.targetEntityIsValid(targetEntity); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaSingleRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaSingleRelationshipMapping.java deleted file mode 100644 index 1f09a2c559..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaSingleRelationshipMapping.java +++ /dev/null @@ -1,433 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.BaseJoinColumn; -import org.eclipse.jpt.core.context.Entity; -import org.eclipse.jpt.core.context.FetchType; -import org.eclipse.jpt.core.context.JoinColumn; -import org.eclipse.jpt.core.context.Nullable; -import org.eclipse.jpt.core.context.RelationshipMapping; -import org.eclipse.jpt.core.context.SingleRelationshipMapping; -import org.eclipse.jpt.core.context.TypeMapping; -import org.eclipse.jpt.core.context.java.JavaJoinColumn; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.context.java.JavaSingleRelationshipMapping; -import org.eclipse.jpt.core.internal.resource.java.NullJoinColumn; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.java.JavaResourceNode; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.core.resource.java.JoinColumnAnnotation; -import org.eclipse.jpt.core.resource.java.JoinColumnsAnnotation; -import org.eclipse.jpt.core.resource.java.RelationshipMappingAnnotation; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Table; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.CollectionTools; -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; - - -public abstract class AbstractJavaSingleRelationshipMapping<T extends RelationshipMappingAnnotation> - extends AbstractJavaRelationshipMapping<T> implements JavaSingleRelationshipMapping -{ - - protected final List<JavaJoinColumn> specifiedJoinColumns; - - protected JavaJoinColumn defaultJoinColumn; - - protected Boolean specifiedOptional; - - protected AbstractJavaSingleRelationshipMapping(JavaPersistentAttribute parent) { - super(parent); - this.specifiedJoinColumns = new ArrayList<JavaJoinColumn>(); - } - - public FetchType getDefaultFetch() { - return SingleRelationshipMapping.DEFAULT_FETCH_TYPE; - } - - //***************** ISingleRelationshipMapping implementation ***************** - public ListIterator<JavaJoinColumn> joinColumns() { - return this.containsSpecifiedJoinColumns() ? this.specifiedJoinColumns() : this.defaultJoinColumns(); - } - - public int joinColumnsSize() { - return this.containsSpecifiedJoinColumns() ? this.specifiedJoinColumnsSize() : this.defaultJoinColumnsSize(); - } - - public JavaJoinColumn getDefaultJoinColumn() { - return this.defaultJoinColumn; - } - - protected void setDefaultJoinColumn(JavaJoinColumn newJoinColumn) { - JavaJoinColumn oldJoinColumn = this.defaultJoinColumn; - this.defaultJoinColumn = newJoinColumn; - firePropertyChanged(SingleRelationshipMapping.DEFAULT_JOIN_COLUMN, oldJoinColumn, newJoinColumn); - } - - protected ListIterator<JavaJoinColumn> defaultJoinColumns() { - if (this.defaultJoinColumn != null) { - return new SingleElementListIterator<JavaJoinColumn>(this.defaultJoinColumn); - } - return EmptyListIterator.instance(); - } - - protected int defaultJoinColumnsSize() { - return (this.defaultJoinColumn == null) ? 0 : 1; - } - - public ListIterator<JavaJoinColumn> specifiedJoinColumns() { - return new CloneListIterator<JavaJoinColumn>(this.specifiedJoinColumns); - } - - public int specifiedJoinColumnsSize() { - return this.specifiedJoinColumns.size(); - } - - public boolean containsSpecifiedJoinColumns() { - return !this.specifiedJoinColumns.isEmpty(); - } - - public JavaJoinColumn addSpecifiedJoinColumn(int index) { - JavaJoinColumn oldDefaultJoinColumn = this.getDefaultJoinColumn(); - 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; - } - JavaJoinColumn joinColumn = getJpaFactory().buildJavaJoinColumn(this, createJoinColumnOwner()); - this.specifiedJoinColumns.add(index, joinColumn); - JoinColumnAnnotation joinColumnResource = (JoinColumnAnnotation) getResourcePersistentAttribute().addAnnotation(index, JoinColumnAnnotation.ANNOTATION_NAME, JoinColumnsAnnotation.ANNOTATION_NAME); - joinColumn.initializeFromResource(joinColumnResource); - this.fireItemAdded(SingleRelationshipMapping.SPECIFIED_JOIN_COLUMNS_LIST, index, joinColumn); - if (oldDefaultJoinColumn != null) { - this.firePropertyChanged(SingleRelationshipMapping.DEFAULT_JOIN_COLUMN, oldDefaultJoinColumn, null); - } - return joinColumn; - } - - protected void addSpecifiedJoinColumn(int index, JavaJoinColumn joinColumn) { - addItemToList(index, joinColumn, this.specifiedJoinColumns, SingleRelationshipMapping.SPECIFIED_JOIN_COLUMNS_LIST); - } - - public void removeSpecifiedJoinColumn(JoinColumn joinColumn) { - this.removeSpecifiedJoinColumn(this.specifiedJoinColumns.indexOf(joinColumn)); - } - - public void removeSpecifiedJoinColumn(int index) { - JavaJoinColumn 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(new NullJoinColumn(getResourcePersistentAttribute())); - } - getResourcePersistentAttribute().removeAnnotation(index, JoinColumnAnnotation.ANNOTATION_NAME, JoinColumnsAnnotation.ANNOTATION_NAME); - fireItemRemoved(SingleRelationshipMapping.SPECIFIED_JOIN_COLUMNS_LIST, index, removedJoinColumn); - if (this.defaultJoinColumn != null) { - //fire change notification if a defaultJoinColumn was created above - this.firePropertyChanged(SingleRelationshipMapping.DEFAULT_JOIN_COLUMN, null, this.defaultJoinColumn); - } - } - - protected void removeSpecifiedJoinColumn_(JavaJoinColumn joinColumn) { - removeItemFromList(joinColumn, this.specifiedJoinColumns, SingleRelationshipMapping.SPECIFIED_JOIN_COLUMNS_LIST); - } - - public void moveSpecifiedJoinColumn(int targetIndex, int sourceIndex) { - CollectionTools.move(this.specifiedJoinColumns, targetIndex, sourceIndex); - getResourcePersistentAttribute().move(targetIndex, sourceIndex, JoinColumnsAnnotation.ANNOTATION_NAME); - fireItemMoved(SingleRelationshipMapping.SPECIFIED_JOIN_COLUMNS_LIST, targetIndex, sourceIndex); - } - - public Boolean getOptional() { - return getSpecifiedOptional() == null ? getDefaultOptional() : getSpecifiedOptional(); - } - - public Boolean getDefaultOptional() { - return Nullable.DEFAULT_OPTIONAL; - } - - public Boolean getSpecifiedOptional() { - return this.specifiedOptional; - } - - public void setSpecifiedOptional(Boolean newSpecifiedOptional) { - Boolean oldSpecifiedOptional = this.specifiedOptional; - this.specifiedOptional = newSpecifiedOptional; - setOptionalOnResourceModel(newSpecifiedOptional); - firePropertyChanged(Nullable.SPECIFIED_OPTIONAL_PROPERTY, oldSpecifiedOptional, newSpecifiedOptional); - } - - protected void setSpecifiedOptional_(Boolean newSpecifiedOptional) { - Boolean oldSpecifiedOptional = this.specifiedOptional; - this.specifiedOptional = newSpecifiedOptional; - firePropertyChanged(Nullable.SPECIFIED_OPTIONAL_PROPERTY, oldSpecifiedOptional, newSpecifiedOptional); - } - - protected abstract void setOptionalOnResourceModel(Boolean newOptional); - - - @Override - public void initializeFromResource(JavaResourcePersistentAttribute resourcePersistentAttribute) { - super.initializeFromResource(resourcePersistentAttribute); - this.initializeSpecifiedJoinColumns(resourcePersistentAttribute); - this.initializeDefaultJoinColumn(resourcePersistentAttribute); - } - - @Override - protected void initialize(T relationshipMapping) { - super.initialize(relationshipMapping); - this.specifiedOptional = this.specifiedOptional(relationshipMapping); - } - - protected void initializeSpecifiedJoinColumns(JavaResourcePersistentAttribute resourcePersistentAttribute) { - ListIterator<JavaResourceNode> annotations = resourcePersistentAttribute.annotations(JoinColumnAnnotation.ANNOTATION_NAME, JoinColumnsAnnotation.ANNOTATION_NAME); - - while(annotations.hasNext()) { - this.specifiedJoinColumns.add(buildJoinColumn((JoinColumnAnnotation) annotations.next())); - } - } - - protected boolean shouldBuildDefaultJoinColumn() { - return !containsSpecifiedJoinColumns() && isRelationshipOwner(); - } - - protected void initializeDefaultJoinColumn(JavaResourcePersistentAttribute resourcePersistentAttribute) { - if (!shouldBuildDefaultJoinColumn()) { - return; - } - this.defaultJoinColumn = buildJoinColumn(new NullJoinColumn(resourcePersistentAttribute)); - } - - - @Override - public void update(JavaResourcePersistentAttribute resourcePersistentAttribute) { - super.update(resourcePersistentAttribute); - this.updateSpecifiedJoinColumns(resourcePersistentAttribute); - this.updateDefaultJoinColumn(resourcePersistentAttribute); - } - - @Override - protected void update(T relationshipMapping) { - super.update(relationshipMapping); - this.setSpecifiedOptional_(this.specifiedOptional(relationshipMapping)); - } - - protected abstract Boolean specifiedOptional(T relationshipMapping); - - - protected void updateSpecifiedJoinColumns(JavaResourcePersistentAttribute resourcePersistentAttribute) { - ListIterator<JavaJoinColumn> joinColumns = specifiedJoinColumns(); - ListIterator<JavaResourceNode> resourceJoinColumns = resourcePersistentAttribute.annotations(JoinColumnAnnotation.ANNOTATION_NAME, JoinColumnsAnnotation.ANNOTATION_NAME); - - while (joinColumns.hasNext()) { - JavaJoinColumn joinColumn = joinColumns.next(); - if (resourceJoinColumns.hasNext()) { - joinColumn.update((JoinColumnAnnotation) resourceJoinColumns.next()); - } - else { - removeSpecifiedJoinColumn_(joinColumn); - } - } - - while (resourceJoinColumns.hasNext()) { - addSpecifiedJoinColumn(specifiedJoinColumnsSize(), buildJoinColumn((JoinColumnAnnotation) resourceJoinColumns.next())); - } - } - - protected void updateDefaultJoinColumn(JavaResourcePersistentAttribute resourcePersistentAttribute) { - if (!shouldBuildDefaultJoinColumn()) { - setDefaultJoinColumn(null); - return; - } - if (getDefaultJoinColumn() == null) { - this.setDefaultJoinColumn(buildJoinColumn(new NullJoinColumn(resourcePersistentAttribute))); - } - else { - this.defaultJoinColumn.update(new NullJoinColumn(resourcePersistentAttribute)); - } - } - - protected JavaJoinColumn buildJoinColumn(JoinColumnAnnotation joinColumnResource) { - JavaJoinColumn joinColumn = getJpaFactory().buildJavaJoinColumn(this, createJoinColumnOwner()); - joinColumn.initializeFromResource(joinColumnResource); - return joinColumn; - } - - protected JavaJoinColumn.Owner createJoinColumnOwner() { - return new JoinColumnOwner(); - } - - /** - * eliminate any "container" types - */ - @Override - protected String defaultTargetEntity(JavaResourcePersistentAttribute resourcePersistentAttribute) { - if (resourcePersistentAttribute.typeIsContainer()) { - return null; - } - return resourcePersistentAttribute.getQualifiedReferenceEntityTypeName(); - } - - @Override - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - for (JavaJoinColumn column : CollectionTools.iterable(this.joinColumns())) { - result = column.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - } - return null; - } - - //************* Validation ********************************** - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - - if (addJoinColumnMessages()) { - addJoinColumnMessages(messages, astRoot); - } - } - - //bug 192287 - do not want joinColumn validation errors on the non-owning side - //of a bidirectional relationship. This is a low risk fix for RC3, but a better - //solution would be to not have the default joinColumns on the non-owning side. - //This would fix another bug that we show default joinColumns in this situation. - protected boolean addJoinColumnMessages() { - return (entityOwned() && isRelationshipOwner()); - } - - protected void addJoinColumnMessages(List<IMessage> messages, CompilationUnit astRoot) { - - for (Iterator<JavaJoinColumn> stream = this.joinColumns(); stream.hasNext();) { - JavaJoinColumn joinColumn = stream.next(); - String table = joinColumn.getTable(); - boolean doContinue = joinColumn.connectionProfileIsActive(); - - if (doContinue && this.getTypeMapping().tableNameIsInvalid(table)) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_COLUMN_UNRESOLVED_TABLE, - new String[] {table, joinColumn.getName()}, - joinColumn, joinColumn.getTableTextRange(astRoot)) - ); - doContinue = false; - } - - if (doContinue && ! joinColumn.isResolved()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_COLUMN_UNRESOLVED_NAME, - new String[] {joinColumn.getName()}, - joinColumn, joinColumn.getNameTextRange(astRoot)) - ); - } - - if (doContinue && ! joinColumn.isReferencedColumnResolved()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME, - new String[] {joinColumn.getReferencedColumnName(), joinColumn.getName()}, - joinColumn, joinColumn.getReferencedColumnNameTextRange(astRoot)) - ); - } - } - } - - - public class JoinColumnOwner implements JavaJoinColumn.Owner - { - - public JoinColumnOwner() { - super(); - } - - /** - * by default, the join column is in the type mapping's primary table - */ - public String getDefaultTableName() { - return AbstractJavaSingleRelationshipMapping.this.getTypeMapping().getTableName(); - } - - public Entity getTargetEntity() { - return AbstractJavaSingleRelationshipMapping.this.getResolvedTargetEntity(); - } - - public String getAttributeName() { - return AbstractJavaSingleRelationshipMapping.this.getPersistentAttribute().getName(); - } - - public RelationshipMapping getRelationshipMapping() { - return AbstractJavaSingleRelationshipMapping.this; - } - - public boolean tableNameIsInvalid(String tableName) { - return AbstractJavaSingleRelationshipMapping.this.getTypeMapping().tableNameIsInvalid(tableName); - } - - /** - * the join column can be on a secondary table - */ - public boolean tableIsAllowed() { - return true; - } - - public TypeMapping getTypeMapping() { - return AbstractJavaSingleRelationshipMapping.this.getTypeMapping(); - } - - public Table getDbTable(String tableName) { - return getTypeMapping().getDbTable(tableName); - } - - public Table getDbReferencedColumnTable() { - Entity targetEntity = getTargetEntity(); - return (targetEntity == null) ? null : targetEntity.getPrimaryDbTable(); - } - - public boolean isVirtual(BaseJoinColumn joinColumn) { - return AbstractJavaSingleRelationshipMapping.this.defaultJoinColumn == joinColumn; - } - - public String getDefaultColumnName() { - // TODO Auto-generated method stub - return null; - } - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - return AbstractJavaSingleRelationshipMapping.this.getValidationTextRange(astRoot); - } - - public int joinColumnsSize() { - return AbstractJavaSingleRelationshipMapping.this.joinColumnsSize(); - } - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaTable.java deleted file mode 100644 index 6ce7369b2b..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaTable.java +++ /dev/null @@ -1,444 +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.java; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.Table; -import org.eclipse.jpt.core.context.UniqueConstraint; -import org.eclipse.jpt.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.core.context.java.JavaUniqueConstraint; -import org.eclipse.jpt.core.resource.java.TableAnnotation; -import org.eclipse.jpt.core.resource.java.UniqueConstraintAnnotation; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Schema; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.NameTools; -import org.eclipse.jpt.utility.internal.StringTools; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; -import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; - -public abstract class AbstractJavaTable extends AbstractJavaJpaContextNode implements UniqueConstraint.Owner -{ - - protected String specifiedName; - protected String defaultName; - - protected String specifiedCatalog; - protected String defaultCatalog; - - protected String specifiedSchema; - protected String defaultSchema; - - protected final List<JavaUniqueConstraint> uniqueConstraints; - - - protected AbstractJavaTable(JavaJpaContextNode parent) { - super(parent); - this.uniqueConstraints = new ArrayList<JavaUniqueConstraint>(); - } - - @Override - public JavaJpaContextNode getParent() { - return (JavaJpaContextNode) super.getParent(); - } - - /** - * Return the java table resource, do not return null if the java annotation does not exist. - * Use a null resource object instead of null. - */ - protected abstract TableAnnotation getTableResource(); - - /** - * Return the fully qualified annotation name of the java table resource - */ - protected abstract String getAnnotationName(); - - 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; - getTableResource().setName(newSpecifiedName); - firePropertyChanged(Table.SPECIFIED_NAME_PROPERTY, oldSpecifiedName, newSpecifiedName); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - protected void setSpecifiedName_(String newSpecifiedName) { - String oldSpecifiedName = this.specifiedName; - this.specifiedName = newSpecifiedName; - firePropertyChanged(Table.SPECIFIED_NAME_PROPERTY, oldSpecifiedName, newSpecifiedName); - } - - public String getDefaultName() { - return this.defaultName; - } - - public String getCatalog() { - return (this.getSpecifiedCatalog() == null) ? getDefaultCatalog() : this.getSpecifiedCatalog(); - } - - public String getSpecifiedCatalog() { - return this.specifiedCatalog; - } - - public void setSpecifiedCatalog(String newSpecifiedCatalog) { - String oldSpecifiedCatalog = this.specifiedCatalog; - this.specifiedCatalog = newSpecifiedCatalog; - getTableResource().setCatalog(newSpecifiedCatalog); - firePropertyChanged(Table.SPECIFIED_CATALOG_PROPERTY, oldSpecifiedCatalog, newSpecifiedCatalog); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - protected void setSpecifiedCatalog_(String newSpecifiedCatalog) { - String oldSpecifiedCatalog = this.specifiedCatalog; - this.specifiedCatalog = newSpecifiedCatalog; - firePropertyChanged(Table.SPECIFIED_CATALOG_PROPERTY, oldSpecifiedCatalog, newSpecifiedCatalog); - } - - public String getDefaultCatalog() { - return this.defaultCatalog; - } - - public String getSchema() { - return (this.getSpecifiedSchema() == null) ? getDefaultSchema() : this.getSpecifiedSchema(); - } - - public String getSpecifiedSchema() { - return this.specifiedSchema; - } - - public void setSpecifiedSchema(String newSpecifiedSchema) { - String oldSpecifiedSchema = this.specifiedSchema; - this.specifiedSchema = newSpecifiedSchema; - getTableResource().setSchema(newSpecifiedSchema); - firePropertyChanged(Table.SPECIFIED_SCHEMA_PROPERTY, oldSpecifiedSchema, newSpecifiedSchema); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - protected void setSpecifiedSchema_(String newSpecifiedSchema) { - String oldSpecifiedSchema = this.specifiedSchema; - this.specifiedSchema = newSpecifiedSchema; - firePropertyChanged(Table.SPECIFIED_SCHEMA_PROPERTY, oldSpecifiedSchema, newSpecifiedSchema); - } - - public String getDefaultSchema() { - return this.defaultSchema; - } - - - // ********** unique constraints ********** - - public ListIterator<JavaUniqueConstraint> uniqueConstraints() { - return new CloneListIterator<JavaUniqueConstraint>(this.uniqueConstraints); - } - - public int uniqueConstraintsSize() { - return this.uniqueConstraints.size(); - } - - public JavaUniqueConstraint addUniqueConstraint(int index) { - JavaUniqueConstraint uniqueConstraint = getJpaFactory().buildJavaUniqueConstraint(this, this); - this.uniqueConstraints.add(index, uniqueConstraint); - UniqueConstraintAnnotation uniqueConstraintAnnotation = this.getTableResource().addUniqueConstraint(index); - uniqueConstraint.initialize(uniqueConstraintAnnotation); - fireItemAdded(Table.UNIQUE_CONSTRAINTS_LIST, index, uniqueConstraint); - return uniqueConstraint; - } - - public void removeUniqueConstraint(UniqueConstraint uniqueConstraint) { - this.removeUniqueConstraint(this.uniqueConstraints.indexOf(uniqueConstraint)); - } - - public void removeUniqueConstraint(int index) { - JavaUniqueConstraint removedUniqueConstraint = this.uniqueConstraints.remove(index); - this.getTableResource().removeUniqueConstraint(index); - fireItemRemoved(Table.UNIQUE_CONSTRAINTS_LIST, index, removedUniqueConstraint); - } - - public void moveUniqueConstraint(int targetIndex, int sourceIndex) { - CollectionTools.move(this.uniqueConstraints, targetIndex, sourceIndex); - this.getTableResource().moveUniqueConstraint(targetIndex, sourceIndex); - fireItemMoved(Table.UNIQUE_CONSTRAINTS_LIST, targetIndex, sourceIndex); - } - - protected void addUniqueConstraint(int index, JavaUniqueConstraint uniqueConstraint) { - addItemToList(index, uniqueConstraint, this.uniqueConstraints, Table.UNIQUE_CONSTRAINTS_LIST); - } - - protected void removeUniqueConstraint_(JavaUniqueConstraint uniqueConstraint) { - removeItemFromList(uniqueConstraint, this.uniqueConstraints, Table.UNIQUE_CONSTRAINTS_LIST); - } - - - // ********** Table implementation ********** - - public TextRange getNameTextRange(CompilationUnit astRoot) { - TextRange textRange = getTableResource().getNameTextRange(astRoot); - return (textRange != null) ? textRange : this.getParent().getValidationTextRange(astRoot); - } - - public boolean nameTouches(int pos, CompilationUnit astRoot) { - return getTableResource().nameTouches(pos, astRoot); - } - - public TextRange getSchemaTextRange(CompilationUnit astRoot) { - TextRange textRange = getTableResource().getSchemaTextRange(astRoot); - return (textRange != null) ? textRange : this.getParent().getValidationTextRange(astRoot); - } - - public boolean schemaTouches(int pos, CompilationUnit astRoot) { - return getTableResource().schemaTouches(pos, astRoot); - } - - public TextRange getCatalogTextRange(CompilationUnit astRoot) { - return getTableResource().getCatalogTextRange(astRoot); - } - - public boolean catalogTouches(int pos, CompilationUnit astRoot) { - return getTableResource().catalogTouches(pos, astRoot); - } - - protected void setDefaultName(String newDefaultName) { - String oldDefaultName = this.defaultName; - this.defaultName = newDefaultName; - firePropertyChanged(Table.DEFAULT_NAME_PROPERTY, oldDefaultName, newDefaultName); - } - - protected void setDefaultCatalog(String newDefaultCatalog) { - String oldDefaultCatalog = this.defaultCatalog; - this.defaultCatalog = newDefaultCatalog; - firePropertyChanged(Table.DEFAULT_CATALOG_PROPERTY, oldDefaultCatalog, newDefaultCatalog); - } - - protected void setDefaultSchema(String newDefaultSchema) { - String oldDefaultSchema = this.defaultSchema; - this.defaultSchema = newDefaultSchema; - firePropertyChanged(Table.DEFAULT_SCHEMA_PROPERTY, oldDefaultSchema, newDefaultSchema); - } - - - - protected void initializeFromResource(TableAnnotation table) { - this.defaultName = this.defaultName(); - this.defaultSchema = this.defaultSchema(); - this.defaultCatalog = this.defaultCatalog(); - this.specifiedName = table.getName(); - this.specifiedSchema = table.getSchema(); - this.specifiedCatalog = table.getCatalog(); - this.initializeUniqueConstraints(table); - } - - protected void initializeUniqueConstraints(TableAnnotation table) { - for (UniqueConstraintAnnotation uniqueConstraintAnnotation : CollectionTools.iterable(table.uniqueConstraints())) { - this.uniqueConstraints.add(buildUniqueConstraint(uniqueConstraintAnnotation)); - } - } - - protected void update(TableAnnotation table) { - this.setSpecifiedName_(table.getName()); - this.setSpecifiedSchema_(table.getSchema()); - this.setSpecifiedCatalog_(table.getCatalog()); - this.setDefaultName(this.defaultName()); - this.setDefaultSchema(this.defaultSchema()); - this.setDefaultCatalog(this.defaultCatalog()); - this.updateUniqueConstraints(table); - } - - protected abstract String defaultName(); - - protected String defaultSchema() { - if (getEntityMappings() != null) { - return getEntityMappings().getSchema(); - } - return getPersistenceUnit().getDefaultSchema(); - } - - protected String defaultCatalog() { - if (getEntityMappings() != null) { - return getEntityMappings().getCatalog(); - } - return getPersistenceUnit().getDefaultCatalog(); - } - - protected void updateUniqueConstraints(TableAnnotation table) { - ListIterator<JavaUniqueConstraint> uniqueConstraints = uniqueConstraints(); - ListIterator<UniqueConstraintAnnotation> resourceUniqueConstraints = table.uniqueConstraints(); - - while (uniqueConstraints.hasNext()) { - JavaUniqueConstraint uniqueConstraint = uniqueConstraints.next(); - if (resourceUniqueConstraints.hasNext()) { - uniqueConstraint.update(resourceUniqueConstraints.next()); - } - else { - removeUniqueConstraint_(uniqueConstraint); - } - } - - while (resourceUniqueConstraints.hasNext()) { - addUniqueConstraint(uniqueConstraintsSize(), buildUniqueConstraint(resourceUniqueConstraints.next())); - } - } - - protected JavaUniqueConstraint buildUniqueConstraint(UniqueConstraintAnnotation uniqueConstraintAnnotation) { - JavaUniqueConstraint uniqueConstraint = getJpaFactory().buildJavaUniqueConstraint(this, this); - uniqueConstraint.initialize(uniqueConstraintAnnotation); - return uniqueConstraint; - } - - - //******************* UniqueConstraint.Owner implementation ****************** - - public Iterator<String> candidateUniqueConstraintColumnNames() { - org.eclipse.jpt.db.Table dbTable = getDbTable(); - if (dbTable != null) { - return dbTable.columnNames(); - } - return EmptyIterator.instance(); - } - - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - TextRange textRange = getTableResource().getTextRange(astRoot); - return (textRange != null) ? textRange : this.getParent().getValidationTextRange(astRoot); - } - - public org.eclipse.jpt.db.Table getDbTable() { - Schema schema = this.getDbSchema(); - return (schema == null) ? null : schema.tableNamed(this.getName()); - } - - public Schema getDbSchema() { - return this.getDatabase().schemaNamed(this.getSchema()); - } - - public boolean hasResolvedSchema() { - return this.getDbSchema() != null; - } - - public boolean isResolved() { - return this.getDbTable() != null; - } - - @Override - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - for (JavaUniqueConstraint constraint : CollectionTools.iterable(this.uniqueConstraints())) { - result = constraint.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - } - return null; - } - - /** - * called if the database is connected - * name, schema, catalog - */ - @Override - public Iterator<String> connectedJavaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.connectedJavaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - if (this.nameTouches(pos, astRoot)) { - return this.quotedCandidateNames(filter); - } - if (this.schemaTouches(pos, astRoot)) { - return this.quotedCandidateSchemas(filter); - } - if (this.catalogTouches(pos, astRoot)) { - return this.quotedCandidateCatalogs(filter); - } - return null; - } - - private Iterator<String> candidateNames() { - Schema dbSchema = this.getDbSchema(); - return (dbSchema != null) ? dbSchema.tableNames() : EmptyIterator.<String> instance(); - } - - private Iterator<String> candidateNames(Filter<String> filter) { - return new FilteringIterator<String, String>(this.candidateNames(), filter); - } - - private Iterator<String> quotedCandidateNames(Filter<String> filter) { - return StringTools.quote(this.candidateNames(filter)); - } - - private Iterator<String> candidateSchemas() { - return this.getDatabase().schemaNames(); - } - - private Iterator<String> candidateSchemas(Filter<String> filter) { - return new FilteringIterator<String, String>(this.candidateSchemas(), filter); - } - - private Iterator<String> quotedCandidateSchemas(Filter<String> filter) { - return StringTools.quote(this.candidateSchemas(filter)); - } - - private Iterator<String> candidateCatalogs() { - return this.getDatabase().catalogNames(); - } - - private Iterator<String> candidateCatalogs(Filter<String> filter) { - return new FilteringIterator<String, String>(this.candidateCatalogs(), filter); - } - - private Iterator<String> quotedCandidateCatalogs(Filter<String> filter) { - return StringTools.quote(this.candidateCatalogs(filter)); - } - - public String getQualifiedName() { - return NameTools.buildQualifiedDatabaseObjectName(this.getCatalog(), this.getSchema(), this.getName()); - } - - @Override - public void toString(StringBuilder sb) { - super.toString(sb); - sb.append(getQualifiedName()); - } - - @Override - public String displayString() { - return getQualifiedName(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaTypeMapping.java deleted file mode 100644 index 5ae078e889..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaTypeMapping.java +++ /dev/null @@ -1,129 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import java.util.Iterator; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.PersistentAttribute; -import org.eclipse.jpt.core.context.Table; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.context.java.JavaPersistentType; -import org.eclipse.jpt.core.context.java.JavaTypeMapping; -import org.eclipse.jpt.core.resource.java.JavaResourceNode; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Schema; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; - - -public abstract class AbstractJavaTypeMapping extends AbstractJavaJpaContextNode - implements JavaTypeMapping -{ - protected JavaResourcePersistentType javaResourcePersistentType; - - - protected AbstractJavaTypeMapping(JavaPersistentType parent) { - super(parent); - } - - protected JavaResourceNode getMappingResource() { - return this.javaResourcePersistentType.getMappingAnnotation(getAnnotationName()); - } - - //***************** ITypeMapping implementation ***************** - - public JavaPersistentType getPersistentType() { - return (JavaPersistentType) getParent(); - } - - public String getTableName() { - return null; - } - - public org.eclipse.jpt.db.Table getPrimaryDbTable() { - return null; - } - - public org.eclipse.jpt.db.Table getDbTable(String tableName) { - return null; - } - - public Schema getDbSchema() { - return null; - } - - public boolean attributeMappingKeyAllowed(String attributeMappingKey) { - return true; - } - - public Iterator<Table> associatedTables() { - return EmptyIterator.instance(); - } - - public Iterator<String> associatedTableNamesIncludingInherited() { - return EmptyIterator.instance(); - } - - public Iterator<Table> associatedTablesIncludingInherited() { - return EmptyIterator.instance(); - } - - public Iterator<JavaPersistentAttribute> overridableAttributes() { - return EmptyIterator.instance(); - } - - public Iterator<PersistentAttribute> allOverridableAttributes() { - return EmptyIterator.instance(); - } - - public Iterator<String> overridableAttributeNames() { - return EmptyIterator.instance(); - } - - public Iterator<String> allOverridableAttributeNames() { - return EmptyIterator.instance(); - } - - public Iterator<JavaPersistentAttribute> overridableAssociations() { - return EmptyIterator.instance(); - } - - public Iterator<String> overridableAssociationNames() { - return EmptyIterator.instance(); - } - - public Iterator<PersistentAttribute> allOverridableAssociations() { - return EmptyIterator.instance(); - } - - public Iterator<String> allOverridableAssociationNames() { - return EmptyIterator.instance(); - } - - public boolean tableNameIsInvalid(String tableName) { - return false; - } - - //******************** updatating ********************* - public void initializeFromResource(JavaResourcePersistentType javaResourcePersistentType) { - this.javaResourcePersistentType = javaResourcePersistentType; - } - - public void update(JavaResourcePersistentType javaResourcePersistentType) { - this.javaResourcePersistentType = javaResourcePersistentType; - } - - //******************** validation ********************* - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - TextRange textRange = this.getMappingResource().getTextRange(astRoot); - return (textRange != null) ? textRange : this.getPersistentType().getValidationTextRange(astRoot); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaAssociationOverride.java deleted file mode 100644 index 3e7299264b..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaAssociationOverride.java +++ /dev/null @@ -1,346 +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.java; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.BaseJoinColumn; -import org.eclipse.jpt.core.context.AssociationOverride; -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.java.JavaAssociationOverride; -import org.eclipse.jpt.core.context.java.JavaJoinColumn; -import org.eclipse.jpt.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.java.AssociationOverrideAnnotation; -import org.eclipse.jpt.core.resource.java.JoinColumnAnnotation; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Table; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - -public class GenericJavaAssociationOverride extends AbstractJavaOverride - implements JavaAssociationOverride -{ - - protected final List<JavaJoinColumn> specifiedJoinColumns; - - protected final List<JavaJoinColumn> defaultJoinColumns; - - - public GenericJavaAssociationOverride(JavaJpaContextNode parent, AssociationOverride.Owner owner) { - super(parent, owner); - this.specifiedJoinColumns = new ArrayList<JavaJoinColumn>(); - this.defaultJoinColumns = new ArrayList<JavaJoinColumn>(); - } - - @Override - public JavaAssociationOverride setVirtual(boolean virtual) { - return (JavaAssociationOverride) super.setVirtual(virtual); - } - - @Override - protected AssociationOverrideAnnotation getOverrideResource() { - return (AssociationOverrideAnnotation) super.getOverrideResource(); - } - - @Override - public AssociationOverride.Owner getOwner() { - return (AssociationOverride.Owner) super.getOwner(); - } - - public ListIterator<JavaJoinColumn> joinColumns() { - return this.specifiedJoinColumns.isEmpty() ? this.defaultJoinColumns() : this.specifiedJoinColumns(); - } - - public int joinColumnsSize() { - return this.specifiedJoinColumns.isEmpty() ? this.defaultJoinColumnsSize() : this.specifiedJoinColumnsSize(); - } - - public ListIterator<JavaJoinColumn> defaultJoinColumns() { - return new CloneListIterator<JavaJoinColumn>(this.defaultJoinColumns); - } - - public int defaultJoinColumnsSize() { - return this.defaultJoinColumns.size(); - } - - public ListIterator<JavaJoinColumn> specifiedJoinColumns() { - return new CloneListIterator<JavaJoinColumn>(this.specifiedJoinColumns); - } - - public int specifiedJoinColumnsSize() { - return this.specifiedJoinColumns.size(); - } - - public JavaJoinColumn addSpecifiedJoinColumn(int index) { - JavaJoinColumn joinColumn = getJpaFactory().buildJavaJoinColumn(this, createJoinColumnOwner()); - this.specifiedJoinColumns.add(index, joinColumn); - JoinColumnAnnotation joinColumnResource = getOverrideResource().addJoinColumn(index); - joinColumn.initializeFromResource(joinColumnResource); - this.fireItemAdded(AssociationOverride.SPECIFIED_JOIN_COLUMNS_LIST, index, joinColumn); - return joinColumn; - } - - protected JavaJoinColumn.Owner createJoinColumnOwner() { - return new JoinColumnOwner(); - } - - protected void addSpecifiedJoinColumn(int index, JavaJoinColumn joinColumn) { - addItemToList(index, joinColumn, this.specifiedJoinColumns, AssociationOverride.SPECIFIED_JOIN_COLUMNS_LIST); - } - - public void removeSpecifiedJoinColumn(int index) { - JavaJoinColumn removedJoinColumn = this.specifiedJoinColumns.remove(index); - getOverrideResource().removeJoinColumn(index); - fireItemRemoved(Entity.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST, index, removedJoinColumn); - } - - protected void removeSpecifiedJoinColumn(JavaJoinColumn joinColumn) { - removeItemFromList(joinColumn, this.specifiedJoinColumns, AssociationOverride.SPECIFIED_JOIN_COLUMNS_LIST); - } - - public void moveSpecifiedJoinColumn(int targetIndex, int sourceIndex) { - getOverrideResource().moveJoinColumn(targetIndex, sourceIndex); - moveItemInList(targetIndex, sourceIndex, this.specifiedJoinColumns, AssociationOverride.SPECIFIED_JOIN_COLUMNS_LIST); - } - - public boolean containsSpecifiedJoinColumns() { - return !this.specifiedJoinColumns.isEmpty(); - } - - - @Override - protected Iterator<String> candidateNames() { - return this.getOwner().getTypeMapping().allOverridableAssociationNames(); - } - - @Override - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - for (JavaJoinColumn column : CollectionTools.iterable(this.joinColumns())) { - result = column.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - } - return null; - } - - public void initializeFromResource(AssociationOverrideAnnotation associationOverride) { - super.initializeFromResource(associationOverride); - this.name = associationOverride.getName(); - initializeSpecifiedJoinColumns(associationOverride); - } - - protected void initializeSpecifiedJoinColumns(AssociationOverrideAnnotation associationOverride) { - ListIterator<JoinColumnAnnotation> annotations = associationOverride.joinColumns(); - - while(annotations.hasNext()) { - this.specifiedJoinColumns.add(createJoinColumn(annotations.next())); - } - } - - public void update(AssociationOverrideAnnotation associationOverride) { - super.update(associationOverride); - updateSpecifiedJoinColumns(associationOverride); - } - - protected void updateSpecifiedJoinColumns(AssociationOverrideAnnotation associationOverride) { - ListIterator<JavaJoinColumn> joinColumns = specifiedJoinColumns(); - ListIterator<JoinColumnAnnotation> resourceJoinColumns = associationOverride.joinColumns(); - - while (joinColumns.hasNext()) { - JavaJoinColumn joinColumn = joinColumns.next(); - if (resourceJoinColumns.hasNext()) { - joinColumn.update(resourceJoinColumns.next()); - } - else { - removeSpecifiedJoinColumn(joinColumn); - } - } - - while (resourceJoinColumns.hasNext()) { - addSpecifiedJoinColumn(specifiedJoinColumnsSize(), createJoinColumn(resourceJoinColumns.next())); - } - } - - - protected JavaJoinColumn createJoinColumn(JoinColumnAnnotation joinColumnResource) { - JavaJoinColumn joinColumn = getJpaFactory().buildJavaJoinColumn(this, createJoinColumnOwner()); - joinColumn.initializeFromResource(joinColumnResource); - return joinColumn; - } - - - //******************** validation ******************** - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - - addJoinColumnMessages(messages, astRoot); - } - - protected void addJoinColumnMessages(List<IMessage> messages, CompilationUnit astRoot) { - for (JavaJoinColumn joinColumn : CollectionTools.iterable(joinColumns())) { - String table = joinColumn.getTable(); - boolean doContinue = connectionProfileIsActive(); - - if (doContinue && getOwner().getTypeMapping().tableNameIsInvalid(table)) { - if (isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_UNRESOLVED_TABLE, - new String[] {getName(), table, joinColumn.getName()}, - joinColumn, - joinColumn.getTableTextRange(astRoot)) - ); - } - else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_COLUMN_UNRESOLVED_TABLE, - new String[] {table, joinColumn.getName()}, - joinColumn, - joinColumn.getTableTextRange(astRoot)) - ); - } - doContinue = false; - } - - if (doContinue && ! joinColumn.isResolved()) { - if (isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_UNRESOLVED_NAME, - new String[] {getName(), joinColumn.getName()}, - joinColumn, - joinColumn.getNameTextRange(astRoot)) - ); - } - else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_COLUMN_UNRESOLVED_NAME, - new String[] {joinColumn.getName()}, - joinColumn, - joinColumn.getNameTextRange(astRoot)) - ); - } - } - - if (doContinue && ! joinColumn.isReferencedColumnResolved()) { - if (isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME, - new String[] {getName(), joinColumn.getReferencedColumnName(), joinColumn.getName()}, - joinColumn, - joinColumn.getReferencedColumnNameTextRange(astRoot)) - ); - } - else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME, - new String[] {joinColumn.getReferencedColumnName(), joinColumn.getName()}, - joinColumn, - joinColumn.getReferencedColumnNameTextRange(astRoot)) - ); - } - } - } - } - public class JoinColumnOwner implements JavaJoinColumn.Owner - { - - public JoinColumnOwner() { - super(); - } - - /** - * by default, the join column is in the type mapping's primary table - */ - public String getDefaultTableName() { - return GenericJavaAssociationOverride.this.owner.getTypeMapping().getTableName(); - } - - public String getDefaultColumnName() { - return null; - } - - public Entity getTargetEntity() { - RelationshipMapping relationshipMapping = getRelationshipMapping(); - return relationshipMapping == null ? null : relationshipMapping.getResolvedTargetEntity(); - } - - public String getAttributeName() { - return GenericJavaAssociationOverride.this.getName(); - } - - public RelationshipMapping getRelationshipMapping() { - return GenericJavaAssociationOverride.this.getOwner().getRelationshipMapping(GenericJavaAssociationOverride.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 TextRange getValidationTextRange(CompilationUnit astRoot) { - // TODO Auto-generated method stub - return null; - } - - public TypeMapping getTypeMapping() { - return GenericJavaAssociationOverride.this.owner.getTypeMapping(); - } - - public Table getDbTable(String tableName) { - return getTypeMapping().getDbTable(tableName); - } - - public Table getDbReferencedColumnTable() { - Entity targetEntity = getTargetEntity(); - return (targetEntity == null) ? null : targetEntity.getPrimaryDbTable(); - } - - public boolean isVirtual(BaseJoinColumn joinColumn) { - return GenericJavaAssociationOverride.this.defaultJoinColumns.contains(joinColumn); - } - - public int joinColumnsSize() { - return GenericJavaAssociationOverride.this.joinColumnsSize(); - } - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaAttributeOverride.java deleted file mode 100644 index ac9fc986da..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaAttributeOverride.java +++ /dev/null @@ -1,192 +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.java; - -import java.util.Iterator; -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.AttributeOverride; -import org.eclipse.jpt.core.context.ColumnMapping; -import org.eclipse.jpt.core.context.TypeMapping; -import org.eclipse.jpt.core.context.java.JavaAttributeOverride; -import org.eclipse.jpt.core.context.java.JavaColumn; -import org.eclipse.jpt.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.java.AttributeOverrideAnnotation; -import org.eclipse.jpt.core.resource.java.ColumnAnnotation; -import org.eclipse.jpt.db.Table; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - - -public class GenericJavaAttributeOverride extends AbstractJavaOverride - implements JavaAttributeOverride -{ - - protected final JavaColumn column; - - - public GenericJavaAttributeOverride(JavaJpaContextNode parent, AttributeOverride.Owner owner) { - super(parent, owner); - this.column = getJpaFactory().buildJavaColumn(this, this); - } - - @Override - public JavaAttributeOverride setVirtual(boolean virtual) { - return (JavaAttributeOverride) super.setVirtual(virtual); - } - - @Override - protected AttributeOverrideAnnotation getOverrideResource() { - return (AttributeOverrideAnnotation) super.getOverrideResource(); - } - - @Override - public AttributeOverride.Owner getOwner() { - return (AttributeOverride.Owner) super.getOwner(); - } - - public ColumnAnnotation getColumnResource() { - return this.getOverrideResource().getNonNullColumn(); - } - - 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().getTableName(); - } - - protected ColumnMapping getColumnMapping() { - return getOwner().getColumnMapping(getName()); - } - - //************* IColumn.Owner implementation ************** - public TypeMapping getTypeMapping() { - return this.getOwner().getTypeMapping(); - } - - public Table getDbTable(String tableName) { - return this.getTypeMapping().getDbTable(tableName); - } - - //************* IAttributeOverride implementation ************** - - public JavaColumn getColumn() { - return this.column; - } - - //************* JavaOverride implementation ************** - - @Override - protected Iterator<String> candidateNames() { - return this.getOwner().getTypeMapping().allOverridableAttributeNames(); - } - - //************* java resource model -> java context model ************** - public void initializeFromResource(AttributeOverrideAnnotation attributeOverrideResource) { - super.initializeFromResource(attributeOverrideResource); - this.column.initializeFromResource(this.getColumnResource()); - } - - public void update(AttributeOverrideAnnotation attributeOverrideResource) { - super.update(attributeOverrideResource); - this.column.update(this.getColumnResource()); - } - - @Override - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - result = this.getColumn().javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - return null; - } - - - //******************** validation ********************** - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - - addColumnMessages(messages, astRoot); - } - - protected void addColumnMessages(List<IMessage> messages, CompilationUnit astRoot) { - String table = getColumn().getTable(); - boolean doContinue = connectionProfileIsActive(); - - if (doContinue && getTypeMapping().tableNameIsInvalid(table)) { - if (isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_TABLE, - new String[] {getName(), table, getColumn().getName()}, - getColumn(), - getColumn().getTableTextRange(astRoot)) - ); - } - else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.COLUMN_UNRESOLVED_TABLE, - new String[] {table, getColumn().getName()}, - getColumn(), - getColumn().getTableTextRange(astRoot)) - ); - } - doContinue = false; - } - - if (doContinue && ! getColumn().isResolved()) { - if (isVirtual()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_NAME, - new String[] {getName(), getColumn().getName()}, - getColumn(), - getColumn().getNameTextRange(astRoot)) - ); - } - else { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.COLUMN_UNRESOLVED_NAME, - new String[] {getColumn().getName()}, - getColumn(), - getColumn().getNameTextRange(astRoot)) - ); - } - } - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaBasicMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaBasicMapping.java deleted file mode 100644 index 0c90960e2b..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaBasicMapping.java +++ /dev/null @@ -1,344 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import java.util.Iterator; -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.BasicMapping; -import org.eclipse.jpt.core.context.ColumnMapping; -import org.eclipse.jpt.core.context.EnumType; -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.TemporalType; -import org.eclipse.jpt.core.context.java.JavaBasicMapping; -import org.eclipse.jpt.core.context.java.JavaColumn; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.java.BasicAnnotation; -import org.eclipse.jpt.core.resource.java.ColumnAnnotation; -import org.eclipse.jpt.core.resource.java.EnumeratedAnnotation; -import org.eclipse.jpt.core.resource.java.JPA; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.core.resource.java.LobAnnotation; -import org.eclipse.jpt.core.resource.java.TemporalAnnotation; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - - -public class GenericJavaBasicMapping extends AbstractJavaAttributeMapping<BasicAnnotation> implements JavaBasicMapping -{ - protected FetchType specifiedFetch; - - protected Boolean specifiedOptional; - - protected EnumType specifiedEnumerated; - - protected final JavaColumn column; - - protected boolean lob; - - protected TemporalType temporal; - - public GenericJavaBasicMapping(JavaPersistentAttribute parent) { - super(parent); - this.column = createJavaColumn(); - } - - protected JavaColumn createJavaColumn() { - return getJpaFactory().buildJavaColumn(this, this); - } - - @Override - public void initializeFromResource(JavaResourcePersistentAttribute resourcePersistentAttribute) { - super.initializeFromResource(resourcePersistentAttribute); - this.column.initializeFromResource(this.getColumnResource()); - this.specifiedEnumerated = this.specifiedEnumerated(this.getEnumeratedResource()); - this.lob = this.lob(resourcePersistentAttribute); - this.temporal = this.temporal(this.getTemporalResource()); - } - - @Override - protected void initialize(BasicAnnotation basicResource) { - this.specifiedFetch = this.specifiedFetchType(basicResource); - this.specifiedOptional = this.specifiedOptional(basicResource); - } - - protected EnumeratedAnnotation getEnumeratedResource() { - return (EnumeratedAnnotation) getResourcePersistentAttribute().getNonNullAnnotation(EnumeratedAnnotation.ANNOTATION_NAME); - } - - protected TemporalAnnotation getTemporalResource() { - return (TemporalAnnotation) getResourcePersistentAttribute().getNonNullAnnotation(TemporalAnnotation.ANNOTATION_NAME); - } - - public ColumnAnnotation getColumnResource() { - return (ColumnAnnotation) getResourcePersistentAttribute().getNonNullAnnotation(ColumnAnnotation.ANNOTATION_NAME); - } - - //************** IJavaAttributeMapping implementation *************** - public String getKey() { - return MappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return BasicAnnotation.ANNOTATION_NAME; - } - - public Iterator<String> correspondingAnnotationNames() { - return new ArrayIterator<String>( - JPA.COLUMN, - JPA.LOB, - JPA.TEMPORAL, - JPA.ENUMERATED); - } - - public String getDefaultColumnName() { - return getAttributeName(); - } - - public String getDefaultTableName() { - return getTypeMapping().getTableName(); - } - - //************** IBasicMapping implementation *************** - - public JavaColumn getColumn() { - return this.column; - } - - 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.getMappingResource().setFetch(FetchType.toJavaResourceModel(newSpecifiedFetch)); - firePropertyChanged(Fetchable.SPECIFIED_FETCH_PROPERTY, oldFetch, newSpecifiedFetch); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - protected void setSpecifiedFetch_(FetchType newSpecifiedFetch) { - FetchType oldFetch = this.specifiedFetch; - this.specifiedFetch = newSpecifiedFetch; - firePropertyChanged(Fetchable.SPECIFIED_FETCH_PROPERTY, oldFetch, newSpecifiedFetch); - } - - public Boolean getOptional() { - return (this.getSpecifiedOptional() == null) ? this.getDefaultOptional() : this.getSpecifiedOptional(); - } - - public Boolean getDefaultOptional() { - return Nullable.DEFAULT_OPTIONAL; - } - - public Boolean getSpecifiedOptional() { - return this.specifiedOptional; - } - - public void setSpecifiedOptional(Boolean newSpecifiedOptional) { - Boolean oldOptional = this.specifiedOptional; - this.specifiedOptional = newSpecifiedOptional; - this.getMappingResource().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 boolean isLob() { - return this.lob; - } - - public void setLob(boolean newLob) { - boolean oldLob = this.lob; - this.lob = newLob; - if (newLob) { - if (lobResource(getResourcePersistentAttribute()) == null) { - getResourcePersistentAttribute().addAnnotation(LobAnnotation.ANNOTATION_NAME); - } - } - else { - if (lobResource(getResourcePersistentAttribute()) != null) { - getResourcePersistentAttribute().removeAnnotation(LobAnnotation.ANNOTATION_NAME); - } - } - firePropertyChanged(BasicMapping.LOB_PROPERTY, oldLob, newLob); - } - - public TemporalType getTemporal() { - return this.temporal; - } - - public void setTemporal(TemporalType newTemporal) { - TemporalType oldTemporal = this.temporal; - this.temporal = newTemporal; - this.getTemporalResource().setValue(TemporalType.toJavaResourceModel(newTemporal)); - firePropertyChanged(ColumnMapping.TEMPORAL_PROPERTY, oldTemporal, newTemporal); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - protected void setTemporal_(TemporalType newTemporal) { - TemporalType oldTemporal = this.temporal; - this.temporal = newTemporal; - firePropertyChanged(ColumnMapping.TEMPORAL_PROPERTY, oldTemporal, newTemporal); - } - - public EnumType getEnumerated() { - return (this.getSpecifiedEnumerated() == null) ? this.getDefaultEnumerated() : this.getSpecifiedEnumerated(); - } - - public EnumType getDefaultEnumerated() { - return BasicMapping.DEFAULT_ENUMERATED; - } - - public EnumType getSpecifiedEnumerated() { - return this.specifiedEnumerated; - } - - public void setSpecifiedEnumerated(EnumType newSpecifiedEnumerated) { - EnumType oldEnumerated = this.specifiedEnumerated; - this.specifiedEnumerated = newSpecifiedEnumerated; - this.getEnumeratedResource().setValue(EnumType.toJavaResourceModel(newSpecifiedEnumerated)); - firePropertyChanged(BasicMapping.SPECIFIED_ENUMERATED_PROPERTY, oldEnumerated, newSpecifiedEnumerated); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - protected void setSpecifiedEnumerated_(EnumType newSpecifiedEnumerated) { - EnumType oldEnumerated = this.specifiedEnumerated; - this.specifiedEnumerated = newSpecifiedEnumerated; - firePropertyChanged(BasicMapping.SPECIFIED_ENUMERATED_PROPERTY, oldEnumerated, newSpecifiedEnumerated); - } - - @Override - public void update(JavaResourcePersistentAttribute resourcePersistentAttribute) { - super.update(resourcePersistentAttribute); - this.column.update(this.getColumnResource()); - this.setSpecifiedEnumerated_(this.specifiedEnumerated(this.getEnumeratedResource())); - this.setLob(this.lob(resourcePersistentAttribute)); - this.setTemporal_(this.temporal(this.getTemporalResource())); - } - - @Override - protected void update(BasicAnnotation basicResource) { - this.setSpecifiedFetch_(this.specifiedFetchType(basicResource)); - this.setSpecifiedOptional_(this.specifiedOptional(basicResource)); - } - - protected FetchType specifiedFetchType(BasicAnnotation basic) { - return FetchType.fromJavaResourceModel(basic.getFetch()); - } - - protected Boolean specifiedOptional(BasicAnnotation basic) { - return basic.getOptional(); - } - - protected EnumType specifiedEnumerated(EnumeratedAnnotation enumerated) { - return EnumType.fromJavaResourceModel(enumerated.getValue()); - } - - protected boolean lob(JavaResourcePersistentAttribute resourcePersistentAttribute) { - return lobResource(resourcePersistentAttribute) != null; - } - - protected LobAnnotation lobResource(JavaResourcePersistentAttribute resourcePersistentAttribute) { - return (LobAnnotation) resourcePersistentAttribute.getAnnotation(LobAnnotation.ANNOTATION_NAME); - } - - protected TemporalType temporal(TemporalAnnotation temporal) { - return TemporalType.fromJavaResourceModel(temporal.getValue()); - } - - - @Override - public boolean isOverridableAttributeMapping() { - return true; - } - - @Override - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - result = this.getColumn().javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - return null; - } - - // ************** Validation ************************************* - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages ,astRoot); - - addColumnMessages(messages, astRoot); - } - - protected void addColumnMessages(List<IMessage> messages, CompilationUnit astRoot) { - JavaColumn column = this.getColumn(); - String table = column.getTable(); - boolean doContinue = entityOwned() && column.connectionProfileIsActive(); - - if (doContinue && this.getTypeMapping().tableNameIsInvalid(table)) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.COLUMN_UNRESOLVED_TABLE, - new String[] {table, column.getName()}, - column, column.getTableTextRange(astRoot)) - ); - doContinue = false; - } - - if (doContinue && ! column.isResolved()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.COLUMN_UNRESOLVED_NAME, - new String[] {column.getName()}, - column, column.getNameTextRange(astRoot)) - ); - } - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaColumn.java deleted file mode 100644 index 031a7717bc..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaColumn.java +++ /dev/null @@ -1,154 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.Column; -import org.eclipse.jpt.core.context.java.JavaColumn; -import org.eclipse.jpt.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.core.resource.java.ColumnAnnotation; -import org.eclipse.jpt.core.utility.TextRange; - -public class GenericJavaColumn extends AbstractJavaBaseColumn<ColumnAnnotation> implements JavaColumn -{ - - protected Integer specifiedLength; - - protected Integer specifiedPrecision; - - protected Integer specifiedScale; - - public GenericJavaColumn(JavaJpaContextNode parent, JavaColumn.Owner owner) { - super(parent, owner); - } - - @Override - public void initializeFromResource(ColumnAnnotation column) { - super.initializeFromResource(column); - this.specifiedLength = this.specifiedLength(column); - this.specifiedPrecision = this.specifiedPrecision(column); - this.specifiedScale = this.specifiedScale(column); - } - - @Override - public JavaColumn.Owner getOwner() { - return (JavaColumn.Owner) super.getOwner(); - } - - @Override - protected ColumnAnnotation getColumnResource() { - return this.getOwner().getColumnResource(); - } - - public Integer getLength() { - return (this.getSpecifiedLength() == null) ? getDefaultLength() : this.getSpecifiedLength(); - } - - public Integer getDefaultLength() { - return Column.DEFAULT_LENGTH; - } - - public Integer getSpecifiedLength() { - return this.specifiedLength; - } - - public void setSpecifiedLength(Integer newSpecifiedLength) { - Integer oldSpecifiedLength = this.specifiedLength; - this.specifiedLength = newSpecifiedLength; - getColumnResource().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 Integer getPrecision() { - return (this.getSpecifiedPrecision() == null) ? getDefaultPrecision() : this.getSpecifiedPrecision(); - } - - public Integer getDefaultPrecision() { - return Column.DEFAULT_PRECISION; - } - - public Integer getSpecifiedPrecision() { - return this.specifiedPrecision; - } - - public void setSpecifiedPrecision(Integer newSpecifiedPrecision) { - Integer oldSpecifiedPrecision = this.specifiedPrecision; - this.specifiedPrecision = newSpecifiedPrecision; - getColumnResource().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 Integer getScale() { - return (this.getSpecifiedScale() == null) ? getDefaultScale() : this.getSpecifiedScale(); - } - - public Integer getDefaultScale() { - return Column.DEFAULT_SCALE; - } - - public Integer getSpecifiedScale() { - return this.specifiedScale; - } - - public void setSpecifiedScale(Integer newSpecifiedScale) { - Integer oldSpecifiedScale = this.specifiedScale; - this.specifiedScale = newSpecifiedScale; - getColumnResource().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 - public boolean tableIsAllowed() { - return true; - } - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - TextRange textRange = getColumnResource().getTextRange(astRoot); - return (textRange != null) ? textRange : this.getOwner().getValidationTextRange(astRoot); - } - - @Override - public void update(ColumnAnnotation column) { - super.update(column); - this.setSpecifiedLength_(this.specifiedLength(column)); - this.setSpecifiedPrecision_(this.specifiedPrecision(column)); - this.setSpecifiedScale_(this.specifiedScale(column)); - } - - protected Integer specifiedLength(ColumnAnnotation column) { - return column.getLength(); - } - - protected Integer specifiedPrecision(ColumnAnnotation column) { - return column.getPrecision(); - } - - protected Integer specifiedScale(ColumnAnnotation column) { - return column.getScale(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaDiscriminatorColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaDiscriminatorColumn.java deleted file mode 100644 index e983bd18f5..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaDiscriminatorColumn.java +++ /dev/null @@ -1,151 +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.java; - -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.DiscriminatorColumn; -import org.eclipse.jpt.core.context.DiscriminatorType; -import org.eclipse.jpt.core.context.java.JavaDiscriminatorColumn; -import org.eclipse.jpt.core.context.java.JavaEntity; -import org.eclipse.jpt.core.context.java.JavaNamedColumn; -import org.eclipse.jpt.core.resource.java.DiscriminatorColumnAnnotation; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentMember; -import org.eclipse.jpt.core.utility.TextRange; - -public class GenericJavaDiscriminatorColumn extends AbstractJavaNamedColumn<DiscriminatorColumnAnnotation> - implements JavaDiscriminatorColumn -{ - - protected DiscriminatorType specifiedDiscriminatorType; - - protected Integer specifiedLength; - - protected JavaResourcePersistentMember persistenceResource; - - public GenericJavaDiscriminatorColumn(JavaEntity parent, JavaNamedColumn.Owner owner) { - super(parent, owner); - } - - public void initializeFromResource(JavaResourcePersistentMember persistentResource) { - this.persistenceResource = persistentResource; - this.initializeFromResource(this.getColumnResource()); - } - - @Override - public void initializeFromResource(DiscriminatorColumnAnnotation column) { - super.initializeFromResource(column); - this.specifiedDiscriminatorType = this.discriminatorType(column); - this.specifiedLength = this.length(column); - } - - protected JavaEntity getJavaEntity() { - return (JavaEntity) super.getParent(); - } - - @Override - protected DiscriminatorColumnAnnotation getColumnResource() { - return (DiscriminatorColumnAnnotation) this.persistenceResource.getNonNullAnnotation(DiscriminatorColumnAnnotation.ANNOTATION_NAME); - } - - public DiscriminatorType getDiscriminatorType() { - return (this.getSpecifiedDiscriminatorType() == null) ? this.getDefaultDiscriminatorType() : this.getSpecifiedDiscriminatorType(); - } - - public DiscriminatorType getDefaultDiscriminatorType() { - return DiscriminatorColumn.DEFAULT_DISCRIMINATOR_TYPE; - } - - public DiscriminatorType getSpecifiedDiscriminatorType() { - return this.specifiedDiscriminatorType; - } - - public void setSpecifiedDiscriminatorType(DiscriminatorType newSpecifiedDiscriminatorType) { - DiscriminatorType oldDiscriminatorType = this.specifiedDiscriminatorType; - this.specifiedDiscriminatorType = newSpecifiedDiscriminatorType; - getColumnResource().setDiscriminatorType(DiscriminatorType.toJavaResourceModel(newSpecifiedDiscriminatorType)); - firePropertyChanged(DiscriminatorColumn.SPECIFIED_DISCRIMINATOR_TYPE_PROPERTY, oldDiscriminatorType, newSpecifiedDiscriminatorType); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - protected void setSpecifiedDiscriminatorType_(DiscriminatorType newSpecifiedDiscriminatorType) { - DiscriminatorType oldDiscriminatorType = this.specifiedDiscriminatorType; - this.specifiedDiscriminatorType = newSpecifiedDiscriminatorType; - firePropertyChanged(DiscriminatorColumn.SPECIFIED_DISCRIMINATOR_TYPE_PROPERTY, oldDiscriminatorType, newSpecifiedDiscriminatorType); - } - - public Integer getLength() { - return (this.getSpecifiedLength() == null) ? this.getDefaultLength() : this.getSpecifiedLength(); - } - - public Integer getDefaultLength() { - return DiscriminatorColumn.DEFAULT_LENGTH; - } - - public Integer getSpecifiedLength() { - return this.specifiedLength; - } - - public void setSpecifiedLength(Integer newSpecifiedLength) { - Integer oldSpecifiedLength = this.specifiedLength; - this.specifiedLength = newSpecifiedLength; - getColumnResource().setLength(newSpecifiedLength); - firePropertyChanged(DiscriminatorColumn.SPECIFIED_LENGTH_PROPERTY, oldSpecifiedLength, newSpecifiedLength); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - protected void setSpecifiedLength_(Integer newSpecifiedLength) { - Integer oldSpecifiedLength = this.specifiedLength; - this.specifiedLength = newSpecifiedLength; - firePropertyChanged(DiscriminatorColumn.SPECIFIED_LENGTH_PROPERTY, oldSpecifiedLength, newSpecifiedLength); - } - - @Override - protected String getTableName() { - return getJavaEntity().getTableName(); - } - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - TextRange textRange = getColumnResource().getTextRange(astRoot); - return (textRange != null) ? textRange : this.getOwner().getValidationTextRange(astRoot); - } - - - // ********** java annotations -> persistence model ********** - - public void update(JavaResourcePersistentMember persistentResource) { - this.persistenceResource = persistentResource; - this.update(this.getColumnResource()); - } - - @Override - public void update(DiscriminatorColumnAnnotation discriminatorColumn) { - super.update(discriminatorColumn); - this.setSpecifiedDiscriminatorType_(this.discriminatorType(discriminatorColumn)); - this.setSpecifiedLength_(this.length(discriminatorColumn)); - } - - protected DiscriminatorType discriminatorType(DiscriminatorColumnAnnotation discriminatorColumn) { - return DiscriminatorType.fromJavaResourceModel(discriminatorColumn.getDiscriminatorType()); - } - - protected Integer length(DiscriminatorColumnAnnotation discriminatorColumn) { - return discriminatorColumn.getLength(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaEmbeddable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaEmbeddable.java deleted file mode 100644 index 21d2bcab97..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaEmbeddable.java +++ /dev/null @@ -1,46 +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.java; - -import java.util.Iterator; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaEmbeddable; -import org.eclipse.jpt.core.context.java.JavaPersistentType; -import org.eclipse.jpt.core.resource.java.EmbeddableAnnotation; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; - - -public class GenericJavaEmbeddable extends AbstractJavaTypeMapping implements JavaEmbeddable -{ - public GenericJavaEmbeddable(JavaPersistentType parent) { - super(parent); - } - - public String getKey() { - return MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY; - } - - public String getAnnotationName() { - return EmbeddableAnnotation.ANNOTATION_NAME; - } - - public Iterator<String> correspondingAnnotationNames() { - return EmptyIterator.instance(); - } - - public boolean isMapped() { - return true; - } - - @Override - public boolean attributeMappingKeyAllowed(String attributeMappingKey) { - 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/java/GenericJavaEmbeddedIdMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaEmbeddedIdMapping.java deleted file mode 100644 index 4ae4b5648f..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaEmbeddedIdMapping.java +++ /dev/null @@ -1,40 +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.java; - -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaEmbeddedIdMapping; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.resource.java.EmbeddedIdAnnotation; - - -public class GenericJavaEmbeddedIdMapping extends AbstractJavaBaseEmbeddedMapping<EmbeddedIdAnnotation> - implements JavaEmbeddedIdMapping -{ - - public GenericJavaEmbeddedIdMapping(JavaPersistentAttribute parent) { - super(parent); - } - - //****************** IJavaAttributeMapping implemenation ******************* - - public String getKey() { - return MappingKeys.EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return EmbeddedIdAnnotation.ANNOTATION_NAME; - } - - @Override - public boolean isIdMapping() { - return true; - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaEmbeddedMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaEmbeddedMapping.java deleted file mode 100644 index b0fe9c987b..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaEmbeddedMapping.java +++ /dev/null @@ -1,33 +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.java; - -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaEmbeddedMapping; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.resource.java.EmbeddedAnnotation; - - -public class GenericJavaEmbeddedMapping extends AbstractJavaBaseEmbeddedMapping<EmbeddedAnnotation> implements JavaEmbeddedMapping -{ - public GenericJavaEmbeddedMapping(JavaPersistentAttribute parent) { - super(parent); - } - - //****************** IJavaAttributeMapping implemenation ******************* - - public String getKey() { - return MappingKeys.EMBEDDED_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return EmbeddedAnnotation.ANNOTATION_NAME; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaEntity.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaEntity.java deleted file mode 100644 index 9faaa496ef..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaEntity.java +++ /dev/null @@ -1,1963 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.MappingKeys; -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.IdClass; -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.QueryHolder; -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.JavaAssociationOverride; -import org.eclipse.jpt.core.context.java.JavaAttributeOverride; -import org.eclipse.jpt.core.context.java.JavaBaseJoinColumn; -import org.eclipse.jpt.core.context.java.JavaDiscriminatorColumn; -import org.eclipse.jpt.core.context.java.JavaEntity; -import org.eclipse.jpt.core.context.java.JavaGenerator; -import org.eclipse.jpt.core.context.java.JavaNamedColumn; -import org.eclipse.jpt.core.context.java.JavaNamedNativeQuery; -import org.eclipse.jpt.core.context.java.JavaNamedQuery; -import org.eclipse.jpt.core.context.java.JavaPersistentType; -import org.eclipse.jpt.core.context.java.JavaPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.context.java.JavaQuery; -import org.eclipse.jpt.core.context.java.JavaSecondaryTable; -import org.eclipse.jpt.core.context.java.JavaSequenceGenerator; -import org.eclipse.jpt.core.context.java.JavaTable; -import org.eclipse.jpt.core.context.java.JavaTableGenerator; -import org.eclipse.jpt.core.internal.resource.java.NullAssociationOverride; -import org.eclipse.jpt.core.internal.resource.java.NullPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.java.AssociationOverrideAnnotation; -import org.eclipse.jpt.core.resource.java.AssociationOverridesAnnotation; -import org.eclipse.jpt.core.resource.java.AttributeOverrideAnnotation; -import org.eclipse.jpt.core.resource.java.AttributeOverridesAnnotation; -import org.eclipse.jpt.core.resource.java.DiscriminatorValueAnnotation; -import org.eclipse.jpt.core.resource.java.EntityAnnotation; -import org.eclipse.jpt.core.resource.java.IdClassAnnotation; -import org.eclipse.jpt.core.resource.java.InheritanceAnnotation; -import org.eclipse.jpt.core.resource.java.JPA; -import org.eclipse.jpt.core.resource.java.JavaResourceNode; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; -import org.eclipse.jpt.core.resource.java.NamedNativeQueriesAnnotation; -import org.eclipse.jpt.core.resource.java.NamedNativeQueryAnnotation; -import org.eclipse.jpt.core.resource.java.NamedQueriesAnnotation; -import org.eclipse.jpt.core.resource.java.NamedQueryAnnotation; -import org.eclipse.jpt.core.resource.java.PrimaryKeyJoinColumnAnnotation; -import org.eclipse.jpt.core.resource.java.PrimaryKeyJoinColumns; -import org.eclipse.jpt.core.resource.java.SecondaryTableAnnotation; -import org.eclipse.jpt.core.resource.java.SecondaryTablesAnnotation; -import org.eclipse.jpt.core.resource.java.SequenceGeneratorAnnotation; -import org.eclipse.jpt.core.resource.java.TableGeneratorAnnotation; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Schema; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; -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.SingleElementIterator; -import org.eclipse.jpt.utility.internal.iterators.SingleElementListIterator; -import org.eclipse.jpt.utility.internal.iterators.TransformationIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - - -public class GenericJavaEntity extends AbstractJavaTypeMapping implements JavaEntity -{ - protected EntityAnnotation entityResource; - - protected String specifiedName; - - protected String defaultName; - - protected final JavaTable table; - - protected final List<JavaSecondaryTable> specifiedSecondaryTables; - - protected final List<JavaPrimaryKeyJoinColumn> specifiedPrimaryKeyJoinColumns; - - protected JavaPrimaryKeyJoinColumn defaultPrimaryKeyJoinColumn; - - protected InheritanceType specifiedInheritanceStrategy; - - protected InheritanceType defaultInheritanceStrategy; - - protected String defaultDiscriminatorValue; - - protected boolean discriminatorValueAllowed; - - protected String specifiedDiscriminatorValue; - - protected final JavaDiscriminatorColumn discriminatorColumn; - - protected JavaSequenceGenerator sequenceGenerator; - - protected JavaTableGenerator tableGenerator; - - protected final List<JavaAttributeOverride> specifiedAttributeOverrides; - - protected final List<JavaAttributeOverride> virtualAttributeOverrides; - - protected final List<JavaAssociationOverride> specifiedAssociationOverrides; - - protected final List<JavaAssociationOverride> virtualAssociationOverrides; - - protected final List<JavaNamedQuery> namedQueries; - - protected final List<JavaNamedNativeQuery> namedNativeQueries; - - protected String idClass; - - - public GenericJavaEntity(JavaPersistentType parent) { - super(parent); - this.table = getJpaFactory().buildJavaTable(this); - this.discriminatorColumn = buildJavaDiscriminatorColumn(); - this.specifiedSecondaryTables = new ArrayList<JavaSecondaryTable>(); - this.specifiedPrimaryKeyJoinColumns = new ArrayList<JavaPrimaryKeyJoinColumn>(); - this.specifiedAttributeOverrides = new ArrayList<JavaAttributeOverride>(); - this.virtualAttributeOverrides = new ArrayList<JavaAttributeOverride>(); - this.namedQueries = new ArrayList<JavaNamedQuery>(); - this.namedNativeQueries = new ArrayList<JavaNamedNativeQuery>(); - this.specifiedAssociationOverrides = new ArrayList<JavaAssociationOverride>(); - this.virtualAssociationOverrides = new ArrayList<JavaAssociationOverride>(); - } - - protected JavaBaseJoinColumn.Owner createPrimaryKeyJoinColumnOwner() { - return new PrimaryKeyJoinColumnOwner(); - } - - protected JavaDiscriminatorColumn buildJavaDiscriminatorColumn() { - return getJpaFactory().buildJavaDiscriminatorColumn(this, buildDiscriminatorColumnOwner()); - } - - protected JavaNamedColumn.Owner buildDiscriminatorColumnOwner() { - return new JavaNamedColumn.Owner(){ - public org.eclipse.jpt.db.Table getDbTable(String tableName) { - return GenericJavaEntity.this.getDbTable(tableName); - } - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - return GenericJavaEntity.this.getValidationTextRange(astRoot); - } - - public TypeMapping getTypeMapping() { - return GenericJavaEntity.this; - } - - public String getDefaultColumnName() { - return DiscriminatorColumn.DEFAULT_NAME; - } - }; - } - - @Override - public void initializeFromResource(JavaResourcePersistentType resourcePersistentType) { - super.initializeFromResource(resourcePersistentType); - this.entityResource = (EntityAnnotation) resourcePersistentType.getMappingAnnotation(EntityAnnotation.ANNOTATION_NAME); - - this.specifiedName = this.specifiedName(this.entityResource); - this.defaultName = this.defaultName(resourcePersistentType); - this.defaultInheritanceStrategy = this.defaultInheritanceStrategy(); - this.specifiedInheritanceStrategy = this.specifiedInheritanceStrategy(getInheritanceResource()); - this.specifiedDiscriminatorValue = this.getDiscriminatorValueResource().getValue(); - this.defaultDiscriminatorValue = this.javaDefaultDiscriminatorValue(); - this.discriminatorValueAllowed = this.discriminatorValueIsAllowed(resourcePersistentType); - this.discriminatorColumn.initializeFromResource(resourcePersistentType); - this.table.initializeFromResource(resourcePersistentType); - this.initializeSecondaryTables(resourcePersistentType); - this.initializeTableGenerator(resourcePersistentType); - this.initializeSequenceGenerator(resourcePersistentType); - this.initializePrimaryKeyJoinColumns(resourcePersistentType); - this.initializeDefaultPrimaryKeyJoinColumn(resourcePersistentType); - this.initializeSpecifiedAttributeOverrides(resourcePersistentType); - this.initializeVirtualAttributeOverrides(resourcePersistentType); - this.initializeSpecifiedAssociationOverrides(resourcePersistentType); - this.initializeDefaultAssociationOverrides(resourcePersistentType); - this.initializeNamedQueries(resourcePersistentType); - this.initializeNamedNativeQueries(resourcePersistentType); - this.initializeIdClass(resourcePersistentType); - this.updatePersistenceUnitGeneratorsAndQueries(); - } - - protected void initializeSecondaryTables(JavaResourcePersistentType resourcePersistentType) { - ListIterator<JavaResourceNode> annotations = resourcePersistentType.annotations(SecondaryTableAnnotation.ANNOTATION_NAME, SecondaryTablesAnnotation.ANNOTATION_NAME); - - while(annotations.hasNext()) { - this.specifiedSecondaryTables.add(buildSecondaryTable((SecondaryTableAnnotation) annotations.next())); - } - } - - protected void initializeTableGenerator(JavaResourcePersistentType resourcePersistentType) { - TableGeneratorAnnotation tableGeneratorResource = tableGenerator(resourcePersistentType); - if (tableGeneratorResource != null) { - this.tableGenerator = buildTableGenerator(tableGeneratorResource); - } - } - - protected void initializeSequenceGenerator(JavaResourcePersistentType resourcePersistentType) { - SequenceGeneratorAnnotation sequenceGeneratorResource = sequenceGenerator(resourcePersistentType); - if (sequenceGeneratorResource != null) { - this.sequenceGenerator = buildSequenceGenerator(sequenceGeneratorResource); - } - } - - protected void initializePrimaryKeyJoinColumns(JavaResourcePersistentType resourcePersistentType) { - ListIterator<JavaResourceNode> annotations = resourcePersistentType.annotations(PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME, PrimaryKeyJoinColumns.ANNOTATION_NAME); - - while(annotations.hasNext()) { - this.specifiedPrimaryKeyJoinColumns.add(buildPrimaryKeyJoinColumn((PrimaryKeyJoinColumnAnnotation) annotations.next())); - } - } - - protected boolean shouldBuildDefaultPrimaryKeyJoinColumn() { - return !containsSpecifiedPrimaryKeyJoinColumns(); - } - - protected void initializeDefaultPrimaryKeyJoinColumn(JavaResourcePersistentType persistentTypeResource) { - if (!shouldBuildDefaultPrimaryKeyJoinColumn()) { - return; - } - this.defaultPrimaryKeyJoinColumn = buildPrimaryKeyJoinColumn(new NullPrimaryKeyJoinColumn(persistentTypeResource)); - } - - protected void initializeSpecifiedAttributeOverrides(JavaResourcePersistentType persistentTypeResource) { - ListIterator<JavaResourceNode> annotations = persistentTypeResource.annotations(AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME); - - while(annotations.hasNext()) { - this.specifiedAttributeOverrides.add(buildAttributeOverride((AttributeOverrideAnnotation) annotations.next())); - } - } - - protected void initializeVirtualAttributeOverrides(JavaResourcePersistentType persistentTypeResource) { - for (PersistentAttribute persistentAttribute : CollectionTools.iterable(allOverridableAttributes())) { - JavaAttributeOverride attributeOverride = getAttributeOverrideNamed(persistentAttribute.getName()); - if (attributeOverride == null) { - this.virtualAttributeOverrides.add(buildVirtualAttributeOverride(persistentTypeResource, persistentAttribute)); - } - } - } - - protected void initializeSpecifiedAssociationOverrides(JavaResourcePersistentType resourcePersistentType) { - ListIterator<JavaResourceNode> annotations = resourcePersistentType.annotations(AssociationOverrideAnnotation.ANNOTATION_NAME, AssociationOverridesAnnotation.ANNOTATION_NAME); - - while(annotations.hasNext()) { - this.specifiedAssociationOverrides.add(buildAssociationOverride((AssociationOverrideAnnotation) annotations.next())); - } - } - - protected void initializeDefaultAssociationOverrides(JavaResourcePersistentType resourcePersistentType) { - for (Iterator<String> i = allOverridableAssociationNames(); i.hasNext(); ) { - String associationName = i.next(); - JavaAssociationOverride associationOverride = getAssociationOverrideNamed(associationName); - if (associationOverride == null) { - this.virtualAssociationOverrides.add(buildAssociationOverride(new NullAssociationOverride(resourcePersistentType, associationName))); - } - } - } - - protected void initializeNamedQueries(JavaResourcePersistentType resourcePersistentType) { - ListIterator<JavaResourceNode> annotations = resourcePersistentType.annotations(NamedQueryAnnotation.ANNOTATION_NAME, NamedQueriesAnnotation.ANNOTATION_NAME); - - while(annotations.hasNext()) { - this.namedQueries.add(buildNamedQuery((NamedQueryAnnotation) annotations.next())); - } - } - - protected void initializeNamedNativeQueries(JavaResourcePersistentType resourcePersistentType) { - ListIterator<JavaResourceNode> annotations = resourcePersistentType.annotations(NamedNativeQueryAnnotation.ANNOTATION_NAME, NamedNativeQueriesAnnotation.ANNOTATION_NAME); - - while(annotations.hasNext()) { - this.namedNativeQueries.add(buildNamedNativeQuery((NamedNativeQueryAnnotation) annotations.next())); - } - } - - //query for the inheritance resource every time on setters. - //call one setter and the inheritanceResource could change. - //You could call more than one setter before this object has received any notification - //from the java resource model - protected InheritanceAnnotation getInheritanceResource() { - return (InheritanceAnnotation) this.javaResourcePersistentType.getNonNullAnnotation(InheritanceAnnotation.ANNOTATION_NAME); - } - - protected DiscriminatorValueAnnotation getDiscriminatorValueResource() { - return (DiscriminatorValueAnnotation) this.javaResourcePersistentType.getNonNullAnnotation(DiscriminatorValueAnnotation.ANNOTATION_NAME); - } - - protected void initializeIdClass(JavaResourcePersistentType typeResource) { - IdClassAnnotation idClassResource = (IdClassAnnotation) typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME); - if (idClassResource != null) { - this.idClass = idClassResource.getValue(); - } - } - - //****************** ITypeMapping implemenation ******************* - - public String getKey() { - return MappingKeys.ENTITY_TYPE_MAPPING_KEY; - } - - public boolean isMapped() { - return true; - } - - @Override - public String getTableName() { - return getTable().getName(); - } - - @Override - public org.eclipse.jpt.db.Table getPrimaryDbTable() { - return getTable().getDbTable(); - } - - @Override - public org.eclipse.jpt.db.Table getDbTable(String tableName) { - for (Iterator<Table> stream = this.associatedTablesIncludingInherited(); stream.hasNext();) { - org.eclipse.jpt.db.Table dbTable = stream.next().getDbTable(); - if (dbTable != null && dbTable.matchesShortJavaClassName(tableName)) { - return dbTable; - } - } - return null; - } - - @Override - public Schema getDbSchema() { - return getTable().getDbSchema(); - } - - - //****************** IJavaTypeMapping implemenation ******************* - - public String getAnnotationName() { - return EntityAnnotation.ANNOTATION_NAME; - } - - public Iterator<String> correspondingAnnotationNames() { - return new ArrayIterator<String>( - JPA.TABLE, - JPA.SECONDARY_TABLE, - JPA.SECONDARY_TABLES, - JPA.PRIMARY_KEY_JOIN_COLUMN, - JPA.PRIMARY_KEY_JOIN_COLUMNS, - JPA.ID_CLASS, - JPA.INHERITANCE, - JPA.DISCRIMINATOR_VALUE, - JPA.DISCRIMINATOR_COLUMN, - JPA.SEQUENCE_GENERATOR, - JPA.TABLE_GENERATOR, - JPA.NAMED_QUERY, - JPA.NAMED_QUERIES, - JPA.NAMED_NATIVE_QUERY, - JPA.NAMED_NATIVE_QUERIES, - JPA.SQL_RESULT_SET_MAPPING, - JPA.EXCLUDE_DEFAULT_LISTENERS, - JPA.EXCLUDE_SUPERCLASS_LISTENERS, - JPA.ENTITY_LISTENERS, - JPA.PRE_PERSIST, - JPA.POST_PERSIST, - JPA.PRE_REMOVE, - JPA.POST_REMOVE, - JPA.PRE_UPDATE, - JPA.POST_UPDATE, - JPA.POST_LOAD, - JPA.ATTRIBUTE_OVERRIDE, - JPA.ATTRIBUTE_OVERRIDES, - JPA.ASSOCIATION_OVERRIDE, - JPA.ASSOCIATION_OVERRIDES); - } - - //****************** IEntity implemenation ******************* - - public String getName() { - return (this.getSpecifiedName() == null) ? this.getDefaultName() : this.getSpecifiedName(); - } - - public String getSpecifiedName() { - return this.specifiedName; - } - - public void setSpecifiedName(String newSpecifiedName) { - String oldSpecifiedName = this.specifiedName; - this.specifiedName = newSpecifiedName; - this.entityResource.setName(newSpecifiedName); - firePropertyChanged(Entity.SPECIFIED_NAME_PROPERTY, oldSpecifiedName, newSpecifiedName); - } - - protected void setSpecifiedName_(String newSpecifiedName) { - String oldSpecifiedName = this.specifiedName; - this.specifiedName = newSpecifiedName; - firePropertyChanged(Entity.SPECIFIED_NAME_PROPERTY, oldSpecifiedName, newSpecifiedName); - } - - public String getDefaultName() { - return this.defaultName; - } - - protected/*private-protected*/ void setDefaultName(String newDefaultName) { - String oldDefaultName = this.defaultName; - this.defaultName = newDefaultName; - firePropertyChanged(Entity.DEFAULT_NAME_PROPERTY, oldDefaultName, newDefaultName); - } - - public JavaTable getTable() { - return this.table; - } - - public ListIterator<JavaSecondaryTable> specifiedSecondaryTables() { - return new CloneListIterator<JavaSecondaryTable>(this.specifiedSecondaryTables); - } - - public int specifiedSecondaryTablesSize() { - return this.specifiedSecondaryTables.size(); - } - - public JavaSecondaryTable addSpecifiedSecondaryTable(int index) { - JavaSecondaryTable secondaryTable = getJpaFactory().buildJavaSecondaryTable(this); - this.specifiedSecondaryTables.add(index, secondaryTable); - SecondaryTableAnnotation secondaryTableResource = (SecondaryTableAnnotation) this.javaResourcePersistentType.addAnnotation(index, SecondaryTableAnnotation.ANNOTATION_NAME, SecondaryTablesAnnotation.ANNOTATION_NAME); - secondaryTable.initializeFromResource(secondaryTableResource); - fireItemAdded(Entity.SPECIFIED_SECONDARY_TABLES_LIST, index, secondaryTable); - return secondaryTable; - } - - protected void addSpecifiedSecondaryTable(int index, JavaSecondaryTable secondaryTable) { - addItemToList(index, secondaryTable, this.specifiedSecondaryTables, Entity.SPECIFIED_SECONDARY_TABLES_LIST); - } - - public void removeSpecifiedSecondaryTable(SecondaryTable secondaryTable) { - this.removeSpecifiedSecondaryTable(this.specifiedSecondaryTables.indexOf(secondaryTable)); - } - - public void removeSpecifiedSecondaryTable(int index) { - JavaSecondaryTable removedSecondaryTable = this.specifiedSecondaryTables.remove(index); - this.javaResourcePersistentType.removeAnnotation(index, SecondaryTableAnnotation.ANNOTATION_NAME, SecondaryTablesAnnotation.ANNOTATION_NAME); - fireItemRemoved(Entity.SPECIFIED_SECONDARY_TABLES_LIST, index, removedSecondaryTable); - } - - protected void removeSpecifiedSecondaryTable_(JavaSecondaryTable secondaryTable) { - removeItemFromList(secondaryTable, this.specifiedSecondaryTables, Entity.SPECIFIED_SECONDARY_TABLES_LIST); - } - - public void moveSpecifiedSecondaryTable(int targetIndex, int sourceIndex) { - CollectionTools.move(this.specifiedSecondaryTables, targetIndex, sourceIndex); - this.javaResourcePersistentType.move(targetIndex, sourceIndex, SecondaryTablesAnnotation.ANNOTATION_NAME); - fireItemMoved(Entity.SPECIFIED_SECONDARY_TABLES_LIST, targetIndex, sourceIndex); - } - - public ListIterator<JavaSecondaryTable> secondaryTables() { - return specifiedSecondaryTables(); - } - - public int secondaryTablesSize() { - return specifiedSecondaryTablesSize(); - } - - 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; - getInheritanceResource().setStrategy(InheritanceType.toJavaResourceModel(newInheritanceType)); - firePropertyChanged(SPECIFIED_INHERITANCE_STRATEGY_PROPERTY, oldInheritanceType, newInheritanceType); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - protected void setSpecifiedInheritanceStrategy_(InheritanceType newInheritanceType) { - InheritanceType oldInheritanceType = this.specifiedInheritanceStrategy; - this.specifiedInheritanceStrategy = newInheritanceType; - firePropertyChanged(SPECIFIED_INHERITANCE_STRATEGY_PROPERTY, oldInheritanceType, newInheritanceType); - } - - public JavaDiscriminatorColumn getDiscriminatorColumn() { - return this.discriminatorColumn; - } - - 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; - getDiscriminatorValueResource().setValue(newSpecifiedDiscriminatorValue); - firePropertyChanged(SPECIFIED_DISCRIMINATOR_VALUE_PROPERTY, oldSpecifiedDiscriminatorValue, newSpecifiedDiscriminatorValue); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - protected void setSpecifiedDiscriminatorValue_(String newSpecifiedDiscriminatorValue) { - String oldSpecifiedDiscriminatorValue = this.specifiedDiscriminatorValue; - this.specifiedDiscriminatorValue = newSpecifiedDiscriminatorValue; - firePropertyChanged(SPECIFIED_DISCRIMINATOR_VALUE_PROPERTY, oldSpecifiedDiscriminatorValue, newSpecifiedDiscriminatorValue); - } - - public String getDiscriminatorValue() { - return (this.getSpecifiedDiscriminatorValue() == null) ? getDefaultDiscriminatorValue() : this.getSpecifiedDiscriminatorValue(); - } - - public boolean isDiscriminatorValueAllowed() { - return this.discriminatorValueAllowed; - } - - protected void setDiscriminatorValueAllowed(boolean newDiscriminatorValueAllowed) { - boolean oldDiscriminatorValueAllowed = this.discriminatorValueAllowed; - this.discriminatorValueAllowed = newDiscriminatorValueAllowed; - firePropertyChanged(Entity.DISCRIMINATOR_VALUE_ALLOWED_PROPERTY, oldDiscriminatorValueAllowed, newDiscriminatorValueAllowed); - } - - public JavaTableGenerator addTableGenerator() { - if (getTableGenerator() != null) { - throw new IllegalStateException("tableGenerator already exists"); - } - this.tableGenerator = getJpaFactory().buildJavaTableGenerator(this); - TableGeneratorAnnotation tableGeneratorResource = (TableGeneratorAnnotation) this.javaResourcePersistentType.addAnnotation(TableGeneratorAnnotation.ANNOTATION_NAME); - this.tableGenerator.initializeFromResource(tableGeneratorResource); - 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"); - } - JavaTableGenerator oldTableGenerator = this.tableGenerator; - this.tableGenerator = null; - this.javaResourcePersistentType.removeAnnotation(TableGeneratorAnnotation.ANNOTATION_NAME); - firePropertyChanged(TABLE_GENERATOR_PROPERTY, oldTableGenerator, null); - } - - public JavaTableGenerator getTableGenerator() { - return this.tableGenerator; - } - - protected void setTableGenerator(JavaTableGenerator newTableGenerator) { - JavaTableGenerator oldTableGenerator = this.tableGenerator; - this.tableGenerator = newTableGenerator; - firePropertyChanged(TABLE_GENERATOR_PROPERTY, oldTableGenerator, newTableGenerator); - } - - public JavaSequenceGenerator addSequenceGenerator() { - if (getSequenceGenerator() != null) { - throw new IllegalStateException("sequenceGenerator already exists"); - } - this.sequenceGenerator = getJpaFactory().buildJavaSequenceGenerator(this); - SequenceGeneratorAnnotation sequenceGeneratorResource = (SequenceGeneratorAnnotation) this.javaResourcePersistentType.addAnnotation(SequenceGeneratorAnnotation.ANNOTATION_NAME); - this.sequenceGenerator.initializeFromResource(sequenceGeneratorResource); - 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"); - } - JavaSequenceGenerator oldSequenceGenerator = this.sequenceGenerator; - this.sequenceGenerator = null; - this.javaResourcePersistentType.removeAnnotation(SequenceGeneratorAnnotation.ANNOTATION_NAME); - firePropertyChanged(SEQUENCE_GENERATOR_PROPERTY, oldSequenceGenerator,null); - } - - public JavaSequenceGenerator getSequenceGenerator() { - return this.sequenceGenerator; - } - - protected void setSequenceGenerator(JavaSequenceGenerator newSequenceGenerator) { - JavaSequenceGenerator oldSequenceGenerator = this.sequenceGenerator; - this.sequenceGenerator = newSequenceGenerator; - firePropertyChanged(SEQUENCE_GENERATOR_PROPERTY, oldSequenceGenerator, newSequenceGenerator); - } - - @SuppressWarnings("unchecked") - protected Iterator<JavaGenerator> generators() { - return new CompositeIterator<JavaGenerator>( - (getSequenceGenerator() == null) ? EmptyIterator.instance() : new SingleElementIterator(getSequenceGenerator()), - (getTableGenerator() == null) ? EmptyIterator.instance() : new SingleElementIterator(getTableGenerator())); - } - - public ListIterator<JavaPrimaryKeyJoinColumn> primaryKeyJoinColumns() { - return this.containsSpecifiedPrimaryKeyJoinColumns() ? this.specifiedPrimaryKeyJoinColumns() : this.defaultPrimaryKeyJoinColumns(); - } - - public int primaryKeyJoinColumnsSize() { - return this.containsSpecifiedPrimaryKeyJoinColumns() ? this.specifiedPrimaryKeyJoinColumnsSize() : this.defaultPrimaryKeyJoinColumnsSize(); - } - - public ListIterator<JavaPrimaryKeyJoinColumn> specifiedPrimaryKeyJoinColumns() { - return new CloneListIterator<JavaPrimaryKeyJoinColumn>(this.specifiedPrimaryKeyJoinColumns); - } - - public int specifiedPrimaryKeyJoinColumnsSize() { - return this.specifiedPrimaryKeyJoinColumns.size(); - } - - public boolean containsSpecifiedPrimaryKeyJoinColumns() { - return !this.specifiedPrimaryKeyJoinColumns.isEmpty(); - } - - public JavaPrimaryKeyJoinColumn getDefaultPrimaryKeyJoinColumn() { - return this.defaultPrimaryKeyJoinColumn; - } - - protected void setDefaultPrimaryKeyJoinColumn(JavaPrimaryKeyJoinColumn newPkJoinColumn) { - JavaPrimaryKeyJoinColumn oldPkJoinColumn = this.defaultPrimaryKeyJoinColumn; - this.defaultPrimaryKeyJoinColumn = newPkJoinColumn; - firePropertyChanged(Entity.DEFAULT_PRIMARY_KEY_JOIN_COLUMN, oldPkJoinColumn, newPkJoinColumn); - } - - protected ListIterator<JavaPrimaryKeyJoinColumn> defaultPrimaryKeyJoinColumns() { - if (this.defaultPrimaryKeyJoinColumn != null) { - return new SingleElementListIterator<JavaPrimaryKeyJoinColumn>(this.defaultPrimaryKeyJoinColumn); - } - return EmptyListIterator.instance(); - } - - protected int defaultPrimaryKeyJoinColumnsSize() { - return (this.defaultPrimaryKeyJoinColumn == null) ? 0 : 1; - } - - public JavaPrimaryKeyJoinColumn addSpecifiedPrimaryKeyJoinColumn(int index) { - JavaPrimaryKeyJoinColumn 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; - } - JavaPrimaryKeyJoinColumn primaryKeyJoinColumn = getJpaFactory().buildJavaPrimaryKeyJoinColumn(this, createPrimaryKeyJoinColumnOwner()); - this.specifiedPrimaryKeyJoinColumns.add(index, primaryKeyJoinColumn); - PrimaryKeyJoinColumnAnnotation pkJoinColumnResource = (PrimaryKeyJoinColumnAnnotation) this.javaResourcePersistentType.addAnnotation(index, PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME, PrimaryKeyJoinColumns.ANNOTATION_NAME); - primaryKeyJoinColumn.initializeFromResource(pkJoinColumnResource); - this.fireItemAdded(Entity.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST, index, primaryKeyJoinColumn); - if (oldDefaultPkJoinColumn != null) { - this.firePropertyChanged(Entity.DEFAULT_PRIMARY_KEY_JOIN_COLUMN, oldDefaultPkJoinColumn, null); - } - return primaryKeyJoinColumn; - } - - protected void addSpecifiedPrimaryKeyJoinColumn(int index, JavaPrimaryKeyJoinColumn primaryKeyJoinColumn) { - addItemToList(index, primaryKeyJoinColumn, this.specifiedPrimaryKeyJoinColumns, Entity.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - public void removeSpecifiedPrimaryKeyJoinColumn(PrimaryKeyJoinColumn primaryKeyJoinColumn) { - removeSpecifiedPrimaryKeyJoinColumn(this.specifiedPrimaryKeyJoinColumns.indexOf(primaryKeyJoinColumn)); - } - - public void removeSpecifiedPrimaryKeyJoinColumn(int index) { - JavaPrimaryKeyJoinColumn 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(new NullPrimaryKeyJoinColumn(this.javaResourcePersistentType)); - } - this.javaResourcePersistentType.removeAnnotation(index, PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME, PrimaryKeyJoinColumns.ANNOTATION_NAME); - fireItemRemoved(Entity.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_(JavaPrimaryKeyJoinColumn primaryKeyJoinColumn) { - removeItemFromList(primaryKeyJoinColumn, this.specifiedPrimaryKeyJoinColumns, Entity.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - public void moveSpecifiedPrimaryKeyJoinColumn(int targetIndex, int sourceIndex) { - this.javaResourcePersistentType.move(targetIndex, sourceIndex, PrimaryKeyJoinColumns.ANNOTATION_NAME); - moveItemInList(targetIndex, sourceIndex, this.specifiedPrimaryKeyJoinColumns, Entity.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - @SuppressWarnings("unchecked") - public ListIterator<JavaAttributeOverride> attributeOverrides() { - return new CompositeListIterator<JavaAttributeOverride>(specifiedAttributeOverrides(), virtualAttributeOverrides()); - } - - public int attributeOverridesSize() { - return this.specifiedAttributeOverridesSize() + this.virtualAttributeOverridesSize(); - } - - public ListIterator<JavaAttributeOverride> virtualAttributeOverrides() { - return new CloneListIterator<JavaAttributeOverride>(this.virtualAttributeOverrides); - } - - public int virtualAttributeOverridesSize() { - return this.virtualAttributeOverrides.size(); - } - - public ListIterator<JavaAttributeOverride> specifiedAttributeOverrides() { - return new CloneListIterator<JavaAttributeOverride>(this.specifiedAttributeOverrides); - } - - public int specifiedAttributeOverridesSize() { - return this.specifiedAttributeOverrides.size(); - } - - protected JavaAttributeOverride addSpecifiedAttributeOverride(int index) { - JavaAttributeOverride attributeOverride = getJpaFactory().buildJavaAttributeOverride(this, createAttributeOverrideOwner()); - this.specifiedAttributeOverrides.add(index, attributeOverride); - AttributeOverrideAnnotation attributeOverrideResource = (AttributeOverrideAnnotation) this.javaResourcePersistentType.addAnnotation(index, AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME); - attributeOverride.initializeFromResource(attributeOverrideResource); - this.fireItemAdded(Entity.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST, index, attributeOverride); - return attributeOverride; - } - - protected JavaAttributeOverride setAttributeOverrideVirtual(boolean virtual, JavaAttributeOverride attributeOverride) { - // Add a new attribute override - if (virtual) { - return setAttributeOverrideVirtual(attributeOverride); - } - return setAttributeOverrideSpecified(attributeOverride); - } - - protected JavaAttributeOverride setAttributeOverrideVirtual(JavaAttributeOverride 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 - JavaAttributeOverride virtualAttributeOverride = null; - if (attributeOverrideName != null) { - for (PersistentAttribute persistentAttribute : CollectionTools.iterable(allOverridableAttributes())) { - if (persistentAttribute.getName().equals(attributeOverrideName)) { - //store the virtualAttributeOverride so we can fire change notification later - virtualAttributeOverride = buildVirtualAttributeOverride(this.javaResourcePersistentType, persistentAttribute); - this.virtualAttributeOverrides.add(virtualAttributeOverride); - break; - } - } - } - - this.javaResourcePersistentType.removeAnnotation(index, AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME); - fireItemRemoved(Entity.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST, index, attributeOverride); - - if (virtualAttributeOverride != null) { - fireItemAdded(Entity.VIRTUAL_ATTRIBUTE_OVERRIDES_LIST, virtualAttributeOverridesSize() - 1, virtualAttributeOverride); - } - return virtualAttributeOverride; - } - - protected JavaAttributeOverride setAttributeOverrideSpecified(JavaAttributeOverride oldAttributeOverride) { - int index = specifiedAttributeOverridesSize(); - JavaAttributeOverride newAttributeOverride = getJpaFactory().buildJavaAttributeOverride(this, createAttributeOverrideOwner()); - this.specifiedAttributeOverrides.add(index, newAttributeOverride); - - AttributeOverrideAnnotation attributeOverrideResource = (AttributeOverrideAnnotation) this.javaResourcePersistentType.addAnnotation(index, AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME); - newAttributeOverride.initializeFromResource(attributeOverrideResource); - - 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; - } - - protected AttributeOverride.Owner createAttributeOverrideOwner() { - return new AttributeOverrideOwner(); - } - - protected void addSpecifiedAttributeOverride(int index, JavaAttributeOverride attributeOverride) { - addItemToList(index, attributeOverride, this.specifiedAttributeOverrides, Entity.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST); - } - - protected void removeSpecifiedAttributeOverride_(JavaAttributeOverride attributeOverride) { - removeItemFromList(attributeOverride, this.specifiedAttributeOverrides, Entity.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST); - } - - public void moveSpecifiedAttributeOverride(int targetIndex, int sourceIndex) { - CollectionTools.move(this.specifiedAttributeOverrides, targetIndex, sourceIndex); - this.javaResourcePersistentType.move(targetIndex, sourceIndex, AttributeOverridesAnnotation.ANNOTATION_NAME); - fireItemMoved(Entity.SPECIFIED_ATTRIBUTE_OVERRIDES_LIST, targetIndex, sourceIndex); - } - - protected void addVirtualAttributeOverride(JavaAttributeOverride attributeOverride) { - addItemToList(attributeOverride, this.virtualAttributeOverrides, Entity.VIRTUAL_ATTRIBUTE_OVERRIDES_LIST); - } - - protected void removeVirtualAttributeOverride(JavaAttributeOverride attributeOverride) { - removeItemFromList(attributeOverride, this.virtualAttributeOverrides, Entity.VIRTUAL_ATTRIBUTE_OVERRIDES_LIST); - } - - public JavaAttributeOverride getAttributeOverrideNamed(String name) { - return (JavaAttributeOverride) 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 JavaAssociationOverride getAssociationOverrideNamed(String name) { - return (JavaAssociationOverride) 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; - } - - - @SuppressWarnings("unchecked") - public ListIterator<JavaAssociationOverride> associationOverrides() { - return new CompositeListIterator<JavaAssociationOverride>(specifiedAssociationOverrides(), virtualAssociationOverrides()); - } - - public int associationOverridesSize() { - return this.specifiedAssociationOverridesSize() + this.virtualAssociationOverridesSize(); - } - - public ListIterator<JavaAssociationOverride> virtualAssociationOverrides() { - return new CloneListIterator<JavaAssociationOverride>(this.virtualAssociationOverrides); - } - - public int virtualAssociationOverridesSize() { - return this.virtualAssociationOverrides.size(); - } - - public ListIterator<JavaAssociationOverride> specifiedAssociationOverrides() { - return new CloneListIterator<JavaAssociationOverride>(this.specifiedAssociationOverrides); - } - - public int specifiedAssociationOverridesSize() { - return this.specifiedAssociationOverrides.size(); - } - - public JavaAssociationOverride addSpecifiedAssociationOverride(int index) { - JavaAssociationOverride associationOverride = getJpaFactory().buildJavaAssociationOverride(this, createAssociationOverrideOwner()); - this.specifiedAssociationOverrides.add(index, associationOverride); - AssociationOverrideAnnotation associationOverrideResource = (AssociationOverrideAnnotation) this.javaResourcePersistentType.addAnnotation(index, AssociationOverrideAnnotation.ANNOTATION_NAME, AssociationOverridesAnnotation.ANNOTATION_NAME); - associationOverride.initializeFromResource(associationOverrideResource); - this.fireItemAdded(Entity.SPECIFIED_ASSOCIATION_OVERRIDES_LIST, index, associationOverride); - return associationOverride; - } - - protected AssociationOverride.Owner createAssociationOverrideOwner() { - return new AssociationOverrideOwner(); - } - - protected void addSpecifiedAssociationOverride(int index, JavaAssociationOverride associationOverride) { - addItemToList(index, associationOverride, this.specifiedAssociationOverrides, Entity.SPECIFIED_ASSOCIATION_OVERRIDES_LIST); - } - - protected void removeSpecifiedAssociationOverride_(JavaAssociationOverride associationOverride) { - removeItemFromList(associationOverride, this.specifiedAssociationOverrides, Entity.SPECIFIED_ASSOCIATION_OVERRIDES_LIST); - } - - public void moveSpecifiedAssociationOverride(int targetIndex, int sourceIndex) { - CollectionTools.move(this.specifiedAssociationOverrides, targetIndex, sourceIndex); - this.javaResourcePersistentType.move(targetIndex, sourceIndex, AssociationOverridesAnnotation.ANNOTATION_NAME); - fireItemMoved(Entity.SPECIFIED_ASSOCIATION_OVERRIDES_LIST, targetIndex, sourceIndex); - } - - protected JavaAssociationOverride setAssociationOverrideVirtual(boolean virtual, JavaAssociationOverride associationOverride) { - // Add a new attribute override - if (virtual) { - return setAssociationOverrideVirtual(associationOverride); - } - return setAssociationOverrideSpecified(associationOverride); - } - - protected JavaAssociationOverride setAssociationOverrideVirtual(JavaAssociationOverride associationOverride) { - int index = this.specifiedAssociationOverrides.indexOf(associationOverride); - this.specifiedAssociationOverrides.remove(index); - String associationOverrideName = associationOverride.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 - JavaAssociationOverride virtualAssociationOverride = null; - if (associationOverrideName != null) { - for (PersistentAttribute persistentAttribute : CollectionTools.iterable(allOverridableAssociations())) { - if (persistentAttribute.getName().equals(associationOverrideName)) { - //store the virtualAssociationOverride so we can fire change notification later - virtualAssociationOverride = buildAssociationOverride(new NullAssociationOverride(this.javaResourcePersistentType, associationOverrideName)); - this.virtualAssociationOverrides.add(virtualAssociationOverride); - break; - } - } - } - - this.javaResourcePersistentType.removeAnnotation(index, AssociationOverrideAnnotation.ANNOTATION_NAME, AssociationOverridesAnnotation.ANNOTATION_NAME); - fireItemRemoved(Entity.SPECIFIED_ASSOCIATION_OVERRIDES_LIST, index, associationOverride); - - if (virtualAssociationOverride != null) { - fireItemAdded(Entity.VIRTUAL_ASSOCIATION_OVERRIDES_LIST, virtualAssociationOverridesSize() - 1, virtualAssociationOverride); - } - return virtualAssociationOverride; - } - - protected JavaAssociationOverride setAssociationOverrideSpecified(JavaAssociationOverride oldAssociationOverride) { - int index = specifiedAssociationOverridesSize(); - JavaAssociationOverride newAssociationOverride = getJpaFactory().buildJavaAssociationOverride(this, createAssociationOverrideOwner()); - this.specifiedAssociationOverrides.add(index, newAssociationOverride); - - AssociationOverrideAnnotation attributeOverrideResource = (AssociationOverrideAnnotation) this.javaResourcePersistentType.addAnnotation(index, AssociationOverrideAnnotation.ANNOTATION_NAME, AssociationOverridesAnnotation.ANNOTATION_NAME); - newAssociationOverride.initializeFromResource(attributeOverrideResource); - - int virtualIndex = this.virtualAssociationOverrides.indexOf(oldAssociationOverride); - this.virtualAssociationOverrides.remove(virtualIndex); - - newAssociationOverride.setName(oldAssociationOverride.getName()); - - this.fireItemRemoved(Entity.VIRTUAL_ASSOCIATION_OVERRIDES_LIST, virtualIndex, oldAssociationOverride); - this.fireItemAdded(Entity.SPECIFIED_ASSOCIATION_OVERRIDES_LIST, index, newAssociationOverride); - - return newAssociationOverride; - } - - protected void addVirtualAssociationOverride(JavaAssociationOverride associationOverride) { - addItemToList(associationOverride, this.virtualAssociationOverrides, Entity.VIRTUAL_ASSOCIATION_OVERRIDES_LIST); - } - - protected void removeVirtualAssociationOverride(JavaAssociationOverride associationOverride) { - removeItemFromList(associationOverride, this.virtualAssociationOverrides, Entity.VIRTUAL_ASSOCIATION_OVERRIDES_LIST); - } - - public ListIterator<JavaNamedQuery> namedQueries() { - return new CloneListIterator<JavaNamedQuery>(this.namedQueries); - } - - public int namedQueriesSize() { - return this.namedQueries.size(); - } - - public JavaNamedQuery addNamedQuery(int index) { - JavaNamedQuery namedQuery = getJpaFactory().buildJavaNamedQuery(this); - this.namedQueries.add(index, namedQuery); - NamedQueryAnnotation namedQueryAnnotation = (NamedQueryAnnotation) this.javaResourcePersistentType.addAnnotation(index, NamedQueryAnnotation.ANNOTATION_NAME, NamedQueriesAnnotation.ANNOTATION_NAME); - namedQuery.initializeFromResource(namedQueryAnnotation); - fireItemAdded(QueryHolder.NAMED_QUERIES_LIST, index, namedQuery); - return namedQuery; - } - - protected void addNamedQuery(int index, JavaNamedQuery namedQuery) { - addItemToList(index, namedQuery, this.namedQueries, QueryHolder.NAMED_QUERIES_LIST); - } - - public void removeNamedQuery(NamedQuery namedQuery) { - removeNamedQuery(this.namedQueries.indexOf(namedQuery)); - } - - public void removeNamedQuery(int index) { - JavaNamedQuery removedNamedQuery = this.namedQueries.remove(index); - this.javaResourcePersistentType.removeAnnotation(index, NamedQueryAnnotation.ANNOTATION_NAME, NamedQueriesAnnotation.ANNOTATION_NAME); - fireItemRemoved(QueryHolder.NAMED_QUERIES_LIST, index, removedNamedQuery); - } - - protected void removeNamedQuery_(JavaNamedQuery namedQuery) { - removeItemFromList(namedQuery, this.namedQueries, QueryHolder.NAMED_QUERIES_LIST); - } - - public void moveNamedQuery(int targetIndex, int sourceIndex) { - CollectionTools.move(this.namedQueries, targetIndex, sourceIndex); - this.javaResourcePersistentType.move(targetIndex, sourceIndex, NamedQueriesAnnotation.ANNOTATION_NAME); - fireItemMoved(QueryHolder.NAMED_QUERIES_LIST, targetIndex, sourceIndex); - } - - public ListIterator<JavaNamedNativeQuery> namedNativeQueries() { - return new CloneListIterator<JavaNamedNativeQuery>(this.namedNativeQueries); - } - - public int namedNativeQueriesSize() { - return this.namedNativeQueries.size(); - } - - public JavaNamedNativeQuery addNamedNativeQuery(int index) { - JavaNamedNativeQuery namedNativeQuery = getJpaFactory().buildJavaNamedNativeQuery(this); - this.namedNativeQueries.add(index, namedNativeQuery); - NamedNativeQueryAnnotation namedNativeQueryAnnotation = (NamedNativeQueryAnnotation) this.javaResourcePersistentType.addAnnotation(index, NamedNativeQueryAnnotation.ANNOTATION_NAME, NamedNativeQueriesAnnotation.ANNOTATION_NAME); - namedNativeQuery.initializeFromResource(namedNativeQueryAnnotation); - fireItemAdded(QueryHolder.NAMED_NATIVE_QUERIES_LIST, index, namedNativeQuery); - return namedNativeQuery; - } - - protected void addNamedNativeQuery(int index, JavaNamedNativeQuery namedNativeQuery) { - addItemToList(index, namedNativeQuery, this.namedNativeQueries, QueryHolder.NAMED_NATIVE_QUERIES_LIST); - } - - public void removeNamedNativeQuery(NamedNativeQuery namedNativeQuery) { - this.removeNamedNativeQuery(this.namedNativeQueries.indexOf(namedNativeQuery)); - } - - public void removeNamedNativeQuery(int index) { - JavaNamedNativeQuery removedNamedNativeQuery = this.namedNativeQueries.remove(index); - this.javaResourcePersistentType.removeAnnotation(index, NamedNativeQueryAnnotation.ANNOTATION_NAME, NamedNativeQueriesAnnotation.ANNOTATION_NAME); - fireItemRemoved(QueryHolder.NAMED_NATIVE_QUERIES_LIST, index, removedNamedNativeQuery); - } - - protected void removeNamedNativeQuery_(JavaNamedNativeQuery namedNativeQuery) { - removeItemFromList(namedNativeQuery, this.namedNativeQueries, QueryHolder.NAMED_NATIVE_QUERIES_LIST); - } - - public void moveNamedNativeQuery(int targetIndex, int sourceIndex) { - CollectionTools.move(this.namedNativeQueries, targetIndex, sourceIndex); - this.javaResourcePersistentType.move(targetIndex, sourceIndex, NamedNativeQueriesAnnotation.ANNOTATION_NAME); - fireItemMoved(QueryHolder.NAMED_NATIVE_QUERIES_LIST, targetIndex, sourceIndex); - } - - @SuppressWarnings("unchecked") - protected Iterator<JavaQuery> queries() { - return new CompositeIterator<JavaQuery>(this.namedNativeQueries(), this.namedQueries()); - } - - public String getIdClass() { - return this.idClass; - } - - public void setIdClass(String newIdClass) { - String oldIdClass = this.idClass; - this.idClass = newIdClass; - if (newIdClass != oldIdClass) { - if (newIdClass != null) { - if (getIdClassResource() == null) { - addIdClassResource(); - } - getIdClassResource().setValue(newIdClass); - } - else { - removeIdClassResource(); - } - } - firePropertyChanged(IdClass.ID_CLASS_PROPERTY, oldIdClass, newIdClass); - } - - protected void setIdClass_(String newIdClass) { - String oldIdClass = this.idClass; - this.idClass = newIdClass; - firePropertyChanged(IdClass.ID_CLASS_PROPERTY, oldIdClass, newIdClass); - } - - protected IdClassAnnotation getIdClassResource() { - return (IdClassAnnotation) this.javaResourcePersistentType.getAnnotation(IdClassAnnotation.ANNOTATION_NAME); - } - - protected void addIdClassResource() { - this.javaResourcePersistentType.addAnnotation(IdClassAnnotation.ANNOTATION_NAME); - } - - protected void removeIdClassResource() { - this.javaResourcePersistentType.removeAnnotation(IdClassAnnotation.ANNOTATION_NAME); - } - - public Entity getParentEntity() { - for (Iterator<PersistentType> i = getPersistentType().inheritanceHierarchy(); i.hasNext();) { - TypeMapping typeMapping = i.next().getMapping(); - if (typeMapping != this && typeMapping instanceof Entity) { - return (Entity) typeMapping; - } - } - return this; - } - - public Entity getRootEntity() { - Entity rootEntity = this; - for (Iterator<PersistentType> i = getPersistentType().inheritanceHierarchy(); i.hasNext();) { - PersistentType persistentType = i.next(); - if (persistentType.getMapping() instanceof Entity) { - rootEntity = (Entity) persistentType.getMapping(); - } - } - return rootEntity; - } - - public String getPrimaryKeyColumnName() { - return getPrimaryKeyColumnName(getPersistentType().allAttributes()); - } - - //copied in GenericOrmEntity 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; - } - - @Override - public boolean tableNameIsInvalid(String tableName) { - return !CollectionTools.contains(this.associatedTableNamesIncludingInherited(), tableName); - } - - @Override - public Iterator<Table> associatedTables() { - return new CompositeIterator<Table>(this.getTable(), this.secondaryTables()); - } - - @Override - 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); - } - }; - } - }); - } - - @Override - 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; - } - }; - } - - protected Iterator<String> tableNames(Iterator<Table> tables) { - return new TransformationIterator<Table, String>(tables) { - @Override - protected String transform(Table t) { - return t.getName(); - } - }; - } - - /** - * 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(); - } - }; - } - - @Override - public Iterator<String> allOverridableAttributeNames() { - return new CompositeIterator<String>(new TransformationIterator<TypeMapping, Iterator<String>>(this.inheritanceHierarchy()) { - @Override - protected Iterator<String> transform(TypeMapping mapping) { - return mapping.overridableAttributeNames(); - } - }); - } - - - @Override - public Iterator<PersistentAttribute> allOverridableAttributes() { - return new CompositeIterator<PersistentAttribute>(new TransformationIterator<TypeMapping, Iterator<PersistentAttribute>>(this.inheritanceHierarchy()) { - @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.inheritanceHierarchy()) { - @Override - protected Iterator<PersistentAttribute> transform(TypeMapping mapping) { - return mapping.overridableAssociations(); - } - }); - } - - @Override - public Iterator<String> allOverridableAssociationNames() { - return new CompositeIterator<String>(new TransformationIterator<TypeMapping, Iterator<String>>(this.inheritanceHierarchy()) { - @Override - protected Iterator<String> transform(TypeMapping mapping) { - return mapping.overridableAssociationNames(); - } - }); - } - - @Override - public void update(JavaResourcePersistentType resourcePersistentType) { - super.update(resourcePersistentType); - this.entityResource = (EntityAnnotation) resourcePersistentType.getMappingAnnotation(EntityAnnotation.ANNOTATION_NAME); - - this.setSpecifiedName_(this.specifiedName(this.entityResource)); - this.setDefaultName(this.defaultName(resourcePersistentType)); - - this.updateInheritance(getInheritanceResource()); - this.updateDiscriminatorColumn(resourcePersistentType); - this.updateDiscriminatorValue(getDiscriminatorValueResource()); - this.setDiscriminatorValueAllowed(discriminatorValueIsAllowed(resourcePersistentType)); - this.updateTable(resourcePersistentType); - this.updateSecondaryTables(resourcePersistentType); - this.updateTableGenerator(resourcePersistentType); - this.updateSequenceGenerator(resourcePersistentType); - this.updateSpecifiedPrimaryKeyJoinColumns(resourcePersistentType); - this.updateDefaultPrimaryKeyJoinColumn(resourcePersistentType); - this.updateSpecifiedAttributeOverrides(resourcePersistentType); - this.updateVirtualAttributeOverrides(resourcePersistentType); - this.updateSpecifiedAssociationOverrides(resourcePersistentType); - this.updateVirtualAssociationOverrides(resourcePersistentType); - this.updateNamedQueries(resourcePersistentType); - this.updateNamedNativeQueries(resourcePersistentType); - this.updateIdClass(resourcePersistentType); - this.updatePersistenceUnitGeneratorsAndQueries(); - } - - protected String specifiedName(EntityAnnotation entityResource) { - return entityResource.getName(); - } - - protected String defaultName(JavaResourcePersistentType persistentTypeResource) { - return persistentTypeResource.getName(); - } - - protected void updateTable(JavaResourcePersistentType persistentTypeResource) { - getTable().update(persistentTypeResource); - } - - protected void updateInheritance(InheritanceAnnotation inheritanceResource) { - this.setSpecifiedInheritanceStrategy_(this.specifiedInheritanceStrategy(inheritanceResource)); - this.setDefaultInheritanceStrategy(this.defaultInheritanceStrategy()); - } - - protected InheritanceType specifiedInheritanceStrategy(InheritanceAnnotation inheritanceResource) { - return InheritanceType.fromJavaResourceModel(inheritanceResource.getStrategy()); - } - - protected InheritanceType defaultInheritanceStrategy() { - if (getRootEntity() == this) { - return InheritanceType.SINGLE_TABLE; - } - return getRootEntity().getInheritanceStrategy(); - } - - protected void updateDiscriminatorColumn(JavaResourcePersistentType persistentTypeResource) { - getDiscriminatorColumn().update(persistentTypeResource); - } - - protected void updateDiscriminatorValue(DiscriminatorValueAnnotation discriminatorValueResource) { - this.setSpecifiedDiscriminatorValue_(discriminatorValueResource.getValue()); - this.setDefaultDiscriminatorValue(this.javaDefaultDiscriminatorValue()); - } - - /** - * 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 javaDefaultDiscriminatorValue() { - if (this.javaResourcePersistentType.isAbstract()) { - return null; - } - if (this.getDiscriminatorType() != DiscriminatorType.STRING) { - return null; - } - return this.getName(); - } - - protected DiscriminatorType getDiscriminatorType() { - return this.getDiscriminatorColumn().getDiscriminatorType(); - } - - protected boolean discriminatorValueIsAllowed(JavaResourcePersistentType persistentTypeResource) { - return !persistentTypeResource.isAbstract(); - } - - protected void updateSecondaryTables(JavaResourcePersistentType persistentTypeResource) { - ListIterator<JavaSecondaryTable> secondaryTables = specifiedSecondaryTables(); - ListIterator<JavaResourceNode> resourceSecondaryTables = persistentTypeResource.annotations(SecondaryTableAnnotation.ANNOTATION_NAME, SecondaryTablesAnnotation.ANNOTATION_NAME); - - while (secondaryTables.hasNext()) { - JavaSecondaryTable secondaryTable = secondaryTables.next(); - if (resourceSecondaryTables.hasNext()) { - secondaryTable.update((SecondaryTableAnnotation) resourceSecondaryTables.next()); - } - else { - removeSpecifiedSecondaryTable_(secondaryTable); - } - } - - while (resourceSecondaryTables.hasNext()) { - addSpecifiedSecondaryTable(specifiedSecondaryTablesSize(), buildSecondaryTable((SecondaryTableAnnotation) resourceSecondaryTables.next())); - } - } - - protected JavaSecondaryTable buildSecondaryTable(SecondaryTableAnnotation secondaryTableResource) { - JavaSecondaryTable secondaryTable = getJpaFactory().buildJavaSecondaryTable(this); - secondaryTable.initializeFromResource(secondaryTableResource); - return secondaryTable; - } - - protected void updateTableGenerator(JavaResourcePersistentType persistentTypeResource) { - TableGeneratorAnnotation tableGeneratorResource = tableGenerator(persistentTypeResource); - if (tableGeneratorResource == null) { - if (getTableGenerator() != null) { - setTableGenerator(null); - } - } - else { - if (getTableGenerator() == null) { - setTableGenerator(buildTableGenerator(tableGeneratorResource)); - } - else { - getTableGenerator().update(tableGeneratorResource); - } - } - } - - protected JavaTableGenerator buildTableGenerator(TableGeneratorAnnotation tableGeneratorResource) { - JavaTableGenerator tableGenerator = getJpaFactory().buildJavaTableGenerator(this); - tableGenerator.initializeFromResource(tableGeneratorResource); - return tableGenerator; - } - - protected TableGeneratorAnnotation tableGenerator(JavaResourcePersistentType persistentTypeResource) { - return (TableGeneratorAnnotation) persistentTypeResource.getAnnotation(TableGeneratorAnnotation.ANNOTATION_NAME); - } - - protected void updateSequenceGenerator(JavaResourcePersistentType persistentTypeResource) { - SequenceGeneratorAnnotation sequenceGeneratorResource = sequenceGenerator(persistentTypeResource); - if (sequenceGeneratorResource == null) { - if (getSequenceGenerator() != null) { - setSequenceGenerator(null); - } - } - else { - if (getSequenceGenerator() == null) { - setSequenceGenerator(buildSequenceGenerator(sequenceGeneratorResource)); - } - else { - getSequenceGenerator().update(sequenceGeneratorResource); - } - } - } - - protected JavaSequenceGenerator buildSequenceGenerator(SequenceGeneratorAnnotation sequenceGeneratorResource) { - JavaSequenceGenerator sequenceGenerator = getJpaFactory().buildJavaSequenceGenerator(this); - sequenceGenerator.initializeFromResource(sequenceGeneratorResource); - return sequenceGenerator; - } - - protected SequenceGeneratorAnnotation sequenceGenerator(JavaResourcePersistentType persistentTypeResource) { - return (SequenceGeneratorAnnotation) persistentTypeResource.getAnnotation(SequenceGeneratorAnnotation.ANNOTATION_NAME); - } - - - protected void updateSpecifiedPrimaryKeyJoinColumns(JavaResourcePersistentType persistentTypeResource) { - ListIterator<JavaPrimaryKeyJoinColumn> primaryKeyJoinColumns = specifiedPrimaryKeyJoinColumns(); - ListIterator<JavaResourceNode> resourcePrimaryKeyJoinColumns = persistentTypeResource.annotations(PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME, PrimaryKeyJoinColumns.ANNOTATION_NAME); - - while (primaryKeyJoinColumns.hasNext()) { - JavaPrimaryKeyJoinColumn primaryKeyJoinColumn = primaryKeyJoinColumns.next(); - if (resourcePrimaryKeyJoinColumns.hasNext()) { - primaryKeyJoinColumn.update((PrimaryKeyJoinColumnAnnotation) resourcePrimaryKeyJoinColumns.next()); - } - else { - removeSpecifiedPrimaryKeyJoinColumn_(primaryKeyJoinColumn); - } - } - - while (resourcePrimaryKeyJoinColumns.hasNext()) { - addSpecifiedPrimaryKeyJoinColumn(specifiedPrimaryKeyJoinColumnsSize(), buildPrimaryKeyJoinColumn((PrimaryKeyJoinColumnAnnotation) resourcePrimaryKeyJoinColumns.next())); - } - } - - protected JavaPrimaryKeyJoinColumn buildPrimaryKeyJoinColumn(PrimaryKeyJoinColumnAnnotation primaryKeyJoinColumnResource) { - JavaPrimaryKeyJoinColumn primaryKeyJoinColumn = getJpaFactory().buildJavaPrimaryKeyJoinColumn(this, createPrimaryKeyJoinColumnOwner()); - primaryKeyJoinColumn.initializeFromResource(primaryKeyJoinColumnResource); - return primaryKeyJoinColumn; - } - - protected void updateDefaultPrimaryKeyJoinColumn(JavaResourcePersistentType persistentTypeResource) { - if (!shouldBuildDefaultPrimaryKeyJoinColumn()) { - setDefaultPrimaryKeyJoinColumn(null); - return; - } - if (getDefaultPrimaryKeyJoinColumn() == null) { - this.setDefaultPrimaryKeyJoinColumn(buildPrimaryKeyJoinColumn(new NullPrimaryKeyJoinColumn(this.javaResourcePersistentType))); - } - else { - this.defaultPrimaryKeyJoinColumn.update(new NullPrimaryKeyJoinColumn(persistentTypeResource)); - } - } - - protected void updateSpecifiedAttributeOverrides(JavaResourcePersistentType persistentTypeResource) { - ListIterator<JavaAttributeOverride> attributeOverrides = specifiedAttributeOverrides(); - ListIterator<JavaResourceNode> resourceAttributeOverrides = persistentTypeResource.annotations(AttributeOverrideAnnotation.ANNOTATION_NAME, AttributeOverridesAnnotation.ANNOTATION_NAME); - - while (attributeOverrides.hasNext()) { - JavaAttributeOverride attributeOverride = attributeOverrides.next(); - if (resourceAttributeOverrides.hasNext()) { - attributeOverride.update((AttributeOverrideAnnotation) resourceAttributeOverrides.next()); - } - else { - removeSpecifiedAttributeOverride_(attributeOverride); - } - } - - while (resourceAttributeOverrides.hasNext()) { - addSpecifiedAttributeOverride(specifiedAttributeOverridesSize(), buildAttributeOverride((AttributeOverrideAnnotation) resourceAttributeOverrides.next())); - } - } - - protected JavaAttributeOverride buildAttributeOverride(AttributeOverrideAnnotation attributeOverrideResource) { - JavaAttributeOverride attributeOverride = getJpaFactory().buildJavaAttributeOverride(this, createAttributeOverrideOwner()); - attributeOverride.initializeFromResource(attributeOverrideResource); - return attributeOverride; - } - - protected JavaAttributeOverride buildVirtualAttributeOverride(JavaResourcePersistentType resourcePersistentType, PersistentAttribute attribute) { - return buildAttributeOverride(buildVirtualAttributeOverrideResource(resourcePersistentType, attribute)); - } - - protected VirtualAttributeOverride buildVirtualAttributeOverrideResource(JavaResourcePersistentType resourcePersistentType, PersistentAttribute attribute) { - ColumnMapping columnMapping = (ColumnMapping) attribute.getMapping(); - return new VirtualAttributeOverride(resourcePersistentType, attribute.getName(), columnMapping.getColumn()); - } - - protected void updateVirtualAttributeOverrides(JavaResourcePersistentType resourcePersistentType) { - for (PersistentAttribute persistentAttribute : CollectionTools.iterable(allOverridableAttributes())) { - JavaAttributeOverride attributeOverride = getAttributeOverrideNamed(persistentAttribute.getName()); - if (attributeOverride == null) { - addVirtualAttributeOverride(buildVirtualAttributeOverride(resourcePersistentType, persistentAttribute)); - } - else if (attributeOverride.isVirtual()) { - attributeOverride.update(buildVirtualAttributeOverrideResource(resourcePersistentType, persistentAttribute)); - } - } - - Collection<String> attributeNames = CollectionTools.collection(allOverridableAttributeNames()); - - //remove any default mappings that are not included in the attributeNames collection - for (JavaAttributeOverride attributeOverride : CollectionTools.iterable(virtualAttributeOverrides())) { - if (!attributeNames.contains(attributeOverride.getName()) - || containsSpecifiedAttributeOverride(attributeOverride.getName())) { - removeVirtualAttributeOverride(attributeOverride); - } - } - } - - protected void updateSpecifiedAssociationOverrides(JavaResourcePersistentType resourcePersistentType) { - ListIterator<JavaAssociationOverride> associationOverrides = specifiedAssociationOverrides(); - ListIterator<JavaResourceNode> resourceAssociationOverrides = resourcePersistentType.annotations(AssociationOverrideAnnotation.ANNOTATION_NAME, AssociationOverridesAnnotation.ANNOTATION_NAME); - - while (associationOverrides.hasNext()) { - JavaAssociationOverride associationOverride = associationOverrides.next(); - if (resourceAssociationOverrides.hasNext()) { - associationOverride.update((AssociationOverrideAnnotation) resourceAssociationOverrides.next()); - } - else { - removeSpecifiedAssociationOverride_(associationOverride); - } - } - - while (resourceAssociationOverrides.hasNext()) { - addSpecifiedAssociationOverride(specifiedAssociationOverridesSize(), buildAssociationOverride((AssociationOverrideAnnotation) resourceAssociationOverrides.next())); - } - } - - protected JavaAssociationOverride buildAssociationOverride(AssociationOverrideAnnotation associationOverrideResource) { - JavaAssociationOverride associationOverride = getJpaFactory().buildJavaAssociationOverride(this, createAssociationOverrideOwner()); - associationOverride.initializeFromResource(associationOverrideResource); - return associationOverride; - } - - protected void updateVirtualAssociationOverrides(JavaResourcePersistentType resourcePersistentType) { - for (Iterator<String> i = allOverridableAssociationNames(); i.hasNext(); ) { - String associationName = i.next(); - JavaAssociationOverride associationOverride = getAssociationOverrideNamed(associationName); - if (associationOverride == null) { - associationOverride = buildAssociationOverride(new NullAssociationOverride(resourcePersistentType, associationName)); - addVirtualAssociationOverride(associationOverride); - } - else if (associationOverride.isVirtual()) { - associationOverride.update(new NullAssociationOverride(resourcePersistentType, associationName)); - } - } - - Collection<String> associationNames = CollectionTools.collection(allOverridableAssociationNames()); - - //remove any default mappings that are not included in the associationNames collection - for (JavaAssociationOverride associationOverride : CollectionTools.iterable(virtualAssociationOverrides())) { - if (!associationNames.contains(associationOverride.getName()) - || containsSpecifiedAssociationOverride(associationOverride.getName())) { - removeVirtualAssociationOverride(associationOverride); - } - } - } - - protected void updateNamedQueries(JavaResourcePersistentType resourcePersistentType) { - ListIterator<JavaNamedQuery> namedQueries = namedQueries(); - ListIterator<JavaResourceNode> resourceNamedQueries = resourcePersistentType.annotations(NamedQueryAnnotation.ANNOTATION_NAME, NamedQueriesAnnotation.ANNOTATION_NAME); - - while (namedQueries.hasNext()) { - JavaNamedQuery namedQuery = namedQueries.next(); - if (resourceNamedQueries.hasNext()) { - namedQuery.update((NamedQueryAnnotation) resourceNamedQueries.next()); - } - else { - removeNamedQuery_(namedQuery); - } - } - - while (resourceNamedQueries.hasNext()) { - addNamedQuery(namedQueriesSize(), buildNamedQuery((NamedQueryAnnotation) resourceNamedQueries.next())); - } - } - - protected void updateNamedNativeQueries(JavaResourcePersistentType resourcePersistentType) { - ListIterator<JavaNamedNativeQuery> namedNativeQueries = namedNativeQueries(); - ListIterator<JavaResourceNode> resourceNamedNativeQueries = resourcePersistentType.annotations(NamedNativeQueryAnnotation.ANNOTATION_NAME, NamedNativeQueriesAnnotation.ANNOTATION_NAME); - - while (namedNativeQueries.hasNext()) { - JavaNamedNativeQuery namedQuery = namedNativeQueries.next(); - if (resourceNamedNativeQueries.hasNext()) { - namedQuery.update((NamedNativeQueryAnnotation) resourceNamedNativeQueries.next()); - } - else { - removeNamedNativeQuery_(namedQuery); - } - } - - while (resourceNamedNativeQueries.hasNext()) { - addNamedNativeQuery(namedNativeQueriesSize(), buildNamedNativeQuery((NamedNativeQueryAnnotation) resourceNamedNativeQueries.next())); - } - } - - - protected JavaNamedQuery buildNamedQuery(NamedQueryAnnotation namedQueryResource) { - JavaNamedQuery namedQuery = getJpaFactory().buildJavaNamedQuery(this); - namedQuery.initializeFromResource(namedQueryResource); - return namedQuery; - } - - protected JavaNamedNativeQuery buildNamedNativeQuery(NamedNativeQueryAnnotation namedNativeQueryResource) { - JavaNamedNativeQuery namedNativeQuery = getJpaFactory().buildJavaNamedNativeQuery(this); - namedNativeQuery.initializeFromResource(namedNativeQueryResource); - return namedNativeQuery; - } - - protected void updateIdClass(JavaResourcePersistentType resourcePersistentType) { - IdClassAnnotation idClass = (IdClassAnnotation) resourcePersistentType.getAnnotation(IdClassAnnotation.ANNOTATION_NAME); - if (idClass != null) { - setIdClass_(idClass.getValue()); - } - else { - setIdClass_(null); - } - } - - protected void updatePersistenceUnitGeneratorsAndQueries() { - if (getTableGenerator() != null) { - getPersistenceUnit().addGenerator(getTableGenerator()); - } - - if (getSequenceGenerator() != null) { - getPersistenceUnit().addGenerator(getSequenceGenerator()); - } - - for (Query query : CollectionTools.iterable(namedQueries())) { - getPersistenceUnit().addQuery(query); - } - - for (Query query : CollectionTools.iterable(namedNativeQueries())) { - getPersistenceUnit().addQuery(query); - } - } - - - //******************** Code Completion ************************* - - @Override - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - result = this.getTable().javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - for (JavaSecondaryTable sTable : CollectionTools.iterable(this.secondaryTables())) { - result = sTable.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - } - for (JavaPrimaryKeyJoinColumn column : CollectionTools.iterable(this.primaryKeyJoinColumns())) { - result = column.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - } - for (JavaAttributeOverride override : CollectionTools.iterable(this.attributeOverrides())) { - result = override.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - } - for (JavaAssociationOverride override : CollectionTools.iterable(this.associationOverrides())) { - result = override.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - } - result = this.getDiscriminatorColumn().javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - if (this.getTableGenerator() != null) { - result = this.getTableGenerator().javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - } - if (this.getSequenceGenerator() != null) { - result = this.getSequenceGenerator().javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - } - return null; - } - - - //********** Validation ******************************************** - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - - getTable().addToMessages(messages, astRoot); - addIdMessages(messages, astRoot); - addGeneratorMessages(messages, astRoot); - addQueryMessages(messages, astRoot); - - for (Iterator<JavaSecondaryTable> stream = this.specifiedSecondaryTables(); stream.hasNext();) { - stream.next().addToMessages(messages, astRoot); - } - - for (Iterator<JavaAttributeOverride> stream = this.attributeOverrides(); stream.hasNext();) { - stream.next().addToMessages(messages, astRoot); - } - - for (Iterator<JavaAssociationOverride> stream = this.associationOverrides(); stream.hasNext();) { - stream.next().addToMessages(messages, astRoot); - } - - } - - protected void addIdMessages(List<IMessage> messages, CompilationUnit astRoot) { - addNoIdMessage(messages, astRoot); - } - - protected void addNoIdMessage(List<IMessage> messages, CompilationUnit astRoot) { - if (entityHasNoId()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.ENTITY_NO_ID, - new String[] {this.getName()}, - this, this.getValidationTextRange(astRoot)) - ); - } - } - - private boolean entityHasNoId() { - return ! this.entityHasId(); - } - - private boolean entityHasId() { - for (Iterator<PersistentAttribute> stream = getPersistentType().allAttributes(); stream.hasNext(); ) { - if (stream.next().isIdAttribute()) { - return true; - } - } - return false; - } - - protected void addGeneratorMessages(List<IMessage> messages, CompilationUnit astRoot) { - List<Generator> masterList = CollectionTools.list(getPersistenceUnit().allGenerators()); - - for (Iterator<JavaGenerator> stream = this.generators(); stream.hasNext() ; ) { - JavaGenerator current = stream.next(); - masterList.remove(current); - - for (Generator each : masterList) { - if (! each.overrides(current) && each.getName() != null && each.getName().equals(current.getName())) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.GENERATOR_DUPLICATE_NAME, - new String[] {current.getName()}, - current, - current.getNameTextRange(astRoot)) - ); - } - } - - masterList.add(current); - } - } - - protected void addQueryMessages(List<IMessage> messages, CompilationUnit astRoot) { - List<Query> masterList = CollectionTools.list(getPersistenceUnit().allQueries()); - - for (Iterator<JavaQuery> stream = this.queries(); stream.hasNext() ; ) { - JavaQuery current = stream.next(); - masterList.remove(current); - - for (Query each : masterList) { - if (! each.overrides(current) && each.getName() != null && each.getName().equals(current.getName())) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.QUERY_DUPLICATE_NAME, - new String[] {current.getName()}, - current, - current.getNameTextRange(astRoot)) - ); - } - } - - masterList.add(current); - } - } - - class PrimaryKeyJoinColumnOwner implements JavaBaseJoinColumn.Owner - { - public TextRange getValidationTextRange(CompilationUnit astRoot) { - return GenericJavaEntity.this.getValidationTextRange(astRoot); - } - - public TypeMapping getTypeMapping() { - return GenericJavaEntity.this; - } - - public org.eclipse.jpt.db.Table getDbTable(String tableName) { - return GenericJavaEntity.this.getDbTable(tableName); - } - - public org.eclipse.jpt.db.Table getDbReferencedColumnTable() { - Entity parentEntity = GenericJavaEntity.this.getParentEntity(); - return (parentEntity == null) ? null : parentEntity.getPrimaryDbTable(); - } - - public int joinColumnsSize() { - return GenericJavaEntity.this.primaryKeyJoinColumnsSize(); - } - - public boolean isVirtual(BaseJoinColumn joinColumn) { - return GenericJavaEntity.this.defaultPrimaryKeyJoinColumn == joinColumn; - } - - public String getDefaultColumnName() { - if (joinColumnsSize() != 1) { - return null; - } - return GenericJavaEntity.this.getParentEntity().getPrimaryKeyColumnName(); - } - } - - 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 GenericJavaEntity.this.virtualAttributeOverrides.contains(override); - } - - public BaseOverride setVirtual(boolean virtual, BaseOverride attributeOverride) { - return GenericJavaEntity.this.setAttributeOverrideVirtual(virtual, (JavaAttributeOverride) attributeOverride); - } - - public TypeMapping getTypeMapping() { - return GenericJavaEntity.this; - } - - public TextRange validationTextRange(CompilationUnit astRoot) { - // TODO Auto-generated method stub - return null; - } - } - - 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 GenericJavaEntity.this.virtualAssociationOverrides.contains(override); - } - - public BaseOverride setVirtual(boolean virtual, BaseOverride attributeOverride) { - return GenericJavaEntity.this.setAssociationOverrideVirtual(virtual, (JavaAssociationOverride) attributeOverride); - } - - public TypeMapping getTypeMapping() { - return GenericJavaEntity.this; - } - - public TextRange validationTextRange(CompilationUnit astRoot) { - // TODO Auto-generated method stub - return null; - } - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaGeneratedValue.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaGeneratedValue.java deleted file mode 100644 index 7db737a10f..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaGeneratedValue.java +++ /dev/null @@ -1,114 +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.java; - -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.GeneratedValue; -import org.eclipse.jpt.core.context.GenerationType; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaGeneratedValue; -import org.eclipse.jpt.core.resource.java.GeneratedValueAnnotation; -import org.eclipse.jpt.core.utility.TextRange; - - -public class GenericJavaGeneratedValue extends AbstractJavaJpaContextNode implements JavaGeneratedValue -{ - protected GenerationType strategy; - - protected String generator; - - protected String defaultGenerator; - - protected GeneratedValueAnnotation generatedValueResource; - - public GenericJavaGeneratedValue(JavaAttributeMapping parent) { - super(parent); - } - - public void initializeFromResource(GeneratedValueAnnotation generatedValue) { - this.generatedValueResource = generatedValue; - this.strategy = this.strategy(generatedValue); - this.generator = this.generator(generatedValue); - } - - public GenerationType getStrategy() { - return (this.getSpecifiedStrategy() == null) ? this.getDefaultStrategy() : this.getSpecifiedStrategy(); - } - - public GenerationType getDefaultStrategy() { - return GeneratedValue.DEFAULT_STRATEGY; - } - - public GenerationType getSpecifiedStrategy() { - return this.strategy; - } - - public void setSpecifiedStrategy(GenerationType newStrategy) { - GenerationType oldStrategy = this.strategy; - this.strategy = newStrategy; - this.generatedValueResource.setStrategy(GenerationType.toJavaResourceModel(newStrategy)); - firePropertyChanged(GeneratedValue.SPECIFIED_STRATEGY_PROPERTY, oldStrategy, newStrategy); - } - - protected void setSpecifiedStrategy_(GenerationType newStrategy) { - GenerationType oldStrategy = this.strategy; - this.strategy = newStrategy; - firePropertyChanged(GeneratedValue.SPECIFIED_STRATEGY_PROPERTY, oldStrategy, newStrategy); - } - - public String getGenerator() { - return (this.getSpecifiedGenerator() == null) ? this.getDefaultGenerator() : this.getSpecifiedGenerator(); - } - - public String getSpecifiedGenerator() { - return this.generator; - } - - public String getDefaultGenerator() { - return this.defaultGenerator; - } - - public void setSpecifiedGenerator(String newGenerator) { - String oldGenerator = this.generator; - this.generator = newGenerator; - this.generatedValueResource.setGenerator(newGenerator); - firePropertyChanged(GeneratedValue.SPECIFIED_GENERATOR_PROPERTY, oldGenerator, newGenerator); - } - - protected void setSpecifiedGenerator_(String newGenerator) { - String oldGenerator = this.generator; - this.generator = newGenerator; - firePropertyChanged(GeneratedValue.SPECIFIED_GENERATOR_PROPERTY, oldGenerator, newGenerator); - } - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - return this.generatedValueResource.getTextRange(astRoot); - } - - public TextRange getGeneratorTextRange(CompilationUnit astRoot) { - return this.generatedValueResource.getGeneratorTextRange(astRoot); - } - - // ********** resource model -> java context model ********** - - public void update(GeneratedValueAnnotation generatedValue) { - this.generatedValueResource = generatedValue; - this.setSpecifiedStrategy_(this.strategy(generatedValue)); - this.setSpecifiedGenerator_(this.generator(generatedValue)); - } - - protected GenerationType strategy(GeneratedValueAnnotation generatedValue) { - return GenerationType.fromJavaResourceModel(generatedValue.getStrategy()); - } - - protected String generator(GeneratedValueAnnotation generatedValue) { - return generatedValue.getGenerator(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaIdMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaIdMapping.java deleted file mode 100644 index 0dcec6455b..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaIdMapping.java +++ /dev/null @@ -1,475 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import java.util.Iterator; -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.ColumnMapping; -import org.eclipse.jpt.core.context.Generator; -import org.eclipse.jpt.core.context.TemporalType; -import org.eclipse.jpt.core.context.java.JavaColumn; -import org.eclipse.jpt.core.context.java.JavaGeneratedValue; -import org.eclipse.jpt.core.context.java.JavaGenerator; -import org.eclipse.jpt.core.context.java.JavaIdMapping; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.context.java.JavaSequenceGenerator; -import org.eclipse.jpt.core.context.java.JavaTableGenerator; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.java.ColumnAnnotation; -import org.eclipse.jpt.core.resource.java.GeneratedValueAnnotation; -import org.eclipse.jpt.core.resource.java.IdAnnotation; -import org.eclipse.jpt.core.resource.java.JPA; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.core.resource.java.SequenceGeneratorAnnotation; -import org.eclipse.jpt.core.resource.java.TableGeneratorAnnotation; -import org.eclipse.jpt.core.resource.java.TemporalAnnotation; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; -import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; -import org.eclipse.jpt.utility.internal.iterators.SingleElementIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - - -public class GenericJavaIdMapping extends AbstractJavaAttributeMapping<IdAnnotation> implements JavaIdMapping -{ - protected final JavaColumn column; - - protected JavaGeneratedValue generatedValue; - - protected TemporalType temporal; - - protected JavaTableGenerator tableGenerator; - - protected JavaSequenceGenerator sequenceGenerator; - - public GenericJavaIdMapping(JavaPersistentAttribute parent) { - super(parent); - this.column = createJavaColumn(); - } - - protected JavaColumn createJavaColumn() { - return getJpaFactory().buildJavaColumn(this, this); - } - - @Override - public void initializeFromResource(JavaResourcePersistentAttribute resourcePersistentAttribute) { - super.initializeFromResource(resourcePersistentAttribute); - this.column.initializeFromResource(this.getColumnResource()); - this.temporal = this.temporal(this.getTemporalResource()); - this.initializeTableGenerator(resourcePersistentAttribute); - this.initializeSequenceGenerator(resourcePersistentAttribute); - this.initializeGeneratedValue(resourcePersistentAttribute); - this.updatePersistenceUnitGenerators(); - } - - protected void initializeTableGenerator(JavaResourcePersistentAttribute resourcePersistentAttribute) { - TableGeneratorAnnotation tableGeneratorResource = tableGenerator(resourcePersistentAttribute); - if (tableGeneratorResource != null) { - this.tableGenerator = getJpaFactory().buildJavaTableGenerator(this); - this.tableGenerator.initializeFromResource(tableGeneratorResource); - } - } - - protected void initializeSequenceGenerator(JavaResourcePersistentAttribute resourcePersistentAttribute) { - SequenceGeneratorAnnotation sequenceGeneratorResource = sequenceGenerator(resourcePersistentAttribute); - if (sequenceGeneratorResource != null) { - this.sequenceGenerator = getJpaFactory().buildJavaSequenceGenerator(this); - this.sequenceGenerator.initializeFromResource(sequenceGeneratorResource); - } - } - - protected void initializeGeneratedValue(JavaResourcePersistentAttribute resourcePersistentAttribute) { - GeneratedValueAnnotation generatedValueResource = generatedValue(resourcePersistentAttribute); - if (generatedValueResource != null) { - this.generatedValue = getJpaFactory().buildJavaGeneratedValue(this); - this.generatedValue.initializeFromResource(generatedValueResource); - } - } - - protected TemporalAnnotation getTemporalResource() { - return (TemporalAnnotation) getResourcePersistentAttribute().getNonNullAnnotation(TemporalAnnotation.ANNOTATION_NAME); - } - - public ColumnAnnotation getColumnResource() { - return (ColumnAnnotation) getResourcePersistentAttribute().getNonNullAnnotation(ColumnAnnotation.ANNOTATION_NAME); - } - - //************** IJavaAttributeMapping implementation *************** - - public String getKey() { - return MappingKeys.ID_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return IdAnnotation.ANNOTATION_NAME; - } - - public Iterator<String> correspondingAnnotationNames() { - return new ArrayIterator<String>( - JPA.COLUMN, - JPA.GENERATED_VALUE, - JPA.TEMPORAL, - JPA.TABLE_GENERATOR, - JPA.SEQUENCE_GENERATOR); - } - - public String getDefaultColumnName() { - return getAttributeName(); - } - - public String getDefaultTableName() { - return getTypeMapping().getTableName(); - } - - //************** IIdMapping implementation *************** - - public JavaColumn getColumn() { - return this.column; - } - - public TemporalType getTemporal() { - return this.temporal; - } - - public void setTemporal(TemporalType newTemporal) { - TemporalType oldTemporal = this.temporal; - this.temporal = newTemporal; - this.getTemporalResource().setValue(TemporalType.toJavaResourceModel(newTemporal)); - firePropertyChanged(ColumnMapping.TEMPORAL_PROPERTY, oldTemporal, newTemporal); - } - - /** - * internal setter used only for updating from the resource model. - * There were problems with InvalidThreadAccess exceptions in the UI - * when you set a value from the UI and the annotation doesn't exist yet. - * Adding the annotation causes an update to occur and then the exception. - */ - protected void setTemporal_(TemporalType newTemporal) { - TemporalType oldTemporal = this.temporal; - this.temporal = newTemporal; - firePropertyChanged(ColumnMapping.TEMPORAL_PROPERTY, oldTemporal, newTemporal); - } - - public JavaGeneratedValue addGeneratedValue() { - if (getGeneratedValue() != null) { - throw new IllegalStateException("gemeratedValue already exists"); - } - this.generatedValue = getJpaFactory().buildJavaGeneratedValue(this); - GeneratedValueAnnotation generatedValueResource = (GeneratedValueAnnotation) getResourcePersistentAttribute().addAnnotation(GeneratedValueAnnotation.ANNOTATION_NAME); - this.generatedValue.initializeFromResource(generatedValueResource); - 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"); - } - JavaGeneratedValue oldGeneratedValue = this.generatedValue; - this.generatedValue = null; - getResourcePersistentAttribute().removeAnnotation(GeneratedValueAnnotation.ANNOTATION_NAME); - firePropertyChanged(GENERATED_VALUE_PROPERTY, oldGeneratedValue, null); - } - - public JavaGeneratedValue getGeneratedValue() { - return this.generatedValue; - } - - protected void setGeneratedValue(JavaGeneratedValue newGeneratedValue) { - JavaGeneratedValue oldGeneratedValue = this.generatedValue; - this.generatedValue = newGeneratedValue; - firePropertyChanged(GENERATED_VALUE_PROPERTY, oldGeneratedValue, newGeneratedValue); - } - - public JavaTableGenerator addTableGenerator() { - if (getTableGenerator() != null) { - throw new IllegalStateException("tableGenerator already exists"); - } - this.tableGenerator = getJpaFactory().buildJavaTableGenerator(this); - TableGeneratorAnnotation tableGeneratorResource = (TableGeneratorAnnotation) getResourcePersistentAttribute().addAnnotation(TableGeneratorAnnotation.ANNOTATION_NAME); - this.tableGenerator.initializeFromResource(tableGeneratorResource); - 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"); - } - JavaTableGenerator oldTableGenerator = this.tableGenerator; - this.tableGenerator = null; - getResourcePersistentAttribute().removeAnnotation(TableGeneratorAnnotation.ANNOTATION_NAME); - firePropertyChanged(TABLE_GENERATOR_PROPERTY, oldTableGenerator, null); - } - - public JavaTableGenerator getTableGenerator() { - return this.tableGenerator; - } - - protected void setTableGenerator(JavaTableGenerator newTableGenerator) { - JavaTableGenerator oldTableGenerator = this.tableGenerator; - this.tableGenerator = newTableGenerator; - firePropertyChanged(TABLE_GENERATOR_PROPERTY, oldTableGenerator, newTableGenerator); - } - - public JavaSequenceGenerator addSequenceGenerator() { - if (getSequenceGenerator() != null) { - throw new IllegalStateException("sequenceGenerator already exists"); - } - - this.sequenceGenerator = getJpaFactory().buildJavaSequenceGenerator(this); - SequenceGeneratorAnnotation sequenceGeneratorResource = (SequenceGeneratorAnnotation) getResourcePersistentAttribute().addAnnotation(SequenceGeneratorAnnotation.ANNOTATION_NAME); - this.sequenceGenerator.initializeFromResource(sequenceGeneratorResource); - 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"); - } - JavaSequenceGenerator oldSequenceGenerator = this.sequenceGenerator; - this.sequenceGenerator = null; - getResourcePersistentAttribute().removeAnnotation(SequenceGeneratorAnnotation.ANNOTATION_NAME); - firePropertyChanged(SEQUENCE_GENERATOR_PROPERTY, oldSequenceGenerator, null); - } - - public JavaSequenceGenerator getSequenceGenerator() { - return this.sequenceGenerator; - } - - protected void setSequenceGenerator(JavaSequenceGenerator newSequenceGenerator) { - JavaSequenceGenerator oldSequenceGenerator = this.sequenceGenerator; - this.sequenceGenerator = newSequenceGenerator; - firePropertyChanged(SEQUENCE_GENERATOR_PROPERTY, oldSequenceGenerator, newSequenceGenerator); - } - - @SuppressWarnings("unchecked") - protected Iterator<JavaGenerator> generators() { - return new CompositeIterator<JavaGenerator>( - (getSequenceGenerator() == null) ? EmptyIterator.instance() : new SingleElementIterator(getSequenceGenerator()), - (getTableGenerator() == null) ? EmptyIterator.instance() : new SingleElementIterator(getTableGenerator())); - } - - @Override - public void update(JavaResourcePersistentAttribute resourcePersistentAttribute) { - super.update(resourcePersistentAttribute); - this.column.update(this.getColumnResource()); - this.setTemporal_(this.temporal(this.getTemporalResource())); - this.updateTableGenerator(resourcePersistentAttribute); - this.updateSequenceGenerator(resourcePersistentAttribute); - this.updateGeneratedValue(resourcePersistentAttribute); - this.updatePersistenceUnitGenerators(); - } - - protected TemporalType temporal(TemporalAnnotation temporal) { - return TemporalType.fromJavaResourceModel(temporal.getValue()); - } - - protected void updateTableGenerator(JavaResourcePersistentAttribute resourcePersistentAttribute) { - TableGeneratorAnnotation tableGeneratorResource = tableGenerator(resourcePersistentAttribute); - if (tableGeneratorResource == null) { - if (getTableGenerator() != null) { - setTableGenerator(null); - } - } - else { - if (getTableGenerator() == null) { - setTableGenerator(getJpaFactory().buildJavaTableGenerator(this)); - getTableGenerator().initializeFromResource(tableGeneratorResource); - } - else { - getTableGenerator().update(tableGeneratorResource); - } - } - } - - protected void updateSequenceGenerator(JavaResourcePersistentAttribute resourcePersistentAttribute) { - SequenceGeneratorAnnotation sequenceGeneratorResource = sequenceGenerator(resourcePersistentAttribute); - if (sequenceGeneratorResource == null) { - if (getSequenceGenerator() != null) { - setSequenceGenerator(null); - } - } - else { - if (getSequenceGenerator() == null) { - setSequenceGenerator(getJpaFactory().buildJavaSequenceGenerator(this)); - getSequenceGenerator().initializeFromResource(sequenceGeneratorResource); - } - else { - getSequenceGenerator().update(sequenceGeneratorResource); - } - } - } - - protected void updateGeneratedValue(JavaResourcePersistentAttribute resourcePersistentAttribute) { - GeneratedValueAnnotation generatedValueResource = generatedValue(resourcePersistentAttribute); - if (generatedValueResource == null) { - if (getGeneratedValue() != null) { - setGeneratedValue(null); - } - } - else { - if (getGeneratedValue() == null) { - setGeneratedValue(getJpaFactory().buildJavaGeneratedValue(this)); - getGeneratedValue().initializeFromResource(generatedValueResource); - } - else { - getGeneratedValue().update(generatedValueResource); - } - } - } - - protected TableGeneratorAnnotation tableGenerator(JavaResourcePersistentAttribute resourcePersistentAttribute) { - return (TableGeneratorAnnotation) resourcePersistentAttribute.getAnnotation(TableGeneratorAnnotation.ANNOTATION_NAME); - } - - protected SequenceGeneratorAnnotation sequenceGenerator(JavaResourcePersistentAttribute resourcePersistentAttribute) { - return (SequenceGeneratorAnnotation) resourcePersistentAttribute.getAnnotation(SequenceGeneratorAnnotation.ANNOTATION_NAME); - } - - protected GeneratedValueAnnotation generatedValue(JavaResourcePersistentAttribute resourcePersistentAttribute) { - return (GeneratedValueAnnotation) resourcePersistentAttribute.getAnnotation(GeneratedValueAnnotation.ANNOTATION_NAME); - } - - protected void updatePersistenceUnitGenerators() { - if (getTableGenerator() != null) { - getPersistenceUnit().addGenerator(getTableGenerator()); - } - - if (getSequenceGenerator() != null) { - getPersistenceUnit().addGenerator(getSequenceGenerator()); - } - } - - - // ************************************************************************* - - @Override - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - result = this.getColumn().javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - return null; - } - - @Override - public String getPrimaryKeyColumnName() { - return this.getColumn().getName(); - } - - @Override - public boolean isOverridableAttributeMapping() { - return true; - } - - @Override - public boolean isIdMapping() { - return true; - } - - //*********** Validation ************ - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - - addColumnMessages(messages, astRoot); - addGeneratedValueMessages(messages, astRoot); - addGeneratorMessages(messages, astRoot); - } - - protected void addColumnMessages(List<IMessage> messages, CompilationUnit astRoot) { - JavaColumn column = this.getColumn(); - String table = column.getTable(); - boolean doContinue = entityOwned() && column.connectionProfileIsActive(); - - if (doContinue && this.getTypeMapping().tableNameIsInvalid(table)) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.COLUMN_UNRESOLVED_TABLE, - new String[] {table, column.getName()}, - column, column.getTableTextRange(astRoot)) - ); - doContinue = false; - } - - if (doContinue && ! column.isResolved()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.COLUMN_UNRESOLVED_NAME, - new String[] {column.getName()}, - column, column.getNameTextRange(astRoot)) - ); - } - } - - protected void addGeneratedValueMessages(List<IMessage> messages, CompilationUnit astRoot) { - JavaGeneratedValue generatedValue = this.getGeneratedValue(); - if (generatedValue == null) { - return; - } - String generatorName = generatedValue.getGenerator(); - if (generatorName == null) { - return; - } - - for (Generator nextMasterGenerator : CollectionTools.iterable(getPersistenceUnit().allGenerators())) { - if (generatorName.equals(nextMasterGenerator.getName())) { - return; - } - } - - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.ID_MAPPING_UNRESOLVED_GENERATOR_NAME, - new String[] {generatorName}, - this, - generatedValue.getGeneratorTextRange(astRoot)) - ); - } - - protected void addGeneratorMessages(List<IMessage> messages, CompilationUnit astRoot) { - List<Generator> masterList = CollectionTools.list(getPersistenceUnit().allGenerators()); - - for (Iterator<JavaGenerator> stream = this.generators(); stream.hasNext() ; ) { - JavaGenerator current = stream.next(); - masterList.remove(current); - - for (Generator each : masterList) { - if (! each.overrides(current) && each.getName() != null && each.getName().equals(current.getName())) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.GENERATOR_DUPLICATE_NAME, - new String[] {current.getName()}, - current, - current.getNameTextRange(astRoot)) - ); - } - } - - masterList.add(current); - } - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaJoinColumn.java deleted file mode 100644 index 35d5029cef..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaJoinColumn.java +++ /dev/null @@ -1,195 +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.java; - -import java.util.Iterator; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.BaseJoinColumn; -import org.eclipse.jpt.core.context.RelationshipMapping; -import org.eclipse.jpt.core.context.java.JavaJoinColumn; -import org.eclipse.jpt.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.core.internal.context.MappingTools; -import org.eclipse.jpt.core.resource.java.JoinColumnAnnotation; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Column; -import org.eclipse.jpt.db.Table; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.StringTools; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; -import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; - - -public class GenericJavaJoinColumn extends AbstractJavaBaseColumn<JoinColumnAnnotation> implements JavaJoinColumn -{ - - protected String specifiedReferencedColumnName; - - protected String defaultReferencedColumnName; - - protected JoinColumnAnnotation joinColumn; - - public GenericJavaJoinColumn(JavaJpaContextNode parent, JavaJoinColumn.Owner owner) { - super(parent, owner); - } - - @Override - protected JoinColumnAnnotation getColumnResource() { - return this.joinColumn; - } - - public String getReferencedColumnName() { - return (this.specifiedReferencedColumnName == null) ? this.defaultReferencedColumnName : this.specifiedReferencedColumnName; - } - - public String getSpecifiedReferencedColumnName() { - return this.specifiedReferencedColumnName; - } - - public void setSpecifiedReferencedColumnName(String newSpecifiedReferencedColumnName) { - String oldSpecifiedReferencedColumnName = this.specifiedReferencedColumnName; - this.specifiedReferencedColumnName = newSpecifiedReferencedColumnName; - this.joinColumn.setReferencedColumnName(newSpecifiedReferencedColumnName); - firePropertyChanged(BaseJoinColumn.SPECIFIED_REFERENCED_COLUMN_NAME_PROPERTY, oldSpecifiedReferencedColumnName, newSpecifiedReferencedColumnName); - } - - protected void setSpecifiedReferencedColumnName_(String newSpecifiedReferencedColumnName) { - String oldSpecifiedReferencedColumnName = this.specifiedReferencedColumnName; - this.specifiedReferencedColumnName = newSpecifiedReferencedColumnName; - firePropertyChanged(BaseJoinColumn.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(BaseJoinColumn.DEFAULT_REFERENCED_COLUMN_NAME_PROPERTY, oldDefaultReferencedColumnName, newDefaultReferencedColumnName); - } - - - @Override - public JavaJoinColumn.Owner getOwner() { - return (JavaJoinColumn.Owner) super.getOwner(); - } - - public boolean isVirtual() { - return getOwner().isVirtual(this); - } - - public Table getDbReferencedColumnTable() { - return getOwner().getDbReferencedColumnTable(); - } - - public Column getDbReferencedColumn() { - Table table = this.getDbReferencedColumnTable(); - return (table == null) ? null : table.columnNamed(this.getReferencedColumnName()); - } - - @Override - public boolean tableIsAllowed() { - return this.getOwner().tableIsAllowed(); - } - - public boolean referencedColumnNameTouches(int pos, CompilationUnit astRoot) { - return getColumnResource().referencedColumnNameTouches(pos, astRoot); - } - - private Iterator<String> candidateReferencedColumnNames() { - Table table = this.getOwner().getDbReferencedColumnTable(); - return (table != null) ? table.columnNames() : EmptyIterator.<String> instance(); - } - - private Iterator<String> candidateReferencedColumnNames(Filter<String> filter) { - return new FilteringIterator<String, String>(this.candidateReferencedColumnNames(), filter); - } - - private Iterator<String> quotedCandidateReferencedColumnNames(Filter<String> filter) { - return StringTools.quote(this.candidateReferencedColumnNames(filter)); - } - - @Override - public Iterator<String> connectedJavaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.connectedJavaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - if (this.referencedColumnNameTouches(pos, astRoot)) { - return this.quotedCandidateReferencedColumnNames(filter); - } - return null; - } - - public boolean isReferencedColumnResolved() { - return getDbReferencedColumn() != null; - } - - public TextRange getReferencedColumnNameTextRange(CompilationUnit astRoot) { - TextRange textRange = getColumnResource().getReferencedColumnNameTextRange(astRoot); - return (textRange != null) ? textRange : getOwner().getValidationTextRange(astRoot); - } - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - // TODO Auto-generated method stub - return null; - } - - @Override - public void initializeFromResource(JoinColumnAnnotation joinColumn) { - this.joinColumn = joinColumn; - super.initializeFromResource(joinColumn); - this.specifiedReferencedColumnName = joinColumn.getReferencedColumnName(); - this.defaultReferencedColumnName = this.defaultReferencedColumnName(); - } - - @Override - public void update(JoinColumnAnnotation joinColumn) { - this.joinColumn = joinColumn; - super.update(joinColumn); - this.setSpecifiedReferencedColumnName_(joinColumn.getReferencedColumnName()); - this.setDefaultReferencedColumnName(this.defaultReferencedColumnName()); - } - - @Override - protected String defaultName() { - RelationshipMapping relationshipMapping = getOwner().getRelationshipMapping(); - if (relationshipMapping == null) { - return null; - } - if (!getOwner().getRelationshipMapping().isRelationshipOwner()) { - return null; - } - return MappingTools.buildJoinColumnDefaultName(this); - } - - protected String defaultReferencedColumnName() { - RelationshipMapping relationshipMapping = getOwner().getRelationshipMapping(); - if (relationshipMapping == null) { - return null; - } - if (!getOwner().getRelationshipMapping().isRelationshipOwner()) { - return null; - } - return MappingTools.buildJoinColumnDefaultReferencedColumnName(this); - } - - @Override - protected String defaultTable() { - RelationshipMapping relationshipMapping = getOwner().getRelationshipMapping(); - if (relationshipMapping == null) { - return null; - } - if (!getOwner().getRelationshipMapping().isRelationshipOwner()) { - return null; - } - return super.defaultTable(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaJoinTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaJoinTable.java deleted file mode 100644 index b759f0e36f..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaJoinTable.java +++ /dev/null @@ -1,739 +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.java; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.AttributeMapping; -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.NonOwningMapping; -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.java.JavaJoinColumn; -import org.eclipse.jpt.core.context.java.JavaJoinTable; -import org.eclipse.jpt.core.context.java.JavaRelationshipMapping; -import org.eclipse.jpt.core.internal.context.MappingTools; -import org.eclipse.jpt.core.internal.resource.java.NullJoinColumn; -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.JoinColumnAnnotation; -import org.eclipse.jpt.core.resource.java.JoinTableAnnotation; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.CollectionTools; -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; - -public class GenericJavaJoinTable extends AbstractJavaTable implements JavaJoinTable -{ - protected final List<JavaJoinColumn> specifiedJoinColumns; - - protected JavaJoinColumn defaultJoinColumn; - - protected final List<JavaJoinColumn> specifiedInverseJoinColumns; - - protected JavaJoinColumn defaultInverseJoinColumn; - - protected JavaResourcePersistentAttribute attributeResource; - - public GenericJavaJoinTable(JavaRelationshipMapping parent) { - super(parent); - this.specifiedJoinColumns = new ArrayList<JavaJoinColumn>(); - this.specifiedInverseJoinColumns = new ArrayList<JavaJoinColumn>(); - } - - @Override - public JavaRelationshipMapping getParent() { - return (JavaRelationshipMapping) super.getParent(); - } - - //******************* AbstractJavaTable implementation ***************** - - @Override - protected String getAnnotationName() { - return JoinTableAnnotation.ANNOTATION_NAME; - } - - /** - * Default join table name from the JPA spec: - * The concatenated names of the two associated primary - * entity tables, separated by a underscore. - * - * [owning table name]_[target table name] - */ - @Override - protected String defaultName() { - return MappingTools.buildJoinTableDefaultName(getRelationshipMapping()); - } - - @Override - protected String defaultCatalog() { - if (!getRelationshipMapping().isRelationshipOwner()) { - return null; - } - return super.defaultCatalog(); - } - - @Override - protected String defaultSchema() { - if (!getRelationshipMapping().isRelationshipOwner()) { - return null; - } - return super.defaultSchema(); - } - - @Override - protected JoinTableAnnotation getTableResource() { - return (JoinTableAnnotation) this.attributeResource.getNonNullAnnotation(JoinTableAnnotation.ANNOTATION_NAME); - } - - /** - * Return the join table java resource, null if the annotation does not exist. - * Use tableResource() if you want a non null implementation - */ - protected JoinTableAnnotation getJoinTableResource() { - return (JoinTableAnnotation) this.attributeResource.getAnnotation(JoinTableAnnotation.ANNOTATION_NAME); - } - - protected void addJoinTableResource() { - this.attributeResource.addAnnotation(JoinTableAnnotation.ANNOTATION_NAME); - } - - - //******************* IJoinTable implementation ***************** - - public ListIterator<JavaJoinColumn> joinColumns() { - return this.containsSpecifiedJoinColumns() ? this.specifiedJoinColumns() : this.defaultJoinColumns(); - } - - public int joinColumnsSize() { - return this.containsSpecifiedJoinColumns() ? this.specifiedJoinColumnsSize() : this.defaultJoinColumnsSize(); - } - - public JavaJoinColumn getDefaultJoinColumn() { - return this.defaultJoinColumn; - } - - protected void setDefaultJoinColumn(JavaJoinColumn newJoinColumn) { - JavaJoinColumn oldJoinColumn = this.defaultJoinColumn; - this.defaultJoinColumn = newJoinColumn; - firePropertyChanged(JoinTable.DEFAULT_JOIN_COLUMN, oldJoinColumn, newJoinColumn); - } - - protected ListIterator<JavaJoinColumn> defaultJoinColumns() { - if (this.defaultJoinColumn != null) { - return new SingleElementListIterator<JavaJoinColumn>(this.defaultJoinColumn); - } - return EmptyListIterator.instance(); - } - - protected int defaultJoinColumnsSize() { - return (this.defaultJoinColumn == null) ? 0 : 1; - } - - public ListIterator<JavaJoinColumn> specifiedJoinColumns() { - return new CloneListIterator<JavaJoinColumn>(this.specifiedJoinColumns); - } - - public int specifiedJoinColumnsSize() { - return this.specifiedJoinColumns.size(); - } - - public boolean containsSpecifiedJoinColumns() { - return !this.specifiedJoinColumns.isEmpty(); - } - - public JavaJoinColumn addSpecifiedJoinColumn(int index) { - JoinColumn oldDefaultJoinColumn = this.getDefaultJoinColumn(); - 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; - } - if (getJoinTableResource() == null) { - //Add the JoinTable before creating the specifiedJoinColumn. - //Otherwise we will remove it and create another during an update - //from the java resource model - addJoinTableResource(); - } - JavaJoinColumn joinColumn = getJpaFactory().buildJavaJoinColumn(this, createJoinColumnOwner()); - this.specifiedJoinColumns.add(index, joinColumn); - JoinColumnAnnotation joinColumnResource = this.getTableResource().addJoinColumn(index); - joinColumn.initializeFromResource(joinColumnResource); - this.fireItemAdded(JoinTable.SPECIFIED_JOIN_COLUMNS_LIST, index, joinColumn); - if (oldDefaultJoinColumn != null) { - this.firePropertyChanged(JoinTable.DEFAULT_JOIN_COLUMN, oldDefaultJoinColumn, null); - } - return joinColumn; - } - - protected void addSpecifiedJoinColumn(int index, JavaJoinColumn joinColumn) { - addItemToList(index, joinColumn, this.specifiedJoinColumns, JoinTable.SPECIFIED_JOIN_COLUMNS_LIST); - } - - public void removeSpecifiedJoinColumn(JoinColumn joinColumn) { - this.removeSpecifiedJoinColumn(this.specifiedJoinColumns.indexOf(joinColumn)); - } - - public void removeSpecifiedJoinColumn(int index) { - JavaJoinColumn 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(new NullJoinColumn(getTableResource())); - } - this.getTableResource().removeJoinColumn(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_(JavaJoinColumn joinColumn) { - removeItemFromList(joinColumn, this.specifiedJoinColumns, JoinTable.SPECIFIED_JOIN_COLUMNS_LIST); - } - - public void moveSpecifiedJoinColumn(int targetIndex, int sourceIndex) { - CollectionTools.move(this.specifiedJoinColumns, targetIndex, sourceIndex); - this.getTableResource().moveJoinColumn(targetIndex, sourceIndex); - fireItemMoved(JoinTable.SPECIFIED_JOIN_COLUMNS_LIST, targetIndex, sourceIndex); - } - - public ListIterator<JavaJoinColumn> inverseJoinColumns() { - return this.containsSpecifiedInverseJoinColumns() ? this.specifiedInverseJoinColumns() : this.defaultInverseJoinColumns(); - } - - public int inverseJoinColumnsSize() { - return this.containsSpecifiedInverseJoinColumns() ? this.specifiedInverseJoinColumnsSize() : this.defaultInverseJoinColumnsSize(); - } - - public JavaJoinColumn getDefaultInverseJoinColumn() { - return this.defaultInverseJoinColumn; - } - - protected void setDefaultInverseJoinColumn(JavaJoinColumn newInverseJoinColumn) { - JavaJoinColumn oldInverseJoinColumn = this.defaultInverseJoinColumn; - this.defaultInverseJoinColumn = newInverseJoinColumn; - firePropertyChanged(JoinTable.DEFAULT_INVERSE_JOIN_COLUMN, oldInverseJoinColumn, newInverseJoinColumn); - } - - protected ListIterator<JavaJoinColumn> defaultInverseJoinColumns() { - if (this.defaultInverseJoinColumn != null) { - return new SingleElementListIterator<JavaJoinColumn>(this.defaultInverseJoinColumn); - } - return EmptyListIterator.instance(); - } - - protected int defaultInverseJoinColumnsSize() { - return (this.defaultInverseJoinColumn == null) ? 0 : 1; - } - - public ListIterator<JavaJoinColumn> specifiedInverseJoinColumns() { - return new CloneListIterator<JavaJoinColumn>(this.specifiedInverseJoinColumns); - } - - public int specifiedInverseJoinColumnsSize() { - return this.specifiedInverseJoinColumns.size(); - } - - public boolean containsSpecifiedInverseJoinColumns() { - return !this.specifiedInverseJoinColumns.isEmpty(); - } - - public JavaJoinColumn addSpecifiedInverseJoinColumn(int index) { - JoinColumn oldDefaultInverseJoinColumn = this.getDefaultInverseJoinColumn(); - if (oldDefaultInverseJoinColumn != 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.defaultInverseJoinColumn = null; - } - if (getJoinTableResource() == null) { - //Add the JoinTable before creating the specifiedJoinColumn. - //Otherwise we will remove it and create another during an update - //from the java resource model - addJoinTableResource(); - } - JavaJoinColumn inverseJoinColumn = getJpaFactory().buildJavaJoinColumn(this, createInverseJoinColumnOwner()); - this.specifiedInverseJoinColumns.add(index, inverseJoinColumn); - JoinColumnAnnotation joinColumnResource = this.getTableResource().addInverseJoinColumn(index); - inverseJoinColumn.initializeFromResource(joinColumnResource); - this.fireItemAdded(JoinTable.SPECIFIED_INVERSE_JOIN_COLUMNS_LIST, index, inverseJoinColumn); - if (oldDefaultInverseJoinColumn != null) { - this.firePropertyChanged(JoinTable.DEFAULT_INVERSE_JOIN_COLUMN, oldDefaultInverseJoinColumn, null); - } - return inverseJoinColumn; - } - - protected void addSpecifiedInverseJoinColumn(int index, JavaJoinColumn inverseJoinColumn) { - addItemToList(index, inverseJoinColumn, this.specifiedInverseJoinColumns, JoinTable.SPECIFIED_INVERSE_JOIN_COLUMNS_LIST); - } - - public void removeSpecifiedInverseJoinColumn(JoinColumn inverseJoinColumn) { - this.removeSpecifiedInverseJoinColumn(this.specifiedInverseJoinColumns.indexOf(inverseJoinColumn)); - } - - public void removeSpecifiedInverseJoinColumn(int index) { - JavaJoinColumn removedJoinColumn = this.specifiedInverseJoinColumns.remove(index); - if (!containsSpecifiedInverseJoinColumns()) { - //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.defaultInverseJoinColumn = buildInverseJoinColumn(new NullJoinColumn(getTableResource())); - } - this.getTableResource().removeInverseJoinColumn(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_(JavaJoinColumn 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.getTableResource().moveInverseJoinColumn(targetIndex, sourceIndex); - fireItemMoved(JoinTable.SPECIFIED_INVERSE_JOIN_COLUMNS_LIST, targetIndex, sourceIndex); - } - - - public RelationshipMapping getRelationshipMapping() { - return this.getParent(); - } - - public boolean isSpecified() { - return getJoinTableResource() != null; - } - - @Override - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - for (JavaJoinColumn column : CollectionTools.iterable(this.joinColumns())) { - result = column.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - } - for (JavaJoinColumn column : CollectionTools.iterable(this.inverseJoinColumns())) { - result = column.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - } - return null; - } - - protected JavaJoinColumn.Owner createJoinColumnOwner() { - return new JoinColumnOwner(); - } - - protected JavaJoinColumn.Owner createInverseJoinColumnOwner() { - return new InverseJoinColumnOwner(); - } - - public void initializeFromResource(JavaResourcePersistentAttribute attributeResource) { - this.attributeResource = attributeResource; - JoinTableAnnotation joinTable = getTableResource(); - this.initializeFromResource(joinTable); - this.initializeSpecifiedJoinColumns(joinTable); - this.initializeDefaultJoinColumn(joinTable); - this.initializeSpecifiedInverseJoinColumns(joinTable); - this.initializeDefaultInverseJoinColumn(joinTable); - } - - protected void initializeSpecifiedJoinColumns(JoinTableAnnotation joinTableResource) { - ListIterator<JoinColumnAnnotation> annotations = joinTableResource.joinColumns(); - - while(annotations.hasNext()) { - this.specifiedJoinColumns.add(buildJoinColumn(annotations.next())); - } - } - - protected boolean shouldBuildDefaultJoinColumn() { - return !containsSpecifiedJoinColumns() && getRelationshipMapping().isRelationshipOwner(); - } - - protected void initializeDefaultJoinColumn(JoinTableAnnotation joinTable) { - if (!shouldBuildDefaultJoinColumn()) { - return; - } - this.defaultJoinColumn = buildJoinColumn(new NullJoinColumn(joinTable)); - } - - protected void initializeSpecifiedInverseJoinColumns(JoinTableAnnotation joinTableResource) { - ListIterator<JoinColumnAnnotation> annotations = joinTableResource.inverseJoinColumns(); - - while(annotations.hasNext()) { - this.specifiedInverseJoinColumns.add(buildInverseJoinColumn(annotations.next())); - } - } - - protected boolean shouldBuildDefaultInverseJoinColumn() { - return !containsSpecifiedInverseJoinColumns() && getRelationshipMapping().isRelationshipOwner(); - } - - protected void initializeDefaultInverseJoinColumn(JoinTableAnnotation joinTable) { - if (!shouldBuildDefaultInverseJoinColumn()) { - return; - } - this.defaultInverseJoinColumn = buildInverseJoinColumn(new NullJoinColumn(joinTable)); - } - - public void update(JavaResourcePersistentAttribute attributeResource) { - this.attributeResource = attributeResource; - JoinTableAnnotation joinTable = getTableResource(); - this.update(joinTable); - this.updateSpecifiedJoinColumns(joinTable); - this.updateDefaultJoinColumn(joinTable); - this.updateSpecifiedInverseJoinColumns(joinTable); - this.updateDefaultInverseJoinColumn(joinTable); - } - - protected void updateSpecifiedJoinColumns(JoinTableAnnotation joinTableResource) { - ListIterator<JavaJoinColumn> joinColumns = specifiedJoinColumns(); - ListIterator<JoinColumnAnnotation> resourceJoinColumns = joinTableResource.joinColumns(); - - while (joinColumns.hasNext()) { - JavaJoinColumn joinColumn = joinColumns.next(); - if (resourceJoinColumns.hasNext()) { - joinColumn.update(resourceJoinColumns.next()); - } - else { - removeSpecifiedJoinColumn_(joinColumn); - } - } - - while (resourceJoinColumns.hasNext()) { - addSpecifiedJoinColumn(specifiedJoinColumnsSize(), buildJoinColumn(resourceJoinColumns.next())); - } - } - - protected void updateDefaultJoinColumn(JoinTableAnnotation joinTable) { - if (!shouldBuildDefaultJoinColumn()) { - setDefaultJoinColumn(null); - return; - } - if (getDefaultJoinColumn() == null) { - this.setDefaultJoinColumn(buildJoinColumn(new NullJoinColumn(joinTable))); - } - else { - this.defaultJoinColumn.update(new NullJoinColumn(joinTable)); - } - } - - protected void updateSpecifiedInverseJoinColumns(JoinTableAnnotation joinTableResource) { - ListIterator<JavaJoinColumn> joinColumns = specifiedInverseJoinColumns(); - ListIterator<JoinColumnAnnotation> resourceJoinColumns = joinTableResource.inverseJoinColumns(); - - while (joinColumns.hasNext()) { - JavaJoinColumn joinColumn = joinColumns.next(); - if (resourceJoinColumns.hasNext()) { - joinColumn.update(resourceJoinColumns.next()); - } - else { - removeSpecifiedInverseJoinColumn_(joinColumn); - } - } - - while (resourceJoinColumns.hasNext()) { - addSpecifiedInverseJoinColumn(specifiedInverseJoinColumnsSize(), buildInverseJoinColumn(resourceJoinColumns.next())); - } - } - - protected void updateDefaultInverseJoinColumn(JoinTableAnnotation joinTable) { - if (!shouldBuildDefaultInverseJoinColumn()) { - setDefaultInverseJoinColumn(null); - return; - } - if (getDefaultInverseJoinColumn() == null) { - this.setDefaultInverseJoinColumn(buildInverseJoinColumn(new NullJoinColumn(joinTable))); - } - else { - this.defaultInverseJoinColumn.update(new NullJoinColumn(joinTable)); - } - } - - protected JavaJoinColumn buildJoinColumn(JoinColumnAnnotation joinColumnResource) { - JavaJoinColumn joinColumn = getJpaFactory().buildJavaJoinColumn(this, createJoinColumnOwner()); - joinColumn.initializeFromResource(joinColumnResource); - return joinColumn; - } - - protected JavaJoinColumn buildInverseJoinColumn(JoinColumnAnnotation joinColumnResource) { - JavaJoinColumn joinColumn = getJpaFactory().buildJavaJoinColumn(this, createInverseJoinColumnOwner()); - joinColumn.initializeFromResource(joinColumnResource); - return joinColumn; - } - - - //********************* validation ******************** - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - boolean doContinue = connectionProfileIsActive(); - String schema = getSchema(); - - if (doContinue && ! hasResolvedSchema()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_TABLE_UNRESOLVED_SCHEMA, - new String[] {schema, getName()}, - this, - getSchemaTextRange(astRoot)) - ); - doContinue = false; - } - - if (doContinue && !isResolved()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_TABLE_UNRESOLVED_NAME, - new String[] {getName()}, - this, - getNameTextRange(astRoot)) - ); - doContinue = false; - } - - for (Iterator<JavaJoinColumn> stream = joinColumns(); stream.hasNext(); ) { - JavaJoinColumn joinColumn = stream.next(); - - if (doContinue && ! joinColumn.isResolved()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_COLUMN_UNRESOLVED_NAME, - new String[] {joinColumn.getName()}, - joinColumn, joinColumn.getNameTextRange(astRoot)) - ); - } - - if (doContinue && ! joinColumn.isReferencedColumnResolved()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME, - new String[] {joinColumn.getReferencedColumnName(), joinColumn.getName()}, - joinColumn, joinColumn.getReferencedColumnNameTextRange(astRoot)) - ); - } - } - - for (Iterator<JavaJoinColumn> stream = inverseJoinColumns(); stream.hasNext(); ) { - JavaJoinColumn joinColumn = stream.next(); - - if (doContinue && ! joinColumn.isResolved()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_COLUMN_UNRESOLVED_NAME, - new String[] {joinColumn.getName()}, - joinColumn, joinColumn.getNameTextRange(astRoot)) - ); - } - - if (doContinue && ! joinColumn.isReferencedColumnResolved()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME, - new String[] {joinColumn.getReferencedColumnName(), joinColumn.getName()}, - joinColumn, joinColumn.getReferencedColumnNameTextRange(astRoot)) - ); - } - } - } - - /** - * just a little common behavior - */ - abstract class AbstractJoinColumnOwner implements JavaJoinColumn.Owner - { - AbstractJoinColumnOwner() { - super(); - } - - public TypeMapping getTypeMapping() { - return getRelationshipMapping().getTypeMapping(); - } - - public RelationshipMapping getRelationshipMapping() { - return GenericJavaJoinTable.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 (GenericJavaJoinTable.this.getName() == null) { - return null; - } - return (GenericJavaJoinTable.this.getName().equals(tableName)) ? GenericJavaJoinTable.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 GenericJavaJoinTable.this.getName(); - } - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - return GenericJavaJoinTable.this.getValidationTextRange(astRoot); - } - } - - - /** - * owner for "forward-pointer" JoinColumns; - * these point at the target/inverse entity - */ - class InverseJoinColumnOwner extends AbstractJoinColumnOwner - { - public InverseJoinColumnOwner() { - super(); - } - - public Entity getTargetEntity() { - return GenericJavaJoinTable.this.getRelationshipMapping().getResolvedTargetEntity(); - } - - public String getAttributeName() { - return GenericJavaJoinTable.this.getRelationshipMapping().getPersistentAttribute().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 getDbReferencedColumnTable() { - Entity targetEntity = getTargetEntity(); - return (targetEntity == null) ? null : targetEntity.getPrimaryDbTable(); - } - - public boolean isVirtual(BaseJoinColumn joinColumn) { - return GenericJavaJoinTable.this.defaultInverseJoinColumn == joinColumn; - } - - public String getDefaultColumnName() { - // TODO Auto-generated method stub - return null; - } - - public int joinColumnsSize() { - return GenericJavaJoinTable.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 GenericJavaJoinTable.this.getRelationshipMapping().getEntity(); - } - - public String getAttributeName() { - Entity targetEntity = GenericJavaJoinTable.this.getRelationshipMapping().getResolvedTargetEntity(); - if (targetEntity == null) { - return null; - } - String attributeName = GenericJavaJoinTable.this.getRelationshipMapping().getPersistentAttribute().getName(); - for (Iterator<PersistentAttribute> stream = targetEntity.getPersistentType().allAttributes(); stream.hasNext();) { - PersistentAttribute attribute = stream.next(); - AttributeMapping mapping = attribute.getMapping(); - if (mapping instanceof NonOwningMapping) { - String mappedBy = ((NonOwningMapping) mapping).getMappedBy(); - if ((mappedBy != null) && mappedBy.equals(attributeName)) { - return attribute.getName(); - } - } - } - return null; - } - - @Override - public org.eclipse.jpt.db.Table getDbTable(String tableName) { - org.eclipse.jpt.db.Table dbTable = super.getDbTable(tableName); - if (dbTable != null) { - return dbTable; - } - return getTypeMapping().getDbTable(tableName); - } - - public org.eclipse.jpt.db.Table getDbReferencedColumnTable() { - return getTypeMapping().getPrimaryDbTable(); - } - - public boolean isVirtual(BaseJoinColumn joinColumn) { - return GenericJavaJoinTable.this.defaultJoinColumn == joinColumn; - } - - public String getDefaultColumnName() { - // TODO Auto-generated method stub - return null; - } - - public int joinColumnsSize() { - return GenericJavaJoinTable.this.joinColumnsSize(); - } - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaManyToManyMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaManyToManyMapping.java deleted file mode 100644 index 3d9bf0eebe..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaManyToManyMapping.java +++ /dev/null @@ -1,83 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import java.util.Iterator; -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.AttributeMapping; -import org.eclipse.jpt.core.context.java.JavaManyToManyMapping; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.resource.java.JPA; -import org.eclipse.jpt.core.resource.java.ManyToManyAnnotation; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - - -public class GenericJavaManyToManyMapping extends AbstractJavaMultiRelationshipMapping<ManyToManyAnnotation> - implements JavaManyToManyMapping -{ - - public GenericJavaManyToManyMapping(JavaPersistentAttribute parent) { - super(parent); - } - - public String getKey() { - return MappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return ManyToManyAnnotation.ANNOTATION_NAME; - } - - public Iterator<String> correspondingAnnotationNames() { - return new ArrayIterator<String>( - JPA.ORDER_BY, - JPA.MAP_KEY, - JPA.JOIN_TABLE); - } - - // ********** JavaMultiRelationshipMapping implementation ********** - - @Override - protected boolean mappedByTouches(int pos, CompilationUnit astRoot) { - return this.getMappingResource().mappedByTouches(pos, astRoot); - } - - - @Override - protected void setMappedByOnResourceModel(String mappedBy) { - getMappingResource().setMappedBy(mappedBy); - } - - @Override - protected String mappedBy(ManyToManyAnnotation relationshipMapping) { - return relationshipMapping.getMappedBy(); - } - - // ********** INonOwningMapping implementation ********** - - public boolean mappedByIsValid(AttributeMapping mappedByMapping) { - String mappedByKey = mappedByMapping.getKey(); - return (mappedByKey == MappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY); - } - - @Override - public TextRange getMappedByTextRange(CompilationUnit astRoot) { - return this.getMappingResource().getMappedByTextRange(astRoot); - } - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaManyToOneMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaManyToOneMapping.java deleted file mode 100644 index c11ca44d2c..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaManyToOneMapping.java +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import java.util.Iterator; -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaManyToOneMapping; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.resource.java.JPA; -import org.eclipse.jpt.core.resource.java.ManyToOneAnnotation; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - -public class GenericJavaManyToOneMapping extends AbstractJavaSingleRelationshipMapping<ManyToOneAnnotation> - implements JavaManyToOneMapping -{ - - public GenericJavaManyToOneMapping(JavaPersistentAttribute parent) { - super(parent); - } - - public Iterator<String> correspondingAnnotationNames() { - return new ArrayIterator<String>( - JPA.JOIN_COLUMN, - JPA.JOIN_COLUMNS, - JPA.JOIN_TABLE); - } - - public String getAnnotationName() { - return ManyToOneAnnotation.ANNOTATION_NAME; - } - - public String getKey() { - return MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY; - } - - @Override - public boolean isOverridableAssociationMapping() { - return true; - } - - @Override - protected void setOptionalOnResourceModel(Boolean newOptional) { - this.getMappingResource().setOptional(newOptional); - } - - @Override - protected Boolean specifiedOptional(ManyToOneAnnotation relationshipMapping) { - return relationshipMapping.getOptional(); - } - - //ManyToOne mapping is always the owning side - public boolean isRelationshipOwner() { - return true; - } - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaMappedSuperclass.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaMappedSuperclass.java deleted file mode 100644 index 240ee74e52..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaMappedSuperclass.java +++ /dev/null @@ -1,170 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import java.util.Iterator; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.IdClass; -import org.eclipse.jpt.core.context.java.JavaMappedSuperclass; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.context.java.JavaPersistentType; -import org.eclipse.jpt.core.resource.java.IdClassAnnotation; -import org.eclipse.jpt.core.resource.java.JPA; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; -import org.eclipse.jpt.core.resource.java.MappedSuperclassAnnotation; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; -import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; -import org.eclipse.jpt.utility.internal.iterators.TransformationIterator; - -public class GenericJavaMappedSuperclass extends AbstractJavaTypeMapping - implements JavaMappedSuperclass -{ - - protected String idClass; - - public GenericJavaMappedSuperclass(JavaPersistentType parent) { - super(parent); - } - - public boolean isMapped() { - return true; - } - - public String getKey() { - return MappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY; - } - - public String getAnnotationName() { - return MappedSuperclassAnnotation.ANNOTATION_NAME; - } - - public Iterator<String> correspondingAnnotationNames() { - return new ArrayIterator<String>( - JPA.ID_CLASS, - JPA.EXCLUDE_DEFAULT_LISTENERS, - JPA.EXCLUDE_SUPERCLASS_LISTENERS, - JPA.ENTITY_LISTENERS, - JPA.PRE_PERSIST, - JPA.POST_PERSIST, - JPA.PRE_REMOVE, - JPA.POST_REMOVE, - JPA.PRE_UPDATE, - JPA.POST_UPDATE, - JPA.POST_LOAD); - } - - public String getIdClass() { - return this.idClass; - } - - public void setIdClass(String newIdClass) { - String oldIdClass = this.idClass; - this.idClass = newIdClass; - if (newIdClass != oldIdClass) { - if (newIdClass != null) { - if (getIdClassResource() == null) { - addIdClassResource(); - } - getIdClassResource().setValue(newIdClass); - } - else { - removeIdClassResource(); - } - } - firePropertyChanged(IdClass.ID_CLASS_PROPERTY, oldIdClass, newIdClass); - } - - protected void setIdClass_(String newIdClass) { - String oldIdClass = this.idClass; - this.idClass = newIdClass; - firePropertyChanged(IdClass.ID_CLASS_PROPERTY, oldIdClass, newIdClass); - } - - protected IdClassAnnotation getIdClassResource() { - return (IdClassAnnotation) this.javaResourcePersistentType.getAnnotation(IdClassAnnotation.ANNOTATION_NAME); - } - - protected void addIdClassResource() { - this.javaResourcePersistentType.addAnnotation(IdClassAnnotation.ANNOTATION_NAME); - } - - protected void removeIdClassResource() { - this.javaResourcePersistentType.removeAnnotation(IdClassAnnotation.ANNOTATION_NAME); - } - - @Override - public Iterator<String> overridableAttributeNames() { - return this.namesOf(this.overridableAttributes()); - } - - @Override - public Iterator<JavaPersistentAttribute> overridableAttributes() { - return new FilteringIterator<JavaPersistentAttribute, JavaPersistentAttribute>(this.getPersistentType().attributes()) { - @Override - protected boolean accept(JavaPersistentAttribute o) { - return o.isOverridableAttribute(); - } - }; - } - - @Override - public Iterator<String> overridableAssociationNames() { - return this.namesOf(this.overridableAssociations()); - } - - @Override - public Iterator<JavaPersistentAttribute> overridableAssociations() { - return new FilteringIterator<JavaPersistentAttribute, JavaPersistentAttribute>(this.getPersistentType().attributes()) { - @Override - protected boolean accept(JavaPersistentAttribute o) { - return o.isOverridableAssociation(); - } - }; - } - - protected Iterator<String> namesOf(Iterator<JavaPersistentAttribute> attributes) { - return new TransformationIterator<JavaPersistentAttribute, String>(attributes) { - @Override - protected String transform(JavaPersistentAttribute attribute) { - return attribute.getName(); - } - }; - } - - @Override - public void initializeFromResource(JavaResourcePersistentType persistentTypeResource) { - super.initializeFromResource(persistentTypeResource); - this.initializeIdClass(persistentTypeResource); - } - - protected void initializeIdClass(JavaResourcePersistentType typeResource) { - IdClassAnnotation idClassResource = (IdClassAnnotation) typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME); - if (idClassResource != null) { - this.idClass = idClassResource.getValue(); - } - } - - @Override - public void update(JavaResourcePersistentType persistentTypeResource) { - super.update(persistentTypeResource); - this.updateIdClass(persistentTypeResource); - } - - protected void updateIdClass(JavaResourcePersistentType typeResource) { - IdClassAnnotation idClass = (IdClassAnnotation) typeResource.getAnnotation(IdClassAnnotation.ANNOTATION_NAME); - if (idClass != null) { - setIdClass_(idClass.getValue()); - } - else { - setIdClass_(null); - } - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaNamedNativeQuery.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaNamedNativeQuery.java deleted file mode 100644 index 6b84edd515..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaNamedNativeQuery.java +++ /dev/null @@ -1,81 +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.java; - -import org.eclipse.jpt.core.context.NamedNativeQuery; -import org.eclipse.jpt.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.core.context.java.JavaNamedNativeQuery; -import org.eclipse.jpt.core.resource.java.NamedNativeQueryAnnotation; - - -public class GenericJavaNamedNativeQuery extends AbstractJavaQuery - implements JavaNamedNativeQuery -{ - - protected String resultClass; - - protected String resultSetMapping; - - public GenericJavaNamedNativeQuery(JavaJpaContextNode parent) { - super(parent); - } - - @Override - protected NamedNativeQueryAnnotation getQueryResource() { - return (NamedNativeQueryAnnotation) super.getQueryResource(); - } - - public String getResultClass() { - return this.resultClass; - } - - public void setResultClass(String newResultClass) { - String oldResultClass = this.resultClass; - this.resultClass = newResultClass; - getQueryResource().setResultClass(newResultClass); - firePropertyChanged(NamedNativeQuery.RESULT_CLASS_PROPERTY, oldResultClass, newResultClass); - } - - protected void setResultClass_(String newResultClass) { - String oldResultClass = this.resultClass; - this.resultClass = 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; - getQueryResource().setResultSetMapping(newResultSetMapping); - firePropertyChanged(NamedNativeQuery.RESULT_SET_MAPPING_PROPERTY, oldResultSetMapping, newResultSetMapping); - } - - protected void setResultSetMapping_(String newResultSetMapping) { - String oldResultSetMapping = this.resultSetMapping; - this.resultSetMapping = newResultSetMapping; - firePropertyChanged(NamedNativeQuery.RESULT_SET_MAPPING_PROPERTY, oldResultSetMapping, newResultSetMapping); - } - - public void initializeFromResource(NamedNativeQueryAnnotation queryResource) { - super.initializeFromResource(queryResource); - this.resultClass = queryResource.getResultClass(); - this.resultSetMapping = queryResource.getResultSetMapping(); - } - - public void update(NamedNativeQueryAnnotation queryResource) { - super.update(queryResource); - this.setResultClass_(queryResource.getResultClass()); - this.setResultSetMapping_(queryResource.getResultSetMapping()); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaNamedQuery.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaNamedQuery.java deleted file mode 100644 index 9b834036b9..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaNamedQuery.java +++ /dev/null @@ -1,37 +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.java; - -import org.eclipse.jpt.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.core.context.java.JavaNamedQuery; -import org.eclipse.jpt.core.resource.java.NamedQueryAnnotation; - - - -public class GenericJavaNamedQuery extends AbstractJavaQuery implements JavaNamedQuery -{ - - public GenericJavaNamedQuery(JavaJpaContextNode parent) { - super(parent); - } - - @Override - protected NamedQueryAnnotation getQueryResource() { - return (NamedQueryAnnotation) super.getQueryResource(); - } - - public void initializeFromResource(NamedQueryAnnotation queryResource) { - super.initializeFromResource(queryResource); - } - - public void update(NamedQueryAnnotation queryResource) { - super.update(queryResource); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaNullAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaNullAttributeMapping.java deleted file mode 100644 index badb692ade..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaNullAttributeMapping.java +++ /dev/null @@ -1,50 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import java.util.Iterator; -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.resource.java.JavaResourceNode; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - - - -public class GenericJavaNullAttributeMapping extends AbstractJavaAttributeMapping<JavaResourceNode> -{ - public GenericJavaNullAttributeMapping(JavaPersistentAttribute parent) { - super(parent); - } - - public String getKey() { - return MappingKeys.NULL_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return null; - } - - public Iterator<String> correspondingAnnotationNames() { - return EmptyIterator.instance(); - } - - @Override - protected JavaResourceNode getMappingResource() { - return null; - } - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaOneToManyMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaOneToManyMapping.java deleted file mode 100644 index d5682df714..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaOneToManyMapping.java +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import java.util.Iterator; -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.AttributeMapping; -import org.eclipse.jpt.core.context.java.JavaOneToManyMapping; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.resource.java.JPA; -import org.eclipse.jpt.core.resource.java.OneToManyAnnotation; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - - -public class GenericJavaOneToManyMapping extends AbstractJavaMultiRelationshipMapping<OneToManyAnnotation> - implements JavaOneToManyMapping -{ - - public GenericJavaOneToManyMapping(JavaPersistentAttribute parent) { - super(parent); - } - - public Iterator<String> correspondingAnnotationNames() { - return new ArrayIterator<String>( - JPA.ORDER_BY, - JPA.MAP_KEY, - JPA.JOIN_TABLE, - JPA.JOIN_COLUMN, - JPA.JOIN_COLUMNS); - } - - - public String getKey() { - return MappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return OneToManyAnnotation.ANNOTATION_NAME; - } - - // ********** JavaMultiRelationshipMapping implementation ********** - - @Override - protected boolean mappedByTouches(int pos, CompilationUnit astRoot) { - return this.getMappingResource().mappedByTouches(pos, astRoot); - } - - @Override - protected void setMappedByOnResourceModel(String mappedBy) { - this.getMappingResource().setMappedBy(mappedBy); - } - - @Override - protected String mappedBy(OneToManyAnnotation relationshipMapping) { - return relationshipMapping.getMappedBy(); - } - - - // ********** INonOwningMapping implementation ********** - public boolean mappedByIsValid(AttributeMapping mappedByMapping) { - String mappedByKey = mappedByMapping.getKey(); - return (mappedByKey == MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY); - } - - @Override - public TextRange getMappedByTextRange(CompilationUnit astRoot) { - return this.getMappingResource().getMappedByTextRange(astRoot); - } - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaOneToOneMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaOneToOneMapping.java deleted file mode 100644 index 3b4581b171..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaOneToOneMapping.java +++ /dev/null @@ -1,308 +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.java; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.AttributeMapping; -import org.eclipse.jpt.core.context.Entity; -import org.eclipse.jpt.core.context.NonOwningMapping; -import org.eclipse.jpt.core.context.OneToOneMapping; -import org.eclipse.jpt.core.context.PersistentAttribute; -import org.eclipse.jpt.core.context.PrimaryKeyJoinColumn; -import org.eclipse.jpt.core.context.java.JavaOneToOneMapping; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.context.java.JavaPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.java.JPA; -import org.eclipse.jpt.core.resource.java.JavaResourceNode; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.core.resource.java.OneToOneAnnotation; -import org.eclipse.jpt.core.resource.java.PrimaryKeyJoinColumnAnnotation; -import org.eclipse.jpt.core.resource.java.PrimaryKeyJoinColumns; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - -public class GenericJavaOneToOneMapping extends AbstractJavaSingleRelationshipMapping<OneToOneAnnotation> - implements JavaOneToOneMapping -{ - protected String mappedBy; - - protected final List<JavaPrimaryKeyJoinColumn> primaryKeyJoinColumns; - - public GenericJavaOneToOneMapping(JavaPersistentAttribute parent) { - super(parent); - this.primaryKeyJoinColumns = new ArrayList<JavaPrimaryKeyJoinColumn>(); - } - - public Iterator<String> correspondingAnnotationNames() { - return new ArrayIterator<String>( - JPA.PRIMARY_KEY_JOIN_COLUMN, - JPA.PRIMARY_KEY_JOIN_COLUMNS, - JPA.JOIN_COLUMN, - JPA.JOIN_COLUMNS, - JPA.JOIN_TABLE); - } - - public String getAnnotationName() { - return OneToOneAnnotation.ANNOTATION_NAME; - } - - public String getKey() { - return MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY; - } - - public boolean isRelationshipOwner() { - return getMappedBy() == null; - } - - - public ListIterator<JavaPrimaryKeyJoinColumn> primaryKeyJoinColumns() { - return new CloneListIterator<JavaPrimaryKeyJoinColumn>(this.primaryKeyJoinColumns); - } - - public int primaryKeyJoinColumnsSize() { - return this.primaryKeyJoinColumns.size(); - } - - public JavaPrimaryKeyJoinColumn addPrimaryKeyJoinColumn(int index) { - JavaPrimaryKeyJoinColumn pkJoinColumn = getJpaFactory().buildJavaPrimaryKeyJoinColumn(this, createJoinColumnOwner()); - this.primaryKeyJoinColumns.add(index, pkJoinColumn); - PrimaryKeyJoinColumnAnnotation pkJoinColumnResource = (PrimaryKeyJoinColumnAnnotation) getResourcePersistentAttribute().addAnnotation(index, PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME, PrimaryKeyJoinColumns.ANNOTATION_NAME); - pkJoinColumn.initializeFromResource(pkJoinColumnResource); - this.fireItemAdded(OneToOneMapping.PRIMAY_KEY_JOIN_COLUMNS_LIST, index, pkJoinColumn); - return pkJoinColumn; - } - - protected void addPrimaryKeyJoinColumn(int index, JavaPrimaryKeyJoinColumn joinColumn) { - addItemToList(index, joinColumn, this.primaryKeyJoinColumns, OneToOneMapping.PRIMAY_KEY_JOIN_COLUMNS_LIST); - } - - public void removePrimaryKeyJoinColumn(PrimaryKeyJoinColumn pkJoinColumn) { - this.removePrimaryKeyJoinColumn(this.primaryKeyJoinColumns.indexOf(pkJoinColumn)); - } - - public void removePrimaryKeyJoinColumn(int index) { - JavaPrimaryKeyJoinColumn removedPkJoinColumn = this.primaryKeyJoinColumns.remove(index); - getResourcePersistentAttribute().removeAnnotation(index, PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME, PrimaryKeyJoinColumns.ANNOTATION_NAME); - fireItemRemoved(OneToOneMapping.PRIMAY_KEY_JOIN_COLUMNS_LIST, index, removedPkJoinColumn); - } - - protected void removePrimaryKeyJoinColumn_(JavaPrimaryKeyJoinColumn joinColumn) { - removeItemFromList(joinColumn, this.primaryKeyJoinColumns, OneToOneMapping.PRIMAY_KEY_JOIN_COLUMNS_LIST); - } - - public void movePrimaryKeyJoinColumn(int targetIndex, int sourceIndex) { - CollectionTools.move(this.primaryKeyJoinColumns, targetIndex, sourceIndex); - getResourcePersistentAttribute().move(targetIndex, sourceIndex, PrimaryKeyJoinColumns.ANNOTATION_NAME); - fireItemMoved(OneToOneMapping.PRIMAY_KEY_JOIN_COLUMNS_LIST, targetIndex, sourceIndex); - } - - public boolean containsPrimaryKeyJoinColumns() { - return !this.primaryKeyJoinColumns.isEmpty(); - } - - public String getMappedBy() { - return this.mappedBy; - } - - public void setMappedBy(String newMappedBy) { - String oldMappedBy = this.mappedBy; - this.mappedBy = newMappedBy; - this.getMappingResource().setMappedBy(newMappedBy); - firePropertyChanged(NonOwningMapping.MAPPED_BY_PROPERTY, oldMappedBy, newMappedBy); - } - - protected void setMappedBy_(String newMappedBy) { - String oldMappedBy = this.mappedBy; - this.mappedBy = newMappedBy; - firePropertyChanged(NonOwningMapping.MAPPED_BY_PROPERTY, oldMappedBy, newMappedBy); - } - - public boolean mappedByIsValid(AttributeMapping mappedByMapping) { - String mappedByKey = mappedByMapping.getKey(); - return (mappedByKey == MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY); - } - - @Override - protected void setOptionalOnResourceModel(Boolean newOptional) { - this.getMappingResource().setOptional(newOptional); - } - - public TextRange getMappedByTextRange(CompilationUnit astRoot) { - return this.getMappingResource().getMappedByTextRange(astRoot); - } - - public boolean mappedByTouches(int pos, CompilationUnit astRoot) { - return this.getMappingResource().mappedByTouches(pos, astRoot); - } - - @Override - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - if (this.mappedByTouches(pos, astRoot)) { - return this.quotedCandidateMappedByAttributeNames(filter); - } - return null; - } - - @Override - public boolean isOverridableAssociationMapping() { - return true; - } - - @Override - protected void initialize(OneToOneAnnotation oneToOneResource) { - super.initialize(oneToOneResource); - this.mappedBy = oneToOneResource.getMappedBy(); - } - - @Override - protected Boolean specifiedOptional(OneToOneAnnotation oneToOneResource) { - return oneToOneResource.getOptional(); - } - - - @Override - public void initializeFromResource(JavaResourcePersistentAttribute resourcePersistentAttribute) { - super.initializeFromResource(resourcePersistentAttribute); - this.initializePrimaryKeyJoinColumns(resourcePersistentAttribute); - } - - protected void initializePrimaryKeyJoinColumns(JavaResourcePersistentAttribute resourcePersistentAttribute) { - ListIterator<JavaResourceNode> annotations = resourcePersistentAttribute.annotations(PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME, PrimaryKeyJoinColumns.ANNOTATION_NAME); - - while(annotations.hasNext()) { - this.primaryKeyJoinColumns.add(buildPrimaryKeyJoinColumn((PrimaryKeyJoinColumnAnnotation) annotations.next())); - } - } - - protected JavaPrimaryKeyJoinColumn buildPrimaryKeyJoinColumn(PrimaryKeyJoinColumnAnnotation primaryKeyJoinColumnResource) { - JavaPrimaryKeyJoinColumn pkJoinColumn = getJpaFactory().buildJavaPrimaryKeyJoinColumn(this, createJoinColumnOwner()); - pkJoinColumn.initializeFromResource(primaryKeyJoinColumnResource); - return pkJoinColumn; - } - - @Override - protected void update(OneToOneAnnotation oneToOneResource) { - super.update(oneToOneResource); - this.setMappedBy_(oneToOneResource.getMappedBy()); - } - - @Override - public void update(JavaResourcePersistentAttribute resourcePersistentAttribute) { - super.update(resourcePersistentAttribute); - this.updatePrimaryKeyJoinColumns(resourcePersistentAttribute); - } - - protected void updatePrimaryKeyJoinColumns(JavaResourcePersistentAttribute resourcePersistentAttribute) { - ListIterator<JavaPrimaryKeyJoinColumn> pkJoinColumns = primaryKeyJoinColumns(); - ListIterator<JavaResourceNode> resourcePkJoinColumns = resourcePersistentAttribute.annotations(PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME, PrimaryKeyJoinColumns.ANNOTATION_NAME); - - while (pkJoinColumns.hasNext()) { - JavaPrimaryKeyJoinColumn pkJoinColumn = pkJoinColumns.next(); - if (resourcePkJoinColumns.hasNext()) { - pkJoinColumn.update((PrimaryKeyJoinColumnAnnotation) resourcePkJoinColumns.next()); - } - else { - removePrimaryKeyJoinColumn_(pkJoinColumn); - } - } - - while (resourcePkJoinColumns.hasNext()) { - addPrimaryKeyJoinColumn(specifiedJoinColumnsSize(), buildPrimaryKeyJoinColumn((PrimaryKeyJoinColumnAnnotation) resourcePkJoinColumns.next())); - } - } - - - - //***************** Validation *********************************** - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - - if (this.getMappedBy() != null) { - addMappedByMessages(messages ,astRoot); - } - } - - @Override - protected boolean addJoinColumnMessages() { - if (containsPrimaryKeyJoinColumns() && !containsSpecifiedJoinColumns()) { - return false; - } - return super.addJoinColumnMessages(); - } - - protected void addMappedByMessages(List<IMessage> messages, CompilationUnit astRoot) { - String mappedBy = this.getMappedBy(); - Entity targetEntity = this.getResolvedTargetEntity(); - - if (targetEntity == null) { - // already have validation messages for that - return; - } - - PersistentAttribute attribute = targetEntity.getPersistentType().resolveAttribute(mappedBy); - - if (attribute == null) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.MAPPING_UNRESOLVED_MAPPED_BY, - new String[] {mappedBy}, - this, this.getMappedByTextRange(astRoot)) - ); - return; - } - - if (! this.mappedByIsValid(attribute.getMapping())) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.MAPPING_INVALID_MAPPED_BY, - new String[] {mappedBy}, - this, this.getMappedByTextRange(astRoot)) - ); - return; - } - - NonOwningMapping mappedByMapping; - try { - mappedByMapping = (NonOwningMapping) attribute.getMapping(); - } catch (ClassCastException cce) { - // there is no error then - return; - } - - if (mappedByMapping.getMappedBy() != null) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.MAPPING_MAPPED_BY_ON_BOTH_SIDES, - this, this.getMappedByTextRange(astRoot)) - ); - } - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaPersistentAttribute.java deleted file mode 100644 index 7c0cfcd257..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaPersistentAttribute.java +++ /dev/null @@ -1,328 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.JpaStructureNode; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.PersistentAttribute; -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.java.JavaStructureNodes; -import org.eclipse.jpt.core.context.java.JavaTypeMapping; -import org.eclipse.jpt.core.internal.utility.jdt.JDTTools; -import org.eclipse.jpt.core.resource.java.Annotation; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - -public class GenericJavaPersistentAttribute extends AbstractJavaJpaContextNode - implements JavaPersistentAttribute -{ - protected String name; - - protected JavaAttributeMapping defaultMapping; - - protected JavaAttributeMapping specifiedMapping; - - protected JavaResourcePersistentAttribute resourcePersistentAttribute; - - public GenericJavaPersistentAttribute(JavaPersistentType parent) { - super(parent); - } - - public String getId() { - return JavaStructureNodes.PERSISTENT_ATTRIBUTE_ID; - } - - public void initializeFromResource(JavaResourcePersistentAttribute persistentAttributeResource) { - this.resourcePersistentAttribute = persistentAttributeResource; - this.name = this.name(persistentAttributeResource); - initializeDefaultMapping(persistentAttributeResource); - initializeSpecifiedMapping(persistentAttributeResource); - } - - protected void initializeDefaultMapping(JavaResourcePersistentAttribute persistentAttributeResource) { - this.defaultMapping = getJpaPlatform().buildDefaultJavaAttributeMapping(this); - this.defaultMapping.initializeFromResource(persistentAttributeResource); - } - - protected void initializeSpecifiedMapping(JavaResourcePersistentAttribute persistentAttributeResource) { - String javaMappingAnnotationName = this.javaMappingAnnotationName(persistentAttributeResource); - this.specifiedMapping = createJavaAttributeMappingFromAnnotation(javaMappingAnnotationName, persistentAttributeResource); - } - - public JavaResourcePersistentAttribute getResourcePersistentAttribute() { - return this.resourcePersistentAttribute; - } - - public JavaPersistentType getPersistentType() { - return (JavaPersistentType) this.getParent(); - } - - public JavaTypeMapping getTypeMapping() { - return this.getPersistentType().getMapping(); - } - - public String getPrimaryKeyColumnName() { - return this.getMapping().getPrimaryKeyColumnName(); - } - - public boolean isOverridableAttribute() { - return this.getMapping().isOverridableAttributeMapping(); - } - - public boolean isOverridableAssociation() { - return this.getMapping().isOverridableAssociationMapping(); - } - - public boolean isIdAttribute() { - return this.getMapping().isIdMapping(); - } - - public boolean isVirtual() { - return false; - } - - public String getName() { - return this.name; - } - - protected void setName(String newName) { - String oldName = this.name; - this.name = newName; - firePropertyChanged(NAME_PROPERTY, oldName, newName); - } - - public JavaAttributeMapping getDefaultMapping() { - return this.defaultMapping; - } - - /** - * clients do not set the "default" mapping - */ - protected void setDefaultMapping(JavaAttributeMapping newDefaultMapping) { - JavaAttributeMapping oldMapping = this.defaultMapping; - this.defaultMapping = newDefaultMapping; - firePropertyChanged(PersistentAttribute.DEFAULT_MAPPING_PROPERTY, oldMapping, newDefaultMapping); - } - - public JavaAttributeMapping getSpecifiedMapping() { - return this.specifiedMapping; - } - - /** - * clients do not set the "specified" mapping; - * use #setMappingKey(String) - */ - protected void setSpecifiedMapping(JavaAttributeMapping newSpecifiedMapping) { - JavaAttributeMapping oldMapping = this.specifiedMapping; - this.specifiedMapping = newSpecifiedMapping; - firePropertyChanged(PersistentAttribute.SPECIFIED_MAPPING_PROPERTY, oldMapping, newSpecifiedMapping); - } - - - public JavaAttributeMapping getMapping() { - return (this.specifiedMapping != null) ? this.specifiedMapping : this.defaultMapping; - } - - public String getMappingKey() { - return this.getMapping().getKey(); - } - - /** - * return null if there is no "default" mapping for the attribute - */ - public String getDefaultMappingKey() { - return this.defaultMapping.getKey(); - } - - /** - * return null if there is no "specified" mapping for the attribute - */ - public String getSpecifiedMappingKey() { - return (this.specifiedMapping == null) ? null : this.specifiedMapping.getKey(); - } - - // TODO support morphing mappings, i.e. copying common settings over - // to the new mapping; this can't be done in the same was as XmlAttributeMapping - // since we don't know all the possible mapping types - public void setSpecifiedMappingKey(String newKey) { - if (newKey == getSpecifiedMappingKey()) { - return; - } - JavaAttributeMapping oldMapping = getMapping(); - JavaAttributeMapping newMapping = createJavaAttributeMappingFromMappingKey(newKey); - - this.specifiedMapping = newMapping; - if (newMapping != null) { - this.resourcePersistentAttribute.setMappingAnnotation(newMapping.getAnnotationName()); - } - else { - this.resourcePersistentAttribute.setMappingAnnotation(null); - } - firePropertyChanged(PersistentAttribute.SPECIFIED_MAPPING_PROPERTY, oldMapping, newMapping); - - if (oldMapping != null) { - Collection<String> annotationsToRemove = CollectionTools.collection(oldMapping.correspondingAnnotationNames()); - if (getMapping() != null) { - CollectionTools.removeAll(annotationsToRemove, getMapping().correspondingAnnotationNames()); - } - - for (String annotationName : annotationsToRemove) { - this.resourcePersistentAttribute.removeAnnotation(annotationName); - } - } - } - - public JpaStructureNode getStructureNode(int textOffset) { - return this; - } - - public boolean contains(int offset, CompilationUnit astRoot) { - TextRange fullTextRange = this.getFullTextRange(astRoot); - // 'fullTextRange' will be null if the attribute no longer exists in the java; - // the context model can be out of synch with the resource model - // when a selection event occurs before the context model has a - // chance to synch with the resource model via the update thread - return (fullTextRange == null) ? false : fullTextRange.includes(offset); - } - - - public TextRange getFullTextRange(CompilationUnit astRoot) { - return this.resourcePersistentAttribute.getTextRange(astRoot); - } - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - return this.getSelectionTextRange(astRoot); - } - - public TextRange getSelectionTextRange(CompilationUnit astRoot) { - return this.resourcePersistentAttribute.getNameTextRange(astRoot); - } - - public TextRange getSelectionTextRange() { - return getSelectionTextRange(this.buildASTRoot()); - } - - protected CompilationUnit buildASTRoot() { - return JDTTools.buildASTRoot(this.resourcePersistentAttribute.getJpaCompilationUnit().getCompilationUnit()); - } - - public void update(JavaResourcePersistentAttribute jrpa) { - this.resourcePersistentAttribute = jrpa; - this.setName(this.name(jrpa)); - this.updateDefaultMapping(jrpa); - this.updateSpecifiedMapping(jrpa); - } - - protected String name(JavaResourcePersistentAttribute jrpa) { - return jrpa.getName(); - } - - public String specifiedMappingAnnotationName() { - return (this.specifiedMapping == null) ? null : this.specifiedMapping.getAnnotationName(); - } - - protected void updateSpecifiedMapping(JavaResourcePersistentAttribute jrpa) { - String javaMappingAnnotationName = this.javaMappingAnnotationName(jrpa); - if (specifiedMappingAnnotationName() != javaMappingAnnotationName) { - setSpecifiedMapping(createJavaAttributeMappingFromAnnotation(javaMappingAnnotationName, jrpa)); - } - else { - if (getSpecifiedMapping() != null) { - getSpecifiedMapping().update(jrpa); - } - } - } - - protected void updateDefaultMapping(JavaResourcePersistentAttribute jrpa) { - String defaultMappingKey = getJpaPlatform().defaultJavaAttributeMappingKey(this); - if (getDefaultMapping().getKey() != defaultMappingKey) { - JavaAttributeMapping oldDefaultMapping = this.defaultMapping; - this.defaultMapping = getJpaPlatform().buildDefaultJavaAttributeMapping(this); - this.defaultMapping.initializeFromResource(jrpa); - firePropertyChanged(PersistentAttribute.DEFAULT_MAPPING_PROPERTY, oldDefaultMapping, this.defaultMapping); - } - else { - getDefaultMapping().update(jrpa); - } - } - - protected String javaMappingAnnotationName(JavaResourcePersistentAttribute jrpa) { - Annotation mappingAnnotation = (Annotation) jrpa.getMappingAnnotation(); - if (mappingAnnotation != null) { - return mappingAnnotation.getAnnotationName(); - } - return null; - } - - protected JavaAttributeMapping createJavaAttributeMappingFromMappingKey(String key) { - if (key == MappingKeys.NULL_ATTRIBUTE_MAPPING_KEY) { - return null; - } - return getJpaPlatform().buildJavaAttributeMappingFromMappingKey(key, this); - } - - protected JavaAttributeMapping createJavaAttributeMappingFromAnnotation(String annotationName, JavaResourcePersistentAttribute jrpa) { - if (annotationName == null) { - return null; - } - JavaAttributeMapping mapping = getJpaPlatform().buildJavaAttributeMappingFromAnnotation(annotationName, this); - mapping.initializeFromResource(jrpa); - return mapping; - } - - /** - * the mapping might be "default", but it still might be a "null" mapping... - */ - public boolean mappingIsDefault(JavaAttributeMapping mapping) { - return this.defaultMapping == mapping; - } - - @Override - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - return this.getMapping().javaCompletionProposals(pos, filter, astRoot); - } - - //************* Validation ****************************** - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - - if (this.specifiedMapping != null) { - this.specifiedMapping.addToMessages(messages, astRoot); - } - else if (this.defaultMapping != null) { - this.defaultMapping.addToMessages(messages, astRoot); - } - } - - @Override - public void toString(StringBuilder sb) { - super.toString(sb); - sb.append(getName()); - } - - public void dispose() { - //nothing to dispose - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaPersistentType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaPersistentType.java deleted file mode 100644 index feb54cc1fc..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaPersistentType.java +++ /dev/null @@ -1,526 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.eclipse.core.resources.IResource; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.JpaFile; -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.JpaContextNode; -import org.eclipse.jpt.core.context.PersistentAttribute; -import org.eclipse.jpt.core.context.PersistentType; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.context.java.JavaPersistentType; -import org.eclipse.jpt.core.context.java.JavaStructureNodes; -import org.eclipse.jpt.core.context.java.JavaTypeMapping; -import org.eclipse.jpt.core.internal.utility.jdt.JDTTools; -import org.eclipse.jpt.core.resource.java.Annotation; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.Filter; -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.EmptyIterator; -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; - -public class GenericJavaPersistentType extends AbstractJavaJpaContextNode implements JavaPersistentType -{ - protected String name; - - protected JavaTypeMapping mapping; - - protected final List<JavaPersistentAttribute> attributes; - - protected AccessType access; - - protected PersistentType parentPersistentType; - - protected JavaResourcePersistentType resourcePersistentType; - - public GenericJavaPersistentType(JpaContextNode parent, JavaResourcePersistentType resourcePersistentType) { - super(parent); - this.attributes = new ArrayList<JavaPersistentAttribute>(); - this.initialize(resourcePersistentType); - } - - @Override - public IResource getResource() { - return this.resourcePersistentType.getResourceModel().getJpaCompilationUnit().getCompilationUnit().getResource(); - } - - //****************** JpaStructureNode implementation ******************* - - public String getId() { - return JavaStructureNodes.PERSISTENT_TYPE_ID; - } - - //****************** PersistentType implementation ******************* - public String getName() { - return this.name; - } - - protected void setName(String newName) { - String oldName = this.name; - this.name = newName; - firePropertyChanged(NAME_PROPERTY, oldName, newName); - } - - public JavaTypeMapping getMapping() { - return this.mapping; - } - - public String getMappingKey() { - return getMapping().getKey(); - } - - public void setMappingKey(String key) { - if (key == getMapping().getKey()) { - return; - } - JavaTypeMapping oldMapping = getMapping(); - JavaTypeMapping newMapping = createJavaTypeMappingFromMappingKey(key); - - this.mapping = newMapping; - this.resourcePersistentType.setMappingAnnotation(newMapping.getAnnotationName()); - firePropertyChanged(PersistentType.MAPPING_PROPERTY, oldMapping, newMapping); - - if (oldMapping != null) { - Collection<String> annotationsToRemove = CollectionTools.collection(oldMapping.correspondingAnnotationNames()); - if (getMapping() != null) { - CollectionTools.removeAll(annotationsToRemove, getMapping().correspondingAnnotationNames()); - } - - for (String annotationName : annotationsToRemove) { - this.resourcePersistentType.removeAnnotation(annotationName); - } - } - } - - protected void setMapping(JavaTypeMapping newMapping) { - JavaTypeMapping oldMapping = this.mapping; - this.mapping = newMapping; - firePropertyChanged(PersistentType.MAPPING_PROPERTY, oldMapping, newMapping); - } - - public boolean isMapped() { - return getMapping().isMapped(); - } - - public AccessType getAccess() { - return this.access; - } - - protected void setAccess(AccessType newAccess) { - AccessType oldAccess = this.access; - this.access = newAccess; - firePropertyChanged(PersistentType.ACCESS_PROPERTY, oldAccess, newAccess); - } - - protected Iterator<JavaPersistentAttribute> attributesNamed(final String attributeName) { - return new FilteringIterator<JavaPersistentAttribute, JavaPersistentAttribute>(attributes()) { - @Override - protected boolean accept(JavaPersistentAttribute o) { - return attributeName.equals(o.getName()); - } - }; - } - - public JavaPersistentAttribute getAttributeNamed(String attributeName) { - Iterator<JavaPersistentAttribute> stream = attributesNamed(attributeName); - return (stream.hasNext()) ? stream.next() : null; - } - - public PersistentAttribute resolveAttribute(String attributeName) { - Iterator<JavaPersistentAttribute> stream = attributesNamed(attributeName); - if (stream.hasNext()) { - JavaPersistentAttribute attribute = stream.next(); - return (stream.hasNext()) ? null /*more than one*/: attribute; - } - return (getParentPersistentType() == null) ? null : getParentPersistentType().resolveAttribute(attributeName); - } - - public ListIterator<JavaPersistentAttribute> attributes() { - return new CloneListIterator<JavaPersistentAttribute>(this.attributes); - } - - public int attributesSize() { - return this.attributes.size(); - } - - private void addAttribute(JavaPersistentAttribute attribute) { - addItemToList(attribute, this.attributes, PersistentType.SPECIFIED_ATTRIBUTES_LIST); - } - - private void removeAttribute(JavaPersistentAttribute attribute) { - removeItemFromList(attribute, this.attributes, PersistentType.SPECIFIED_ATTRIBUTES_LIST); - } - - 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(); - } - }; - } - - 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(); - } - }); - } - - public Iterator<String> allAttributeNames() { - return this.attributeNames(this.allAttributes()); - } - - @Override - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - Iterator<String> values = this.mapping.javaCompletionProposals(pos, filter, astRoot); - if (values != null) { - return values; - } - for (Iterator<JavaPersistentAttribute> stream = attributes(); stream.hasNext();) { - values = stream.next().javaCompletionProposals(pos, filter, astRoot); - if (values != null) { - return values; - } - } - return EmptyIterator.instance(); - } - - // it would be nice if the we passed in an astRoot here, but then we - // would need to pass it to the XML structure nodes too... - public JpaStructureNode getStructureNode(int offset) { - CompilationUnit astRoot = this.buildASTRoot(); - - if (this.contains(offset, astRoot)) { - for (Iterator<JavaPersistentAttribute> stream = this.attributes(); stream.hasNext();) { - JavaPersistentAttribute persistentAttribute = stream.next(); - if (persistentAttribute.contains(offset, astRoot)) { - return persistentAttribute; - } - } - return this; - } - return null; - } - - protected CompilationUnit buildASTRoot() { - return JDTTools.buildASTRoot(this.resourcePersistentType.getJpaCompilationUnit().getCompilationUnit()); - } - - public boolean contains(int offset, CompilationUnit astRoot) { - TextRange fullTextRange = this.getFullTextRange(astRoot); - // 'fullTextRange' will be null if the type no longer exists in the java; - // the context model can be out of synch with the resource model - // when a selection event occurs before the context model has a - // chance to synch with the resource model via the update thread - return (fullTextRange == null) ? false : fullTextRange.includes(offset); - } - - - protected TextRange getFullTextRange(CompilationUnit astRoot) { - return this.resourcePersistentType.getTextRange(astRoot); - } - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - return this.getSelectionTextRange(astRoot); - } - - public TextRange getSelectionTextRange(CompilationUnit astRoot) { - return this.resourcePersistentType.getNameTextRange(astRoot); - } - - public TextRange getSelectionTextRange() { - return this.getSelectionTextRange(this.buildASTRoot()); - } - - - 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 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 boolean hasAnyAttributeMappingAnnotations() { - if (this.resourcePersistentType.hasAnyAttributeAnnotations()) { - return true; - } - return false; - } - - // ******************** Updating ********************** - protected void initialize(JavaResourcePersistentType jrpt) { - this.resourcePersistentType = jrpt; - this.parentPersistentType = this.parentPersistentType(jrpt); - this.access = this.access(jrpt); - this.name = this.name(jrpt); - this.initializeMapping(jrpt); - this.initializePersistentAttributes(jrpt); - } - - protected void initializeMapping(JavaResourcePersistentType persistentTypeResource) { - this.mapping = getJpaPlatform().buildJavaTypeMappingFromAnnotation(this.javaMappingAnnotationName(persistentTypeResource), this); - this.mapping.initializeFromResource(persistentTypeResource); - } - - protected void initializePersistentAttributes(JavaResourcePersistentType persistentTypeResource) { - Iterator<JavaResourcePersistentAttribute> resourceAttributes = persistentTypeResource.fields(); - if (getAccess() == AccessType.PROPERTY) { - resourceAttributes = persistentTypeResource.properties(); - } - - while (resourceAttributes.hasNext()) { - this.attributes.add(createAttribute(resourceAttributes.next())); - } - } - - public void update(JavaResourcePersistentType jrpt) { - this.resourcePersistentType = jrpt; - getJpaFile(this.resourcePersistentType.getResourceModel()).addRootStructureNode(this.resourcePersistentType.getQualifiedName(), this); - updateParentPersistentType(jrpt); - updateAccess(jrpt); - updateName(jrpt); - updateMapping(jrpt); - updatePersistentAttributes(jrpt); - } - - protected void updateAccess(JavaResourcePersistentType jrpt) { - this.setAccess(this.access(jrpt)); - } - - /** - * Check the access "specified" by the java resource model. - * Check xml mapping specified access first - * If still null check java annotations if the xml is not metadata-complete = true - * If still null then set to parentPersistentType access. - * If still null check entity-mappings specified access setting if this persistent-type is listed in an orm.xml file - * If still null check the persistence-unit default Access - * Default to FIELD if all else fails. - */ - protected AccessType access(JavaResourcePersistentType jrpt) { - AccessType javaAccess = null; - boolean metadataComplete = false; - if (getOrmPersistentType() != null) { - javaAccess = getOrmPersistentType().getMapping().getSpecifiedAccess(); - metadataComplete = getOrmPersistentType().getMapping().isMetadataComplete(); - } - if (javaAccess == null && !metadataComplete) { - javaAccess = AccessType.fromJavaResourceModel(jrpt.getAccess()); - } - if (javaAccess == null) { - if (getParentPersistentType() != null) { - javaAccess = getParentPersistentType().getAccess(); - } - } - if (javaAccess == null) { - if (getEntityMappings() != null) { - javaAccess = getEntityMappings().getAccess(); - } - } - if (javaAccess == null) { - //have to check persistence-unit separately in the case where it is not listed directly in an orm.xml - //if it is listed in an orm.xml then the entityMappings().getAccess() check will cover persistence-unit.defaultAccess - if (getPersistenceUnit() != null) { - javaAccess = getPersistenceUnit().getDefaultAccess(); - } - } - if (javaAccess == null) { - javaAccess = AccessType.FIELD; - } - return javaAccess; - } - - protected void updateName(JavaResourcePersistentType jrpt) { - this.setName(this.name(jrpt)); - } - - protected String name(JavaResourcePersistentType jrpt) { - return jrpt.getQualifiedName(); - } - - protected void updateMapping(JavaResourcePersistentType jrpt) { - String javaMappingAnnotationName = this.javaMappingAnnotationName(jrpt); - if (getMapping().getAnnotationName() != javaMappingAnnotationName) { - setMapping(createJavaTypeMappingFromAnnotation(javaMappingAnnotationName, jrpt)); - } - else { - getMapping().update(jrpt); - } - } - - protected JavaTypeMapping createJavaTypeMappingFromMappingKey(String key) { - return getJpaPlatform().buildJavaTypeMappingFromMappingKey(key, this); - } - - protected JavaTypeMapping createJavaTypeMappingFromAnnotation(String annotationName, JavaResourcePersistentType jrpt) { - JavaTypeMapping typeMapping = getJpaPlatform().buildJavaTypeMappingFromAnnotation(annotationName, this); - typeMapping.initializeFromResource(jrpt); - return typeMapping; - } - - protected String javaMappingAnnotationName(JavaResourcePersistentType jrpt) { - Annotation mappingAnnotation = (Annotation) jrpt.getMappingAnnotation(); - if (mappingAnnotation != null) { - return mappingAnnotation.getAnnotationName(); - } - return null; - } - - protected void updatePersistentAttributes(JavaResourcePersistentType jrpt) { - ListIterator<JavaPersistentAttribute> contextAttributes = attributes(); - Iterator<JavaResourcePersistentAttribute> resourceAttributes = jrpt.fields(); - if (getAccess() == AccessType.PROPERTY) { - resourceAttributes = jrpt.properties(); - } - - while (contextAttributes.hasNext()) { - JavaPersistentAttribute persistentAttribute = contextAttributes.next(); - if (resourceAttributes.hasNext()) { - persistentAttribute.update(resourceAttributes.next()); - } - else { - removeAttribute(persistentAttribute); - } - } - - while (resourceAttributes.hasNext()) { - addAttribute(createAttribute(resourceAttributes.next())); - } - } - - protected JavaPersistentAttribute createAttribute(JavaResourcePersistentAttribute persistentAttributeResource) { - JavaPersistentAttribute javaPersistentAttribute = getJpaFactory().buildJavaPersistentAttribute(this); - javaPersistentAttribute.initializeFromResource(persistentAttributeResource); - return javaPersistentAttribute; - } - - public void updateParentPersistentType(JavaResourcePersistentType persistentTypeResource) { - setParentPersistentType(parentPersistentType(persistentTypeResource)); - } - - protected PersistentType parentPersistentType(JavaResourcePersistentType persistentTypeResource) { - return parentPersistentType(persistentTypeResource.getSuperClassQualifiedName()); - } - - protected PersistentType parentPersistentType(String fullyQualifiedTypeName) { - PersistentType possibleParent = possibleParent(fullyQualifiedTypeName); - if (possibleParent == null) { - return null; - } - if (possibleParent.isMapped()) { - return possibleParent; - } - return possibleParent.getParentPersistentType(); - } - - /** - * JPA spec supports the case where there are non-persistent types in the hierarchy - * This will check for a PersistentType with the given name in this PersistenceUnit. - * If it is not found then find the JavaPersistentTypeResource and look for its parent type - */ - protected PersistentType possibleParent(String fullyQualifiedTypeName) { - PersistentType possibleParent = getPersistentType(fullyQualifiedTypeName); - if (possibleParent != null) { - return possibleParent; - } - JavaResourcePersistentType jrpt = getJpaProject().getJavaPersistentTypeResource(fullyQualifiedTypeName); - return (jrpt == null) ? null : this.possibleParent(jrpt.getSuperClassQualifiedName()); - } - - protected PersistentType getPersistentType(String fullyQualifiedTypeName) { - return getPersistenceUnit().getPersistentType(fullyQualifiedTypeName); - } - - //*************** Validation ****************************************** - public void addToMessages(List<IMessage> messages) { - //get astRoot here to pass down - addToMessages(messages, this.buildASTRoot()); - } - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - try { - this.mapping.addToMessages(messages, astRoot); - } catch(Throwable t) { - JptCorePlugin.log(t); - } - addAttributeMessages(messages, astRoot); - } - - protected void addAttributeMessages(List<IMessage> messages, CompilationUnit astRoot) { - for (JavaPersistentAttribute persistentAttribute : this.attributes) { - try { - persistentAttribute.addToMessages(messages, astRoot); - } catch(Throwable t) { - JptCorePlugin.log(t); - } - } - } - - @Override - public void toString(StringBuilder sb) { - super.toString(sb); - sb.append(getName()); - } - - public void dispose() { - JpaFile jpaFile = getJpaFile(this.resourcePersistentType.getResourceModel()); - - if (jpaFile != null) { - //jpaFile can be null if the .java file was deleted, - //rootStructureNodes are cleared in the dispose of JpaFile - jpaFile.removeRootStructureNode(this.resourcePersistentType.getQualifiedName()); - } - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaPrimaryKeyJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaPrimaryKeyJoinColumn.java deleted file mode 100644 index 42c1f756ad..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaPrimaryKeyJoinColumn.java +++ /dev/null @@ -1,169 +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.java; - -import java.util.Iterator; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.java.JavaBaseJoinColumn; -import org.eclipse.jpt.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.core.context.java.JavaPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.resource.java.PrimaryKeyJoinColumnAnnotation; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Column; -import org.eclipse.jpt.db.Table; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.StringTools; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; -import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; - - -public class GenericJavaPrimaryKeyJoinColumn extends AbstractJavaNamedColumn<PrimaryKeyJoinColumnAnnotation> - implements JavaPrimaryKeyJoinColumn -{ - protected String specifiedReferencedColumnName; - - protected String defaultReferencedColumnName; - - protected PrimaryKeyJoinColumnAnnotation primaryKeyJoinColumnResource; - - public GenericJavaPrimaryKeyJoinColumn(JavaJpaContextNode parent, JavaBaseJoinColumn.Owner owner) { - super(parent, owner); - } - - @Override - public void initializeFromResource(PrimaryKeyJoinColumnAnnotation column) { - this.primaryKeyJoinColumnResource = column; - super.initializeFromResource(column); - this.specifiedReferencedColumnName = this.specifiedReferencedColumnName(column); - this.defaultReferencedColumnName = this.defaultReferencedColumnName(); - } - - //************** JavaNamedColumn implementation *************** - @Override - public JavaBaseJoinColumn.Owner getOwner() { - return (JavaBaseJoinColumn.Owner) super.getOwner(); - } - - @Override - protected PrimaryKeyJoinColumnAnnotation getColumnResource() { - return this.primaryKeyJoinColumnResource; - } - - //************** IAbstractJoinColumn implementation *************** - - public String getReferencedColumnName() { - return (this.specifiedReferencedColumnName == null) ? this.defaultReferencedColumnName : this.specifiedReferencedColumnName; - } - - public String getSpecifiedReferencedColumnName() { - return this.specifiedReferencedColumnName; - } - - public void setSpecifiedReferencedColumnName(String newSpecifiedReferencedColumnName) { - String oldSpecifiedReferencedColumnName = this.specifiedReferencedColumnName; - this.specifiedReferencedColumnName = newSpecifiedReferencedColumnName; - getColumnResource().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 - protected String getTableName() { - return this.getOwner().getTypeMapping().getTableName(); - } - - public Column getDbReferencedColumn() { - Table table = this.getDbReferencedColumnTable(); - return (table == null) ? null : table.columnNamed(this.getReferencedColumnName()); - } - - public Table getDbReferencedColumnTable() { - return getOwner().getDbReferencedColumnTable(); - } - - public boolean referencedColumnNameTouches(int pos, CompilationUnit astRoot) { - return this.getColumnResource().referencedColumnNameTouches(pos, astRoot); - } - - private Iterator<String> candidateReferencedColumnNames() { - Table table = this.getOwner().getDbReferencedColumnTable(); - return (table != null) ? table.columnNames() : EmptyIterator.<String> instance(); - } - - private Iterator<String> candidateReferencedColumnNames(Filter<String> filter) { - return new FilteringIterator<String, String>(this.candidateReferencedColumnNames(), filter); - } - - private Iterator<String> quotedCandidateReferencedColumnNames(Filter<String> filter) { - return StringTools.quote(this.candidateReferencedColumnNames(filter)); - } - - @Override - public Iterator<String> connectedJavaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.connectedJavaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - if (this.referencedColumnNameTouches(pos, astRoot)) { - return this.quotedCandidateReferencedColumnNames(filter); - } - return null; - } - - public boolean isReferencedColumnResolved() { - return getDbReferencedColumn() != null; - } - - public TextRange getReferencedColumnNameTextRange(CompilationUnit astRoot) { - return this.getColumnResource().getReferencedColumnNameTextRange(astRoot); - } - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - TextRange textRange = getColumnResource().getTextRange(astRoot); - return (textRange != null) ? textRange : this.getOwner().getValidationTextRange(astRoot); - } - - @Override - public void update(PrimaryKeyJoinColumnAnnotation column) { - this.primaryKeyJoinColumnResource = column; - super.update(column); - this.setSpecifiedReferencedColumnName_(this.specifiedReferencedColumnName(column)); - this.setDefaultReferencedColumnName(this.defaultReferencedColumnName()); - } - - protected String specifiedReferencedColumnName(PrimaryKeyJoinColumnAnnotation column) { - return column.getReferencedColumnName(); - } - - //TODO not correct when we start supporting primaryKeyJoinColumns in 1-1 mappings - protected String defaultReferencedColumnName() { - return defaultName(); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaQueryHint.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaQueryHint.java deleted file mode 100644 index e86a8de5aa..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaQueryHint.java +++ /dev/null @@ -1,71 +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.java; - -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.QueryHint; -import org.eclipse.jpt.core.context.java.JavaQuery; -import org.eclipse.jpt.core.context.java.JavaQueryHint; -import org.eclipse.jpt.core.resource.java.QueryHintAnnotation; -import org.eclipse.jpt.core.utility.TextRange; - -public class GenericJavaQueryHint extends AbstractJavaJpaContextNode implements JavaQueryHint -{ - protected String name; - - protected String value; - - protected QueryHintAnnotation queryHint; - - public GenericJavaQueryHint(JavaQuery parent) { - super(parent); - } - - public String getName() { - return this.name; - } - - public void setName(String newName) { - String oldName = this.name; - this.name = newName; - this.queryHint.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.queryHint.setValue(newValue); - firePropertyChanged(QueryHint.VALUE_PROPERTY, oldValue, newValue); - } - - - public void initializeFromResource(QueryHintAnnotation queryHint) { - this.queryHint = queryHint; - this.name = queryHint.getName(); - this.value = queryHint.getValue(); - } - - public void update(QueryHintAnnotation queryHint) { - this.queryHint = queryHint; - this.setName(queryHint.getName()); - this.setValue(queryHint.getValue()); - } - - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - // TODO Auto-generated method stub - return null; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaSecondaryTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaSecondaryTable.java deleted file mode 100644 index 3dc0480727..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaSecondaryTable.java +++ /dev/null @@ -1,344 +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.java; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import org.eclipse.jdt.core.dom.CompilationUnit; -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.java.JavaBaseJoinColumn; -import org.eclipse.jpt.core.context.java.JavaEntity; -import org.eclipse.jpt.core.context.java.JavaPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.context.java.JavaSecondaryTable; -import org.eclipse.jpt.core.internal.resource.java.NullPrimaryKeyJoinColumn; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.java.PrimaryKeyJoinColumnAnnotation; -import org.eclipse.jpt.core.resource.java.SecondaryTableAnnotation; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.db.Table; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.CollectionTools; -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; - -public class GenericJavaSecondaryTable extends AbstractJavaTable - implements JavaSecondaryTable -{ - protected final List<JavaPrimaryKeyJoinColumn> specifiedPrimaryKeyJoinColumns; - - protected JavaPrimaryKeyJoinColumn defaultPrimaryKeyJoinColumn; - - protected SecondaryTableAnnotation secondaryTableResource; - - public GenericJavaSecondaryTable(JavaEntity parent) { - super(parent); - this.specifiedPrimaryKeyJoinColumns = new ArrayList<JavaPrimaryKeyJoinColumn>(); - } - - @Override - public JavaEntity getParent() { - return (JavaEntity) super.getParent(); - } - - //***************** AbstractJavaTable implementation ******************** - - @Override - protected String getAnnotationName() { - return SecondaryTableAnnotation.ANNOTATION_NAME; - } - - @Override - protected SecondaryTableAnnotation getTableResource() { - return this.secondaryTableResource; - } - - @Override - protected String defaultName() { - return null; - } - - //***************** ISecondaryTable implementation ******************** - - - public ListIterator<JavaPrimaryKeyJoinColumn> primaryKeyJoinColumns() { - return this.containsSpecifiedPrimaryKeyJoinColumns() ? this.specifiedPrimaryKeyJoinColumns() : this.defaultPrimaryKeyJoinColumns(); - } - - public int primaryKeyJoinColumnsSize() { - return this.containsSpecifiedPrimaryKeyJoinColumns() ? this.specifiedPrimaryKeyJoinColumnsSize() : this.defaultPrimaryKeyJoinColumnsSize(); - } - - public ListIterator<JavaPrimaryKeyJoinColumn> specifiedPrimaryKeyJoinColumns() { - return new CloneListIterator<JavaPrimaryKeyJoinColumn>(this.specifiedPrimaryKeyJoinColumns); - } - - public int specifiedPrimaryKeyJoinColumnsSize() { - return this.specifiedPrimaryKeyJoinColumns.size(); - } - - public boolean containsSpecifiedPrimaryKeyJoinColumns() { - return !this.specifiedPrimaryKeyJoinColumns.isEmpty(); - } - - public JavaPrimaryKeyJoinColumn getDefaultPrimaryKeyJoinColumn() { - return this.defaultPrimaryKeyJoinColumn; - } - - protected void setDefaultPrimaryKeyJoinColumn(JavaPrimaryKeyJoinColumn newPkJoinColumn) { - JavaPrimaryKeyJoinColumn oldPkJoinColumn = this.defaultPrimaryKeyJoinColumn; - this.defaultPrimaryKeyJoinColumn = newPkJoinColumn; - firePropertyChanged(SecondaryTable.DEFAULT_PRIMARY_KEY_JOIN_COLUMN, oldPkJoinColumn, newPkJoinColumn); - } - - protected ListIterator<JavaPrimaryKeyJoinColumn> defaultPrimaryKeyJoinColumns() { - if (this.defaultPrimaryKeyJoinColumn != null) { - return new SingleElementListIterator<JavaPrimaryKeyJoinColumn>(this.defaultPrimaryKeyJoinColumn); - } - return EmptyListIterator.instance(); - } - - protected int defaultPrimaryKeyJoinColumnsSize() { - return (this.defaultPrimaryKeyJoinColumn == null) ? 0 : 1; - } - - public JavaPrimaryKeyJoinColumn addSpecifiedPrimaryKeyJoinColumn(int index) { - JavaPrimaryKeyJoinColumn 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; - } - JavaPrimaryKeyJoinColumn primaryKeyJoinColumn = getJpaFactory().buildJavaPrimaryKeyJoinColumn(this, createPrimaryKeyJoinColumnOwner()); - this.specifiedPrimaryKeyJoinColumns.add(index, primaryKeyJoinColumn); - PrimaryKeyJoinColumnAnnotation pkJoinColumnResource = this.secondaryTableResource.addPkJoinColumn(index); - primaryKeyJoinColumn.initializeFromResource(pkJoinColumnResource); - this.fireItemAdded(SecondaryTable.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST, index, primaryKeyJoinColumn); - if (oldDefaultPkJoinColumn != null) { - this.firePropertyChanged(SecondaryTable.DEFAULT_PRIMARY_KEY_JOIN_COLUMN, oldDefaultPkJoinColumn, null); - } - return primaryKeyJoinColumn; - } - - protected void addSpecifiedPrimaryKeyJoinColumn(int index, JavaPrimaryKeyJoinColumn primaryKeyJoinColumn) { - addItemToList(index, primaryKeyJoinColumn, this.specifiedPrimaryKeyJoinColumns, SecondaryTable.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - public void removeSpecifiedPrimaryKeyJoinColumn(PrimaryKeyJoinColumn joinColumn) { - this.removeSpecifiedPrimaryKeyJoinColumn(this.specifiedPrimaryKeyJoinColumns.indexOf(joinColumn)); - } - - public void removeSpecifiedPrimaryKeyJoinColumn(int index) { - JavaPrimaryKeyJoinColumn 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(new NullPrimaryKeyJoinColumn(this.secondaryTableResource)); - } - this.secondaryTableResource.removePkJoinColumn(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_(JavaPrimaryKeyJoinColumn 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.secondaryTableResource.movePkJoinColumn(targetIndex, sourceIndex); - fireItemMoved(SecondaryTable.SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST, targetIndex, sourceIndex); - } - - public JavaEntity getJavaEntity() { - return getParent(); - } - - - //********************* updating ************************ - - public void initializeFromResource(SecondaryTableAnnotation secondaryTable) { - super.initializeFromResource(secondaryTable); - this.secondaryTableResource = secondaryTable; - this.initializeSpecifiedPrimaryKeyJoinColumns(secondaryTable); - this.initializeDefaultPrimaryKeyJoinColumn(secondaryTable); - } - - protected void initializeSpecifiedPrimaryKeyJoinColumns(SecondaryTableAnnotation secondaryTable) { - ListIterator<PrimaryKeyJoinColumnAnnotation> annotations = secondaryTable.pkJoinColumns(); - - while(annotations.hasNext()) { - this.specifiedPrimaryKeyJoinColumns.add(buildPrimaryKeyJoinColumn(annotations.next())); - } - } - - protected boolean shouldBuildDefaultPrimaryKeyJoinColumn() { - return !containsSpecifiedPrimaryKeyJoinColumns(); - } - - protected void initializeDefaultPrimaryKeyJoinColumn(SecondaryTableAnnotation secondaryTable) { - if (!shouldBuildDefaultPrimaryKeyJoinColumn()) { - return; - } - this.defaultPrimaryKeyJoinColumn = buildPrimaryKeyJoinColumn(new NullPrimaryKeyJoinColumn(secondaryTable)); - } - - - public void update(SecondaryTableAnnotation secondaryTableResource) { - this.secondaryTableResource = secondaryTableResource; - super.update(secondaryTableResource); - this.updateSpecifiedPrimaryKeyJoinColumns(secondaryTableResource); - this.updateDefaultPrimaryKeyJoinColumn(secondaryTableResource); - } - - protected void updateSpecifiedPrimaryKeyJoinColumns(SecondaryTableAnnotation secondaryTableResource) { - ListIterator<JavaPrimaryKeyJoinColumn> primaryKeyJoinColumns = specifiedPrimaryKeyJoinColumns(); - ListIterator<PrimaryKeyJoinColumnAnnotation> resourcePrimaryKeyJoinColumns = secondaryTableResource.pkJoinColumns(); - - while (primaryKeyJoinColumns.hasNext()) { - JavaPrimaryKeyJoinColumn primaryKeyJoinColumn = primaryKeyJoinColumns.next(); - if (resourcePrimaryKeyJoinColumns.hasNext()) { - primaryKeyJoinColumn.update(resourcePrimaryKeyJoinColumns.next()); - } - else { - removeSpecifiedPrimaryKeyJoinColumn_(primaryKeyJoinColumn); - } - } - - while (resourcePrimaryKeyJoinColumns.hasNext()) { - addSpecifiedPrimaryKeyJoinColumn(specifiedPrimaryKeyJoinColumnsSize(), buildPrimaryKeyJoinColumn(resourcePrimaryKeyJoinColumns.next())); - } - } - - protected void updateDefaultPrimaryKeyJoinColumn(SecondaryTableAnnotation secondaryTableResource) { - if (!shouldBuildDefaultPrimaryKeyJoinColumn()) { - setDefaultPrimaryKeyJoinColumn(null); - return; - } - if (getDefaultPrimaryKeyJoinColumn() == null) { - this.setDefaultPrimaryKeyJoinColumn(buildPrimaryKeyJoinColumn(new NullPrimaryKeyJoinColumn(secondaryTableResource))); - } - else { - this.defaultPrimaryKeyJoinColumn.update(new NullPrimaryKeyJoinColumn(secondaryTableResource)); - } - } - - protected JavaPrimaryKeyJoinColumn buildPrimaryKeyJoinColumn(PrimaryKeyJoinColumnAnnotation primaryKeyJoinColumnResource) { - JavaPrimaryKeyJoinColumn primaryKeyJoinColumn = getJpaFactory().buildJavaPrimaryKeyJoinColumn(this, createPrimaryKeyJoinColumnOwner()); - primaryKeyJoinColumn.initializeFromResource(primaryKeyJoinColumnResource); - return primaryKeyJoinColumn; - } - - protected JavaBaseJoinColumn.Owner createPrimaryKeyJoinColumnOwner() { - return new PrimaryKeyJoinColumnOwner(); - } - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - boolean doContinue = this.connectionProfileIsActive(); - String schema = getSchema(); - - if (doContinue && ! hasResolvedSchema()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.SECONDARY_TABLE_UNRESOLVED_SCHEMA, - new String[] {schema, getName()}, - this, - getSchemaTextRange(astRoot)) - ); - doContinue = false; - } - - if (doContinue && ! isResolved()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.SECONDARY_TABLE_UNRESOLVED_NAME, - new String[] {getName()}, - this, - getNameTextRange(astRoot)) - ); - } - } - - - //********************* code completion ************************ - - @Override - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - for (JavaPrimaryKeyJoinColumn column : CollectionTools.iterable(this.primaryKeyJoinColumns())) { - result = column.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - } - return null; - } - - public boolean isVirtual() { - return false; - } - - class PrimaryKeyJoinColumnOwner implements JavaBaseJoinColumn.Owner - { - public TextRange getValidationTextRange(CompilationUnit astRoot) { - return GenericJavaSecondaryTable.this.getValidationTextRange(astRoot); - } - - public TypeMapping getTypeMapping() { - return GenericJavaSecondaryTable.this.getJavaEntity(); - } - - public Table getDbTable(String tableName) { - return GenericJavaSecondaryTable.this.getDbTable(); - } - - public Table getDbReferencedColumnTable() { - return getTypeMapping().getPrimaryDbTable(); - } - - public int joinColumnsSize() { - return GenericJavaSecondaryTable.this.primaryKeyJoinColumnsSize(); - } - - public boolean isVirtual(BaseJoinColumn joinColumn) { - return GenericJavaSecondaryTable.this.defaultPrimaryKeyJoinColumn == joinColumn; - } - - public String getDefaultColumnName() { - if (joinColumnsSize() != 1) { - return null; - } - return getJavaEntity().getPrimaryKeyColumnName(); - - } - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaSequenceGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaSequenceGenerator.java deleted file mode 100644 index 4c406448fb..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaSequenceGenerator.java +++ /dev/null @@ -1,75 +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.java; - -import org.eclipse.jpt.core.context.SequenceGenerator; -import org.eclipse.jpt.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.core.context.java.JavaSequenceGenerator; -import org.eclipse.jpt.core.resource.java.SequenceGeneratorAnnotation; - - -public class GenericJavaSequenceGenerator extends AbstractJavaGenerator - implements JavaSequenceGenerator -{ - protected String specifiedSequenceName; - - public GenericJavaSequenceGenerator(JavaJpaContextNode parent) { - super(parent); - } - - @Override - protected SequenceGeneratorAnnotation getGeneratorResource() { - return (SequenceGeneratorAnnotation) super.getGeneratorResource(); - } - - public void initializeFromResource(SequenceGeneratorAnnotation sequenceGenerator) { - super.initializeFromResource(sequenceGenerator); - this.specifiedSequenceName = this.specifiedSequenceName(sequenceGenerator); - } - - public Integer getDefaultInitialValue() { - return SequenceGenerator.DEFAULT_INITIAL_VALUE; - } - - public String getSequenceName() { - return (this.getSpecifiedSequenceName() == null) ? getDefaultSequenceName() : this.getSpecifiedSequenceName(); - } - - public String getSpecifiedSequenceName() { - return this.specifiedSequenceName; - } - - public void setSpecifiedSequenceName(String newSpecifiedSequenceName) { - String oldSpecifiedSequenceName = this.specifiedSequenceName; - this.specifiedSequenceName = newSpecifiedSequenceName; - getGeneratorResource().setSequenceName(newSpecifiedSequenceName); - firePropertyChanged(SPECIFIED_SEQUENCE_NAME_PROPERTY, oldSpecifiedSequenceName, newSpecifiedSequenceName); - } - - protected void setSpecifiedSequenceName_(String newSpecifiedSequenceName) { - String oldSpecifiedSequenceName = this.specifiedSequenceName; - this.specifiedSequenceName = newSpecifiedSequenceName; - firePropertyChanged(SPECIFIED_SEQUENCE_NAME_PROPERTY, oldSpecifiedSequenceName, newSpecifiedSequenceName); - } - - public String getDefaultSequenceName() { - return null; - } - - public void update(SequenceGeneratorAnnotation sequenceGenerator) { - super.update(sequenceGenerator); - this.setSpecifiedSequenceName_(this.specifiedSequenceName(sequenceGenerator)); - } - - protected String specifiedSequenceName(SequenceGeneratorAnnotation generatorResource) { - return generatorResource.getSequenceName(); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaTable.java deleted file mode 100644 index 7b22f2ad57..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaTable.java +++ /dev/null @@ -1,138 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.Entity; -import org.eclipse.jpt.core.context.InheritanceType; -import org.eclipse.jpt.core.context.java.JavaEntity; -import org.eclipse.jpt.core.context.java.JavaTable; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentMember; -import org.eclipse.jpt.core.resource.java.TableAnnotation; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - - -public class GenericJavaTable extends AbstractJavaTable implements JavaTable -{ - protected JavaResourcePersistentMember persistentResource; - - public GenericJavaTable(JavaEntity parent) { - super(parent); - } - - public void initializeFromResource(JavaResourcePersistentMember persistentResource) { - this.persistentResource = persistentResource; - initializeFromResource(getTableResource()); - } - - - //query for the table resource every time on setters. - //call one setter and the tableResource could change. - //You could call more than one setter before this object has received any notification - //from the java resource model - @Override - protected TableAnnotation getTableResource() { - //TODO get the NullTable from the resource model or build it here in the context model?? - return (TableAnnotation) this.persistentResource.getNonNullAnnotation(getAnnotationName()); - } - - @Override - protected String getAnnotationName() { - return TableAnnotation.ANNOTATION_NAME; - } - - @Override - public JavaEntity getParent() { - return (JavaEntity) super.getParent(); - } - - protected JavaEntity getJavaEntity() { - return getParent(); - } - - protected Entity getRootEntity() { - return getJavaEntity().getRootEntity(); - } - - @Override - /** - * Table name default to the owning java entity name. - * If this entity is part of a single table inheritance hierarchy, table - * name defaults to the root entity's table name. - */ - protected String defaultName() { - if (getJavaEntity().getInheritanceStrategy() == InheritanceType.SINGLE_TABLE) { - if (getRootEntity() != getJavaEntity()) { - return getRootEntity().getTable().getName(); - } - } - return getJavaEntity().getName(); - } - - @Override - protected String defaultSchema() { - if (getJavaEntity().getInheritanceStrategy() == InheritanceType.SINGLE_TABLE) { - if (getRootEntity() != getJavaEntity()) { - return getRootEntity().getTable().getSchema(); - } - } - return super.defaultSchema(); - } - - @Override - protected String defaultCatalog() { - if (getJavaEntity().getInheritanceStrategy() == InheritanceType.SINGLE_TABLE) { - if (getRootEntity() != getJavaEntity()) { - return getRootEntity().getTable().getCatalog(); - } - } - return super.defaultCatalog(); - } - - public void update(JavaResourcePersistentMember persistentResource) { - this.persistentResource = persistentResource; - this.update(getTableResource()); - } - - //******************* validation ********************** - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - boolean doContinue = this.connectionProfileIsActive(); - String schema = getSchema(); - - if (doContinue && ! hasResolvedSchema()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.TABLE_UNRESOLVED_SCHEMA, - new String[] {schema, getName()}, - this, - getSchemaTextRange(astRoot)) - ); - doContinue = false; - } - - if (doContinue && ! isResolved()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.TABLE_UNRESOLVED_NAME, - new String[] {getName()}, - this, - getNameTextRange(astRoot)) - ); - } - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaTableGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaTableGenerator.java deleted file mode 100644 index 63d687771d..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaTableGenerator.java +++ /dev/null @@ -1,398 +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.java; - -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.java.JavaJpaContextNode; -import org.eclipse.jpt.core.context.java.JavaTableGenerator; -import org.eclipse.jpt.core.context.java.JavaUniqueConstraint; -import org.eclipse.jpt.core.resource.java.TableGeneratorAnnotation; -import org.eclipse.jpt.core.resource.java.UniqueConstraintAnnotation; -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.CloneListIterator; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; - - -public class GenericJavaTableGenerator extends AbstractJavaGenerator - implements JavaTableGenerator, 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<JavaUniqueConstraint> uniqueConstraints; - - public GenericJavaTableGenerator(JavaJpaContextNode parent) { - super(parent); - this.uniqueConstraints = new ArrayList<JavaUniqueConstraint>(); - } - - @Override - protected TableGeneratorAnnotation getGeneratorResource() { - return (TableGeneratorAnnotation) super.getGeneratorResource(); - } - - public Integer getDefaultInitialValue() { - return TableGenerator.DEFAULT_INITIAL_VALUE; - } - - 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; - getGeneratorResource().setTable(newSpecifiedTable); - firePropertyChanged(SPECIFIED_TABLE_PROPERTY, oldSpecifiedTable, newSpecifiedTable); - } - - protected void setSpecifiedTable_(String newSpecifiedTable) { - String oldSpecifiedTable = this.specifiedTable; - this.specifiedTable = newSpecifiedTable; - firePropertyChanged(SPECIFIED_TABLE_PROPERTY, oldSpecifiedTable, newSpecifiedTable); - } - - public String getDefaultTable() { - return this.defaultTable; - } - - public String getCatalog() { - return (this.getSpecifiedCatalog() == null) ? getDefaultCatalog() : this.getSpecifiedCatalog(); - } - - public String getSpecifiedCatalog() { - return this.specifiedCatalog; - } - - public void setSpecifiedCatalog(String newSpecifiedCatalog) { - String oldSpecifiedCatalog = this.specifiedCatalog; - this.specifiedCatalog = newSpecifiedCatalog; - getGeneratorResource().setCatalog(newSpecifiedCatalog); - firePropertyChanged(SPECIFIED_CATALOG_PROPERTY, oldSpecifiedCatalog, newSpecifiedCatalog); - } - - 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); - } - - public String getSchema() { - return (this.getSpecifiedSchema() == null) ? getDefaultSchema() : this.getSpecifiedSchema(); - } - - public String getSpecifiedSchema() { - return this.specifiedSchema; - } - - public void setSpecifiedSchema(String newSpecifiedSchema) { - String oldSpecifiedSchema = this.specifiedSchema; - this.specifiedSchema = newSpecifiedSchema; - getGeneratorResource().setSchema(newSpecifiedSchema); - firePropertyChanged(SPECIFIED_SCHEMA_PROPERTY, oldSpecifiedSchema, newSpecifiedSchema); - } - - protected void setSpecifiedSchema_(String newSpecifiedSchema) { - String oldSpecifiedSchema = this.specifiedSchema; - this.specifiedSchema = newSpecifiedSchema; - firePropertyChanged(SPECIFIED_SCHEMA_PROPERTY, oldSpecifiedSchema, newSpecifiedSchema); - } - - public String getDefaultSchema() { - return this.defaultSchema; - } - - protected void setDefaultSchema(String newDefaultSchema) { - String oldDefaultSchema = this.defaultSchema; - this.defaultSchema = newDefaultSchema; - firePropertyChanged(DEFAULT_SCHEMA_PROPERTY, oldDefaultSchema, newDefaultSchema); - } - - public String getPkColumnName() { - return (this.getSpecifiedPkColumnName() == null) ? getDefaultPkColumnName() : this.getSpecifiedPkColumnName(); - } - - public String getSpecifiedPkColumnName() { - return this.specifiedPkColumnName; - } - - public void setSpecifiedPkColumnName(String newSpecifiedPkColumnName) { - String oldSpecifiedPkColumnName = this.specifiedPkColumnName; - this.specifiedPkColumnName = newSpecifiedPkColumnName; - getGeneratorResource().setPkColumnName(newSpecifiedPkColumnName); - firePropertyChanged(SPECIFIED_PK_COLUMN_NAME_PROPERTY, oldSpecifiedPkColumnName, newSpecifiedPkColumnName); - } - - protected void setSpecifiedPkColumnName_(String newSpecifiedPkColumnName) { - String oldSpecifiedPkColumnName = this.specifiedPkColumnName; - this.specifiedPkColumnName = newSpecifiedPkColumnName; - firePropertyChanged(SPECIFIED_PK_COLUMN_NAME_PROPERTY, oldSpecifiedPkColumnName, newSpecifiedPkColumnName); - } - - public String getDefaultPkColumnName() { - return this.defaultPkColumnName; - } - - public String getValueColumnName() { - return (this.getSpecifiedValueColumnName() == null) ? getDefaultValueColumnName() : this.getSpecifiedValueColumnName(); - } - - public String getSpecifiedValueColumnName() { - return this.specifiedValueColumnName; - } - - public void setSpecifiedValueColumnName(String newSpecifiedValueColumnName) { - String oldSpecifiedValueColumnName = this.specifiedValueColumnName; - this.specifiedValueColumnName = newSpecifiedValueColumnName; - getGeneratorResource().setValueColumnName(newSpecifiedValueColumnName); - firePropertyChanged(SPECIFIED_VALUE_COLUMN_NAME_PROPERTY, oldSpecifiedValueColumnName, newSpecifiedValueColumnName); - } - - protected void setSpecifiedValueColumnName_(String newSpecifiedValueColumnName) { - String oldSpecifiedValueColumnName = this.specifiedValueColumnName; - this.specifiedValueColumnName = newSpecifiedValueColumnName; - firePropertyChanged(SPECIFIED_VALUE_COLUMN_NAME_PROPERTY, oldSpecifiedValueColumnName, newSpecifiedValueColumnName); - } - - public String getDefaultValueColumnName() { - return this.defaultValueColumnName; - } - - public String getPkColumnValue() { - return (this.getSpecifiedPkColumnValue() == null) ? getDefaultPkColumnValue() : this.getSpecifiedPkColumnValue(); - } - - public String getSpecifiedPkColumnValue() { - return this.specifiedPkColumnValue; - } - - public void setSpecifiedPkColumnValue(String newSpecifiedPkColumnValue) { - String oldSpecifiedPkColumnValue = this.specifiedPkColumnValue; - this.specifiedPkColumnValue = newSpecifiedPkColumnValue; - getGeneratorResource().setPkColumnValue(newSpecifiedPkColumnValue); - firePropertyChanged(SPECIFIED_PK_COLUMN_VALUE_PROPERTY, oldSpecifiedPkColumnValue, newSpecifiedPkColumnValue); - } - - public void setSpecifiedPkColumnValue_(String newSpecifiedPkColumnValue) { - String oldSpecifiedPkColumnValue = this.specifiedPkColumnValue; - this.specifiedPkColumnValue = newSpecifiedPkColumnValue; - firePropertyChanged(SPECIFIED_PK_COLUMN_VALUE_PROPERTY, oldSpecifiedPkColumnValue, newSpecifiedPkColumnValue); - } - - public String getDefaultPkColumnValue() { - return this.defaultPkColumnValue; - } - - - // ********** unique constraints ********** - - public ListIterator<JavaUniqueConstraint> uniqueConstraints() { - return new CloneListIterator<JavaUniqueConstraint>(this.uniqueConstraints); - } - - public int uniqueConstraintsSize() { - return this.uniqueConstraints.size(); - } - - public JavaUniqueConstraint addUniqueConstraint(int index) { - JavaUniqueConstraint uniqueConstraint = getJpaFactory().buildJavaUniqueConstraint(this, this); - this.uniqueConstraints.add(index, uniqueConstraint); - UniqueConstraintAnnotation uniqueConstraintAnnotation = this.getGeneratorResource().addUniqueConstraint(index); - uniqueConstraint.initialize(uniqueConstraintAnnotation); - fireItemAdded(TableGenerator.UNIQUE_CONSTRAINTS_LIST, index, uniqueConstraint); - return uniqueConstraint; - } - - public void removeUniqueConstraint(UniqueConstraint uniqueConstraint) { - this.removeUniqueConstraint(this.uniqueConstraints.indexOf(uniqueConstraint)); - } - - public void removeUniqueConstraint(int index) { - JavaUniqueConstraint removedUniqueConstraint = this.uniqueConstraints.remove(index); - this.getGeneratorResource().removeUniqueConstraint(index); - fireItemRemoved(TableGenerator.UNIQUE_CONSTRAINTS_LIST, index, removedUniqueConstraint); - } - - public void moveUniqueConstraint(int targetIndex, int sourceIndex) { - CollectionTools.move(this.uniqueConstraints, targetIndex, sourceIndex); - this.getGeneratorResource().moveUniqueConstraint(targetIndex, sourceIndex); - fireItemMoved(TableGenerator.UNIQUE_CONSTRAINTS_LIST, targetIndex, sourceIndex); - } - - protected void addUniqueConstraint(int index, JavaUniqueConstraint uniqueConstraint) { - addItemToList(index, uniqueConstraint, this.uniqueConstraints, TableGenerator.UNIQUE_CONSTRAINTS_LIST); - } - - protected void removeUniqueConstraint_(JavaUniqueConstraint uniqueConstraint) { - removeItemFromList(uniqueConstraint, this.uniqueConstraints, TableGenerator.UNIQUE_CONSTRAINTS_LIST); - } - - - //******************* UniqueConstraint.Owner implementation ****************** - - public Iterator<String> candidateUniqueConstraintColumnNames() { - org.eclipse.jpt.db.Table dbTable = getDbTable(); - if (dbTable != null) { - return dbTable.columnNames(); - } - return EmptyIterator.instance(); - } - - - // ********** java resource model -> java context model ********** - - public void initializeFromResource(TableGeneratorAnnotation tableGenerator) { - super.initializeFromResource(tableGenerator); - this.specifiedTable = this.specifiedTable(tableGenerator); - this.specifiedCatalog = this.specifiedCatalog(tableGenerator); - this.defaultCatalog = this.defaultCatalog(); - this.specifiedSchema = this.specifiedSchema(tableGenerator); - this.defaultSchema = this.defaultSchema(); - this.specifiedPkColumnName = this.specifiedPkColumnName(tableGenerator); - this.specifiedValueColumnName = this.specifiedValueColumnName(tableGenerator); - this.specifiedPkColumnValue = this.specifiedPkColumnValue(tableGenerator); - this.initializeUniqueConstraints(tableGenerator); - } - - protected void initializeUniqueConstraints(TableGeneratorAnnotation tableGenerator) { - for (UniqueConstraintAnnotation uniqueConstraintAnnotation : CollectionTools.iterable(tableGenerator.uniqueConstraints())) { - this.uniqueConstraints.add(buildUniqueConstraint(uniqueConstraintAnnotation)); - } - } - - public void update(TableGeneratorAnnotation tableGenerator) { - super.update(tableGenerator); - this.setSpecifiedTable_(this.specifiedTable(tableGenerator)); - this.setSpecifiedCatalog_(this.specifiedCatalog(tableGenerator)); - this.setDefaultCatalog(this.defaultCatalog()); - this.setSpecifiedSchema_(this.specifiedSchema(tableGenerator)); - this.setDefaultSchema(this.defaultSchema()); - this.setSpecifiedPkColumnName_(this.specifiedPkColumnName(tableGenerator)); - this.setSpecifiedValueColumnName_(this.specifiedValueColumnName(tableGenerator)); - this.setSpecifiedPkColumnValue_(this.specifiedPkColumnValue(tableGenerator)); - this.updateUniqueConstraints(tableGenerator); - } - - protected void updateUniqueConstraints(TableGeneratorAnnotation tableGenerator) { - ListIterator<JavaUniqueConstraint> uniqueConstraints = uniqueConstraints(); - ListIterator<UniqueConstraintAnnotation> resourceUniqueConstraints = tableGenerator.uniqueConstraints(); - - while (uniqueConstraints.hasNext()) { - JavaUniqueConstraint uniqueConstraint = uniqueConstraints.next(); - if (resourceUniqueConstraints.hasNext()) { - uniqueConstraint.update(resourceUniqueConstraints.next()); - } - else { - removeUniqueConstraint_(uniqueConstraint); - } - } - - while (resourceUniqueConstraints.hasNext()) { - addUniqueConstraint(uniqueConstraintsSize(), buildUniqueConstraint(resourceUniqueConstraints.next())); - } - } - - protected JavaUniqueConstraint buildUniqueConstraint(UniqueConstraintAnnotation uniqueConstraintAnnotation) { - JavaUniqueConstraint uniqueConstraint = getJpaFactory().buildJavaUniqueConstraint(this, this); - uniqueConstraint.initialize(uniqueConstraintAnnotation); - return uniqueConstraint; - } - - protected String specifiedTable(TableGeneratorAnnotation tableGenerator) { - return tableGenerator.getTable(); - } - - protected String specifiedCatalog(TableGeneratorAnnotation tableGenerator) { - return tableGenerator.getCatalog(); - } - - protected String specifiedSchema(TableGeneratorAnnotation tableGenerator) { - return tableGenerator.getSchema(); - } - - protected String specifiedPkColumnName(TableGeneratorAnnotation tableGenerator) { - return tableGenerator.getPkColumnName(); - } - - protected String specifiedValueColumnName(TableGeneratorAnnotation tableGenerator) { - return tableGenerator.getValueColumnName(); - } - - protected String specifiedPkColumnValue(TableGeneratorAnnotation tableGenerator) { - return tableGenerator.getPkColumnValue(); - } - - protected String defaultSchema() { - if (getEntityMappings() != null) { - return getEntityMappings().getSchema(); - } - return getPersistenceUnit().getDefaultSchema(); - } - - protected String defaultCatalog() { - if (getEntityMappings() != null) { - return getEntityMappings().getCatalog(); - } - return getPersistenceUnit().getDefaultCatalog(); - } - - public Table getDbTable() { - Schema schema = this.getDbSchema(); - return (schema == null) ? null : schema.tableNamed(this.getTable()); - } - - public Schema getDbSchema() { - return this.getDatabase().schemaNamed(this.getSchema()); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaTransientMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaTransientMapping.java deleted file mode 100644 index d7d919db68..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaTransientMapping.java +++ /dev/null @@ -1,47 +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.java; - -import java.util.Iterator; -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.context.java.JavaTransientMapping; -import org.eclipse.jpt.core.resource.java.TransientAnnotation; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - - -public class GenericJavaTransientMapping extends AbstractJavaAttributeMapping<TransientAnnotation> - implements JavaTransientMapping -{ - public GenericJavaTransientMapping(JavaPersistentAttribute parent) { - super(parent); - } - - public String getKey() { - return MappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return TransientAnnotation.ANNOTATION_NAME; - } - - public Iterator<String> correspondingAnnotationNames() { - return EmptyIterator.instance(); - } - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaUniqueConstraint.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaUniqueConstraint.java deleted file mode 100644 index 47332c31f3..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaUniqueConstraint.java +++ /dev/null @@ -1,158 +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.java; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.UniqueConstraint; -import org.eclipse.jpt.core.context.java.JavaJpaContextNode; -import org.eclipse.jpt.core.context.java.JavaUniqueConstraint; -import org.eclipse.jpt.core.resource.java.UniqueConstraintAnnotation; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.StringTools; -import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; -import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; - -public class GenericJavaUniqueConstraint extends AbstractJavaJpaContextNode - implements JavaUniqueConstraint -{ - - protected final List<String> columnNames; - - protected UniqueConstraintAnnotation uniqueConstraintAnnotation; - - protected Owner owner; - public GenericJavaUniqueConstraint(JavaJpaContextNode parent, Owner owner) { - super(parent); - this.owner = owner; - this.columnNames = new ArrayList<String>(); - } - - public Owner getOwner() { - return this.owner; - } - - 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.uniqueConstraintAnnotation.addColumnName(index, columnName); - fireItemAdded(UniqueConstraint.COLUMN_NAMES_LIST, index, columnName); - } - - protected void addColumnName_(int index, String columnName) { - this.columnNames.add(index, columnName); - fireItemAdded(UniqueConstraint.COLUMN_NAMES_LIST, index, columnName); - } - - public void removeColumnName(String columnName) { - this.removeColumnName(this.columnNames.indexOf(columnName)); - } - - public void removeColumnName(int index) { - String removedColumnName = this.columnNames.remove(index); - this.uniqueConstraintAnnotation.removeColumnName(index); - fireItemRemoved(UniqueConstraint.COLUMN_NAMES_LIST, index, removedColumnName); - } - - protected void removeColumnName_(int index) { - String removedColumnName = this.columnNames.remove(index); - fireItemRemoved(UniqueConstraint.COLUMN_NAMES_LIST, index, removedColumnName); - } - - public void moveColumnName(int targetIndex, int sourceIndex) { - CollectionTools.move(this.columnNames, targetIndex, sourceIndex); - this.uniqueConstraintAnnotation.moveColumnName(targetIndex, sourceIndex); - fireItemMoved(UniqueConstraint.COLUMN_NAMES_LIST, targetIndex, sourceIndex); - } - - public void initialize(UniqueConstraintAnnotation uniqueConstraintAnnotation) { - this.uniqueConstraintAnnotation = uniqueConstraintAnnotation; - this.initializeColumnNames(uniqueConstraintAnnotation); - } - - protected void initializeColumnNames(UniqueConstraintAnnotation uniqueConstraintAnnotation) { - ListIterator<String> annotationColumnNames = uniqueConstraintAnnotation.columnNames(); - - for (String annotationColumnName : CollectionTools.iterable(annotationColumnNames)) { - this.columnNames.add(annotationColumnName); - } - } - - public void update(UniqueConstraintAnnotation uniqueConstraintAnnotation) { - this.uniqueConstraintAnnotation = uniqueConstraintAnnotation; - this.updateColumnNames(uniqueConstraintAnnotation); - } - - protected void updateColumnNames(UniqueConstraintAnnotation uniqueConstraintAnnotation) { - ListIterator<String> annotationColumnNames = uniqueConstraintAnnotation.columnNames(); - - int index = 0; - for (String annotationColumnName : CollectionTools.iterable(annotationColumnNames)) { - if (columnNamesSize() > index) { - if (this.columnNames.get(index) != annotationColumnName) { - addColumnName_(index, annotationColumnName); - } - } - else { - addColumnName_(index, annotationColumnName); - } - index++; - } - - for ( ; index < columnNamesSize(); ) { - removeColumnName_(index); - } - } - - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - return this.uniqueConstraintAnnotation.getTextRange(astRoot); - } - - private boolean columnNamesTouches(int pos, CompilationUnit astRoot) { - return this.uniqueConstraintAnnotation.columnNamesTouches(pos, astRoot); - } - - private Iterator<String> candidateColumnNames() { - return this.getOwner().candidateUniqueConstraintColumnNames(); - } - - private Iterator<String> candidateColumnNames(Filter<String> filter) { - return new FilteringIterator<String, String>(this.candidateColumnNames(), filter); - } - - private Iterator<String> quotedCandidateColumnNames(Filter<String> filter) { - return StringTools.quote(this.candidateColumnNames(filter)); - } - - @Override - public Iterator<String> connectedJavaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.connectedJavaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - if (this.columnNamesTouches(pos, astRoot)) { - return this.quotedCandidateColumnNames(filter); - } - return null; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaVersionMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaVersionMapping.java deleted file mode 100644 index 36e7f873a3..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaVersionMapping.java +++ /dev/null @@ -1,166 +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.java; - -import java.util.Iterator; -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.ColumnMapping; -import org.eclipse.jpt.core.context.TemporalType; -import org.eclipse.jpt.core.context.java.JavaColumn; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.context.java.JavaVersionMapping; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.resource.java.ColumnAnnotation; -import org.eclipse.jpt.core.resource.java.JPA; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.core.resource.java.TemporalAnnotation; -import org.eclipse.jpt.core.resource.java.VersionAnnotation; -import org.eclipse.jpt.utility.Filter; -import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - - -public class GenericJavaVersionMapping extends AbstractJavaAttributeMapping<VersionAnnotation> implements JavaVersionMapping -{ - protected final JavaColumn column; - - protected TemporalType temporal; - - public GenericJavaVersionMapping(JavaPersistentAttribute parent) { - super(parent); - this.column = createJavaColumn(); - } - - protected JavaColumn createJavaColumn() { - return getJpaFactory().buildJavaColumn(this, this); - } - - @Override - public void initializeFromResource(JavaResourcePersistentAttribute resourcePersistentAttribute) { - super.initializeFromResource(resourcePersistentAttribute); - this.column.initializeFromResource(this.getColumnResource()); - this.temporal = this.temporal(this.temporalResource()); - } - - protected TemporalAnnotation temporalResource() { - return (TemporalAnnotation) getResourcePersistentAttribute().getNonNullAnnotation(TemporalAnnotation.ANNOTATION_NAME); - } - - public ColumnAnnotation getColumnResource() { - return (ColumnAnnotation) getResourcePersistentAttribute().getNonNullAnnotation(ColumnAnnotation.ANNOTATION_NAME); - } - - //************** IJavaAttributeMapping implementation *************** - - public String getKey() { - return MappingKeys.VERSION_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return VersionAnnotation.ANNOTATION_NAME; - } - - public Iterator<String> correspondingAnnotationNames() { - return new ArrayIterator<String>( - JPA.COLUMN, - JPA.TEMPORAL); - } - - //************** INamedColumn.Owner implementation *************** - - public String getDefaultColumnName() { - return getAttributeName(); - } - - public String getDefaultTableName() { - return getTypeMapping().getTableName(); - } - - //************** IVersionMapping implementation *************** - - public JavaColumn getColumn() { - return this.column; - } - - public TemporalType getTemporal() { - return this.temporal; - } - - public void setTemporal(TemporalType newTemporal) { - TemporalType oldTemporal = this.temporal; - this.temporal = newTemporal; - this.temporalResource().setValue(TemporalType.toJavaResourceModel(newTemporal)); - firePropertyChanged(ColumnMapping.TEMPORAL_PROPERTY, oldTemporal, newTemporal); - } - - @Override - public void update(JavaResourcePersistentAttribute resourcePersistentAttribute) { - super.update(resourcePersistentAttribute); - this.column.update(this.getColumnResource()); - this.setTemporal(this.temporal(this.temporalResource())); - } - - protected TemporalType temporal(TemporalAnnotation temporal) { - return TemporalType.fromJavaResourceModel(temporal.getValue()); - } - - @Override - public Iterator<String> javaCompletionProposals(int pos, Filter<String> filter, CompilationUnit astRoot) { - Iterator<String> result = super.javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - result = this.getColumn().javaCompletionProposals(pos, filter, astRoot); - if (result != null) { - return result; - } - return null; - } - - //*********** Validation ****************************** - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - super.addToMessages(messages, astRoot); - - addColumnMessages(messages, astRoot); - } - - protected void addColumnMessages(List<IMessage> messages, CompilationUnit astRoot) { - JavaColumn column = this.getColumn(); - String table = column.getTable(); - boolean doContinue = entityOwned() && column.connectionProfileIsActive(); - - if (doContinue && this.getTypeMapping().tableNameIsInvalid(table)) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.COLUMN_UNRESOLVED_TABLE, - new String[] {table, column.getName()}, - column, column.getTableTextRange(astRoot)) - ); - doContinue = false; - } - - if (doContinue && ! column.isResolved()) { - messages.add( - DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.COLUMN_UNRESOLVED_NAME, - new String[] {column.getName()}, - column, column.getNameTextRange(astRoot)) - ); - } - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaBasicMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaBasicMappingProvider.java deleted file mode 100644 index 3c37d7b648..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaBasicMappingProvider.java +++ /dev/null @@ -1,56 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.DefaultJavaAttributeMappingProvider; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.resource.java.BasicAnnotation; - -public class JavaBasicMappingProvider - implements DefaultJavaAttributeMappingProvider -{ - - // singleton - private static final JavaBasicMappingProvider INSTANCE = new JavaBasicMappingProvider(); - - /** - * Return the singleton. - */ - public static DefaultJavaAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure non-instantiability. - */ - private JavaBasicMappingProvider() { - super(); - } - - public String getKey() { - return MappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return BasicAnnotation.ANNOTATION_NAME; - } - - public JavaAttributeMapping buildMapping(JavaPersistentAttribute parent, JpaFactory factory) { - return factory.buildJavaBasicMapping(parent); - } - - public boolean defaultApplies(JavaPersistentAttribute persistentAttribute) { - return persistentAttribute.getResourcePersistentAttribute().typeIsBasic(); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaCascade.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaCascade.java deleted file mode 100644 index e7a21e46f8..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaCascade.java +++ /dev/null @@ -1,112 +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.java; - -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.Cascade; -import org.eclipse.jpt.core.context.java.JavaRelationshipMapping; -import org.eclipse.jpt.core.resource.java.RelationshipMappingAnnotation; -import org.eclipse.jpt.core.utility.TextRange; - -public class JavaCascade extends AbstractJavaJpaContextNode implements Cascade -{ - protected boolean all; - - protected boolean persist; - - protected boolean merge; - - protected boolean remove; - - protected boolean refresh; - - protected RelationshipMappingAnnotation relationshipMapping; - - protected JavaCascade(JavaRelationshipMapping parent) { - super(parent); - } - - public boolean isAll() { - return this.all; - } - - public void setAll(boolean newAll) { - boolean oldAll = this.all; - this.all = newAll; - this.relationshipMapping.setCascadeAll(newAll); - firePropertyChanged(Cascade.ALL_PROPERTY, oldAll, newAll); - } - - public boolean isPersist() { - return this.persist; - } - - public void setPersist(boolean newPersist) { - boolean oldPersist = this.persist; - this.persist = newPersist; - this.relationshipMapping.setCascadePersist(newPersist); - firePropertyChanged(Cascade.PERSIST_PROPERTY, oldPersist, newPersist); - } - - public boolean isMerge() { - return this.merge; - } - - public void setMerge(boolean newMerge) { - boolean oldMerge = this.merge; - this.merge = newMerge; - this.relationshipMapping.setCascadeMerge(newMerge); - firePropertyChanged(Cascade.MERGE_PROPERTY, oldMerge, newMerge); - } - - public boolean isRemove() { - return this.remove; - } - - public void setRemove(boolean newRemove) { - boolean oldRemove = this.remove; - this.remove = newRemove; - this.relationshipMapping.setCascadeRemove(newRemove); - firePropertyChanged(Cascade.REMOVE_PROPERTY, oldRemove, newRemove); - } - - public boolean isRefresh() { - return this.refresh; - } - - public void setRefresh(boolean newRefresh) { - boolean oldRefresh = this.refresh; - this.refresh = newRefresh; - this.relationshipMapping.setCascadeRefresh(newRefresh); - firePropertyChanged(Cascade.REFRESH_PROPERTY, oldRefresh, newRefresh); - } - - public TextRange getValidationTextRange(CompilationUnit astRoot) { - return this.relationshipMapping.getCascadeTextRange(astRoot); - } - - public void initialize(RelationshipMappingAnnotation relationshipMapping) { - this.relationshipMapping = relationshipMapping; - this.all = relationshipMapping.isCascadeAll(); - this.persist = relationshipMapping.isCascadePersist(); - this.merge = relationshipMapping.isCascadeMerge(); - this.remove = relationshipMapping.isCascadeRemove(); - this.refresh = relationshipMapping.isCascadeRefresh(); - } - - public void update(RelationshipMappingAnnotation relationshipMapping) { - this.relationshipMapping = relationshipMapping; - this.setAll(relationshipMapping.isCascadeAll()); - this.setPersist(relationshipMapping.isCascadePersist()); - this.setMerge(relationshipMapping.isCascadeMerge()); - this.setRemove(relationshipMapping.isCascadeRemove()); - this.setRefresh(relationshipMapping.isCascadeRefresh()); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaEmbeddableProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaEmbeddableProvider.java deleted file mode 100644 index 3f8567367a..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaEmbeddableProvider.java +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaEmbeddable; -import org.eclipse.jpt.core.context.java.JavaPersistentType; -import org.eclipse.jpt.core.context.java.JavaTypeMappingProvider; -import org.eclipse.jpt.core.resource.java.EmbeddableAnnotation; - -public class JavaEmbeddableProvider - implements JavaTypeMappingProvider -{ - - // singleton - private static final JavaEmbeddableProvider INSTANCE = new JavaEmbeddableProvider(); - - /** - * Return the singleton. - */ - public static JavaTypeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure non-instantiability. - */ - private JavaEmbeddableProvider() { - super(); - } - - public String getKey() { - return MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY; - } - - public String getAnnotationName() { - return EmbeddableAnnotation.ANNOTATION_NAME; - } - - public JavaEmbeddable buildMapping(JavaPersistentType parent, JpaFactory factory) { - return factory.buildJavaEmbeddable(parent); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaEmbeddedIdMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaEmbeddedIdMappingProvider.java deleted file mode 100644 index bc30accc8f..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaEmbeddedIdMappingProvider.java +++ /dev/null @@ -1,56 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.DefaultJavaAttributeMappingProvider; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.internal.context.MappingTools; -import org.eclipse.jpt.core.resource.java.EmbeddedIdAnnotation; - -public class JavaEmbeddedIdMappingProvider - implements DefaultJavaAttributeMappingProvider -{ - - // singleton - private static final JavaEmbeddedIdMappingProvider INSTANCE = new JavaEmbeddedIdMappingProvider(); - - /** - * Return the singleton. - */ - public static DefaultJavaAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure non-instantiability. - */ - private JavaEmbeddedIdMappingProvider() { - super(); - } - - public String getKey() { - return MappingKeys.EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return EmbeddedIdAnnotation.ANNOTATION_NAME; - } - - public JavaAttributeMapping buildMapping(JavaPersistentAttribute parent, JpaFactory factory) { - return factory.buildJavaEmbeddedIdMapping(parent); - } - - public boolean defaultApplies(JavaPersistentAttribute persistentAttribute) { - return MappingTools.getEmbeddableFor(persistentAttribute) != null; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaEmbeddedMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaEmbeddedMappingProvider.java deleted file mode 100644 index fdd6f131ed..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaEmbeddedMappingProvider.java +++ /dev/null @@ -1,56 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.DefaultJavaAttributeMappingProvider; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.internal.context.MappingTools; -import org.eclipse.jpt.core.resource.java.EmbeddedAnnotation; - -public class JavaEmbeddedMappingProvider - implements DefaultJavaAttributeMappingProvider -{ - - // singleton - private static final JavaEmbeddedMappingProvider INSTANCE = new JavaEmbeddedMappingProvider(); - - /** - * Return the singleton. - */ - public static DefaultJavaAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure non-instantiability. - */ - private JavaEmbeddedMappingProvider() { - super(); - } - - public String getKey() { - return MappingKeys.EMBEDDED_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return EmbeddedAnnotation.ANNOTATION_NAME; - } - - public JavaAttributeMapping buildMapping(JavaPersistentAttribute parent, JpaFactory factory) { - return factory.buildJavaEmbeddedMapping(parent); - } - - public boolean defaultApplies(JavaPersistentAttribute persistentAttribute) { - return MappingTools.getEmbeddableFor(persistentAttribute) != null; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaEntityProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaEntityProvider.java deleted file mode 100644 index 7114a094ac..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaEntityProvider.java +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaEntity; -import org.eclipse.jpt.core.context.java.JavaPersistentType; -import org.eclipse.jpt.core.context.java.JavaTypeMappingProvider; -import org.eclipse.jpt.core.resource.java.EntityAnnotation; - -/** - * - */ -public class JavaEntityProvider - implements JavaTypeMappingProvider -{ - - // singleton - private static final JavaEntityProvider INSTANCE = new JavaEntityProvider(); - - /** - * Return the singleton. - */ - public static JavaTypeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure non-instantiability. - */ - private JavaEntityProvider() { - super(); - } - - public String getKey() { - return MappingKeys.ENTITY_TYPE_MAPPING_KEY; - } - - public String getAnnotationName() { - return EntityAnnotation.ANNOTATION_NAME; - } - - public JavaEntity buildMapping(JavaPersistentType parent, JpaFactory factory) { - return factory.buildJavaEntity(parent); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaIdMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaIdMappingProvider.java deleted file mode 100644 index 42db79746b..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaIdMappingProvider.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaAttributeMappingProvider; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.resource.java.IdAnnotation; - -public class JavaIdMappingProvider - implements JavaAttributeMappingProvider -{ - - // singleton - private static final JavaIdMappingProvider INSTANCE = new JavaIdMappingProvider(); - - /** - * Return the singleton. - */ - public static JavaAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure non-instantiability. - */ - private JavaIdMappingProvider() { - super(); - } - - public String getKey() { - return MappingKeys.ID_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return IdAnnotation.ANNOTATION_NAME; - } - - public JavaAttributeMapping buildMapping(JavaPersistentAttribute parent, JpaFactory factory) { - return factory.buildJavaIdMapping(parent); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaManyToManyMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaManyToManyMappingProvider.java deleted file mode 100644 index 028370fbfa..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaManyToManyMappingProvider.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaAttributeMappingProvider; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.resource.java.ManyToManyAnnotation; - -public class JavaManyToManyMappingProvider - implements JavaAttributeMappingProvider -{ - - // singleton - private static final JavaManyToManyMappingProvider INSTANCE = new JavaManyToManyMappingProvider(); - - /** - * Return the singleton. - */ - public static JavaAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure non-instantiability. - */ - private JavaManyToManyMappingProvider() { - super(); - } - - public String getKey() { - return MappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return ManyToManyAnnotation.ANNOTATION_NAME; - } - - public JavaAttributeMapping buildMapping(JavaPersistentAttribute parent, JpaFactory factory) { - return factory.buildJavaManyToManyMapping(parent); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaManyToOneMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaManyToOneMappingProvider.java deleted file mode 100644 index 757a9c1b42..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaManyToOneMappingProvider.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaAttributeMappingProvider; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.resource.java.ManyToOneAnnotation; - -public class JavaManyToOneMappingProvider - implements JavaAttributeMappingProvider -{ - - // singleton - private static final JavaManyToOneMappingProvider INSTANCE = new JavaManyToOneMappingProvider(); - - /** - * Return the singleton. - */ - public static JavaAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure non-instantiability. - */ - private JavaManyToOneMappingProvider() { - super(); - } - - public String getKey() { - return MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return ManyToOneAnnotation.ANNOTATION_NAME; - } - - public JavaAttributeMapping buildMapping(JavaPersistentAttribute parent, JpaFactory factory) { - return factory.buildJavaManyToOneMapping(parent); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaMappedSuperclassProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaMappedSuperclassProvider.java deleted file mode 100644 index 8f3317cc07..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaMappedSuperclassProvider.java +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaMappedSuperclass; -import org.eclipse.jpt.core.context.java.JavaPersistentType; -import org.eclipse.jpt.core.context.java.JavaTypeMappingProvider; -import org.eclipse.jpt.core.resource.java.MappedSuperclassAnnotation; - -public class JavaMappedSuperclassProvider - implements JavaTypeMappingProvider -{ - - // singleton - private static final JavaMappedSuperclassProvider INSTANCE = new JavaMappedSuperclassProvider(); - - /** - * Return the singleton. - */ - public static JavaTypeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure non-instantiability. - */ - private JavaMappedSuperclassProvider() { - super(); - } - - public String getKey() { - return MappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY; - } - - public String getAnnotationName() { - return MappedSuperclassAnnotation.ANNOTATION_NAME; - } - - public JavaMappedSuperclass buildMapping(JavaPersistentType parent, JpaFactory factory) { - return factory.buildJavaMappedSuperclass(parent); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaNullAttributeMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaNullAttributeMappingProvider.java deleted file mode 100644 index cd209b7683..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaNullAttributeMappingProvider.java +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaAttributeMappingProvider; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; - -/** - * This mapping provider implementation is used to create a JavaNullAttributeMapping. - * A JavaNullAttributeMapping should be used when no "mapping" annotation - * exists on a Java attribute *and* no default mapping applies. - */ -public class JavaNullAttributeMappingProvider - implements JavaAttributeMappingProvider -{ - - // singleton - private static final JavaNullAttributeMappingProvider INSTANCE = new JavaNullAttributeMappingProvider(); - - /** - * Return the singleton. - */ - public static JavaAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure non-instantiability. - */ - private JavaNullAttributeMappingProvider() { - super(); - } - - public String getKey() { - return null; - } - - public String getAnnotationName() { - return null; - } - - public JavaAttributeMapping buildMapping(JavaPersistentAttribute parent, JpaFactory factory) { - return factory.buildJavaNullAttributeMapping(parent); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaNullTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaNullTypeMapping.java deleted file mode 100644 index b3067e7e93..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaNullTypeMapping.java +++ /dev/null @@ -1,64 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import java.util.Iterator; -import java.util.List; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaPersistentType; -import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.core.utility.TextRange; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - - -public class JavaNullTypeMapping extends AbstractJavaTypeMapping -{ - public JavaNullTypeMapping(JavaPersistentType parent) { - super(parent); - } - - public String getAnnotationName() { - return null; - } - - public String getKey() { - return MappingKeys.NULL_TYPE_MAPPING_KEY; - } - - public boolean isMapped() { - return false; - } - - public Iterator<String> correspondingAnnotationNames() { - return EmptyIterator.instance(); - } - - @Override - public void addToMessages(List<IMessage> messages, CompilationUnit astRoot) { - //Adding this message here because the likely solution is to add an annotation to the java file. - //This message used to be found on the <class> tag in the persistence.xml. The other possible - //way to fix the error is to remove it from the persistnce.xml. This can be accomplished - //with the Synchronize Classes action. We could also add a quick fix for this error. - messages.add(DefaultJpaValidationMessages.buildMessage( - IMessage.HIGH_SEVERITY, - JpaValidationMessages.PERSISTENCE_UNIT_INVALID_CLASS, - new String[] { this.getPersistentType().getName() }, - this, - this.getValidationTextRange(astRoot))); - } - - @Override - public TextRange getValidationTextRange(CompilationUnit astRoot) { - return this.getPersistentType().getValidationTextRange(astRoot); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaNullTypeMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaNullTypeMappingProvider.java deleted file mode 100644 index bcc6313964..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaNullTypeMappingProvider.java +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.context.java.JavaPersistentType; -import org.eclipse.jpt.core.context.java.JavaTypeMapping; -import org.eclipse.jpt.core.context.java.JavaTypeMappingProvider; - -/** - * This mapping provider implementation is used to create a JavaNullAttributeMapping. - * A JavaNullAttributeMapping should be used when no "mapping" annotation - * exists on a Java type. - */ -public class JavaNullTypeMappingProvider - implements JavaTypeMappingProvider -{ - - // singleton - private static final JavaNullTypeMappingProvider INSTANCE = new JavaNullTypeMappingProvider(); - - /** - * Return the singleton. - */ - public static JavaTypeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure non-instantiability. - */ - private JavaNullTypeMappingProvider() { - super(); - } - - public String getKey() { - return null; - } - - public String getAnnotationName() { - return null; - } - - public JavaTypeMapping buildMapping(JavaPersistentType parent, JpaFactory factory) { - return factory.buildJavaNullTypeMapping(parent); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaOneToManyMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaOneToManyMappingProvider.java deleted file mode 100644 index 15b91f8a6c..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaOneToManyMappingProvider.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaAttributeMappingProvider; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.resource.java.OneToManyAnnotation; - -public class JavaOneToManyMappingProvider - implements JavaAttributeMappingProvider -{ - - // singleton - private static final JavaOneToManyMappingProvider INSTANCE = new JavaOneToManyMappingProvider(); - - /** - * Return the singleton. - */ - public static JavaAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure non-instantiability. - */ - private JavaOneToManyMappingProvider() { - super(); - } - - public String getKey() { - return MappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return OneToManyAnnotation.ANNOTATION_NAME; - } - - public JavaAttributeMapping buildMapping(JavaPersistentAttribute parent, JpaFactory factory) { - return factory.buildJavaOneToManyMapping(parent); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaOneToOneMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaOneToOneMappingProvider.java deleted file mode 100644 index 319b9ef298..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaOneToOneMappingProvider.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaAttributeMappingProvider; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.resource.java.OneToOneAnnotation; - -public class JavaOneToOneMappingProvider - implements JavaAttributeMappingProvider -{ - - // singleton - private static final JavaOneToOneMappingProvider INSTANCE = new JavaOneToOneMappingProvider(); - - /** - * Return the singleton. - */ - public static JavaAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure non-instantiability. - */ - private JavaOneToOneMappingProvider() { - super(); - } - - public String getKey() { - return MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return OneToOneAnnotation.ANNOTATION_NAME; - } - - public JavaAttributeMapping buildMapping(JavaPersistentAttribute parent, JpaFactory factory) { - return factory.buildJavaOneToOneMapping(parent); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaTransientMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaTransientMappingProvider.java deleted file mode 100644 index 4fb5aa294e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaTransientMappingProvider.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaAttributeMappingProvider; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.resource.java.TransientAnnotation; - -public class JavaTransientMappingProvider - implements JavaAttributeMappingProvider -{ - - // singleton - private static final JavaTransientMappingProvider INSTANCE = new JavaTransientMappingProvider(); - - /** - * Return the singleton. - */ - public static JavaAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure non-instantiability. - */ - private JavaTransientMappingProvider() { - super(); - } - - public String getKey() { - return MappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return TransientAnnotation.ANNOTATION_NAME; - } - - public JavaAttributeMapping buildMapping(JavaPersistentAttribute parent, JpaFactory factory) { - return factory.buildJavaTransientMapping(parent); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaVersionMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaVersionMappingProvider.java deleted file mode 100644 index c17edb669e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaVersionMappingProvider.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 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.java; - -import org.eclipse.jpt.core.JpaFactory; -import org.eclipse.jpt.core.MappingKeys; -import org.eclipse.jpt.core.context.java.JavaAttributeMapping; -import org.eclipse.jpt.core.context.java.JavaAttributeMappingProvider; -import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.core.resource.java.VersionAnnotation; - -public class JavaVersionMappingProvider - implements JavaAttributeMappingProvider -{ - - // singleton - private static final JavaVersionMappingProvider INSTANCE = new JavaVersionMappingProvider(); - - /** - * Return the singleton. - */ - public static JavaAttributeMappingProvider instance() { - return INSTANCE; - } - - /** - * Ensure non-instantiability. - */ - private JavaVersionMappingProvider() { - super(); - } - - public String getKey() { - return MappingKeys.VERSION_ATTRIBUTE_MAPPING_KEY; - } - - public String getAnnotationName() { - return VersionAnnotation.ANNOTATION_NAME; - } - - public JavaAttributeMapping buildMapping(JavaPersistentAttribute parent, JpaFactory factory) { - return factory.buildJavaVersionMapping(parent); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/VirtualAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/VirtualAttributeOverride.java deleted file mode 100644 index efbc1d16ae..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/VirtualAttributeOverride.java +++ /dev/null @@ -1,107 +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.java; - -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.Column; -import org.eclipse.jpt.core.internal.resource.java.AbstractJavaResourceNode; -import org.eclipse.jpt.core.resource.java.Annotation; -import org.eclipse.jpt.core.resource.java.AttributeOverrideAnnotation; -import org.eclipse.jpt.core.resource.java.ColumnAnnotation; -import org.eclipse.jpt.core.resource.java.JavaResourceNode; -import org.eclipse.jpt.core.resource.java.JavaResourcePersistentMember; -import org.eclipse.jpt.core.utility.TextRange; - - -public class VirtualAttributeOverride extends AbstractJavaResourceNode implements AttributeOverrideAnnotation, Annotation -{ - private final VirtualAttributeOverrideColumn column; - - private String name; - - public VirtualAttributeOverride(JavaResourceNode parent, String name, Column column) { - super(parent); - this.name = name; - this.column = new VirtualAttributeOverrideColumn(this, column); - } - - public void initialize(CompilationUnit astRoot) { - //null, nothing to initialize - } - - public org.eclipse.jdt.core.dom.Annotation getJdtAnnotation(CompilationUnit astRoot) { - return null; - } - - public void newAnnotation() { - throw new UnsupportedOperationException(); - } - - public void removeAnnotation() { - throw new UnsupportedOperationException(); - } - - public String getAnnotationName() { - return AttributeOverrideAnnotation.ANNOTATION_NAME; - } - - public String getName() { - return this.name; - } - - public void setName(String name) { - if (name != null) { - createAttributeOverrideResource().setName(name); - } - } - - public ColumnAnnotation getNonNullColumn() { - return getColumn(); - } - - public ColumnAnnotation getColumn() { - return this.column; - } - - public ColumnAnnotation addColumn() { - throw new UnsupportedOperationException(); - } - - public void removeColumn() { - throw new UnsupportedOperationException(); - } - - @Override - public JavaResourcePersistentMember getParent() { - return (JavaResourcePersistentMember) super.getParent(); - } - - protected AttributeOverrideAnnotation createAttributeOverrideResource() { - return (AttributeOverrideAnnotation) getParent().addAnnotation(getAnnotationName()); - } - - public void updateFromJava(CompilationUnit astRoot) { - throw new UnsupportedOperationException(); - - } - - public boolean nameTouches(int pos, CompilationUnit astRoot) { - return false; - } - - public TextRange getNameTextRange(CompilationUnit astRoot) { - return null; - } - - public TextRange getTextRange(CompilationUnit astRoot) { - return null; - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/VirtualAttributeOverrideColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/VirtualAttributeOverrideColumn.java deleted file mode 100644 index 3f0e8eff56..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/VirtualAttributeOverrideColumn.java +++ /dev/null @@ -1,146 +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.java; - -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.core.context.Column; -import org.eclipse.jpt.core.internal.resource.java.NullBaseColumn; -import org.eclipse.jpt.core.resource.java.Annotation; -import org.eclipse.jpt.core.resource.java.AttributeOverrideAnnotation; -import org.eclipse.jpt.core.resource.java.ColumnAnnotation; -import org.eclipse.jpt.core.utility.TextRange; - - -public class VirtualAttributeOverrideColumn extends NullBaseColumn implements ColumnAnnotation, Annotation -{ - private Column column; - - public VirtualAttributeOverrideColumn(AttributeOverrideAnnotation parent, Column column) { - super(parent); - this.column = column; - } - - @Override - public AttributeOverrideAnnotation getParent() { - return (AttributeOverrideAnnotation) super.getParent(); - } - - public String getAnnotationName() { - return ColumnAnnotation.ANNOTATION_NAME; - } - - @Override - protected ColumnAnnotation createColumnResource() { - return getParent().addColumn(); - } - - @Override - public String getName() { - if (this.column.getSpecifiedName() != null) { - return this.column.getSpecifiedName(); - } - return null; - } - - @Override - public String getTable() { - if (this.column.getSpecifiedTable() != null) { - return this.column.getSpecifiedTable(); - } - return null; - } - - @Override - public Boolean getInsertable() { - if (this.column.getSpecifiedInsertable() != null) { - return this.column.getSpecifiedInsertable(); - } - return null; - } - - @Override - public Boolean getUpdatable() { - if (this.column.getSpecifiedUpdatable() != null) { - return this.column.getSpecifiedUpdatable(); - } - return null; - } - @Override - public Boolean getNullable() { - if (this.column.getSpecifiedNullable() != null) { - return this.column.getSpecifiedNullable(); - } - return null; - } - - @Override - public Boolean getUnique() { - if (this.column.getSpecifiedUnique() != null) { - return this.column.getSpecifiedUnique(); - } - return null; - } - - @Override - public String getColumnDefinition() { - return this.column.getColumnDefinition(); - } - - public Integer getLength() { - if (this.column.getSpecifiedLength() != null) { - return this.column.getSpecifiedLength(); - } - return null; - } - - public void setLength(Integer length) { - if (length != null) { - createColumnResource().setLength(length); - } - } - - public Integer getScale() { - if (this.column.getSpecifiedScale() != null) { - return this.column.getSpecifiedScale(); - } - return null; - } - - public void setScale(Integer scale) { - if (scale != null) { - createColumnResource().setScale(scale); - } - } - - public Integer getPrecision() { - if (this.column.getSpecifiedPrecision() != null) { - return this.column.getSpecifiedPrecision(); - } - return null; - } - - public void setPrecision(Integer precision) { - if (precision != null) { - createColumnResource().setPrecision(precision); - } - } - - public TextRange getScaleTextRange(CompilationUnit astRoot) { - return null; - } - - public TextRange getLengthTextRange(CompilationUnit astRoot) { - return null; - } - - public TextRange getPrecisionTextRange(CompilationUnit astRoot) { - return null; - } -} |