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 2019/03/06 08:37:59 UTC

[cayenne] branch master updated: CAY-2531 Importing same schema after Import Revert clears all entities in datamap

This is an automated email from the ASF dual-hosted git repository.

abulatski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/master by this push:
     new 40a2298  CAY-2531 Importing same schema after Import Revert clears all entities in datamap
40a2298 is described below

commit 40a2298356b1552f49d9fe6dcafc6bfc46cb86cd
Author: Arseni Bulatski <an...@gmail.com>
AuthorDate: Tue Feb 12 12:35:32 2019 +0300

    CAY-2531 Importing same schema after Import Revert clears all entities in datamap
---
 RELEASE-NOTES.txt                                  |  1 +
 .../modeler/dialog/db/load/DbLoadResultDialog.java | 18 ++++++--
 .../dialog/db/load/ModelerDbImportAction.java      | 51 +++++++++++-----------
 .../cayenne/modeler/editor/DbImportController.java |  9 ++--
 4 files changed, 46 insertions(+), 33 deletions(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 796ddb2..5a63a04 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -30,6 +30,7 @@ Bug Fixes:
 CAY-2332 Property API: unable to use eq() and in() methods for toMany relationships
 CAY-2509 Result of resolving lazily faulted relationships can be out-of-date
 CAY-2530 DB Import and Class Generation from Project is performed for removed datamaps
+CAY-2531 Importing same schema after Import Revert clears all entities in datamap
 CAY-2544 Possible name clash of ivar and property name in generated class
 CAY-2547 CayenneDataObject serialization issue
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/DbLoadResultDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/DbLoadResultDialog.java
index 898b9b1..33ae7ea 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/DbLoadResultDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/DbLoadResultDialog.java
@@ -19,10 +19,6 @@
 
 package org.apache.cayenne.modeler.dialog.db.load;
 
-import com.jgoodies.forms.builder.DefaultFormBuilder;
-import com.jgoodies.forms.layout.FormLayout;
-import org.apache.cayenne.map.DataMap;
-
 import javax.swing.BoxLayout;
 import javax.swing.JButton;
 import javax.swing.JDialog;
@@ -36,9 +32,14 @@ import javax.swing.table.DefaultTableModel;
 import java.awt.BorderLayout;
 import java.awt.Dimension;
 import java.awt.FlowLayout;
+import java.awt.event.ActionListener;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
+import com.jgoodies.forms.builder.DefaultFormBuilder;
+import com.jgoodies.forms.layout.FormLayout;
+import org.apache.cayenne.map.DataMap;
+
 /**
  * @since 4.1
  */
@@ -124,6 +125,15 @@ public class DbLoadResultDialog extends JDialog {
         return tokensTableModel;
     }
 
+    public void removeListenersFromButtons() {
+        for(ActionListener actionListener : okButton.getActionListeners()) {
+            okButton.removeActionListener(actionListener);
+        }
+        for(ActionListener actionListener : revertButton.getActionListeners()) {
+            revertButton.removeActionListener(actionListener);
+        }
+    }
+
     public synchronized void addRowToOutput(String output, DataMap dataMap) {
         prepareTable(dataMap).addRow(new Object[]{output});
     }
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 8be5309..476f4d0 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
@@ -19,6 +19,14 @@
 
 package org.apache.cayenne.modeler.dialog.db.load;
 
+import javax.swing.JDialog;
+import javax.swing.JOptionPane;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.List;
+
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.configuration.DataChannelDescriptorLoader;
 import org.apache.cayenne.configuration.DataMapLoader;
@@ -36,14 +44,6 @@ import org.apache.cayenne.modeler.editor.DbImportController;
 import org.apache.cayenne.project.ProjectSaver;
 import org.slf4j.Logger;
 
-import javax.swing.JDialog;
-import javax.swing.JOptionPane;
-import java.awt.event.ComponentAdapter;
-import java.awt.event.ComponentEvent;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.List;
-
 public class ModelerDbImportAction extends DefaultDbImportAction {
 
     private static final String DIALOG_TITLE = "Reverse Engineering Result";
@@ -85,23 +85,6 @@ public class ModelerDbImportAction extends DefaultDbImportAction {
     @Override
     protected Collection<MergerToken> log(List<MergerToken> tokens) {
         resultDialog = dbImportController.createDialog();
-        logger.info("");
-        if (tokens.isEmpty()) {
-            logger.info("Detected changes: No changes to import.");
-            resultDialog.addMsg(targetMap);
-            isNothingChanged = true;
-            return tokens;
-        }
-
-        logger.info("Detected changes: ");
-        for (MergerToken token : tokens) {
-            String logString = String.format("    %-20s %s", token.getTokenName(), token.getTokenValue());
-            logger.info(logString);
-            resultDialog.addRowToOutput(logString, targetMap);
-            isNothingChanged = false;
-        }
-
-        logger.info("");
         resultDialog.getOkButton().addActionListener(e -> {
             try {
                 if(resultDialog.getTableForMap().containsKey(targetMap)) {
@@ -124,6 +107,24 @@ public class ModelerDbImportAction extends DefaultDbImportAction {
             }
         });
 
+        logger.info("");
+        if (tokens.isEmpty()) {
+            logger.info("Detected changes: No changes to import.");
+            resultDialog.addMsg(targetMap);
+            isNothingChanged = true;
+            return tokens;
+        }
+
+        logger.info("Detected changes: ");
+        for (MergerToken token : tokens) {
+            String logString = String.format("    %-20s %s", token.getTokenName(), token.getTokenValue());
+            logger.info(logString);
+            resultDialog.addRowToOutput(logString, targetMap);
+            isNothingChanged = false;
+        }
+
+        logger.info("");
+
         return tokens;
     }
 
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DbImportController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DbImportController.java
index 932c739..201293e 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DbImportController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DbImportController.java
@@ -18,15 +18,15 @@
  ****************************************************************/
 package org.apache.cayenne.modeler.editor;
 
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import java.util.concurrent.ConcurrentMap;
+
 import org.apache.cayenne.configuration.event.DataMapEvent;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.dialog.db.load.DbLoadResultDialog;
 
-import javax.swing.JTable;
-import javax.swing.table.DefaultTableModel;
-import java.util.concurrent.ConcurrentMap;
-
 /**
  * @since 4.1
  */
@@ -74,6 +74,7 @@ public class DbImportController {
         }
 
         dbLoadResultDialog.getTableForMap().clear();
+        dbLoadResultDialog.removeListenersFromButtons();
         dbLoadResultDialog.getTablePanel().removeAll();
     }