diff options
author | kmoore | 2007-05-09 21:17:59 +0000 |
---|---|---|
committer | kmoore | 2007-05-09 21:17:59 +0000 |
commit | b24ca9588e050d4d2f08fbf22b0ba80824bcdb32 (patch) | |
tree | dcbb1e1a93b0c0d9fe7d126d61fc3689dc955b01 | |
parent | 627203c3bee2d9f83fe218efd2d5fbdd41f1b04f (diff) | |
download | webtools.dali-b24ca9588e050d4d2f08fbf22b0ba80824bcdb32.tar.gz webtools.dali-b24ca9588e050d4d2f08fbf22b0ba80824bcdb32.tar.xz webtools.dali-b24ca9588e050d4d2f08fbf22b0ba80824bcdb32.zip |
145373 - added ability to specify a table in the join column dialog
14 files changed, 198 insertions, 105 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITypeMapping.java index 45a4626d13..f0d8a4a8bd 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITypeMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITypeMapping.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.core.internal; import java.util.Iterator; import org.eclipse.jpt.core.internal.mappings.ITable; +import org.eclipse.jpt.db.internal.Schema; import org.eclipse.jpt.db.internal.Table; /** @@ -96,6 +97,8 @@ public interface ITypeMapping extends IJpaSourceObject */ Table primaryDbTable(); + Schema dbSchema(); + /** * return the resolved associated db table with the passed in name */ diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/NullTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/NullTypeMapping.java index 068a6fc2ce..fafb6603a8 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/NullTypeMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/NullTypeMapping.java @@ -13,6 +13,7 @@ import java.util.Iterator; import org.eclipse.core.resources.IResource; import org.eclipse.emf.ecore.EClass; import org.eclipse.jdt.core.ElementChangedEvent; +import org.eclipse.jpt.db.internal.Schema; import org.eclipse.jpt.db.internal.Table; import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; @@ -232,6 +233,10 @@ public class NullTypeMapping extends JpaEObject return null; } + public Schema dbSchema() { + return null; + } + public boolean tableNameIsInvalid(String tableName) { return false; } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntity.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntity.java index b661d91d07..c78b801a66 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntity.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntity.java @@ -53,6 +53,7 @@ import org.eclipse.jpt.core.internal.mappings.ITable; import org.eclipse.jpt.core.internal.mappings.ITableGenerator; import org.eclipse.jpt.core.internal.mappings.InheritanceType; import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage; +import org.eclipse.jpt.db.internal.Schema; import org.eclipse.jpt.db.internal.Table; import org.eclipse.jpt.utility.internal.CollectionTools; import org.eclipse.jpt.utility.internal.Filter; @@ -2254,7 +2255,12 @@ public class JavaEntity extends JavaTypeMapping implements IEntity } return null; } - + + @Override + public Schema dbSchema() { + return getTable().dbSchema(); + } + @Override public void updateFromJava(CompilationUnit astRoot) { this.setSpecifiedName((String) this.getType().annotationElementValue(NAME_ADAPTER, astRoot)); diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTypeMapping.java index fdda0b69c7..8b36d3ff94 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTypeMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTypeMapping.java @@ -21,6 +21,7 @@ import org.eclipse.jpt.core.internal.content.java.JavaEObject; import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter; import org.eclipse.jpt.core.internal.jdtutility.Type; import org.eclipse.jpt.core.internal.mappings.ITable; +import org.eclipse.jpt.db.internal.Schema; import org.eclipse.jpt.db.internal.Table; import org.eclipse.jpt.utility.internal.Filter; import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; @@ -221,6 +222,10 @@ public abstract class JavaTypeMapping extends JavaEObject public Table dbTable(String tableName) { return null; } + + public Schema dbSchema() { + return null; + } public boolean attributeMappingKeyAllowed(String attributeMappingKey) { return true; diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityInternal.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityInternal.java index 30a91a231f..502444646b 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityInternal.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityInternal.java @@ -42,6 +42,7 @@ import org.eclipse.jpt.core.internal.mappings.InheritanceType; import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage; import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform; import org.eclipse.jpt.core.internal.platform.DefaultsContext; +import org.eclipse.jpt.db.internal.Schema; import org.eclipse.jpt.db.internal.Table; import org.eclipse.jpt.utility.internal.CollectionTools; import org.eclipse.jpt.utility.internal.iterators.CompositeIterator; @@ -1744,6 +1745,11 @@ public class XmlEntityInternal extends XmlTypeMapping } @Override + public Schema dbSchema() { + return getTable().dbSchema(); + } + + @Override public int xmlSequence() { return 1; } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTypeMapping.java index 8ea3b36374..2be619c62e 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTypeMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTypeMapping.java @@ -26,6 +26,7 @@ import org.eclipse.jpt.core.internal.emfutility.DOMUtilities; import org.eclipse.jpt.core.internal.jdtutility.Type; import org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean; import org.eclipse.jpt.core.internal.platform.DefaultsContext; +import org.eclipse.jpt.db.internal.Schema; import org.eclipse.jpt.db.internal.Table; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; @@ -608,6 +609,10 @@ public abstract class XmlTypeMapping extends XmlEObject implements ITypeMapping public Table dbTable(String tableName) { return null; } + + public Schema dbSchema() { + return null; + } public void refreshDefaults(DefaultsContext defaultsContext) {} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITable.java index 2c4ca16d8f..9a4ebd7a68 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITable.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITable.java @@ -14,6 +14,7 @@ import org.eclipse.jpt.core.internal.IJpaSourceObject; import org.eclipse.jpt.core.internal.ITextRange; import org.eclipse.jpt.core.internal.ITypeMapping; import org.eclipse.jpt.core.internal.platform.DefaultsContext; +import org.eclipse.jpt.db.internal.Schema; import org.eclipse.jpt.db.internal.Table; /** @@ -231,6 +232,8 @@ public interface ITable extends IJpaSourceObject Table dbTable(); + Schema dbSchema(); + /** * Return true if this table is connected to a datasource */ diff --git a/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui_mappings.properties b/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui_mappings.properties index d697849a10..89a3cf51ec 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui_mappings.properties +++ b/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui_mappings.properties @@ -82,6 +82,7 @@ JoinColumnDialog_referencedColumnName=Referenced Column Name: JoinColumnDialog_defaultWithOneParam=Default ({0}) JoinColumnDialog_insertable=Insertable: JoinColumnDialog_updatable=Updatable: +JoinColumnDialog_table=Table: MultiRelationshipMappingComposite_general=General MultiRelationshipMappingComposite_joinTable=Join Table diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/JptUiMappingsMessages.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/JptUiMappingsMessages.java index 29cce84c7b..e0d0b38aec 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/JptUiMappingsMessages.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/JptUiMappingsMessages.java @@ -86,6 +86,7 @@ public class JptUiMappingsMessages extends NLS public static String JoinColumnDialog_updatable; public static String JoinColumnDialog_defaultWithOneParam; public static String JoinColumnDialog_referencedColumnName; + public static String JoinColumnDialog_table; public static String InverseJoinColumnDialog_defaultWithOneParam; public static String InverseJoinColumnDialog_editInverseJoinColumn; diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/AbstractJoinColumnDialog.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/AbstractJoinColumnDialog.java index a01080f65b..d4526b8264 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/AbstractJoinColumnDialog.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/AbstractJoinColumnDialog.java @@ -36,7 +36,6 @@ public abstract class AbstractJoinColumnDialog<E extends IAbstractJoinColumn> ex private Combo nameCombo; private Combo referencedColumnNameCombo; - private boolean defaultNameSelected; private String selectedName; @@ -96,6 +95,7 @@ public abstract class AbstractJoinColumnDialog<E extends IAbstractJoinColumn> ex } protected void populateNameCombo() { + this.nameCombo.removeAll(); if (getJoinColumn() != null) { this.nameCombo.add(NLS.bind(JptUiMappingsMessages.JoinColumnDialog_defaultWithOneParam, getJoinColumn().getDefaultName())); } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnComposite.java index 7b0b4a9a45..bb3526470c 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnComposite.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnComposite.java @@ -257,7 +257,7 @@ public class JoinColumnComposite } void addJoinColumn() { - JoinColumnDialog dialog = new JoinColumnDialog(this.getControl().getShell(), this.singleRelationshipMapping); + JoinColumnDialog dialog = new JoinColumnInRelationshipMappingDialog(this.getControl().getShell(), this.singleRelationshipMapping); this.addJoinColumnFromDialog(dialog); } @@ -270,11 +270,12 @@ public class JoinColumnComposite this.singleRelationshipMapping.getSpecifiedJoinColumns().add(joinColumn); joinColumn.setSpecifiedName(dialog.getSelectedName()); joinColumn.setSpecifiedReferencedColumnName(dialog.getReferencedColumnName()); + joinColumn.setSpecifiedTable(dialog.getSelectedTable()); } void editJoinColumn() { IJoinColumn joinColumn = getSelectedJoinColumn(); - JoinColumnDialog dialog = new JoinColumnDialog(this.getControl().getShell(), joinColumn); + JoinColumnDialog dialog = new JoinColumnInRelationshipMappingDialog(this.getControl().getShell(), joinColumn); editJoinColumnFromDialog(dialog, joinColumn); } @@ -291,6 +292,7 @@ public class JoinColumnComposite private void editJoinColumnDialogOkd(JoinColumnDialog dialog, IJoinColumn joinColumn) { String name = dialog.getSelectedName(); String referencedColumnName = dialog.getReferencedColumnName(); + String table = dialog.getSelectedTable(); if (dialog.isDefaultNameSelected()) { if (joinColumn.getSpecifiedName() != null) { @@ -308,6 +310,15 @@ public class JoinColumnComposite else if (joinColumn.getSpecifiedReferencedColumnName() == null || !joinColumn.getSpecifiedReferencedColumnName().equals(referencedColumnName)){ joinColumn.setSpecifiedReferencedColumnName(referencedColumnName); } + + if (dialog.isDefaultTableSelected()) { + if (joinColumn.getSpecifiedTable() != null) { + joinColumn.setSpecifiedTable(null); + } + } + else if (joinColumn.getSpecifiedTable() == null || !joinColumn.getSpecifiedTable().equals(table)){ + joinColumn.setSpecifiedTable(table); + } DefaultTrueBoolean insertable = dialog.getInsertable(); if (joinColumn.getInsertable() != insertable) { diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnDialog.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnDialog.java index 3be3277b01..20eebef688 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnDialog.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnDialog.java @@ -9,19 +9,23 @@ ******************************************************************************/ package org.eclipse.jpt.ui.internal.mappings.details; +import java.util.Iterator; import org.eclipse.jface.viewers.ComboViewer; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean; -import org.eclipse.jpt.core.internal.mappings.IEntity; import org.eclipse.jpt.core.internal.mappings.IJoinColumn; -import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping; -import org.eclipse.jpt.db.internal.Table; +import org.eclipse.jpt.db.internal.Schema; import org.eclipse.jpt.ui.internal.IJpaHelpContextIds; 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.layout.GridData; +import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; @@ -29,29 +33,50 @@ import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.help.IWorkbenchHelpSystem; -public class JoinColumnDialog extends AbstractJoinColumnDialog<IJoinColumn> { - private DefaultTrueBoolean insertable; +public abstract class JoinColumnDialog extends AbstractJoinColumnDialog<IJoinColumn> { + + private Combo tableCombo; private ComboViewer insertableComboViewer; - - private DefaultTrueBoolean updatable; private ComboViewer updatableComboViewer; - private ISingleRelationshipMapping singleRelationshipMapping; + private boolean defaultTableSelected; + private String selectedTable; + private DefaultTrueBoolean insertable; + private DefaultTrueBoolean updatable; - JoinColumnDialog(Shell parent, ISingleRelationshipMapping singleRelationshipMapping) { + JoinColumnDialog(Shell parent) { super(parent); - this.singleRelationshipMapping = singleRelationshipMapping; } JoinColumnDialog(Shell parent, IJoinColumn joinColumn) { super(parent, joinColumn); - this.singleRelationshipMapping = (ISingleRelationshipMapping) joinColumn.eContainer(); } protected Control createDialogArea(Composite parent) { IWorkbenchHelpSystem helpSystem = PlatformUI.getWorkbench().getHelpSystem(); Composite composite = (Composite) super.createDialogArea(parent); - + + Label tableLabel = new Label(composite, SWT.LEFT); + tableLabel.setText(JptUiMappingsMessages.JoinColumnDialog_table); + GridData gridData = new GridData(); + tableLabel.setLayoutData(gridData); + + this.tableCombo = new Combo(composite, SWT.LEFT); + this.tableCombo.addSelectionListener(new SelectionListener() { + public void widgetSelected(SelectionEvent e) { + populateNameCombo(); + } + public void widgetDefaultSelected(SelectionEvent e) { + populateNameCombo(); + } + }); + gridData = new GridData(); + gridData.grabExcessHorizontalSpace = true; + gridData.horizontalAlignment = SWT.FILL; + this.tableCombo.setLayoutData(gridData); + //PlatformUI.getWorkbench().getHelpSystem().setHelp(this.tableCombo, IJpaHelpContextIds.MAPPING_JOIN_REFERENCED_COLUMN); + populateTableCombo(); + Label insertableLabel = new Label(composite, SWT.LEFT); insertableLabel.setText(JptUiMappingsMessages.JoinColumnDialog_insertable); insertableLabel.setLayoutData(new GridData()); @@ -87,22 +112,57 @@ public class JoinColumnDialog extends AbstractJoinColumnDialog<IJoinColumn> { return viewer; } - protected Table getNameTable() { - return this.singleRelationshipMapping.typeMapping().primaryDbTable(); + + protected void populateTableCombo() { + this.tableCombo.add(NLS.bind(JptUiMappingsMessages.JoinColumnDialog_defaultWithOneParam, defaultTableName())); + Schema schema = this.getSchema(); + if (schema != null) { + Iterator<String> tables = schema.tableNames(); + for (Iterator<String> stream = CollectionTools.sort( tables); stream.hasNext(); ) { + this.tableCombo.add(stream.next()); + } + } + if (specifiedTableName() != null) { + this.tableCombo.setText(specifiedTableName()); + } + else { + this.tableCombo.select(0); + } } - protected Table getReferencedNameTable() { - IEntity targetEntity = this.singleRelationshipMapping.getResolvedTargetEntity(); - if (targetEntity != null) { - return targetEntity.primaryDbTable(); + protected abstract String defaultTableName(); + + protected String specifiedTableName() { + if (getJoinColumn() != null) { + return getJoinColumn().getSpecifiedTable(); } return null; } - + + protected String tableName() { + if (this.tableCombo != null) { + if (this.tableCombo.getSelectionIndex() == 0) { + return defaultTableName(); + } + return this.tableCombo.getText(); + } + return (this.specifiedTableName() == null) ? defaultTableName() : this.specifiedTableName(); + } + + protected abstract Schema getSchema(); + private IJoinColumn joinColumn() { return this.getJoinColumn(); } + protected boolean isDefaultTableSelected() { + return this.defaultTableSelected; + } + + public String getSelectedTable() { + return this.selectedTable; + } + public DefaultTrueBoolean getInsertable() { return this.insertable; } @@ -112,6 +172,9 @@ public class JoinColumnDialog extends AbstractJoinColumnDialog<IJoinColumn> { } public boolean close() { + this.defaultTableSelected = this.tableCombo.getSelectionIndex() == 0; + this.selectedTable = this.tableCombo.getText(); + ISelection selection = this.insertableComboViewer.getSelection(); if (selection instanceof IStructuredSelection) { this.insertable = (DefaultTrueBoolean) ((IStructuredSelection) selection).getFirstElement(); diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnInAssociationOverrideDialog.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnInAssociationOverrideDialog.java index f2c40a13fc..358458b2dc 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnInAssociationOverrideDialog.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnInAssociationOverrideDialog.java @@ -9,34 +9,16 @@ ******************************************************************************/ package org.eclipse.jpt.ui.internal.mappings.details; -import org.eclipse.jface.viewers.ComboViewer; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jpt.core.internal.IAttributeMapping; -import org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean; import org.eclipse.jpt.core.internal.mappings.IAssociationOverride; import org.eclipse.jpt.core.internal.mappings.IEntity; import org.eclipse.jpt.core.internal.mappings.IJoinColumn; import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping; +import org.eclipse.jpt.db.internal.Schema; import org.eclipse.jpt.db.internal.Table; -import org.eclipse.jpt.ui.internal.IJpaHelpContextIds; -import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.help.IWorkbenchHelpSystem; -public class JoinColumnInAssociationOverrideDialog extends AbstractJoinColumnDialog<IJoinColumn> { - private DefaultTrueBoolean insertable; - private ComboViewer insertableComboViewer; - - private DefaultTrueBoolean updatable; - private ComboViewer updatableComboViewer; +public class JoinColumnInAssociationOverrideDialog extends JoinColumnDialog { private IAssociationOverride associationOverride; @@ -49,44 +31,16 @@ public class JoinColumnInAssociationOverrideDialog extends AbstractJoinColumnDia super(parent, joinColumn); this.associationOverride = (IAssociationOverride) joinColumn.eContainer(); } - - protected Control createDialogArea(Composite parent) { - IWorkbenchHelpSystem helpSystem = PlatformUI.getWorkbench().getHelpSystem(); - Composite composite = (Composite) super.createDialogArea(parent); - - Label insertableLabel = new Label(composite, SWT.LEFT); - insertableLabel.setText(JptUiMappingsMessages.JoinColumnDialog_insertable); - insertableLabel.setLayoutData(new GridData()); - - this.insertableComboViewer = this.buildInsertableComboViewer(composite); - this.insertableComboViewer.getCombo().setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL)); - helpSystem.setHelp(this.insertableComboViewer.getCombo(), IJpaHelpContextIds.MAPPING_COLUMN_INSERTABLE); - - Label updatableLabel = new Label(composite, SWT.LEFT); - updatableLabel.setText(JptUiMappingsMessages.JoinColumnDialog_updatable); - updatableLabel.setLayoutData(new GridData()); - - this.updatableComboViewer = this.buildUpdatableComboViewer(composite); - this.updatableComboViewer.getCombo().setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL)); - helpSystem.setHelp(this.updatableComboViewer.getCombo(), IJpaHelpContextIds.MAPPING_COLUMN_UPDATABLE); - return composite; - } - - private ComboViewer buildInsertableComboViewer(Composite parent) { - ComboViewer viewer = new ComboViewer(parent, SWT.READ_ONLY); - viewer.add(DefaultTrueBoolean.VALUES.toArray()); - DefaultTrueBoolean sel = (this.joinColumn() == null) ? DefaultTrueBoolean.DEFAULT : this.joinColumn().getInsertable(); - viewer.setSelection(new StructuredSelection(sel)); - return viewer; + protected Schema getSchema() { + return this.associationOverride.typeMapping().dbSchema(); } - - private ComboViewer buildUpdatableComboViewer(Composite parent) { - ComboViewer viewer = new ComboViewer(parent, SWT.READ_ONLY); - viewer.add(DefaultTrueBoolean.VALUES.toArray()); - DefaultTrueBoolean sel = (this.joinColumn() == null) ? DefaultTrueBoolean.DEFAULT : this.joinColumn().getUpdatable(); - viewer.setSelection(new StructuredSelection(sel)); - return viewer; + + protected String defaultTableName() { + if (getJoinColumn() != null) { + return getJoinColumn().getDefaultTable(); + } + return this.associationOverride.typeMapping().getTableName(); } protected Table getNameTable() { @@ -105,30 +59,4 @@ public class JoinColumnInAssociationOverrideDialog extends AbstractJoinColumnDia return null; } - private IJoinColumn joinColumn() { - return this.getJoinColumn(); - } - - public DefaultTrueBoolean getInsertable() { - return this.insertable; - } - - public DefaultTrueBoolean getUpdatable() { - return this.updatable; - } - - public boolean close() { - ISelection selection = this.insertableComboViewer.getSelection(); - if (selection instanceof IStructuredSelection) { - this.insertable = (DefaultTrueBoolean) ((IStructuredSelection) selection).getFirstElement(); - } - - selection = this.updatableComboViewer.getSelection(); - if (selection instanceof IStructuredSelection) { - this.updatable = (DefaultTrueBoolean) ((IStructuredSelection) selection).getFirstElement(); - } - - return super.close(); - } - } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnInRelationshipMappingDialog.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnInRelationshipMappingDialog.java new file mode 100644 index 0000000000..cea60bf621 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnInRelationshipMappingDialog.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * Copyright (c) 2006, 2007 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.ui.internal.mappings.details; + +import org.eclipse.jpt.core.internal.mappings.IEntity; +import org.eclipse.jpt.core.internal.mappings.IJoinColumn; +import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping; +import org.eclipse.jpt.db.internal.Schema; +import org.eclipse.jpt.db.internal.Table; +import org.eclipse.swt.widgets.Shell; + +public class JoinColumnInRelationshipMappingDialog extends JoinColumnDialog { + + private ISingleRelationshipMapping singleRelationshipMapping; + + JoinColumnInRelationshipMappingDialog(Shell parent, ISingleRelationshipMapping singleRelationshipMapping) { + super(parent); + this.singleRelationshipMapping = singleRelationshipMapping; + } + + JoinColumnInRelationshipMappingDialog(Shell parent, IJoinColumn joinColumn) { + super(parent, joinColumn); + this.singleRelationshipMapping = (ISingleRelationshipMapping) joinColumn.eContainer(); + } + + protected String defaultTableName() { + if (getJoinColumn() != null) { + return getJoinColumn().getDefaultTable(); + } + return this.singleRelationshipMapping.typeMapping().getTableName(); + } + + protected Schema getSchema() { + return this.singleRelationshipMapping.getEntity().getTable().dbSchema(); + } + + protected Table getNameTable() { + Schema schema = this.getSchema(); + return (schema == null) ? null : schema.tableNamed(tableName()); + } + + protected Table getReferencedNameTable() { + IEntity targetEntity = this.singleRelationshipMapping.getResolvedTargetEntity(); + if (targetEntity != null) { + return targetEntity.primaryDbTable(); + } + return null; + } +} |