diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaTable.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/AbstractJavaTable.java | 444 |
1 files changed, 0 insertions, 444 deletions
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(); - } -} |