Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkmoore2008-07-23 19:04:02 +0000
committerkmoore2008-07-23 19:04:02 +0000
commitb0bfcd46b7fbeb4e1e3e003a3a45c50ac5c657f5 (patch)
tree30a76f01f9d49f80fc6026584d273b1f78595811
parentf554460ab60394aa9c31e68865a26608db12d15a (diff)
downloadwebtools.dali-b0bfcd46b7fbeb4e1e3e003a3a45c50ac5c657f5.tar.gz
webtools.dali-b0bfcd46b7fbeb4e1e3e003a3a45c50ac5c657f5.tar.xz
webtools.dali-b0bfcd46b7fbeb4e1e3e003a3a45c50ac5c657f5.zip
236743 - change schema does not update list of tables
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/AbstractSecondaryTablesComposite.java16
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinTableComposite.java15
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/SecondaryTableDialog.java115
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableComposite.java15
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableGeneratorComposite.java15
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmSecondaryTablesComposite.java7
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmTableGeneratorComposite.java15
7 files changed, 172 insertions, 26 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/AbstractSecondaryTablesComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/AbstractSecondaryTablesComposite.java
index 4f9337e4b5..e7cccff23c 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/AbstractSecondaryTablesComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/AbstractSecondaryTablesComposite.java
@@ -85,8 +85,12 @@ public abstract class AbstractSecondaryTablesComposite<T extends Entity> extends
String schema = dialog.getSelectedSchema();
SecondaryTable secondaryTable = this.subject().addSpecifiedSecondaryTable(index);
secondaryTable.setSpecifiedName(name);
- secondaryTable.setSpecifiedCatalog(catalog);
- secondaryTable.setSpecifiedSchema(schema);
+ if (!dialog.isDefaultCatalogSelected()) {
+ secondaryTable.setSpecifiedCatalog(catalog);
+ }
+ if (!dialog.isDefaultSchemaSelected()) {
+ secondaryTable.setSpecifiedSchema(schema);
+ }
listSelectionModel.setSelectedValue(secondaryTable);
}
@@ -110,11 +114,15 @@ public abstract class AbstractSecondaryTablesComposite<T extends Entity> extends
};
}
+ protected SecondaryTableDialog buildSecondaryTableDialogForAdd() {
+ return new SecondaryTableDialog(getControl().getShell(), subject().getJpaProject(), subject().getTable().getDefaultSchema(), subject().getTable().getDefaultCatalog());
+ }
+
protected AddRemoveListPane.Adapter buildSecondaryTablesAdapter() {
return new AddRemoveListPane.AbstractAdapter() {
public void addNewItem(ObjectListSelectionModel listSelectionModel) {
- SecondaryTableDialog dialog = new SecondaryTableDialog(getControl().getShell(), subject());
+ SecondaryTableDialog dialog = buildSecondaryTableDialogForAdd();
addSecondaryTableFromDialog(dialog, listSelectionModel);
}
@@ -131,7 +139,7 @@ public abstract class AbstractSecondaryTablesComposite<T extends Entity> extends
@Override
public void optionOnSelection(ObjectListSelectionModel listSelectionModel) {
SecondaryTable secondaryTable = (SecondaryTable) listSelectionModel.selectedValue();
- SecondaryTableDialog dialog = new SecondaryTableDialog(getControl().getShell(), secondaryTable, subject());
+ SecondaryTableDialog dialog = new SecondaryTableDialog(getControl().getShell(), secondaryTable, subject().getJpaProject());
editSecondaryTableFromDialog(dialog, secondaryTable);
}
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinTableComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinTableComposite.java
index 8e99164894..7e86c88eb0 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinTableComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinTableComposite.java
@@ -227,6 +227,21 @@ public class JoinTableComposite extends AbstractFormPane<JoinTable>
super.addPropertyNames(propertyNames);
propertyNames.add(Table.DEFAULT_NAME_PROPERTY);
propertyNames.add(Table.SPECIFIED_NAME_PROPERTY);
+ propertyNames.add(Table.DEFAULT_SCHEMA_PROPERTY);
+ propertyNames.add(Table.SPECIFIED_SCHEMA_PROPERTY);
+ propertyNames.add(Table.DEFAULT_CATALOG_PROPERTY);
+ propertyNames.add(Table.SPECIFIED_CATALOG_PROPERTY);
+ }
+
+ @Override
+ protected void propertyChanged(String propertyName) {
+ super.propertyChanged(propertyName);
+ if (propertyName == Table.DEFAULT_SCHEMA_PROPERTY
+ || propertyName == Table.SPECIFIED_SCHEMA_PROPERTY
+ || propertyName == Table.DEFAULT_CATALOG_PROPERTY
+ || propertyName == Table.SPECIFIED_CATALOG_PROPERTY ) {
+ repopulate();
+ }
}
@Override
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/SecondaryTableDialog.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/SecondaryTableDialog.java
index f0781c9b23..420d28e918 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/SecondaryTableDialog.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/SecondaryTableDialog.java
@@ -12,7 +12,6 @@ package org.eclipse.jpt.ui.internal.mappings.details;
import java.util.Iterator;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jpt.core.JpaProject;
-import org.eclipse.jpt.core.context.Entity;
import org.eclipse.jpt.core.context.SecondaryTable;
import org.eclipse.jpt.db.ConnectionProfile;
import org.eclipse.jpt.db.Database;
@@ -21,6 +20,8 @@ import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
import org.eclipse.jpt.utility.internal.CollectionTools;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -32,11 +33,13 @@ import org.eclipse.swt.widgets.Shell;
public class SecondaryTableDialog extends Dialog {
- //if creating a new JoinColumn, this will be null,
- //specify the JoinColumnOwner instead in the appropriate construtor
+ //if creating a new SecondaryTable, this will be null,
+ //specify the defaultSchema and defaultCatalog instead in the appropriate construtor
private SecondaryTable secondaryTable;
- private Entity entity;
-
+ private JpaProject jpaProject;
+ private String defaultSchema;
+ private String defaultCatalog;
+
protected Combo nameCombo;
protected Combo catalogCombo;
protected Combo schemaCombo;
@@ -48,15 +51,17 @@ public class SecondaryTableDialog extends Dialog {
private boolean defaultSchemaSelected;
private boolean defaultCatalogSelected;
- public SecondaryTableDialog(Shell parent, Entity entity) {
+ public SecondaryTableDialog(Shell parent, JpaProject jpaProject, String defaultSchema, String defaultCatalog) {
super(parent);
- this.entity = entity;
+ this.jpaProject = jpaProject;
+ this.defaultSchema = defaultSchema;
+ this.defaultCatalog = defaultCatalog;
}
- public SecondaryTableDialog(Shell parent, SecondaryTable secondaryTable, Entity entity) {
+ public SecondaryTableDialog(Shell parent, SecondaryTable secondaryTable, JpaProject jpaProject) {
super(parent);
this.secondaryTable = secondaryTable;
- this.entity = entity;
+ this.jpaProject = jpaProject;
}
@Override
@@ -73,12 +78,10 @@ public class SecondaryTableDialog extends Dialog {
}
protected String getTitle() {
- if (secondaryTable != null) {
+ if (this.secondaryTable != null) {
return JptUiMappingsMessages.SecondaryTableDialog_editSecondaryTable;
}
- else {
- return JptUiMappingsMessages.SecondaryTableDialog_addSecondaryTable;
- }
+ return JptUiMappingsMessages.SecondaryTableDialog_addSecondaryTable;
}
@Override
@@ -123,6 +126,18 @@ public class SecondaryTableDialog extends Dialog {
this.schemaCombo.setLayoutData(gridData);
populateSchemaCombo();
+
+ this.schemaCombo.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ repopulateNameCombo();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ repopulateNameCombo();
+ }
+ });
+
return composite;
}
@@ -131,17 +146,28 @@ public class SecondaryTableDialog extends Dialog {
}
private ConnectionProfile getConnectionProfile() {
- JpaProject project = (this.secondaryTable == null) ? this.entity.getJpaProject() : this.secondaryTable.getJpaProject();
- return project.getConnectionProfile();
+ return this.jpaProject.getConnectionProfile();
+ }
+
+ protected Schema getDefaultTableSchema() {
+ if (this.secondaryTable != null) {
+ return getTableSchema(this.secondaryTable.getDefaultSchema());
+ }
+ return getTableSchema(this.defaultSchema);
}
+
protected Schema getTableSchema() {
+ if (this.secondaryTable != null) {
+ return getTableSchema(this.secondaryTable.getSchema());
+ }
+ return getTableSchema(this.defaultSchema);
+ }
+
+ protected Schema getTableSchema(String schemaName) {
Database database = this.getDatabase();
if (database != null) {
- if (this.secondaryTable != null) {
- return database.schemaNamed(this.secondaryTable.getSchema());
- }
- return database.schemaNamed(this.entity.getTable().getSchema());
+ return database.schemaNamed(schemaName);
}
return null;
}
@@ -162,11 +188,42 @@ public class SecondaryTableDialog extends Dialog {
}
}
+ protected void repopulateNameCombo() {
+ String nameText = this.nameCombo.getText();
+ this.nameCombo.removeAll();
+
+ Schema schema = null;
+ if (this.schemaCombo.getSelectionIndex() == 0) {
+ schema = this.getDefaultTableSchema();
+ }
+ else if (this.schemaCombo.getText() != null) {
+ schema = this.getTableSchema(this.schemaCombo.getText());
+ }
+ else {
+ schema = this.getTableSchema();
+ }
+
+ if (schema != null) {
+ Iterator<String> tables = schema.tableNames();
+ for (Iterator<String> stream = CollectionTools.sort( tables); stream.hasNext(); ) {
+ this.nameCombo.add(stream.next());
+ }
+ }
+
+ this.nameCombo.setText(nameText);
+ }
+
protected void populateSchemaCombo() {
+ String defaultSchema;
if (getSecondaryTable() != null) {
- this.schemaCombo.add(NLS.bind(JptUiMappingsMessages.SecondaryTableDialog_defaultSchema, getSecondaryTable().getDefaultSchema()));
+ defaultSchema = getSecondaryTable().getDefaultSchema();
+ }
+ else {
+ defaultSchema = this.defaultSchema;
+ }
+ if (defaultSchema != null) {
+ this.schemaCombo.add(NLS.bind(JptUiMappingsMessages.SecondaryTableDialog_defaultSchema, defaultSchema));
}
-
Database database = this.getDatabase();
if (database != null) {
@@ -184,12 +241,23 @@ public class SecondaryTableDialog extends Dialog {
this.schemaCombo.select(0);
}
}
+ else {
+ this.schemaCombo.select(0);
+ }
}
protected void populateCatalogCombo() {
+ String defaultCatalog;
if (getSecondaryTable() != null) {
- this.catalogCombo.add(NLS.bind(JptUiMappingsMessages.SecondaryTableDialog_defaultCatalog, getSecondaryTable().getDefaultCatalog()));
+ defaultCatalog = getSecondaryTable().getDefaultCatalog();
+ }
+ else {
+ defaultCatalog = this.defaultCatalog;
}
+ if (defaultCatalog != null) {
+ this.catalogCombo.add(NLS.bind(JptUiMappingsMessages.SecondaryTableDialog_defaultCatalog, defaultCatalog));
+ }
+
Database database = this.getDatabase();
if (database != null) {
@@ -207,6 +275,9 @@ public class SecondaryTableDialog extends Dialog {
this.catalogCombo.select(0);
}
}
+ else {
+ this.catalogCombo.select(0);
+ }
}
protected Combo getNameCombo() {
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableComposite.java
index 59584d0d17..62bdcad402 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableComposite.java
@@ -146,9 +146,24 @@ public class TableComposite extends AbstractFormPane<Table>
super.addPropertyNames(propertyNames);
propertyNames.add(Table.DEFAULT_NAME_PROPERTY);
propertyNames.add(Table.SPECIFIED_NAME_PROPERTY);
+ propertyNames.add(Table.DEFAULT_SCHEMA_PROPERTY);
+ propertyNames.add(Table.SPECIFIED_SCHEMA_PROPERTY);
+ propertyNames.add(Table.DEFAULT_CATALOG_PROPERTY);
+ propertyNames.add(Table.SPECIFIED_CATALOG_PROPERTY);
}
@Override
+ protected void propertyChanged(String propertyName) {
+ super.propertyChanged(propertyName);
+ if (propertyName == Table.DEFAULT_SCHEMA_PROPERTY
+ || propertyName == Table.SPECIFIED_SCHEMA_PROPERTY
+ || propertyName == Table.DEFAULT_CATALOG_PROPERTY
+ || propertyName == Table.SPECIFIED_CATALOG_PROPERTY ) {
+ repopulate();
+ }
+ }
+
+ @Override
protected String defaultValue() {
return subject().getDefaultName();
}
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableGeneratorComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableGeneratorComposite.java
index 4d6db3ae45..3732245bff 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableGeneratorComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableGeneratorComposite.java
@@ -299,6 +299,21 @@ public class TableGeneratorComposite extends GeneratorComposite<TableGenerator>
super.addPropertyNames(propertyNames);
propertyNames.add(TableGenerator.DEFAULT_TABLE_PROPERTY);
propertyNames.add(TableGenerator.SPECIFIED_TABLE_PROPERTY);
+ propertyNames.add(TableGenerator.DEFAULT_SCHEMA_PROPERTY);
+ propertyNames.add(TableGenerator.SPECIFIED_SCHEMA_PROPERTY);
+ propertyNames.add(TableGenerator.DEFAULT_CATALOG_PROPERTY);
+ propertyNames.add(TableGenerator.SPECIFIED_CATALOG_PROPERTY);
+ }
+
+ @Override
+ protected void propertyChanged(String propertyName) {
+ super.propertyChanged(propertyName);
+ if (propertyName == TableGenerator.DEFAULT_SCHEMA_PROPERTY
+ || propertyName == TableGenerator.SPECIFIED_SCHEMA_PROPERTY
+ || propertyName == TableGenerator.DEFAULT_CATALOG_PROPERTY
+ || propertyName == TableGenerator.SPECIFIED_CATALOG_PROPERTY ) {
+ repopulate();
+ }
}
@Override
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmSecondaryTablesComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmSecondaryTablesComposite.java
index 039aad9256..2a69d5928f 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmSecondaryTablesComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmSecondaryTablesComposite.java
@@ -21,6 +21,7 @@ import org.eclipse.jpt.ui.internal.JpaHelpContextIds;
import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
import org.eclipse.jpt.ui.internal.mappings.details.AbstractSecondaryTablesComposite;
import org.eclipse.jpt.ui.internal.mappings.details.PrimaryKeyJoinColumnsInSecondaryTableComposite;
+import org.eclipse.jpt.ui.internal.mappings.details.SecondaryTableDialog;
import org.eclipse.jpt.ui.internal.util.PaneEnabler;
import org.eclipse.jpt.ui.internal.widgets.AbstractFormPane;
import org.eclipse.jpt.ui.internal.widgets.AddRemoveListPane;
@@ -175,6 +176,12 @@ public class OrmSecondaryTablesComposite extends AbstractSecondaryTablesComposit
new PaneEnabler(defineInXmlHolder, listPane);
}
+ @Override
+ protected SecondaryTableDialog buildSecondaryTableDialogForAdd() {
+ //defaultSchema and defaultCatalog should not be taken from the Table in this case. The table default schema could be what is the specified schema on the java table.
+ return new SecondaryTableDialog(getControl().getShell(), subject().getJpaProject(), subject().getEntityMappings().getDefaultSchema(), subject().getEntityMappings().getDefaultCatalog());
+ }
+
private class DefineInXmlHolder extends ListPropertyValueModelAdapter<Boolean>
implements WritablePropertyValueModel<Boolean> {
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmTableGeneratorComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmTableGeneratorComposite.java
index 4ceb613772..49ea302cfa 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmTableGeneratorComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmTableGeneratorComposite.java
@@ -156,6 +156,21 @@ public class OrmTableGeneratorComposite extends AbstractPane<OrmTableGenerator>
super.addPropertyNames(propertyNames);
propertyNames.add(TableGenerator.DEFAULT_TABLE_PROPERTY);
propertyNames.add(TableGenerator.SPECIFIED_TABLE_PROPERTY);
+ propertyNames.add(TableGenerator.DEFAULT_SCHEMA_PROPERTY);
+ propertyNames.add(TableGenerator.SPECIFIED_SCHEMA_PROPERTY);
+ propertyNames.add(TableGenerator.DEFAULT_CATALOG_PROPERTY);
+ propertyNames.add(TableGenerator.SPECIFIED_CATALOG_PROPERTY);
+ }
+
+ @Override
+ protected void propertyChanged(String propertyName) {
+ super.propertyChanged(propertyName);
+ if (propertyName == TableGenerator.DEFAULT_SCHEMA_PROPERTY
+ || propertyName == TableGenerator.SPECIFIED_SCHEMA_PROPERTY
+ || propertyName == TableGenerator.DEFAULT_CATALOG_PROPERTY
+ || propertyName == TableGenerator.SPECIFIED_CATALOG_PROPERTY ) {
+ repopulate();
+ }
}
@Override

Back to the top