diff options
author | pfullbright | 2008-04-24 04:04:23 +0000 |
---|---|---|
committer | pfullbright | 2008-04-24 04:04:23 +0000 |
commit | 38b3069bba331952c6a10da6e81bc8b2355fd786 (patch) | |
tree | 19a7178f283a291b82254818ce2c2b27f400d85e /jpa/plugins/org.eclipse.jpt.ui | |
parent | d78d4304a29bb1d6a5301b804d97d5a4742d0a03 (diff) | |
download | webtools.dali-38b3069bba331952c6a10da6e81bc8b2355fd786.tar.gz webtools.dali-38b3069bba331952c6a10da6e81bc8b2355fd786.tar.xz webtools.dali-38b3069bba331952c6a10da6e81bc8b2355fd786.zip |
[bug 195095] - It should be possible to assign a database schema as default schema
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.ui')
4 files changed, 282 insertions, 28 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui.properties b/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui.properties index 6b2ede538c..104f5ef8c5 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui.properties +++ b/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui.properties @@ -78,6 +78,9 @@ JpaFacetWizardPage_description=Configure JPA settings. JpaFacetWizardPage_platformLabel=Platform JpaFacetWizardPage_connectionLabel=Connection JpaFacetWizardPage_connectionLink=<a>Add connection ...</a> +JpaFacetWizardPage_connectLink=<a>Connect</a> +JpaFacetWizardPage_overrideDefaultSchemaLabel=Override default schema from connection +JpaFacetWizardPage_defaultSchemaLabel=Schema: JpaFacetWizardPage_jpaImplementationLabel=JPA implementation JpaFacetWizardPage_userServerLibLabel=Use implementation provided by server runtime JpaFacetWizardPage_specifyLibLabel=Use implementation library: diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/JptUiMessages.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/JptUiMessages.java index 157adfc340..581cd68b76 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/JptUiMessages.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/JptUiMessages.java @@ -65,13 +65,16 @@ public class JptUiMessages extends NLS { public static String JpaDetailsView_viewNotAvailable; public static String JpaFacetWizardPage_connectionLabel; public static String JpaFacetWizardPage_connectionLink; + public static String JpaFacetWizardPage_connectLink; public static String JpaFacetWizardPage_createOrmXmlButton; + public static String JpaFacetWizardPage_defaultSchemaLabel; public static String JpaFacetWizardPage_description; public static String JpaFacetWizardPage_discoverClassesButton; public static String JpaFacetWizardPage_jpaImplementationLabel; public static String JpaFacetWizardPage_jpaPrefsLink; public static String JpaFacetWizardPage_listClassesButton; public static String JpaFacetWizardPage_none; + public static String JpaFacetWizardPage_overrideDefaultSchemaLabel; public static String JpaFacetWizardPage_persistentClassManagementLabel; public static String JpaFacetWizardPage_platformLabel; public static String JpaFacetWizardPage_specifyLibLabel; diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/properties/JpaProjectPropertiesPage.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/properties/JpaProjectPropertiesPage.java index 611a93e9c3..f85e3ead6b 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/properties/JpaProjectPropertiesPage.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/properties/JpaProjectPropertiesPage.java @@ -31,7 +31,9 @@ import org.eclipse.jpt.core.internal.JpaModelManager; import org.eclipse.jpt.core.internal.facet.JpaFacetDataModelProperties; import org.eclipse.jpt.core.internal.facet.JpaFacetDataModelProvider; import org.eclipse.jpt.core.internal.platform.JpaPlatformRegistry; +import org.eclipse.jpt.db.ConnectionProfile; import org.eclipse.jpt.db.JptDbPlugin; +import org.eclipse.jpt.db.Schema; import org.eclipse.jpt.db.ui.internal.DTPUiTools; import org.eclipse.jpt.ui.JptUiPlugin; import org.eclipse.jpt.ui.internal.JpaHelpContextIds; @@ -48,7 +50,9 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Link; import org.eclipse.ui.PlatformUI; import org.eclipse.wst.common.frameworks.datamodel.DataModelEvent; @@ -113,6 +117,8 @@ public class JpaProjectPropertiesPage return new String[] { JpaFacetDataModelProperties.PLATFORM_ID, JpaFacetDataModelProperties.CONNECTION, + JpaFacetDataModelProperties.USER_WANTS_TO_OVERRIDE_DEFAULT_SCHEMA, + JpaFacetDataModelProperties.USER_OVERRIDE_DEFAULT_SCHEMA, JpaFacetDataModelProperties.DISCOVER_ANNOTATED_CLASSES }; } @@ -121,14 +127,17 @@ public class JpaProjectPropertiesPage return (JpaProject) this.getElement().getAdapter(JpaProject.class); } - Combo createCombo(Composite container, boolean fillHorizontal) { + Combo createCombo(Composite container, int span, boolean fillHorizontal) { Combo combo = new Combo(container, SWT.BORDER | SWT.SINGLE | SWT.READ_ONLY); + GridData gd; if (fillHorizontal) { - combo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + gd = new GridData(GridData.FILL_HORIZONTAL); } else { - combo.setLayoutData(new GridData()); + gd = new GridData(); } + gd.horizontalSpan = span; + combo.setLayoutData(gd); return combo; } @@ -173,6 +182,17 @@ public class JpaProjectPropertiesPage jpaProject.getDataSource().setConnectionProfileName(connection); JptCorePlugin.setConnectionProfileName(project, connection); } + + String userOverrideDefaultSchema = null; + if (this.model.getBooleanProperty(JpaFacetDataModelProperties.USER_WANTS_TO_OVERRIDE_DEFAULT_SCHEMA)) { + userOverrideDefaultSchema = this.model.getStringProperty(JpaFacetDataModelProperties.USER_OVERRIDE_DEFAULT_SCHEMA); + } + String projectUserOverrideDefaultSchema = jpaProject.getUserOverrideDefaultSchemaName(); + if (! StringTools.stringsAreEqualIgnoreCase(userOverrideDefaultSchema, projectUserOverrideDefaultSchema)) { + change = true; + jpaProject.setUserOverrideDefaultSchemaName(userOverrideDefaultSchema); + JptCorePlugin.setUserOverrideDefaultSchemaName(project, userOverrideDefaultSchema); + } boolean discover = this.model.getBooleanProperty(JpaFacetDataModelProperties.DISCOVER_ANNOTATED_CLASSES); if (discover != jpaProject.discoversAnnotatedClasses()) { @@ -222,7 +242,7 @@ public class JpaProjectPropertiesPage // TODO // PlatformUI.getWorkbench().getHelpSystem().setHelp(group, IDaliHelpContextIds.NEW_JPA_PROJECT_CONTENT_PAGE_DATABASE); - platformCombo = new ComboViewer(createCombo(group, true)); + platformCombo = new ComboViewer(createCombo(group, 1, true)); platformCombo.setContentProvider( new IStructuredContentProvider() { public Object[] getElements(Object inputElement) { @@ -290,15 +310,23 @@ public class JpaProjectPropertiesPage final Combo connectionCombo; private Link connectionLink; - - + + private Link connectLink; + + private final Button overrideDefaultSchemaButton; + + private final Label defaultSchemaLabel; + + private final Combo defaultSchemaCombo; + + public ConnectionGroup(Composite composite) { Group group = new Group(composite, SWT.NONE); group.setText(JptUiMessages.JpaFacetWizardPage_connectionLabel); - group.setLayout(new GridLayout()); + group.setLayout(new GridLayout(3, false)); group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - connectionCombo = createCombo(group, true); + connectionCombo = createCombo(group, 3, true); PlatformUI.getWorkbench().getHelpSystem().setHelp(group, JpaHelpContextIds.PROPERTIES_JAVA_PERSISTENCE_CONNECTION); connectionCombo.addSelectionListener( new SelectionListener() { @@ -331,6 +359,71 @@ public class JpaProjectPropertiesPage } } ); + + connectLink = new Link(group, SWT.NONE); + data = new GridData(GridData.END, GridData.CENTER, false, false); + data.horizontalSpan = 2; + connectLink.setLayoutData(data); + connectLink.setText(JptUiMessages.JpaFacetWizardPage_connectLink); + connectLink.setEnabled(false); + connectLink.addSelectionListener( + new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + openConnectionProfile(); + } + }); + model.addListener( + new IDataModelListener() { + public void propertyChanged(DataModelEvent event) { + if (event.getPropertyName().equals(CONNECTION)) { + updateConnectLink(); + } + } + }); + + overrideDefaultSchemaButton = createButton(group, 3, JptUiMessages.JpaFacetWizardPage_overrideDefaultSchemaLabel, SWT.CHECK); + synchHelper.synchCheckbox(overrideDefaultSchemaButton, USER_WANTS_TO_OVERRIDE_DEFAULT_SCHEMA, new Control[0]); + + defaultSchemaLabel = new Label(group, SWT.LEFT); + defaultSchemaLabel.setText(JptUiMessages.JpaFacetWizardPage_defaultSchemaLabel); + GridData gd = new GridData(); + gd.horizontalSpan = 1; + defaultSchemaLabel.setLayoutData(gd); + + defaultSchemaCombo = createCombo(group, 1, true); + defaultSchemaCombo.addSelectionListener( + new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + widgetSelected(e); + } + + public void widgetSelected(SelectionEvent e) { + String schema = defaultSchemaCombo.getText(); + model.setProperty(USER_OVERRIDE_DEFAULT_SCHEMA, schema); + } + } + ); + fillSchemas(); + + model.addListener( + new IDataModelListener() { + public void propertyChanged(DataModelEvent event) { + if (event.getPropertyName().equals(CONNECTION)) { + fillSchemas(); + } + else if (event.getPropertyName().equals(USER_WANTS_TO_OVERRIDE_DEFAULT_SCHEMA)) { + boolean enabled = (Boolean) event.getProperty(); + defaultSchemaLabel.setEnabled(enabled); + defaultSchemaCombo.setEnabled(enabled); + fillSchemas(); + } + else if (event.getPropertyName().equals(USER_OVERRIDE_DEFAULT_SCHEMA)) { + defaultSchemaCombo.select(defaultSchemaCombo.indexOf((String) event.getProperty())); + } + } + }); + performDefaults(); } @@ -343,6 +436,53 @@ public class JpaProjectPropertiesPage connectionCombo.add(stream.next()); } } + + void openNewConnectionWizard() { + String connectionName = DTPUiTools.createNewProfile(); + if (connectionName != null) { + fillConnections(); + model.setProperty(CONNECTION, connectionName); + connectionCombo.select(connectionCombo.indexOf(connectionName)); + } + } + + private void openConnectionProfile() { + ConnectionProfile connection = getConnectionProfile(); + connection.connect(); + updateConnectLink(); + fillSchemas(); + return; + } + + private void updateConnectLink() { + ConnectionProfile connectionProfile = getConnectionProfile(); + connectLink.setEnabled(! connectionProfile.isNull() && ! connectionProfile.isConnected()); + } + + private void fillSchemas() { + for (Iterator<String> stream = CollectionTools.sort(getConnectionProfile().getDatabase().schemaNames()); stream.hasNext(); ) { + defaultSchemaCombo.add(stream.next()); + } + String userOverrideDefaultSchema = model.getStringProperty(USER_OVERRIDE_DEFAULT_SCHEMA); + if (userOverrideDefaultSchema != null && defaultSchemaCombo.indexOf(userOverrideDefaultSchema) < 0) { + defaultSchemaCombo.add(userOverrideDefaultSchema); + } + if (! model.getBooleanProperty(USER_WANTS_TO_OVERRIDE_DEFAULT_SCHEMA)) { + Schema defaultSchema = getConnectionProfile().getDefaultSchema(); + String defaultSchemaName = (defaultSchema == null) ? null : defaultSchema.getName(); + int defaultSchemaIndex = (defaultSchemaName == null) ? -1 : defaultSchemaCombo.indexOf(defaultSchemaName); + if (defaultSchemaIndex >= 0) { + defaultSchemaCombo.select(defaultSchemaIndex); + } + else { + defaultSchemaCombo.deselectAll(); + } + } + } + + private ConnectionProfile getConnectionProfile() { + return JptDbPlugin.instance().getConnectionProfileRepository().connectionProfileNamed(model.getStringProperty(CONNECTION)); + } void performDefaults() { String connectionName = getJpaProject().getDataSource().getConnectionProfileName(); @@ -353,15 +493,10 @@ public class JpaProjectPropertiesPage else { connectionCombo.setText(connectionName); } - } - - void openNewConnectionWizard() { - String connectionName = DTPUiTools.createNewProfile(); - if (connectionName != null) { - fillConnections(); - model.setProperty(CONNECTION, connectionName); - connectionCombo.select(connectionCombo.indexOf(connectionName)); - } + + String defaultSchema = getJpaProject().getUserOverrideDefaultSchemaName(); + model.setProperty(USER_WANTS_TO_OVERRIDE_DEFAULT_SCHEMA, defaultSchema != null); + model.setProperty(USER_OVERRIDE_DEFAULT_SCHEMA, defaultSchema); } } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/JpaFacetWizardPage.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/JpaFacetWizardPage.java index 8cd6bbff5b..f60db855f8 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/JpaFacetWizardPage.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/JpaFacetWizardPage.java @@ -24,7 +24,9 @@ import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jpt.core.internal.facet.JpaFacetDataModelProperties; import org.eclipse.jpt.core.internal.platform.JpaPlatformRegistry; +import org.eclipse.jpt.db.ConnectionProfile; import org.eclipse.jpt.db.JptDbPlugin; +import org.eclipse.jpt.db.Schema; import org.eclipse.jpt.db.ui.internal.DTPUiTools; import org.eclipse.jpt.ui.JptUiPlugin; import org.eclipse.jpt.ui.internal.JpaHelpContextIds; @@ -42,7 +44,9 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Link; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.dialogs.PreferencesUtil; @@ -55,11 +59,9 @@ import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectListener; import org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard; import org.eclipse.wst.web.ui.internal.wizards.DataModelFacetInstallPage; -public class JpaFacetWizardPage - extends DataModelFacetInstallPage +public class JpaFacetWizardPage extends DataModelFacetInstallPage implements JpaFacetDataModelProperties { - public JpaFacetWizardPage() { super("jpt.jpa.facet.install.page"); //$NON-NLS-1$ setTitle(JptUiMessages.JpaFacetWizardPage_title); @@ -130,6 +132,8 @@ public class JpaFacetWizardPage return new String[] { PLATFORM_ID, CONNECTION, + USER_WANTS_TO_OVERRIDE_DEFAULT_SCHEMA, + USER_OVERRIDE_DEFAULT_SCHEMA, USE_SERVER_JPA_IMPLEMENTATION, JPA_LIBRARY, DISCOVER_ANNOTATED_CLASSES @@ -217,18 +221,26 @@ public class JpaFacetWizardPage private final class ConnectionGroup { private final Combo connectionCombo; - + private Link connectionLink; - - + + private Link connectLink; + + private final Button overrideDefaultSchemaButton; + + private final Label defaultSchemaLabel; + + private final Combo defaultSchemaCombo; + + public ConnectionGroup(Composite composite) { Group group = new Group(composite, SWT.NONE); group.setText(JptUiMessages.JpaFacetWizardPage_connectionLabel); - group.setLayout(new GridLayout()); + group.setLayout(new GridLayout(3, false)); group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); PlatformUI.getWorkbench().getHelpSystem().setHelp(group, JpaHelpContextIds.NEW_JPA_PROJECT_CONTENT_PAGE_DATABASE); - - connectionCombo = createCombo(group, 1, true); + + connectionCombo = createCombo(group, 3, true); connectionCombo.addSelectionListener( new SelectionListener() { public void widgetSelected(SelectionEvent e) { @@ -248,7 +260,7 @@ public class JpaFacetWizardPage fillConnections(); connectionCombo.select(0); model.setProperty(CONNECTION, null); - + connectionLink = new Link(group, SWT.NONE); GridData data = new GridData(GridData.END, GridData.CENTER, false, false); data.horizontalSpan = 2; @@ -262,8 +274,75 @@ public class JpaFacetWizardPage } } ); + + connectLink = new Link(group, SWT.NONE); + data = new GridData(GridData.END, GridData.CENTER, false, false); + data.horizontalSpan = 2; + connectLink.setLayoutData(data); + connectLink.setText(JptUiMessages.JpaFacetWizardPage_connectLink); + connectLink.setEnabled(false); + connectLink.addSelectionListener( + new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + openConnectionProfile(); + } + }); + model.addListener( + new IDataModelListener() { + public void propertyChanged(DataModelEvent event) { + if (event.getPropertyName().equals(CONNECTION)) { + updateConnectLink(); + } + } + }); + + overrideDefaultSchemaButton = createButton(group, 3, JptUiMessages.JpaFacetWizardPage_overrideDefaultSchemaLabel, SWT.CHECK); + overrideDefaultSchemaButton.setSelection(false); + synchHelper.synchCheckbox(overrideDefaultSchemaButton, USER_WANTS_TO_OVERRIDE_DEFAULT_SCHEMA, new Control[0]); + + defaultSchemaLabel = new Label(group, SWT.LEFT); + defaultSchemaLabel.setText(JptUiMessages.JpaFacetWizardPage_defaultSchemaLabel); + GridData gd = new GridData(); + gd.horizontalSpan = 1; + defaultSchemaLabel.setLayoutData(gd); + defaultSchemaLabel.setEnabled(false); + + defaultSchemaCombo = createCombo(group, 1, true); + defaultSchemaCombo.setEnabled(false); + defaultSchemaCombo.addSelectionListener( + new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + widgetSelected(e); + } + + public void widgetSelected(SelectionEvent e) { + String schema = defaultSchemaCombo.getText(); + model.setProperty(USER_OVERRIDE_DEFAULT_SCHEMA, schema); + } + } + ); + fillSchemas(); + + model.addListener( + new IDataModelListener() { + public void propertyChanged(DataModelEvent event) { + if (event.getPropertyName().equals(CONNECTION)) { + fillSchemas(); + } + else if (event.getPropertyName().equals(USER_WANTS_TO_OVERRIDE_DEFAULT_SCHEMA)) { + boolean enabled = (Boolean) event.getProperty(); + defaultSchemaLabel.setEnabled(enabled); + defaultSchemaCombo.setEnabled(enabled); + fillSchemas(); + } + else if (event.getPropertyName().equals(USER_OVERRIDE_DEFAULT_SCHEMA)) { + defaultSchemaCombo.select(defaultSchemaCombo.indexOf((String) event.getProperty())); + } + } + }); } - + private void fillConnections() { //clear out connection entries from previous login. connectionCombo.removeAll(); @@ -282,6 +361,40 @@ public class JpaFacetWizardPage connectionCombo.select(connectionCombo.indexOf(connectionName)); } } + + private void openConnectionProfile() { + ConnectionProfile connection = getConnectionProfile(); + connection.connect(); + updateConnectLink(); + fillSchemas(); + return; + } + + private void updateConnectLink() { + ConnectionProfile connectionProfile = getConnectionProfile(); + connectLink.setEnabled(! connectionProfile.isNull() && ! connectionProfile.isConnected()); + } + + private void fillSchemas() { + for (Iterator<String> stream = CollectionTools.sort(getConnectionProfile().getDatabase().schemaNames()); stream.hasNext(); ) { + defaultSchemaCombo.add(stream.next()); + } + if (! model.getBooleanProperty(USER_WANTS_TO_OVERRIDE_DEFAULT_SCHEMA)) { + Schema defaultSchema = getConnectionProfile().getDefaultSchema(); + String defaultSchemaName = (defaultSchema == null) ? null : defaultSchema.getName(); + int defaultSchemaIndex = (defaultSchemaName == null) ? -1 : defaultSchemaCombo.indexOf(defaultSchemaName); + if (defaultSchemaIndex >= 0) { + defaultSchemaCombo.select(defaultSchemaIndex); + } + else { + defaultSchemaCombo.deselectAll(); + } + } + } + + private ConnectionProfile getConnectionProfile() { + return JptDbPlugin.instance().getConnectionProfileRepository().connectionProfileNamed(model.getStringProperty(CONNECTION)); + } } |