diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaReferenceTable.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaReferenceTable.java | 111 |
1 files changed, 38 insertions, 73 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaReferenceTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaReferenceTable.java index 5c71d1f567..52d5280d24 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaReferenceTable.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaReferenceTable.java @@ -11,14 +11,10 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.java; import java.util.Iterator; import java.util.List; -import java.util.ListIterator; -import java.util.Vector; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.common.utility.Filter; -import org.eclipse.jpt.common.utility.internal.CollectionTools; import org.eclipse.jpt.common.utility.internal.iterables.EmptyListIterable; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; -import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable; import org.eclipse.jpt.common.utility.internal.iterables.SingleElementListIterable; import org.eclipse.jpt.jpa.core.context.JoinColumn; import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn; @@ -27,7 +23,6 @@ import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumn; import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode; import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyJoinColumn; import org.eclipse.jpt.jpa.core.context.java.JavaReferenceTable; -import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools; import org.eclipse.jpt.jpa.core.internal.context.MappingTools; import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaTable; import org.eclipse.jpt.jpa.core.internal.resource.java.NullJoinColumnAnnotation; @@ -43,8 +38,7 @@ public abstract class GenericJavaReferenceTable<A extends ReferenceTableAnnotati extends AbstractJavaTable<A> implements JavaReferenceTable { - protected final Vector<JavaJoinColumn> specifiedJoinColumns = new Vector<JavaJoinColumn>(); - protected final SpecifiedJoinColumnContainerAdapter specifiedJoinColumnContainerAdapter = new SpecifiedJoinColumnContainerAdapter(); + protected final SpecifiedJoinColumnContainer specifiedJoinColumnContainer; protected final JavaReadOnlyJoinColumn.Owner joinColumnOwner; protected JavaJoinColumn defaultJoinColumn; @@ -53,7 +47,7 @@ public abstract class GenericJavaReferenceTable<A extends ReferenceTableAnnotati protected GenericJavaReferenceTable(JavaJpaContextNode parent, Owner owner) { super(parent, owner); this.joinColumnOwner = this.buildJoinColumnOwner(); - this.initializeSpecifiedJoinColumns(); + this.specifiedJoinColumnContainer = new SpecifiedJoinColumnContainer(); } @@ -68,23 +62,19 @@ public abstract class GenericJavaReferenceTable<A extends ReferenceTableAnnotati @Override public void update() { super.update(); - this.updateNodes(this.getSpecifiedJoinColumns()); + this.updateSpecifiedJoinColumns(); this.updateDefaultJoinColumn(); } // ********** join columns ********** - public ListIterator<JavaJoinColumn> joinColumns() { - return this.getJoinColumns().iterator(); - } - - protected ListIterable<JavaJoinColumn> getJoinColumns() { + public ListIterable<JavaJoinColumn> getJoinColumns() { return this.hasSpecifiedJoinColumns() ? this.getSpecifiedJoinColumns() : this.getDefaultJoinColumns(); } - public int joinColumnsSize() { - return this.hasSpecifiedJoinColumns() ? this.specifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize(); + public int getJoinColumnsSize() { + return this.hasSpecifiedJoinColumns() ? this.getSpecifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize(); } public void convertDefaultJoinColumnToSpecified() { @@ -94,106 +84,81 @@ public abstract class GenericJavaReferenceTable<A extends ReferenceTableAnnotati // ********** specified join columns ********** - public ListIterator<JavaJoinColumn> specifiedJoinColumns() { - return this.getSpecifiedJoinColumns().iterator(); - } - - protected ListIterable<JavaJoinColumn> getSpecifiedJoinColumns() { - return new LiveCloneListIterable<JavaJoinColumn>(this.specifiedJoinColumns); + public ListIterable<JavaJoinColumn> getSpecifiedJoinColumns() { + return this.specifiedJoinColumnContainer.getContextElements(); } - public int specifiedJoinColumnsSize() { - return this.specifiedJoinColumns.size(); + public int getSpecifiedJoinColumnsSize() { + return this.specifiedJoinColumnContainer.getContextElementsSize(); } public boolean hasSpecifiedJoinColumns() { - return this.specifiedJoinColumns.size() != 0; + return this.getSpecifiedJoinColumnsSize() != 0; } public JavaJoinColumn getSpecifiedJoinColumn(int index) { - return this.specifiedJoinColumns.get(index); + return this.specifiedJoinColumnContainer.getContextElement(index); } public JavaJoinColumn addSpecifiedJoinColumn() { - return this.addSpecifiedJoinColumn(this.specifiedJoinColumns.size()); + return this.addSpecifiedJoinColumn(this.getSpecifiedJoinColumnsSize()); } public JavaJoinColumn addSpecifiedJoinColumn(int index) { JoinColumnAnnotation annotation = this.getTableAnnotation().addJoinColumn(index); - return this.addSpecifiedJoinColumn_(index, annotation); + return this.specifiedJoinColumnContainer.addContextElement(index, annotation); } public void removeSpecifiedJoinColumn(JoinColumn joinColumn) { - this.removeSpecifiedJoinColumn(this.specifiedJoinColumns.indexOf(joinColumn)); + this.removeSpecifiedJoinColumn(this.specifiedJoinColumnContainer.indexOfContextElement((JavaJoinColumn) joinColumn)); } public void removeSpecifiedJoinColumn(int index) { this.getTableAnnotation().removeJoinColumn(index); this.removeTableAnnotationIfUnset(); - this.removeSpecifiedJoinColumn_(index); - } - - protected void removeSpecifiedJoinColumn_(int index) { - this.removeItemFromList(index, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); + this.specifiedJoinColumnContainer.removeContextElement(index); } public void moveSpecifiedJoinColumn(int targetIndex, int sourceIndex) { this.getTableAnnotation().moveJoinColumn(targetIndex, sourceIndex); - this.moveItemInList(targetIndex, sourceIndex, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); - } - - protected void initializeSpecifiedJoinColumns() { - for (JoinColumnAnnotation joinColumnAnnotation : this.getJoinColumnAnnotations()) { - this.specifiedJoinColumns.add(this.buildJoinColumn(joinColumnAnnotation)); - } + this.specifiedJoinColumnContainer.moveContextElement(targetIndex, sourceIndex); } protected void syncSpecifiedJoinColumns() { - ContextContainerTools.synchronizeWithResourceModel(this.specifiedJoinColumnContainerAdapter); - } - - protected Iterable<JoinColumnAnnotation> getJoinColumnAnnotations() { - return CollectionTools.iterable(this.getTableAnnotation().joinColumns()); + this.specifiedJoinColumnContainer.synchronizeWithResourceModel(); } - protected void moveSpecifiedJoinColumn_(int index, JavaJoinColumn joinColumn) { - this.moveItemInList(index, joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); + protected void updateSpecifiedJoinColumns() { + this.specifiedJoinColumnContainer.update(); } - protected JavaJoinColumn addSpecifiedJoinColumn_(int index, JoinColumnAnnotation joinColumnAnnotation) { - JavaJoinColumn joinColumn = this.buildJoinColumn(joinColumnAnnotation); - this.addItemToList(index, joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); - return joinColumn; + protected ListIterable<JoinColumnAnnotation> getJoinColumnAnnotations() { + return this.getTableAnnotation().getJoinColumns(); } - protected void removeSpecifiedJoinColumn_(JavaJoinColumn joinColumn) { - this.removeSpecifiedJoinColumn_(this.specifiedJoinColumns.indexOf(joinColumn)); - } /** - * specified join column container adapter + * join column container */ - protected class SpecifiedJoinColumnContainerAdapter - implements ContextContainerTools.Adapter<JavaJoinColumn, JoinColumnAnnotation> + protected class SpecifiedJoinColumnContainer + extends ContextListContainer<JavaJoinColumn, JoinColumnAnnotation> { - public Iterable<JavaJoinColumn> getContextElements() { - return GenericJavaReferenceTable.this.getSpecifiedJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_JOIN_COLUMNS_LIST; } - public Iterable<JoinColumnAnnotation> getResourceElements() { + @Override + protected JavaJoinColumn buildContextElement(JoinColumnAnnotation resourceElement) { + return GenericJavaReferenceTable.this.buildJoinColumn(resourceElement); + } + @Override + protected ListIterable<JoinColumnAnnotation> getResourceElements() { return GenericJavaReferenceTable.this.getJoinColumnAnnotations(); } - public JoinColumnAnnotation getResourceElement(JavaJoinColumn contextElement) { + @Override + protected JoinColumnAnnotation getResourceElement(JavaJoinColumn contextElement) { return contextElement.getColumnAnnotation(); } - public void moveContextElement(int index, JavaJoinColumn element) { - GenericJavaReferenceTable.this.moveSpecifiedJoinColumn_(index, element); - } - public void addContextElement(int index, JoinColumnAnnotation resourceElement) { - GenericJavaReferenceTable.this.addSpecifiedJoinColumn_(index, resourceElement); - } - public void removeContextElement(JavaJoinColumn element) { - GenericJavaReferenceTable.this.removeSpecifiedJoinColumn_(element); - } } protected abstract JavaReadOnlyJoinColumn.Owner buildJoinColumnOwner(); @@ -242,14 +207,14 @@ public abstract class GenericJavaReferenceTable<A extends ReferenceTableAnnotati protected void initializeFrom(ReadOnlyReferenceTable oldTable) { super.initializeFrom(oldTable); - for (ReadOnlyJoinColumn joinColumn : CollectionTools.iterable(oldTable.specifiedJoinColumns())) { + for (ReadOnlyJoinColumn joinColumn : oldTable.getSpecifiedJoinColumns()) { this.addSpecifiedJoinColumn().initializeFrom(joinColumn); } } protected void initializeFromVirtual(ReadOnlyReferenceTable virtualTable) { super.initializeFromVirtual(virtualTable); - for (ReadOnlyJoinColumn joinColumn : CollectionTools.iterable(virtualTable.joinColumns())) { + for (ReadOnlyJoinColumn joinColumn : virtualTable.getJoinColumns()) { this.addSpecifiedJoinColumn().initializeFromVirtual(joinColumn); } } |