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/04/19 15:48:02 UTC
(cayenne) 07/08: Modeler cleanup
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 7bc24c8e236a4c8aeacc751ebb7bc2a7327f3352
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Sun Apr 19 09:16:21 2026 -0400
Modeler cleanup
removing ProjectController.setCurrentXyz. Object disolay changes should go through the "fire.." methods
---
.../apache/cayenne/modeler/ProjectController.java | 4 +-
.../modeler/action/DBConnectionAwareAction.java | 49 +++++++++---------
.../modeler/action/GetDbConnectionAction.java | 15 +++---
.../cayenne/modeler/action/LoadDbSchemaAction.java | 7 ++-
.../modeler/action/ReverseEngineeringAction.java | 23 ++++-----
.../dialog/db/load/DbImportProjectSaver.java | 17 +------
.../modeler/dialog/db/load/DbLoaderContext.java | 58 ++++++----------------
.../modeler/dialog/db/load/LoaderDelegate.java | 6 +--
8 files changed, 68 insertions(+), 111 deletions(-)
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java
index 6c935f5b8..39514db33 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java
@@ -464,9 +464,7 @@ public class ProjectController extends CayenneController {
return state.dataMap;
}
- public void setSelectedDataMap(DataMap dataMap) {
- state.dataMap = dataMap;
- }
+
public ObjEntity getSelectedObjEntity() {
return state.objEntity;
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DBConnectionAwareAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DBConnectionAwareAction.java
index a372d9896..c80081203 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DBConnectionAwareAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DBConnectionAwareAction.java
@@ -19,8 +19,7 @@
package org.apache.cayenne.modeler.action;
-import java.util.prefs.Preferences;
-
+import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.dialog.db.DataSourceWizard;
import org.apache.cayenne.modeler.pref.DBConnectionInfo;
@@ -41,18 +40,18 @@ public abstract class DBConnectionAwareAction extends CayenneAction {
super(name, application);
}
- protected DBConnectionInfo getConnectionInfo(String title) {
- DBConnectionInfo connectionInfo;
- if (datamapPrefNotExist()) {
+ protected DBConnectionInfo getConnectionInfo(String title, DataMap dataMap) {
+
+ DBConnectionInfo connectionInfo = getConnectionInfoFromPreferences(dataMap);
+ if (connectionInfo == null) {
DataSourceWizard connectWizard = getDataSourceWizard(title);
if (connectWizard == null) {
return null;
}
connectionInfo = connectWizard.getConnectionInfo();
- saveConnectionInfo(connectWizard);
- } else {
- connectionInfo = getConnectionInfoFromPreferences();
+ saveConnectionInfo(dataMap, connectWizard);
}
+
return connectionInfo;
}
@@ -72,31 +71,29 @@ public abstract class DBConnectionAwareAction extends CayenneAction {
return connectWizard;
}
- protected boolean datamapPrefNotExist() {
- Preferences dataMapPreference = getProjectController().
- getSelectedDataMapPreferences(getProjectController().getSelectedDataMap())
- .getCurrentPreference();
- return dataMapPreference == null || dataMapPreference.get(URL_PROPERTY, null) == null;
- }
+ private DBConnectionInfo getConnectionInfoFromPreferences(DataMap dataMap) {
+
+ DataMapDefaults defaults = getProjectController().getSelectedDataMapPreferences(dataMap);
+ if (defaults == null
+ || defaults.getCurrentPreference() == null
+ || defaults.getCurrentPreference().get(URL_PROPERTY, null) == null) {
+ return null;
+ }
- protected DBConnectionInfo getConnectionInfoFromPreferences() {
DBConnectionInfo connectionInfo = new DBConnectionInfo();
- DataMapDefaults dataMapDefaults = getProjectController()
- .getSelectedDataMapPreferences(getProjectController().getSelectedDataMap());
- connectionInfo.setDbAdapter(dataMapDefaults.getCurrentPreference().get(DB_ADAPTER_PROPERTY, null));
- connectionInfo.setUrl(dataMapDefaults.getCurrentPreference().get(URL_PROPERTY, null));
- connectionInfo.setUserName(dataMapDefaults.getCurrentPreference().get(USER_NAME_PROPERTY, null));
- connectionInfo.setPassword(dataMapDefaults.getCurrentPreference().get(PASSWORD_PROPERTY, null));
- connectionInfo.setJdbcDriver(dataMapDefaults.getCurrentPreference().get(JDBC_DRIVER_PROPERTY, null));
+ connectionInfo.setDbAdapter(defaults.getCurrentPreference().get(DB_ADAPTER_PROPERTY, null));
+ connectionInfo.setUrl(defaults.getCurrentPreference().get(URL_PROPERTY, null));
+ connectionInfo.setUserName(defaults.getCurrentPreference().get(USER_NAME_PROPERTY, null));
+ connectionInfo.setPassword(defaults.getCurrentPreference().get(PASSWORD_PROPERTY, null));
+ connectionInfo.setJdbcDriver(defaults.getCurrentPreference().get(JDBC_DRIVER_PROPERTY, null));
return connectionInfo;
}
- protected void saveConnectionInfo(DataSourceWizard connectWizard) {
- DataMapDefaults dataMapDefaults = getProjectController().
- getSelectedDataMapPreferences(getProjectController().getSelectedDataMap());
+ protected void saveConnectionInfo(DataMap dataMap, DataSourceWizard connectWizard) {
+ DataMapDefaults dataMapDefaults = getProjectController().getSelectedDataMapPreferences(dataMap);
String dbAdapter = connectWizard.getConnectionInfo().getDbAdapter();
- if(dbAdapter != null) {
+ if (dbAdapter != null) {
dataMapDefaults.getCurrentPreference().put(DB_ADAPTER_PROPERTY, dbAdapter);
} else {
dataMapDefaults.getCurrentPreference().remove(DB_ADAPTER_PROPERTY);
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GetDbConnectionAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GetDbConnectionAction.java
index d870fea7e..e45a11a97 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GetDbConnectionAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GetDbConnectionAction.java
@@ -19,34 +19,37 @@
package org.apache.cayenne.modeler.action;
-import java.awt.event.ActionEvent;
-
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.dialog.db.DataSourceWizard;
+import java.awt.event.ActionEvent;
+
/**
* @since 4.1
*/
public class GetDbConnectionAction extends DBConnectionAwareAction {
- public static final String DIALOG_TITLE = "Configure Connection to Database";
+ private static final String DIALOG_TITLE = "Configure Connection to Database";
private static final String ACTION_NAME = "Configure Connection";
private static final String ICON_NAME = "icon-dbi-config.png";
- public GetDbConnectionAction(final Application application) {
+ public GetDbConnectionAction(Application application) {
super(ACTION_NAME, application);
}
+ @Override
public String getIconName() {
return ICON_NAME;
}
@Override
- public void performAction(final ActionEvent e) {
+ public void performAction(ActionEvent e) {
DataSourceWizard connectWizard = getDataSourceWizard(DIALOG_TITLE, new String[]{"Continue", "Cancel"});
if (connectWizard == null) {
return;
}
- saveConnectionInfo(connectWizard);
+ saveConnectionInfo(
+ application.getFrameController().getProjectController().getSelectedDataMap(),
+ connectWizard);
}
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java
index 5a08e211d..45a999d49 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java
@@ -65,7 +65,7 @@ public class LoadDbSchemaAction extends DBConnectionAwareAction {
}
public void loadDbSchema(TreePath tablePath) {
- final DbImportView rootParent = ((DbImportView) draggableTreePanel.getParent().getParent());
+ DbImportView rootParent = ((DbImportView) draggableTreePanel.getParent().getParent());
rootParent.getLoadDbSchemaProgress().setVisible(true);
rootParent.getLoadDbSchemaButton().setEnabled(false);
Thread thread = new Thread(() -> {
@@ -75,7 +75,10 @@ public class LoadDbSchemaAction extends DBConnectionAwareAction {
draggableTreePanel.getMoveInvertButton().setEnabled(false);
try {
- DBConnectionInfo connectionInfo = getConnectionInfo("Load Db Schema");
+ DBConnectionInfo connectionInfo = getConnectionInfo(
+ "Load Db Schema",
+ application.getFrameController().getProjectController().getSelectedDataMap());
+
if (connectionInfo == null) {
return;
}
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 02a4cb5ac..5c294c592 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
@@ -21,7 +21,6 @@ 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.load.DbLoadResultDialog;
import org.apache.cayenne.modeler.dialog.db.load.DbLoaderContext;
import org.apache.cayenne.modeler.dialog.db.load.LoadDataMapTask;
@@ -62,22 +61,20 @@ public class ReverseEngineeringAction extends DBConnectionAwareAction {
resetParams();
dataMaps.addAll(dataMapSet);
dataMapCount.set(dataMaps.size());
- ProjectController projectController = Application.getInstance().getFrameController().getProjectController();
- for (DataMap dataMap : dataMapSet) {
- projectController.setSelectedDataMap(dataMap);
- startImport();
- }
+ dataMapSet.forEach(this::startImport);
}
- private void startImport() {
- DbLoaderContext context = new DbLoaderContext(application.getMetaData());
+ private void startImport(DataMap dataMap) {
+ DbLoaderContext context = new DbLoaderContext(
+ getProjectController(),
+ application.getMetaData(),
+ dataMap);
- DBConnectionInfo connectionInfo = getConnectionInfo(DIALOG_TITLE);
+ DBConnectionInfo connectionInfo = getConnectionInfo(DIALOG_TITLE, dataMap);
if (connectionInfo == null) {
return;
}
- context.setProjectController(getProjectController());
try {
context.setConnection(connectionInfo.makeDataSource(getApplication().getClassLoadingService()).getConnection());
} catch (SQLException ex) {
@@ -97,7 +94,7 @@ public class ReverseEngineeringAction extends DBConnectionAwareAction {
return;
}
- DbImportController dbImportController = Application.getInstance().getFrameController().getDbImportController();
+ DbImportController dbImportController = application.getFrameController().getDbImportController();
DbLoadResultDialog dbLoadResultDialog = dbImportController.createDialog();
runLoaderInThread(context, () -> {
@@ -120,9 +117,9 @@ public class ReverseEngineeringAction extends DBConnectionAwareAction {
@Override
public void performAction(ActionEvent event) {
resetParams();
- dataMaps.add(Application.getInstance().getFrameController().getProjectController().getSelectedDataMap());
+ dataMaps.add(application.getFrameController().getProjectController().getSelectedDataMap());
dataMapCount.set(dataMaps.size());
- startImport();
+ startImport(application.getFrameController().getProjectController().getSelectedDataMap());
}
private void resetParams() {
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/DbImportProjectSaver.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/DbImportProjectSaver.java
index c33361596..d850e45f0 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/DbImportProjectSaver.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/DbImportProjectSaver.java
@@ -19,7 +19,6 @@
package org.apache.cayenne.modeler.dialog.db.load;
import org.apache.cayenne.configuration.ConfigurationNameMapper;
-import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.configuration.event.DataMapEvent;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.map.DataMap;
@@ -51,20 +50,8 @@ public class DbImportProjectSaver implements ProjectSaver {
public void save(Project project) {
DataMap dataMap = (DataMap) project.getRootNode();
-
- if (projectController.getSelectedDataMap() != null) {
- projectController.fireDataMapEvent(new DataMapEvent(Application.getFrame(), dataMap, MapEvent.REMOVE));
- projectController.fireDataMapEvent(new DataMapEvent(Application.getFrame(), dataMap, MapEvent.ADD));
- } else {
- DataChannelDescriptor currentDomain = (DataChannelDescriptor) projectController.getProject().getRootNode();
- Resource baseResource = currentDomain.getConfigurationSource();
- // a new DataMap, so need to set configuration source for it
- if (baseResource != null) {
- Resource dataMapResource = baseResource.getRelativeResource(nameMapper.configurationLocation(dataMap));
- dataMap.setConfigurationSource(dataMapResource);
- }
- projectController.addDataMap(Application.getFrame(), dataMap);
- }
+ projectController.fireDataMapEvent(new DataMapEvent(Application.getFrame(), dataMap, MapEvent.REMOVE));
+ projectController.fireDataMapEvent(new DataMapEvent(Application.getFrame(), dataMap, MapEvent.ADD));
}
@Override
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 00703081f..4a819ae42 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,14 +19,7 @@
package org.apache.cayenne.modeler.dialog.db.load;
-import javax.swing.JOptionPane;
-import javax.swing.SwingUtilities;
-import java.io.File;
-import java.sql.Connection;
-
-import org.apache.cayenne.configuration.ConfigurationNode;
import org.apache.cayenne.configuration.xml.DataChannelMetaData;
-import org.apache.cayenne.dbsync.naming.NameBuilder;
import org.apache.cayenne.dbsync.reverse.dbimport.DbImportConfiguration;
import org.apache.cayenne.dbsync.reverse.dbimport.ReverseEngineering;
import org.apache.cayenne.dbsync.reverse.dbload.DbLoaderDelegate;
@@ -41,6 +34,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
*/
@@ -48,34 +45,27 @@ public class DbLoaderContext {
private static final Logger LOGGER = LoggerFactory.getLogger(DbLoaderContext.class);
+ private final ProjectController projectController;
+ private final DataMap dataMap;
+ private final DataChannelMetaData dataChannelMetaData;
+
private DbImportConfiguration config;
private Connection connection;
- private ProjectController projectController;
- private boolean existingMap;
- private DataMap dataMap;
private boolean stopping;
private String loadStatusNote;
private volatile boolean isInterrupted;
- private DataChannelMetaData metaData;
-
- public DbLoaderContext(DataChannelMetaData metaData) {
- this.metaData = metaData;
+ public DbLoaderContext(ProjectController projectController, DataChannelMetaData dataChannelMetaData, DataMap dataMap) {
+ this.projectController = projectController;
+ this.dataChannelMetaData = dataChannelMetaData;
+ this.dataMap = dataMap;
}
- DataMap getDataMap() {
+ public DataMap getDataMap() {
return dataMap;
}
- boolean isExistingDataMap() {
- return existingMap;
- }
-
- public void setProjectController(ProjectController projectController) {
- this.projectController = projectController;
- }
-
- ProjectController getProjectController() {
+ public ProjectController getProjectController() {
return projectController;
}
@@ -99,10 +89,6 @@ public class DbLoaderContext {
return stopping;
}
- public DataChannelMetaData getMetaData() {
- return metaData;
- }
-
void setStopping(boolean stopping) {
this.stopping = stopping;
}
@@ -131,7 +117,7 @@ public class DbLoaderContext {
return false;
}
// Build reverse engineering from metadata and dialog values
- ReverseEngineering metaReverseEngineering = metaData.get(getProjectController().getSelectedDataMap(), ReverseEngineering.class);
+ ReverseEngineering metaReverseEngineering = dataChannelMetaData.get(dataMap, ReverseEngineering.class);
if(metaReverseEngineering == null) {
return false;
}
@@ -192,23 +178,11 @@ public class DbLoaderContext {
}
private void prepareDataMap() {
- dataMap = getProjectController().getSelectedDataMap();
- existingMap = dataMap != null;
-
- if (!existingMap) {
- ConfigurationNode root = getProjectController().getProject().getRootNode();
- dataMap = new DataMap();
- dataMap.setName(NameBuilder.builder(dataMap, root).name());
- }
- if (dataMap.getConfigurationSource() != null) {
+ if (this.dataMap.getConfigurationSource() != null) {
getConfig().setTargetDataMap(new File(dataMap.getConfigurationSource().getURL().getPath()));
}
}
- public void processWarn(final Throwable th, final String message) {
- LOGGER.warn(message, Util.unwindException(th));
- }
-
public void processException(final Throwable th, final String message) {
LOGGER.info("Exception on reverse engineering", Util.unwindException(th));
isInterrupted = true;
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/LoaderDelegate.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/LoaderDelegate.java
index e515088ca..dba94f895 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/LoaderDelegate.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/LoaderDelegate.java
@@ -29,7 +29,7 @@ import org.apache.cayenne.modeler.Application;
final class LoaderDelegate extends DefaultDbLoaderDelegate {
- private DbLoaderContext context;
+ private final DbLoaderContext context;
LoaderDelegate(DbLoaderContext dbLoaderContext) {
this.context = dbLoaderContext;
@@ -44,9 +44,7 @@ final class LoaderDelegate extends DefaultDbLoaderDelegate {
@Override
public void dbEntityRemoved(DbEntity entity) {
checkCanceled();
- if (context.isExistingDataMap()) {
- context.getProjectController().fireDbEntityEvent(new EntityEvent(Application.getFrame(), entity, MapEvent.REMOVE));
- }
+ context.getProjectController().fireDbEntityEvent(new EntityEvent(Application.getFrame(), entity, MapEvent.REMOVE));
}
@Override