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

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

commit 62f9377fb171774682020e08d807f128739a5f6d
Author: Andrus Adamchik <[email protected]>
AuthorDate: Fri May 8 18:44:05 2026 -0400

    CAY-2914 CayenneModeler DB Import does not refresh for "Table Types"
---
 RELEASE-NOTES.txt                                  |  1 +
 .../editor/datamap/dbimport/DbImportTree.java      |  6 +--
 .../{DbImportModel.java => DbImportTreeModel.java} | 16 +++---
 .../editor/datamap/dbimport/DbImportView.java      | 59 ++++++++++++----------
 .../datamap/dbimport/PrintColumnsBiFunction.java   |  2 +-
 .../dbimport/ReverseEngineeringConfigPanel.java    |  6 +--
 .../editor/datamap/dbimport/SourceTargetPanel.java |  4 +-
 .../datamap/dbimport/action/DeleteNodeAction.java  |  4 +-
 .../dbimport/action/DragAndDropNodeAction.java     |  4 +-
 .../dbimport/action/LoadDbSchemaAction.java        |  4 +-
 10 files changed, 55 insertions(+), 51 deletions(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 2291f567c..081ac17d8 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -60,6 +60,7 @@ CAY-2900 Meaningful generated PKs could lead to the 
ClassCastException
 CAY-2901 Loosing comments on the existing ObjAttribute after DB import
 CAY-2902 Shared query cache clobbers newer object state
 CAY-2904 Disjoint prefetch returns incorrect data
+CAY-2914 Modeler: DB Import "Table Types" filter change does not refresh the 
schema tree
 CAY-2919 Exception in "Generate Database Schema"
 CAY-2921 Modeler: consistent duplicate name handling
 CAY-2926 Modeler: renaming an ObjEntity adds it to cgen excludeEntities
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportTree.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportTree.java
index a99e64578..695cd7f62 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportTree.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportTree.java
@@ -64,7 +64,7 @@ public class DbImportTree extends JTree {
     public void translateReverseEngineeringToTree(ReverseEngineering 
reverseEngineering, boolean isTransferable) {
         this.isTransferable = isTransferable;
         this.reverseEngineering = reverseEngineering;
-        DbImportModel model = (DbImportModel) this.getModel();
+        DbImportTreeModel model = (DbImportTreeModel) this.getModel();
         DbImportTreeNode root = (DbImportTreeNode) model.getRoot();
         root.removeAllChildren();
         root.setUserObject(reverseEngineering);
@@ -82,7 +82,7 @@ public class DbImportTree extends JTree {
 
     public void update(ReverseEngineering reverseEngineering,
                        BiFunction<FilterContainer, DbImportTreeNode, Void> 
processor) {
-        DbImportModel model = (DbImportModel) this.getModel();
+        DbImportTreeModel model = (DbImportTreeModel) this.getModel();
         DbImportTreeNode root = (DbImportTreeNode) model.getRoot();
         Collection<Catalog> catalogs = reverseEngineering.getCatalogs();
         if (!catalogs.isEmpty()) {
@@ -232,7 +232,7 @@ public class DbImportTree extends JTree {
     }
 
     public void reloadModelKeepingExpanded(DbImportTreeNode node) {
-        DbImportModel model = (DbImportModel) getModel();
+        DbImportTreeModel model = (DbImportTreeModel) getModel();
         List<DbImportTreeNode> nodesToExpand = getTreeExpandList();
         model.reload(node);
         expandTree(nodesToExpand);
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportModel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportTreeModel.java
similarity index 89%
rename from 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportModel.java
rename to 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportTreeModel.java
index 8fb4af5ae..7c8a90c99 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportModel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportTreeModel.java
@@ -25,13 +25,17 @@ import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.tree.DbImpo
 import javax.swing.tree.DefaultTreeModel;
 import javax.swing.tree.TreeNode;
 
-public class DbImportModel extends DefaultTreeModel {
+public class DbImportTreeModel extends DefaultTreeModel {
+
+    private final boolean canBeCleaned;
+    private final String emptyText;
 
     private DbImportTree dbSchemaTree;
-    private boolean canBeCleaned;
 
-    DbImportModel(TreeNode root) {
+    DbImportTreeModel(TreeNode root, boolean canBeCleaned, String emptyText) {
         super(root);
+        this.canBeCleaned = canBeCleaned;
+        this.emptyText = emptyText;
     }
 
     private void clearReverseEngineering(ReverseEngineering 
reverseEngineering) {
@@ -52,7 +56,7 @@ public class DbImportModel extends DefaultTreeModel {
             if (canBeCleaned) {
                 clearReverseEngineering(reverseEngineering);
             }
-            rootNode.add(new DbImportTreeNode(("Configuration is empty.")));
+            rootNode.add(new DbImportTreeNode(emptyText));
         }
     }
 
@@ -65,8 +69,4 @@ public class DbImportModel extends DefaultTreeModel {
     public void setDbSchemaTree(DbImportTree dbSchemaTree) {
         this.dbSchemaTree = dbSchemaTree;
     }
-
-    public void setCanBeCleaned(boolean canBeCleaned) {
-        this.canBeCleaned = canBeCleaned;
-    }
 }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportView.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportView.java
index 8878955af..9858d768b 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportView.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/DbImportView.java
@@ -56,36 +56,35 @@ public class DbImportView extends ProjectPanel {
     public DbImportView(ProjectSession session) {
         super(session);
 
-        DbImportTreeNode root = new DbImportTreeNode(new ReverseEngineering());
-        DbImportTreeNode draggableTreeRoot = new DbImportTreeNode(new 
ReverseEngineering());
-        DbImportTree reverseEngineeringTree = new DbImportTree(root);
-        DbImportTree draggableTree = new DbImportTree(new 
TransferableNode(draggableTreeRoot));
-        DbImportModel model = new DbImportModel(root);
-        model.setCanBeCleaned(true);
-        DbImportModel draggableTreeModel = new 
DbImportModel(draggableTreeRoot);
-        draggableTreeModel.setCanBeCleaned(false);
-        draggableTree.setRootVisible(false);
-        draggableTree.setShowsRootHandles(true);
-        draggableTree.setModel(draggableTreeModel);
-        reverseEngineeringTree.setRootVisible(false);
-        reverseEngineeringTree.setModel(model);
-        reverseEngineeringTree.setShowsRootHandles(true);
-
-        DbImportActions actions = new DbImportActions(app, this, 
reverseEngineeringTree, draggableTree);
-        this.sourceTargetPanel = new SourceTargetPanel(draggableTree, 
reverseEngineeringTree, actions);
-        draggableTree.setLoadDbSchemaAction(actions.getLoadDbSchemaAction());
-        this.treeToolbar = new TreeToolbarPanel(reverseEngineeringTree, 
actions);
-        this.treePanel = new ReverseEngineeringTreePanel(session, 
reverseEngineeringTree, draggableTree, this.sourceTargetPanel, actions);
+        DbImportTreeNode configRoot = new DbImportTreeNode(new 
ReverseEngineering());
+        DbImportTree configTree = new DbImportTree(configRoot);
+        DbImportTreeModel configModel = new DbImportTreeModel(configRoot, 
true, "Configuration is empty.");
+        configTree.setRootVisible(false);
+        configTree.setModel(configModel);
+        configTree.setShowsRootHandles(true);
+
+        DbImportTreeNode dbRoot = new DbImportTreeNode(new 
ReverseEngineering());
+        DbImportTree dbTree = new DbImportTree(new TransferableNode(dbRoot));
+        DbImportTreeModel dbModel = new DbImportTreeModel(dbRoot, false, 
"Click 'Refresh DB Schema' above to load the schema.");
+        dbTree.setRootVisible(false);
+        dbTree.setShowsRootHandles(true);
+        dbTree.setModel(dbModel);
+
+        DbImportActions actions = new DbImportActions(app, this, configTree, 
dbTree);
+        this.sourceTargetPanel = new SourceTargetPanel(dbTree, configTree, 
actions);
+        dbTree.setLoadDbSchemaAction(actions.getLoadDbSchemaAction());
+        this.treeToolbar = new TreeToolbarPanel(configTree, actions);
+        this.treePanel = new ReverseEngineeringTreePanel(session, configTree, 
dbTree, this.sourceTargetPanel, actions);
         treePanel.setTreeToolbar(treeToolbar);
-        model.setDbSchemaTree(draggableTree);
-        draggableTreeModel.setDbSchemaTree(draggableTree);
-        ((ColorTreeRenderer) 
sourceTargetPanel.getSourceTree().getCellRenderer())
-                .setReverseEngineeringTree(reverseEngineeringTree);
+
+        configModel.setDbSchemaTree(dbTree);
+        dbModel.setDbSchemaTree(dbTree);
+
+        ((ColorTreeRenderer) 
sourceTargetPanel.getSourceTree().getCellRenderer()).setReverseEngineeringTree(configTree);
         this.configPanel = new ReverseEngineeringConfigPanel(session, this);
         this.loadDbSchemaProgress = new JProgressBar();
         this.reverseEngineeringProgress = new JProgressBar();
-        this.loadDbSchemaButton = (AppAction.CayenneToolbarButton)
-                actions.getLoadDbSchemaAction().buildButton(0);
+        this.loadDbSchemaButton = (AppAction.CayenneToolbarButton) 
actions.getLoadDbSchemaAction().buildButton(0);
 
         initLayout(actions);
         initBindings();
@@ -242,6 +241,14 @@ public class DbImportView extends ProjectPanel {
         return initFromModel;
     }
 
+    void invalidateDbSchema() {
+        DbImportTree sourceTree = sourceTargetPanel.getSourceTree();
+        DbImportTreeNode root = sourceTree.getRootNode();
+        root.removeAllChildren();
+        sourceTree.setEnabled(false);
+        ((DbImportTreeModel) sourceTree.getModel()).reload();
+    }
+
     public String[] getTableTypes() {
         return configPanel
                 .getReverseEngineeringBySelectedMap()
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/PrintColumnsBiFunction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/PrintColumnsBiFunction.java
index 4eb006465..7737a171f 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/PrintColumnsBiFunction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/PrintColumnsBiFunction.java
@@ -42,7 +42,7 @@ public class PrintColumnsBiFunction implements 
BiFunction<FilterContainer, DbImp
     }
 
     private void processTable(IncludeTable tableFilter, DbImportTreeNode root) 
{
-        DbImportModel model = (DbImportModel) dbImportTree.getModel();
+        DbImportTreeModel model = (DbImportTreeModel) dbImportTree.getModel();
         DbImportTreeNode container = dbImportTree
                 .findNodeInParent(root, tableFilter);
         if (container == null) {
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/ReverseEngineeringConfigPanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/ReverseEngineeringConfigPanel.java
index 08747306a..fc9f9c876 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/ReverseEngineeringConfigPanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/ReverseEngineeringConfigPanel.java
@@ -221,16 +221,12 @@ public class ReverseEngineeringConfigPanel extends 
ProjectPanel {
             }
             if (!dbImportView.isInitFromModel()) {
                 session.setDirty(true);
+                dbImportView.invalidateDbSchema();
             }
         }
     }
 
-    JComboBox<String> getStrategyCombo() {
-        return strategyCombo;
-    }
-
     CMUndoableTextField getTableTypes() {
         return tableTypes;
     }
-
 }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/SourceTargetPanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/SourceTargetPanel.java
index db70b0ca1..01cb256e0 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/SourceTargetPanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/SourceTargetPanel.java
@@ -155,7 +155,7 @@ public class SourceTargetPanel extends JPanel {
     }
 
     public void updateTree(DataMap dataMap) {
-        DbImportModel model = (DbImportModel) sourceTree.getModel();
+        DbImportTreeModel model = (DbImportTreeModel) sourceTree.getModel();
         model.reload();
         if (databaseStructures.get(dataMap) != null) {
             sourceTree.setReverseEngineering(databaseStructures.get(dataMap));
@@ -304,7 +304,7 @@ public class SourceTargetPanel extends JPanel {
     private class TargetTreeSelectionListener implements TreeSelectionListener 
{
         @Override
         public void valueChanged(TreeSelectionEvent e) {
-            DbImportModel model = (DbImportModel) sourceTree.getModel();
+            DbImportTreeModel model = (DbImportTreeModel) 
sourceTree.getModel();
             DbImportTreeNode root = (DbImportTreeNode) model.getRoot();
             sourceTree.repaint();
             if (root.getChildCount() > 0) {
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/DeleteNodeAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/DeleteNodeAction.java
index 523b1d133..ffe3a1eb1 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/DeleteNodeAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/DeleteNodeAction.java
@@ -31,7 +31,7 @@ import 
org.apache.cayenne.dbsync.reverse.dbimport.PatternParam;
 import org.apache.cayenne.dbsync.reverse.dbimport.ReverseEngineering;
 import org.apache.cayenne.dbsync.reverse.dbimport.Schema;
 import org.apache.cayenne.modeler.Application;
-import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DbImportModel;
+import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DbImportTreeModel;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DbImportTree;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DbImportView;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.tree.DbImportTreeNode;
@@ -112,7 +112,7 @@ public class DeleteNodeAction extends 
TreeManipulationAction {
     }
 
     private void updateParentChilds() {
-        DbImportModel model = (DbImportModel) tree.getModel();
+        DbImportTreeModel model = (DbImportTreeModel) tree.getModel();
         model.removeNodeFromParent(selectedElement);
         getProjectSession().setDirty(true);
         tree.reloadModelKeepingExpanded(parentElement);
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/DragAndDropNodeAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/DragAndDropNodeAction.java
index abf343ff4..af39cc820 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/DragAndDropNodeAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/DragAndDropNodeAction.java
@@ -22,7 +22,7 @@ package 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.action;
 import org.apache.cayenne.dbsync.reverse.dbimport.ReverseEngineering;
 import org.apache.cayenne.modeler.Application;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.tree.DbImportTreeNode;
-import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DbImportModel;
+import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DbImportTreeModel;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DbImportSorter;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DbImportTree;
 
@@ -51,7 +51,7 @@ public class DragAndDropNodeAction extends 
TreeManipulationAction {
         if (dropLocationDuplicateFound()) {
             return;
         }
-        DbImportModel model = (DbImportModel) tree.getModel();
+        DbImportTreeModel model = (DbImportTreeModel) tree.getModel();
         ReverseEngineering reverseEngineeringOldCopy = new 
ReverseEngineering(tree.getReverseEngineering());
         List<DbImportTreeNode> nodesToExpand = Arrays.stream(nodes)
                 .filter(node -> tree.isExpanded(new TreePath(node.getPath())))
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/LoadDbSchemaAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/LoadDbSchemaAction.java
index d75ebaf33..b205b36d7 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/LoadDbSchemaAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/datamap/dbimport/action/LoadDbSchemaAction.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.ui.action.DBConnectionAwareAction;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.tree.DbImportTreeNode;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DatabaseSchemaLoader;
-import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DbImportModel;
+import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DbImportTreeModel;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.DbImportView;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.SourceTargetPanel;
 import 
org.apache.cayenne.modeler.ui.project.editor.datamap.dbimport.PrintColumnsBiFunction;
@@ -126,7 +126,7 @@ public class LoadDbSchemaAction extends 
DBConnectionAwareAction {
                 .translateReverseEngineeringToTree(databaseReverseEngineering, 
true);
         sourceTargetPanel
                 
.bindReverseEngineeringToDatamap(getProjectSession().getSelectedDataMap(), 
databaseReverseEngineering);
-        ((DbImportModel) 
sourceTargetPanel.getSourceTree().getModel()).reload();
+        ((DbImportTreeModel) 
sourceTargetPanel.getSourceTree().getModel()).reload();
     }
 
     private void loadTables(DBConnector connectionInfo, TreePath tablePath) 
throws Exception {

Reply via email to