You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2014/04/27 09:58:47 UTC
[1/2] git commit: CAY-1921 Migrate Dabase Schema - SqlServer 2008
Repository: cayenne
Updated Branches:
refs/heads/master 449294f2e -> 0056d5ab1
CAY-1921 Migrate Dabase Schema - SqlServer 2008
patch by Arkadiusz Milewski
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/f6aeb0a5
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/f6aeb0a5
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/f6aeb0a5
Branch: refs/heads/master
Commit: f6aeb0a540d7b419943fc6a5bb5acd15d5a2f0c9
Parents: 449294f
Author: aadamchik <aa...@apache.org>
Authored: Sun Apr 27 10:39:28 2014 +0300
Committer: aadamchik <aa...@apache.org>
Committed: Sun Apr 27 10:40:32 2014 +0300
----------------------------------------------------------------------
.../java/org/apache/cayenne/merge/DbMerger.java | 15 +--
.../cayenne/modeler/action/MigrateAction.java | 43 ++++++-
.../dialog/db/DbMigrateOptionsDialog.java | 126 +++++++++++++++++++
.../modeler/dialog/db/MergerOptions.java | 7 +-
4 files changed, 179 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f6aeb0a5/cayenne-server/src/main/java/org/apache/cayenne/merge/DbMerger.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/merge/DbMerger.java b/cayenne-server/src/main/java/org/apache/cayenne/merge/DbMerger.java
index 28ea256..b0914a1 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/merge/DbMerger.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/merge/DbMerger.java
@@ -60,8 +60,13 @@ public class DbMerger {
private MergerFactory factory;
private ValueForNullProvider valueForNull = new EmptyValueForNullProvider();
+ private String schema;
+
+ public void setSchema(String schema) {
+ this.schema = schema;
+ }
- /**
+ /**
* Set a {@link ValueForNullProvider} that will be used to set value for null on not
* null columns
*/
@@ -109,12 +114,8 @@ public class DbMerger {
return merger.includeTableName(tableName);
}
};
-
- DataMap detectedDataMap = dbLoader.loadDataMapFromDB(
- null,
- null,
- new DataMap());
-
+ DataMap detectedDataMap = new DataMap();
+ dbLoader.load(detectedDataMap, null, schema, null, (String[]) null);
detectedDataMap.setQuotingSQLIdentifiers(dataMap.isQuotingSQLIdentifiers());
Map<String, DbEntity> dbEntityToDropByName = new HashMap<String, DbEntity>(
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f6aeb0a5/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MigrateAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MigrateAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MigrateAction.java
index f98b052..ddc7509 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MigrateAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MigrateAction.java
@@ -20,10 +20,19 @@
package org.apache.cayenne.modeler.action;
import java.awt.event.ActionEvent;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+import javax.sql.DataSource;
+import javax.swing.JOptionPane;
+
+import org.apache.cayenne.access.DbLoader;
+import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.dialog.db.DataSourceWizard;
+import org.apache.cayenne.modeler.dialog.db.DbMigrateOptionsDialog;
import org.apache.cayenne.modeler.dialog.db.MergerOptions;
import org.apache.cayenne.modeler.pref.DBConnectionInfo;
@@ -55,19 +64,47 @@ public class MigrateAction extends DBWizardAction {
// canceled
return;
}
-
+
DataMap map = getProjectController().getCurrentDataMap();
-
+ //migarte options
+
// sanity check
if (map == null) {
throw new IllegalStateException("No current DataMap selected.");
}
+ //showOptions dialog
+ String selectedSchema = null;
+ try {
+ List<String> schemas = getSchemas(connectWizard);
+ if (schemas != null && !schemas.isEmpty()) {
+ DbMigrateOptionsDialog optionsDialog = new DbMigrateOptionsDialog(schemas, connectWizard.getConnectionInfo().getUserName());
+ optionsDialog.showDialog();
+ if (optionsDialog.getChoice() == DbMigrateOptionsDialog.SELECT) {
+ selectedSchema = optionsDialog.getSelectedSchema();
+ }
+ }
+ } catch (Exception ex) {
+ JOptionPane.showMessageDialog(
+ Application.getFrame(),
+ ex.getMessage(),
+ "Error loading schemas dialog",
+ JOptionPane.ERROR_MESSAGE);
+ }
+
// ... show dialog...
new MergerOptions(
getProjectController(),
"Migrate DB Schema: Options",
connectWizard.getConnectionInfo(),
- map).startupAction();
+ map, selectedSchema).startupAction();
+ }
+
+ private List<String> getSchemas(DataSourceWizard connectWizard) throws Exception {
+ DbAdapter dbAdapter = connectWizard.getConnectionInfo()
+ .makeAdapter(getApplication().getClassLoadingService());
+ DataSource dataSource = connectWizard.getConnectionInfo()
+ .makeDataSource(getApplication().getClassLoadingService());
+ return new DbLoader(dataSource.getConnection(), dbAdapter, null).getSchemas();
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f6aeb0a5/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbMigrateOptionsDialog.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbMigrateOptionsDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbMigrateOptionsDialog.java
new file mode 100644
index 0000000..43c1cb3
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbMigrateOptionsDialog.java
@@ -0,0 +1,126 @@
+package org.apache.cayenne.modeler.dialog.db;
+
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Collection;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.modeler.util.CayenneDialog;
+
+import com.jgoodies.forms.builder.DefaultFormBuilder;
+import com.jgoodies.forms.layout.FormLayout;
+
+public class DbMigrateOptionsDialog extends CayenneDialog {
+ private static final long serialVersionUID = 1L;
+ public static final int CANCEL = 0;
+ public static final int SELECT = 1;
+
+ protected JLabel schemaLabel;
+ protected JComboBox<String> schemaSelector;
+ protected JButton selectButton;
+ protected JButton cancelButton;
+ protected int choice;
+
+ public DbMigrateOptionsDialog(Collection<String> schemas, String dbUserName) {
+ super(Application.getFrame(), "Migrater DB Schema: Select Schema");
+ init();
+ initController();
+ initFromModel(schemas, dbUserName);
+
+ pack();
+ setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+ setModal(true);
+ centerWindow();
+ }
+
+ protected void init() {
+ selectButton = new JButton("Continue");
+ cancelButton = new JButton("Cancel");
+ schemaSelector = new JComboBox<String>();
+ FormLayout layout = new FormLayout(
+ "right:pref, 3dlu, fill:max(170dlu;pref):grow",
+ "");
+ DefaultFormBuilder builder = new DefaultFormBuilder(layout);
+ builder.setDefaultDialogBorder();
+
+ schemaLabel = builder.append("Select Schema:", schemaSelector);
+
+ JPanel buttons = new JPanel(new FlowLayout(FlowLayout.RIGHT));
+ buttons.add(selectButton);
+ buttons.add(cancelButton);
+
+ getContentPane().setLayout(new BorderLayout());
+ getContentPane().add(builder.getPanel(), BorderLayout.CENTER);
+ getContentPane().add(buttons, BorderLayout.SOUTH);
+ }
+
+ protected void initController() {
+ selectButton.addActionListener(new ActionListener() {
+
+ public void actionPerformed(ActionEvent e) {
+ processSelect();
+ }
+ });
+
+ cancelButton.addActionListener(new ActionListener() {
+
+ public void actionPerformed(ActionEvent e) {
+ processCancel();
+ }
+ });
+ }
+
+ private void processSelect() {
+ choice = SELECT;
+ setVisible(false);
+ }
+
+ private void processCancel() {
+ schemaSelector.setSelectedItem(null);
+ choice = CANCEL;
+ setVisible(false);
+ }
+
+ protected void initFromModel(Collection<String> schemas, String dbUserName) {
+
+ this.choice = CANCEL;
+
+ schemaSelector.setVisible(true);
+ schemaLabel.setVisible(true);
+ schemaSelector.setModel(new DefaultComboBoxModel<String>(schemas.toArray(new String[] {})));
+
+ // select schema belonging to the user
+ if (dbUserName != null) {
+ for (String schema : schemas) {
+ if (dbUserName.equalsIgnoreCase(schema)) {
+ schemaSelector.setSelectedItem(schema);
+ break;
+ }
+ }
+ }
+ }
+
+ /**
+ * Returns selected schema.
+ */
+ public String getSelectedSchema() {
+ return (String) schemaSelector.getSelectedItem();
+ }
+
+ public int getChoice() {
+ return choice;
+ }
+
+ public void showDialog() {
+ setVisible(true);
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f6aeb0a5/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java
index 13eadbb..cf5bf68 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java
@@ -79,15 +79,17 @@ public class MergerOptions extends CayenneController {
protected DbMerger merger;
protected MergerTokenSelectorController tokens;
-
+ protected String defaultSchema;
+
public MergerOptions(ProjectController parent, String title,
- DBConnectionInfo connectionInfo, DataMap dataMap) {
+ DBConnectionInfo connectionInfo, DataMap dataMap, String defaultSchema) {
super(parent);
this.dataMap = dataMap;
this.tokens = new MergerTokenSelectorController(parent);
this.view = new MergerOptionsView(tokens.getView());
this.connectionInfo = connectionInfo;
+ this.defaultSchema = defaultSchema;
/*
* TODO:? this.generatorDefaults = (DBGeneratorDefaults) parent
* .getPreferenceDomainForProject() .getDetail("DbGenerator",
@@ -163,6 +165,7 @@ public class MergerOptions extends CayenneController {
.getClassLoadingService());
tokens.setMergerFactory(adapter.mergerFactory());
merger = new DbMerger();
+ merger.setSchema(defaultSchema);
List<MergerToken> mergerTokens = merger.createMergeTokens(
adapter,
connectionInfo.makeDataSource(getApplication()
[2/2] git commit: CAY-1921 Migrate Dabase Schema - SqlServer 2008
Posted by aa...@apache.org.
CAY-1921 Migrate Dabase Schema - SqlServer 2008
removing generics - still supporting Java 6
typo in the title
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/0056d5ab
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/0056d5ab
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/0056d5ab
Branch: refs/heads/master
Commit: 0056d5ab17e4c92e457a92220b327bc709526ab2
Parents: f6aeb0a
Author: aadamchik <aa...@apache.org>
Authored: Sun Apr 27 10:39:28 2014 +0300
Committer: aadamchik <aa...@apache.org>
Committed: Sun Apr 27 10:57:41 2014 +0300
----------------------------------------------------------------------
.../cayenne/modeler/dialog/db/DbMigrateOptionsDialog.java | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0056d5ab/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbMigrateOptionsDialog.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbMigrateOptionsDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbMigrateOptionsDialog.java
index 43c1cb3..8a22455 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbMigrateOptionsDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbMigrateOptionsDialog.java
@@ -25,13 +25,13 @@ public class DbMigrateOptionsDialog extends CayenneDialog {
public static final int SELECT = 1;
protected JLabel schemaLabel;
- protected JComboBox<String> schemaSelector;
+ protected JComboBox schemaSelector;
protected JButton selectButton;
protected JButton cancelButton;
protected int choice;
public DbMigrateOptionsDialog(Collection<String> schemas, String dbUserName) {
- super(Application.getFrame(), "Migrater DB Schema: Select Schema");
+ super(Application.getFrame(), "Migrate DB Schema: Select Schema");
init();
initController();
initFromModel(schemas, dbUserName);
@@ -45,7 +45,7 @@ public class DbMigrateOptionsDialog extends CayenneDialog {
protected void init() {
selectButton = new JButton("Continue");
cancelButton = new JButton("Cancel");
- schemaSelector = new JComboBox<String>();
+ schemaSelector = new JComboBox();
FormLayout layout = new FormLayout(
"right:pref, 3dlu, fill:max(170dlu;pref):grow",
"");
@@ -96,7 +96,7 @@ public class DbMigrateOptionsDialog extends CayenneDialog {
schemaSelector.setVisible(true);
schemaLabel.setVisible(true);
- schemaSelector.setModel(new DefaultComboBoxModel<String>(schemas.toArray(new String[] {})));
+ schemaSelector.setModel(new DefaultComboBoxModel(schemas.toArray(new String[] {})));
// select schema belonging to the user
if (dbUserName != null) {