### Eclipse Workspace Patch 1.0 #P org.eclipse.jpt.ui Index: src/org/eclipse/jpt/ui/internal/mappings/details/SecondaryTableDialog.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/SecondaryTableDialog.java,v retrieving revision 1.10 diff -u -r1.10 SecondaryTableDialog.java --- src/org/eclipse/jpt/ui/internal/mappings/details/SecondaryTableDialog.java 29 Apr 2008 13:15:50 -0000 1.10 +++ src/org/eclipse/jpt/ui/internal/mappings/details/SecondaryTableDialog.java 23 Jul 2008 15:25:36 -0000 @@ -12,7 +12,6 @@ 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.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 @@ 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 @@ 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 @@ } 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 @@ 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 @@ } 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 @@ } } + 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 tables = schema.tableNames(); + for (Iterator 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 @@ 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 @@ this.catalogCombo.select(0); } } + else { + this.catalogCombo.select(0); + } } protected Combo getNameCombo() { Index: src/org/eclipse/jpt/ui/internal/mappings/details/JoinTableComposite.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinTableComposite.java,v retrieving revision 1.25 diff -u -r1.25 JoinTableComposite.java --- src/org/eclipse/jpt/ui/internal/mappings/details/JoinTableComposite.java 15 Apr 2008 19:41:10 -0000 1.25 +++ src/org/eclipse/jpt/ui/internal/mappings/details/JoinTableComposite.java 23 Jul 2008 15:25:36 -0000 @@ -227,6 +227,21 @@ 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 Index: src/org/eclipse/jpt/ui/internal/mappings/details/TableGeneratorComposite.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableGeneratorComposite.java,v retrieving revision 1.23 diff -u -r1.23 TableGeneratorComposite.java --- src/org/eclipse/jpt/ui/internal/mappings/details/TableGeneratorComposite.java 9 Jul 2008 17:01:52 -0000 1.23 +++ src/org/eclipse/jpt/ui/internal/mappings/details/TableGeneratorComposite.java 23 Jul 2008 15:25:36 -0000 @@ -299,6 +299,21 @@ 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 Index: src/org/eclipse/jpt/ui/internal/mappings/details/AbstractSecondaryTablesComposite.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/AbstractSecondaryTablesComposite.java,v retrieving revision 1.1 diff -u -r1.1 AbstractSecondaryTablesComposite.java --- src/org/eclipse/jpt/ui/internal/mappings/details/AbstractSecondaryTablesComposite.java 6 Mar 2008 15:56:12 -0000 1.1 +++ src/org/eclipse/jpt/ui/internal/mappings/details/AbstractSecondaryTablesComposite.java 23 Jul 2008 15:25:36 -0000 @@ -85,8 +85,12 @@ 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 @@ }; } + 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 @@ @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); } Index: src/org/eclipse/jpt/ui/internal/mappings/details/TableComposite.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableComposite.java,v retrieving revision 1.16 diff -u -r1.16 TableComposite.java --- src/org/eclipse/jpt/ui/internal/mappings/details/TableComposite.java 26 Mar 2008 18:57:51 -0000 1.16 +++ src/org/eclipse/jpt/ui/internal/mappings/details/TableComposite.java 23 Jul 2008 15:25:36 -0000 @@ -146,9 +146,24 @@ 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(); } Index: src/org/eclipse/jpt/ui/internal/orm/details/OrmSecondaryTablesComposite.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmSecondaryTablesComposite.java,v retrieving revision 1.2 diff -u -r1.2 OrmSecondaryTablesComposite.java --- src/org/eclipse/jpt/ui/internal/orm/details/OrmSecondaryTablesComposite.java 24 Apr 2008 02:04:15 -0000 1.2 +++ src/org/eclipse/jpt/ui/internal/orm/details/OrmSecondaryTablesComposite.java 23 Jul 2008 15:25:37 -0000 @@ -21,6 +21,7 @@ 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 @@ 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 implements WritablePropertyValueModel { Index: src/org/eclipse/jpt/ui/internal/orm/details/OrmTableGeneratorComposite.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmTableGeneratorComposite.java,v retrieving revision 1.4 diff -u -r1.4 OrmTableGeneratorComposite.java --- src/org/eclipse/jpt/ui/internal/orm/details/OrmTableGeneratorComposite.java 4 Apr 2008 19:46:03 -0000 1.4 +++ src/org/eclipse/jpt/ui/internal/orm/details/OrmTableGeneratorComposite.java 23 Jul 2008 15:25:37 -0000 @@ -156,6 +156,21 @@ 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