diff options
author | kmoore | 2010-07-27 18:55:52 +0000 |
---|---|---|
committer | kmoore | 2010-07-27 18:55:52 +0000 |
commit | 4150fda15c5f63e3cf7852e7840189a1352355e3 (patch) | |
tree | 951ac6fea3e4996bfa52f07cb6a564d2be0da49a /jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context | |
parent | f91f1da1682a7ba6ba4d39488f0cf98ba59617e6 (diff) | |
download | webtools.dali-4150fda15c5f63e3cf7852e7840189a1352355e3.tar.gz webtools.dali-4150fda15c5f63e3cf7852e7840189a1352355e3.tar.xz webtools.dali-4150fda15c5f63e3cf7852e7840189a1352355e3.zip |
209489 - rename type refactoring participation
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context')
13 files changed, 238 insertions, 12 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaPersistentType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaPersistentType.java index c3be5d891e..bc32d52603 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaPersistentType.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaPersistentType.java @@ -632,6 +632,11 @@ public abstract class AbstractJavaPersistentType // ********** misc ********** + public boolean isFor(String typeName) { + String className = this.getName(); + return className != null && className.equals(typeName); + } + public boolean isMapped() { return this.mapping.isMapped(); } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractEntityMappings.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractEntityMappings.java index efabd0ad54..95dc7f6498 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractEntityMappings.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractEntityMappings.java @@ -55,6 +55,7 @@ import org.eclipse.jpt.utility.internal.iterables.TransformationIterable; import org.eclipse.jpt.utility.internal.iterators.CloneIterator; import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; import org.eclipse.text.edits.DeleteEdit; +import org.eclipse.text.edits.ReplaceEdit; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -828,6 +829,16 @@ public abstract class AbstractEntityMappings ); } + public Iterable<ReplaceEdit> createReplaceTypeEdits(final IType originalType, final String newName) { + return new CompositeIterable<ReplaceEdit>( + new TransformationIterable<OrmPersistentType, Iterable<ReplaceEdit>>(getPersistentTypes()) { + @Override + protected Iterable<ReplaceEdit> transform(OrmPersistentType persistentType) { + return persistentType.createReplaceTypeEdits(originalType, newName); + } + } + ); + } // ********** dispose ********** diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmAttributeMapping.java index ed650203bb..ad10143e0b 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmAttributeMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmAttributeMapping.java @@ -13,6 +13,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import org.eclipse.jdt.core.IType; import org.eclipse.jpt.core.context.AttributeMapping; import org.eclipse.jpt.core.context.Column; import org.eclipse.jpt.core.context.ColumnMapping; @@ -50,8 +51,10 @@ import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; import org.eclipse.jpt.core.utility.TextRange; import org.eclipse.jpt.utility.internal.StringTools; +import org.eclipse.jpt.utility.internal.iterables.EmptyIterable; import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; import org.eclipse.jpt.utility.internal.iterators.SingleElementIterator; +import org.eclipse.text.edits.ReplaceEdit; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -345,6 +348,13 @@ public abstract class AbstractOrmAttributeMapping<T extends XmlAttributeMapping> } + // ********** refactoring ********** + + public Iterable<ReplaceEdit> createReplaceTypeEdits(IType originalType, String newName) { + return EmptyIterable.instance(); + } + + // ********** validation ********** @Override diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEntity.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEntity.java index e25a980363..725946ccda 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEntity.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEntity.java @@ -15,6 +15,7 @@ import java.util.Iterator; import java.util.List; import java.util.ListIterator; import org.eclipse.emf.common.util.EList; +import org.eclipse.jdt.core.IType; import org.eclipse.jpt.core.MappingKeys; import org.eclipse.jpt.core.JpaPlatformVariation.Supported; import org.eclipse.jpt.core.context.AssociationOverride; @@ -94,6 +95,7 @@ import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; import org.eclipse.jpt.utility.internal.iterators.EmptyListIterator; import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; import org.eclipse.jpt.utility.internal.iterators.TransformationIterator; +import org.eclipse.text.edits.ReplaceEdit; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -1560,8 +1562,23 @@ public abstract class AbstractOrmEntity public void removeFromResourceModel(XmlEntityMappings entityMappings) { entityMappings.getEntities().remove(this.resourceTypeMapping); } - - + + + //************************* refactoring ************************ + + @SuppressWarnings("unchecked") + @Override + public Iterable<ReplaceEdit> createReplaceTypeEdits(IType originalType, String newName) { + return new CompositeIterable<ReplaceEdit>( + super.createReplaceTypeEdits(originalType, newName), + this.createIdClassReplaceTypeEdits(originalType, newName)); + } + + protected Iterable<ReplaceEdit> createIdClassReplaceTypeEdits(IType originalType, String newName) { + return this.idClassReference.createReplaceEdits(originalType, newName); + } + + // **************** validation ********************************************* @Override diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMappedSuperclass.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMappedSuperclass.java index bd30ea7c6b..cee2d7d566 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMappedSuperclass.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMappedSuperclass.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.core.internal.context.orm; import java.util.Iterator; import java.util.List; +import org.eclipse.jdt.core.IType; import org.eclipse.jpt.core.MappingKeys; import org.eclipse.jpt.core.context.Table; import org.eclipse.jpt.core.context.java.JavaIdClassReference; @@ -24,7 +25,9 @@ import org.eclipse.jpt.core.internal.context.PrimaryKeyValidator; import org.eclipse.jpt.core.internal.jpa1.context.GenericMappedSuperclassPrimaryKeyValidator; import org.eclipse.jpt.core.resource.orm.XmlEntityMappings; import org.eclipse.jpt.core.resource.orm.XmlMappedSuperclass; +import org.eclipse.jpt.utility.internal.iterables.CompositeIterable; import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; +import org.eclipse.text.edits.ReplaceEdit; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -126,7 +129,25 @@ public abstract class AbstractOrmMappedSuperclass extends AbstractOrmTypeMapping super.update(); this.idClassReference.update(getJavaIdClassReferenceForDefaults()); } - + + + //************************* refactoring ************************ + + @SuppressWarnings("unchecked") + @Override + public Iterable<ReplaceEdit> createReplaceTypeEdits(IType originalType, String newName) { + return new CompositeIterable<ReplaceEdit>( + super.createReplaceTypeEdits(originalType, newName), + this.createIdClassReplaceTypeEdits(originalType, newName)); + } + + protected Iterable<ReplaceEdit> createIdClassReplaceTypeEdits(IType originalType, String newName) { + return this.idClassReference.createReplaceEdits(originalType, newName); + } + + + // **************** validation ********************************************* + @Override public void validate(List<IMessage> messages, IReporter reporter) { super.validate(messages, reporter); diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java index e460f4a76a..0bcd8e0a63 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java @@ -13,6 +13,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.emf.common.util.EList; +import org.eclipse.jdt.core.IType; import org.eclipse.jpt.core.context.AttributeMapping; import org.eclipse.jpt.core.context.BaseColumn; import org.eclipse.jpt.core.context.BaseOverride; @@ -51,7 +52,11 @@ import org.eclipse.jpt.core.resource.orm.XmlColumn; import org.eclipse.jpt.core.utility.TextRange; import org.eclipse.jpt.db.Table; import org.eclipse.jpt.utility.internal.StringTools; +import org.eclipse.jpt.utility.internal.iterables.CompositeIterable; +import org.eclipse.jpt.utility.internal.iterables.EmptyIterable; +import org.eclipse.jpt.utility.internal.iterables.SingleElementIterable; import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; +import org.eclipse.text.edits.ReplaceEdit; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -575,8 +580,33 @@ public abstract class AbstractOrmMultiRelationshipMapping<T extends AbstractXmlM public String getMetamodelFieldMapKeyTypeName() { return MappingTools.getMetamodelFieldMapKeyTypeName(this); } - - + + + //************* refactoring ************* + + @SuppressWarnings("unchecked") + @Override + public Iterable<ReplaceEdit> createReplaceTypeEdits(IType originalType, String newName) { + return new CompositeIterable<ReplaceEdit>( + super.createReplaceTypeEdits(originalType, newName), + this.createMapKeyClassReplaceTypeEdits(originalType, newName)); + } + + protected Iterable<ReplaceEdit> createMapKeyClassReplaceTypeEdits(IType originalType, String newName) { + if (this.specifiedMapKeyClass != null) { + String originalName = originalType.getFullyQualifiedName('.'); + if (this.resolvedMapKeyType != null && this.resolvedMapKeyType.isFor(originalName)) { + return new SingleElementIterable<ReplaceEdit>(this.createReplaceMapKeyClassEdit(originalType, newName)); + } + } + return EmptyIterable.instance(); + } + + protected ReplaceEdit createReplaceMapKeyClassEdit(IType originalType, String newName) { + return this.resourceAttributeMapping.createReplaceMapKeyClassEdit(originalType, newName); + } + + // ********** validation ********** @Override diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmPersistentAttribute.java index fb0eab8ee7..5a5e0a982b 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmPersistentAttribute.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmPersistentAttribute.java @@ -10,6 +10,7 @@ package org.eclipse.jpt.core.internal.context.orm; import java.util.List; +import org.eclipse.jdt.core.IType; import org.eclipse.jpt.core.JpaStructureNode; import org.eclipse.jpt.core.MappingKeys; import org.eclipse.jpt.core.context.AccessType; @@ -27,6 +28,7 @@ import org.eclipse.jpt.core.jpa2.context.java.JavaPersistentAttribute2_0; import org.eclipse.jpt.core.jpa2.context.orm.OrmPersistentAttribute2_0; import org.eclipse.jpt.core.resource.orm.XmlAttributeMapping; import org.eclipse.jpt.core.utility.TextRange; +import org.eclipse.text.edits.ReplaceEdit; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -230,6 +232,13 @@ public abstract class AbstractOrmPersistentAttribute } + // ********** refactoring ********** + + public Iterable<ReplaceEdit> createReplaceTypeEdits(IType originalType, String newName) { + return this.attributeMapping.createReplaceTypeEdits(originalType, newName); + } + + // ********** validation ********** @Override diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmRelationshipMapping.java index 975ffef534..7405344df8 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmRelationshipMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmRelationshipMapping.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.core.internal.context.orm; import java.util.Iterator; import java.util.List; +import org.eclipse.jdt.core.IType; import org.eclipse.jpt.core.context.AttributeMapping; import org.eclipse.jpt.core.context.Entity; import org.eclipse.jpt.core.context.FetchType; @@ -29,9 +30,13 @@ import org.eclipse.jpt.core.jpa2.context.orm.OrmCascade2_0; import org.eclipse.jpt.core.resource.orm.AbstractXmlRelationshipMapping; import org.eclipse.jpt.core.utility.TextRange; import org.eclipse.jpt.utility.internal.CollectionTools; +import org.eclipse.jpt.utility.internal.iterables.CompositeIterable; +import org.eclipse.jpt.utility.internal.iterables.EmptyIterable; +import org.eclipse.jpt.utility.internal.iterables.SingleElementIterable; import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; import org.eclipse.jpt.utility.internal.iterators.TransformationIterator; +import org.eclipse.text.edits.ReplaceEdit; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -275,6 +280,34 @@ public abstract class AbstractOrmRelationshipMapping<T extends AbstractXmlRelati return (this.resolvedTargetEntity == null) ? null : this.resolvedTargetEntity.getIdAttribute(); } + + //************ refactoring ************ + + @SuppressWarnings("unchecked") + @Override + public Iterable<ReplaceEdit> createReplaceTypeEdits(IType originalType, String newName) { + return new CompositeIterable<ReplaceEdit>( + super.createReplaceTypeEdits(originalType, newName), + this.createTargetEntityReplaceTypeEdits(originalType, newName)); + } + + protected Iterable<ReplaceEdit> createTargetEntityReplaceTypeEdits(IType originalType, String newName) { + if (this.specifiedTargetEntity != null) { + String originalName = originalType.getFullyQualifiedName('.'); + if (this.resolvedTargetType != null && this.resolvedTargetType.isFor(originalName)) { + return new SingleElementIterable<ReplaceEdit>(this.createReplaceTargetEntityEdit(originalType, newName)); + } + } + return EmptyIterable.instance(); + } + + protected ReplaceEdit createReplaceTargetEntityEdit(IType originalType, String newName) { + return this.resourceAttributeMapping.createReplaceTargetEntityEdit(originalType, newName); + } + + + //*********** validation *********** + @Override public void validate(List<IMessage> messages, IReporter reporter) { super.validate(messages, reporter); diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmTypeMapping.java index c90b95eb1b..9583beda58 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmTypeMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmTypeMapping.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.core.internal.context.orm; import java.util.Iterator; import java.util.List; +import org.eclipse.jdt.core.IType; import org.eclipse.jpt.core.JpaStructureNode; import org.eclipse.jpt.core.context.AttributeMapping; import org.eclipse.jpt.core.context.Column; @@ -30,10 +31,13 @@ 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.StringTools; +import org.eclipse.jpt.utility.internal.iterables.EmptyIterable; import org.eclipse.jpt.utility.internal.iterables.FilteringIterable; +import org.eclipse.jpt.utility.internal.iterables.SingleElementIterable; import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; import org.eclipse.jpt.utility.internal.iterators.TransformationIterator; import org.eclipse.text.edits.DeleteEdit; +import org.eclipse.text.edits.ReplaceEdit; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -359,11 +363,22 @@ public abstract class AbstractOrmTypeMapping<T extends XmlTypeMapping> //************************* refactoring ************************ - + public DeleteEdit createDeleteEdit() { return this.resourceTypeMapping.createDeleteEdit(); } + public Iterable<ReplaceEdit> createReplaceTypeEdits(IType originalType, String newName) { + if (getPersistentType().isFor(originalType.getFullyQualifiedName('.'))) { + return new SingleElementIterable<ReplaceEdit>(this.createReplaceTypeEdit(originalType, newName)); + } + return EmptyIterable.instance(); + } + + protected ReplaceEdit createReplaceTypeEdit(IType originalType, String newName) { + return this.resourceTypeMapping.createReplaceTypeEdit(originalType, newName); + } + // ********** misc ********** diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmIdClassReference.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmIdClassReference.java index 5b9a999399..a963f4c851 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmIdClassReference.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmIdClassReference.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.core.internal.context.orm; import java.util.List; +import org.eclipse.jdt.core.IType; import org.eclipse.jpt.core.context.AccessType; import org.eclipse.jpt.core.context.java.JavaIdClassReference; import org.eclipse.jpt.core.context.java.JavaPersistentType; @@ -25,6 +26,9 @@ import org.eclipse.jpt.core.resource.orm.XmlClassReference; import org.eclipse.jpt.core.resource.orm.XmlIdClassContainer; import org.eclipse.jpt.core.resource.orm.XmlTypeMapping; import org.eclipse.jpt.core.utility.TextRange; +import org.eclipse.jpt.utility.internal.iterables.EmptyIterable; +import org.eclipse.jpt.utility.internal.iterables.SingleElementIterable; +import org.eclipse.text.edits.ReplaceEdit; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -207,8 +211,29 @@ public class GenericOrmIdClassReference } } } - - + + + //************************* refactoring ************************ + + public Iterable<ReplaceEdit> createReplaceEdits(IType originalType, String newName) { + if (this.isFor(originalType.getFullyQualifiedName('.'))) { + return new SingleElementIterable<ReplaceEdit>(this.createReplaceEdit(originalType, newName)); + } + return EmptyIterable.instance(); + } + + protected ReplaceEdit createReplaceEdit(IType originalType, String newName) { + return getIdXmlClassRef().createReplaceEdit(originalType, newName); + } + + protected boolean isFor(String typeName) { + if (this.idClass != null && this.idClass.isFor(typeName)) { + return true; + } + return false; + } + + // **************** validation ******************************************** public TextRange getValidationTextRange() { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/AbstractMappingFileRef.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/AbstractMappingFileRef.java index 2d4c57ef2d..f2f7fb1598 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/AbstractMappingFileRef.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/AbstractMappingFileRef.java @@ -293,6 +293,13 @@ public abstract class AbstractMappingFileRef return EmptyIterable.instance(); } + public Iterable<ReplaceEdit> createReplaceTypeEdits(IType originalType, String newName) { + if (this.mappingFile != null) { + return this.mappingFile.createReplaceTypeEdits(originalType, newName); + } + return EmptyIterable.instance(); + } + public Iterable<ReplaceEdit> createReplaceMappingFileEdits(IFile originalFile, String newName) { if (this.isFor(originalFile)) { return new SingleElementIterable<ReplaceEdit>(this.createReplaceEdit(originalFile, newName)); diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/AbstractPersistenceUnit.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/AbstractPersistenceUnit.java index 06bade806f..701d717c28 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/AbstractPersistenceUnit.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/AbstractPersistenceUnit.java @@ -137,8 +137,8 @@ public abstract class AbstractPersistenceUnit protected boolean defaultDelimitedIdentifiers; //****** PersistenceUnit2_0 features - private PersistenceUnitProperties connection; - private PersistenceUnitProperties options; + protected PersistenceUnitProperties connection; + protected PersistenceUnitProperties options; protected SharedCacheMode specifiedSharedCacheMode; protected SharedCacheMode defaultSharedCacheMode; @@ -967,6 +967,19 @@ public abstract class AbstractPersistenceUnit return null; } + public Iterable<Property> getPropertiesNamed(final String propertyName) { + if (propertyName == null) { + throw new NullPointerException(); + } + return new FilteringIterable<Property>(CollectionTools.iterable(this.properties())) { + @Override + protected boolean accept(Property property) { + String pName = property.getName(); + return (pName != null) && pName.equals(propertyName); + } + }; + } + public Iterator<Property> propertiesWithNamePrefix(final String propertyNamePrefix) { if (propertyNamePrefix == null) { throw new NullPointerException(); @@ -1629,6 +1642,28 @@ public abstract class AbstractPersistenceUnit ); } + @SuppressWarnings("unchecked") + public Iterable<ReplaceEdit> createReplaceTypeEdits(IType originalType, String newName) { + return new CompositeIterable<ReplaceEdit>( + createSpecifiedClassRefReplaceTypeEdits(originalType, newName), + createPersistenceUnitPropertiesReplaceTypeEdits(originalType, newName)); + } + + protected Iterable<ReplaceEdit> createSpecifiedClassRefReplaceTypeEdits(final IType originalType, final String newName) { + return new CompositeIterable<ReplaceEdit>( + new TransformationIterable<ClassRef, Iterable<ReplaceEdit>>(getSpecifiedClassRefs()) { + @Override + protected Iterable<ReplaceEdit> transform(ClassRef classRef) { + return classRef.createReplaceTypeEdits(originalType, newName); + } + } + ); + } + + protected Iterable<ReplaceEdit> createPersistenceUnitPropertiesReplaceTypeEdits(IType originalType, String newName) { + return this.options.createReplaceTypeEdits(originalType, newName); + } + public Iterable<ReplaceEdit> createReplaceMappingFileEdits(final IFile originalFile, final String newName) { return new CompositeIterable<ReplaceEdit>( new TransformationIterable<MappingFileRef, Iterable<ReplaceEdit>>(getMappingFileRefs()) { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/AbstractPersistenceUnitProperties.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/AbstractPersistenceUnitProperties.java index 0fe0ea4cd0..55b72fc134 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/AbstractPersistenceUnitProperties.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/AbstractPersistenceUnitProperties.java @@ -14,13 +14,15 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; - +import org.eclipse.jdt.core.IType; import org.eclipse.jpt.core.JpaProject; import org.eclipse.jpt.core.context.persistence.PersistenceUnit; import org.eclipse.jpt.core.context.persistence.PersistenceUnitProperties; import org.eclipse.jpt.utility.internal.ReflectionTools; import org.eclipse.jpt.utility.internal.StringTools; +import org.eclipse.jpt.utility.internal.iterables.EmptyIterable; import org.eclipse.jpt.utility.internal.model.AbstractModel; +import org.eclipse.text.edits.ReplaceEdit; /** * AbstractPersistenceUnitProperties @@ -508,5 +510,11 @@ public abstract class AbstractPersistenceUnitProperties extends AbstractModel sb.deleteCharAt(sb.length() - 1); // remove the last delimiter return sb.toString(); } - + + + // ********** refactoring ************ + + public Iterable<ReplaceEdit> createReplaceTypeEdits(IType originalType, String newName) { + return EmptyIterable.instance(); + } } |