You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ab...@apache.org on 2018/12/12 10:36:06 UTC

cayenne git commit: Fix dbImport result dialog.

Repository: cayenne
Updated Branches:
  refs/heads/master 82d1c06d5 -> 89be0cdff


Fix dbImport result dialog.


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/89be0cdf
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/89be0cdf
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/89be0cdf

Branch: refs/heads/master
Commit: 89be0cdff8655ff2583105e829a3c66c4aa76426
Parents: 82d1c06
Author: Arseni Bulatski <an...@gmail.com>
Authored: Wed Dec 12 13:35:55 2018 +0300
Committer: Arseni Bulatski <an...@gmail.com>
Committed: Wed Dec 12 13:35:55 2018 +0300

----------------------------------------------------------------------
 .../action/ReverseEngineeringAction.java        | 41 ++++++++++++++++----
 .../modeler/dialog/db/load/DbLoaderContext.java | 15 ++++---
 .../dialog/db/load/ModelerDbImportAction.java   |  6 ++-
 .../dbimport/domain/DbImportTabController.java  |  5 +--
 4 files changed, 48 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/89be0cdf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
index 331bd54..de786ab 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
@@ -19,7 +19,9 @@
 
 package org.apache.cayenne.modeler.action;
 
+import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.dialog.db.DataSourceWizard;
 import org.apache.cayenne.modeler.dialog.db.DbActionOptionsDialog;
 import org.apache.cayenne.modeler.dialog.db.load.DbLoadResultDialog;
@@ -35,6 +37,8 @@ import javax.swing.SwingUtilities;
 import java.awt.event.ActionEvent;
 import java.sql.SQLException;
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import static org.apache.cayenne.modeler.pref.DBConnectionInfo.*;
 
@@ -48,6 +52,8 @@ public class ReverseEngineeringAction extends DBWizardAction<DbActionOptionsDial
     private static final String DIALOG_TITLE = "Reengineer DB Schema: Connect to Database";
 
     private DbImportView view;
+    private int dataMapCount = 0;
+    protected Set<DataMap> dataMaps;
 
     public String getIconName() {
         return ICON_NAME;
@@ -61,7 +67,17 @@ public class ReverseEngineeringAction extends DBWizardAction<DbActionOptionsDial
         return ACTION_NAME;
     }
 
-    public void performAction() {
+    public void performAction(Set<DataMap> dataMapSet) {
+        resetParams();
+        dataMaps.addAll(dataMapSet);
+        ProjectController projectController = Application.getInstance().getFrameController().getProjectController();
+        for(DataMap dataMap : dataMapSet) {
+            projectController.setCurrentDataMap(dataMap);
+            startImport();
+        }
+    }
+
+    private void startImport(){
         final DbLoaderContext context = new DbLoaderContext(application.getMetaData());
         DBConnectionInfo connectionInfo;
         if (!datamapPreferencesExist()) {
@@ -86,12 +102,6 @@ public class ReverseEngineeringAction extends DBWizardAction<DbActionOptionsDial
             return;
         }
 
-        DbImportController dbImportController = Application.getInstance().getFrameController().getDbImportController();
-        DbLoadResultDialog dbLoadResultDialog = dbImportController.createDialog();
-        if(!dbLoadResultDialog.isVisible()) {
-            dbImportController.showDialog();
-        }
-
         if(!context.buildConfig(connectionInfo, view)) {
             try {
                 context.getConnection().close();
@@ -103,6 +113,14 @@ public class ReverseEngineeringAction extends DBWizardAction<DbActionOptionsDial
             application.getUndoManager().discardAllEdits();
             try {
                 context.getConnection().close();
+                dataMapCount++;
+                if(dataMapCount == dataMaps.size() && !context.isInterrupted()) {
+                    DbImportController dbImportController = Application.getInstance().getFrameController().getDbImportController();
+                    DbLoadResultDialog dbLoadResultDialog = dbImportController.createDialog();
+                    if (!dbLoadResultDialog.isVisible()) {
+                        dbImportController.showDialog();
+                    }
+                }
             } catch (SQLException ignored) {}
         });
     }
@@ -112,7 +130,14 @@ public class ReverseEngineeringAction extends DBWizardAction<DbActionOptionsDial
      */
     @Override
     public void performAction(ActionEvent event) {
-        performAction();
+        resetParams();
+        dataMaps.add(Application.getInstance().getFrameController().getProjectController().getCurrentDataMap());
+        startImport();
+    }
+
+    private void resetParams() {
+        dataMapCount = 0;
+        this.dataMaps = new HashSet<>();
     }
 
     private DBConnectionInfo getConnectionInfoFromPreferences() {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/89be0cdf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/DbLoaderContext.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/DbLoaderContext.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/DbLoaderContext.java
index 9ee8e8f..adec6d9 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/DbLoaderContext.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/DbLoaderContext.java
@@ -19,11 +19,6 @@
 
 package org.apache.cayenne.modeler.dialog.db.load;
 
-import java.io.File;
-import java.sql.Connection;
-import javax.swing.JOptionPane;
-import javax.swing.SwingUtilities;
-
 import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.xml.DataChannelMetaData;
 import org.apache.cayenne.dbsync.naming.NameBuilder;
@@ -40,6 +35,10 @@ import org.apache.cayenne.util.Util;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.swing.*;
+import java.io.File;
+import java.sql.Connection;
+
 /**
  * @since 4.0
  */
@@ -54,6 +53,7 @@ public class DbLoaderContext {
     private DataMap dataMap;
     private boolean stopping;
     private String loadStatusNote;
+    private boolean isInterrupted;
 
     private DataChannelMetaData metaData;
 
@@ -192,7 +192,12 @@ public class DbLoaderContext {
 
     public void processException(final Throwable th, final String message) {
         LOGGER.info("Exception on reverse engineering", Util.unwindException(th));
+        isInterrupted = true;
         SwingUtilities.invokeLater(() -> JOptionPane
                 .showMessageDialog(Application.getFrame(), th.getMessage(), message, JOptionPane.ERROR_MESSAGE));
     }
+
+    public boolean isInterrupted() {
+        return isInterrupted;
+    }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/89be0cdf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/ModelerDbImportAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/ModelerDbImportAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/ModelerDbImportAction.java
index b38fb8b..8be5309 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/ModelerDbImportAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/ModelerDbImportAction.java
@@ -104,8 +104,10 @@ public class ModelerDbImportAction extends DefaultDbImportAction {
         logger.info("");
         resultDialog.getOkButton().addActionListener(e -> {
             try {
-                commit();
-                checkForUnusedImports();
+                if(resultDialog.getTableForMap().containsKey(targetMap)) {
+                    commit();
+                    checkForUnusedImports();
+                }
             } catch (Exception ex) {
                 throw new CayenneRuntimeException("Nothing to commit.");
             }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/89be0cdf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTabController.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTabController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTabController.java
index 04519ef..08b765c 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTabController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/domain/DbImportTabController.java
@@ -47,10 +47,7 @@ public class DbImportTabController extends GeneratorsTabController {
         }
         Application.getInstance().getFrameController().getDbImportController().setGlobalImport(true);
         ReverseEngineeringAction reverseEngineeringAction = Application.getInstance().getActionManager().getAction(ReverseEngineeringAction.class);
-        for(DataMap dataMap : dataMaps) {
-            projectController.setCurrentDataMap(dataMap);
-            reverseEngineeringAction.performAction();
-        }
+        reverseEngineeringAction.performAction(dataMaps);
     }
 
     @Override