From bc2c0ec9ec3ae3d87d6cde973e9973a4a273e264 Mon Sep 17 00:00:00 2001 From: Nikita Timofeev Date: Tue, 8 Nov 2016 18:00:31 +0300 Subject: [PATCH 1/2] - Datamap xml file is missing after removing and adding new datamap --- .../cayenne/modeler/dialog/DbImportProjectSaver.java | 9 +++++++-- .../apache/cayenne/modeler/dialog/db/DbLoaderHelper.java | 3 ++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbImportProjectSaver.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbImportProjectSaver.java index 76a41413d3..a4221438dd 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbImportProjectSaver.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbImportProjectSaver.java @@ -18,6 +18,7 @@ */ package org.apache.cayenne.modeler.dialog; +import org.apache.cayenne.configuration.ConfigurationNameMapper; import org.apache.cayenne.configuration.DataChannelDescriptor; import org.apache.cayenne.configuration.event.DataMapEvent; import org.apache.cayenne.map.DataMap; @@ -30,10 +31,14 @@ public class DbImportProjectSaver implements ProjectSaver { + //@Inject // unfortunate we are not in DI context for now + protected ConfigurationNameMapper nameMapper; + private ProjectController projectController; - public DbImportProjectSaver(ProjectController projectController) { + public DbImportProjectSaver(ProjectController projectController, ConfigurationNameMapper nameMapper) { this.projectController = projectController; + this.nameMapper = nameMapper; } @Override @@ -58,7 +63,7 @@ public void save(Project project) { // a new DataMap, so need to set configuration source for it if (baseResource != null) { - Resource dataMapResource = baseResource.getRelativeResource(dataMap.getName()); + Resource dataMapResource = baseResource.getRelativeResource(nameMapper.configurationLocation(dataMap)); dataMap.setConfigurationSource(dataMapResource); } projectController.addDataMap(Application.getFrame(), dataMap); diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java index b736eac3fe..b975dc60e4 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java @@ -20,6 +20,7 @@ package org.apache.cayenne.modeler.dialog.db; import org.apache.cayenne.CayenneRuntimeException; +import org.apache.cayenne.configuration.ConfigurationNameMapper; import org.apache.cayenne.configuration.ConfigurationNode; import org.apache.cayenne.configuration.server.DataSourceFactory; import org.apache.cayenne.configuration.server.DbAdapterFactory; @@ -381,7 +382,7 @@ protected DbImportAction createAction(DataMap targetDataMap) { return new ModelerDbImportAction( LOGGER, - new DbImportProjectSaver(projectController), + new DbImportProjectSaver(projectController, injector.getInstance(ConfigurationNameMapper.class)), injector.getInstance(DataSourceFactory.class), injector.getInstance(DbAdapterFactory.class), injector.getInstance(MapLoader.class), From 8e8348a27b85c913f81b3d4d559fcddecbd07084 Mon Sep 17 00:00:00 2001 From: Nikita Timofeev Date: Wed, 9 Nov 2016 10:45:22 +0300 Subject: [PATCH 2/2] - Datamap xml file is missing after removing and adding new datamap --- .../cayenne/modeler/action/DefaultActionManager.java | 5 +++-- .../cayenne/modeler/action/ImportDataMapAction.java | 8 ++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DefaultActionManager.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DefaultActionManager.java index 80bd3557bb..8a98cc302d 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DefaultActionManager.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DefaultActionManager.java @@ -18,6 +18,7 @@ ****************************************************************/ package org.apache.cayenne.modeler.action; +import org.apache.cayenne.configuration.ConfigurationNameMapper; import org.apache.cayenne.configuration.ConfigurationNode; import org.apache.cayenne.di.Inject; import org.apache.cayenne.modeler.Application; @@ -55,14 +56,14 @@ public class DefaultActionManager implements ActionManager { protected Map actionMap; - public DefaultActionManager(@Inject Application application) { + public DefaultActionManager(@Inject Application application, @Inject ConfigurationNameMapper nameMapper) { initActions(); this.actionMap = new HashMap<>(40); registerAction(new ProjectAction(application)); registerAction(new NewProjectAction(application)).setAlwaysOn(true); registerAction(new OpenProjectAction(application)).setAlwaysOn(true); - registerAction(new ImportDataMapAction(application)); + registerAction(new ImportDataMapAction(application, nameMapper)); registerAction(new SaveAction(application)); registerAction(new SaveAsAction(application)); registerAction(new RevertAction(application)); diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java index 732963dc11..68059f62fa 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java @@ -19,6 +19,7 @@ package org.apache.cayenne.modeler.action; +import org.apache.cayenne.configuration.ConfigurationNameMapper; import org.apache.cayenne.configuration.ConfigurationNode; import org.apache.cayenne.configuration.DataChannelDescriptor; import org.apache.cayenne.dbsync.naming.NameBuilder; @@ -50,8 +51,11 @@ public class ImportDataMapAction extends CayenneAction { private static Log logObj = LogFactory.getLog(ImportDataMapAction.class); - public ImportDataMapAction(Application application) { + private ConfigurationNameMapper nameMapper; + + public ImportDataMapAction(Application application, ConfigurationNameMapper nameMapper) { super(getActionName(), application); + this.nameMapper = nameMapper; } public static String getActionName() { @@ -88,7 +92,7 @@ protected void importDataMap() { Resource baseResource = ((DataChannelDescriptor) root).getConfigurationSource(); if (baseResource != null) { - Resource dataMapResource = baseResource.getRelativeResource(newMap.getName()); + Resource dataMapResource = baseResource.getRelativeResource(nameMapper.configurationLocation(newMap)); newMap.setConfigurationSource(dataMapResource); }