Skip to main content
summaryrefslogtreecommitdiffstats
path: root/jpa
diff options
context:
space:
mode:
authorkmoore2007-05-09 21:17:59 +0000
committerkmoore2007-05-09 21:17:59 +0000
commitb24ca9588e050d4d2f08fbf22b0ba80824bcdb32 (patch)
treedcbb1e1a93b0c0d9fe7d126d61fc3689dc955b01 /jpa
parent627203c3bee2d9f83fe218efd2d5fbdd41f1b04f (diff)
downloadwebtools.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
Diffstat (limited to 'jpa')
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITypeMapping.java3
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/NullTypeMapping.java5
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntity.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTypeMapping.java5
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityInternal.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTypeMapping.java5
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITable.java3
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui_mappings.properties1
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/JptUiMappingsMessages.java1
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/AbstractJoinColumnDialog.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnComposite.java15
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnDialog.java101
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnInAssociationOverrideDialog.java92
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnInRelationshipMappingDialog.java56
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;
+ }
+}

Back to the top