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 {
