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 2026/05/08 22:56:29 UTC
(cayenne) 01/02: CAY-2914 CayenneModeler DB Import does not refresh for "Table Types"
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 <an...@objectstyle.com>
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 {