You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by sk...@apache.org on 2016/10/20 14:49:37 UTC
[2/7] cayenne git commit: Revert to the old Reverse Engineering UI
style
Revert to the old Reverse Engineering UI style
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/29671e75
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/29671e75
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/29671e75
Branch: refs/heads/master
Commit: 29671e75b38620811c2bfc6c0f2b0af01d4942dd
Parents: f7ad0cc
Author: ollybondareva <ol...@gmail.com>
Authored: Wed Oct 19 17:37:45 2016 +0300
Committer: Savva Kolbachev <s....@gmail.com>
Committed: Thu Oct 20 12:53:11 2016 +0300
----------------------------------------------------------------------
.../dbsync/naming/DeduplicationVisitor.java | 24 --
.../dbsync/naming/DefaultBaseNameVisitor.java | 6 -
.../dbsync/naming/NormalizationVisitor.java | 6 -
.../cayenne/project/ConfigurationSaver.java | 9 -
.../project/ConfigurationSourceGetter.java | 5 -
.../project/ConfigurationSourceSetter.java | 7 -
.../DefaultConfigurationNodeParentGetter.java | 12 -
.../cayenne/project/SaveableNodesGetter.java | 9 -
.../validation/DefaultProjectValidator.java | 8 -
.../validation/ReverseEngineeringValidator.java | 42 ---
.../project/ReverseEngineeringSaverTest.java | 62 ----
.../BaseConfigurationNodeVisitor.java | 5 -
.../configuration/ConfigurationNodeVisitor.java | 3 -
.../DefaultConfigurationNameMapper.java | 18 --
.../XMLDataChannelDescriptorLoader.java | 18 --
.../cayenne/dbimport/ReverseEngineering.java | 21 +-
.../java/org/apache/cayenne/map/DataMap.java | 15 -
.../java/org/apache/cayenne/map/MapLoader.java | 22 --
.../org/apache/cayenne/schema/8/modelMap.xsd | 7 -
.../apache/cayenne/tools/DbImporterTask.java | 111 ++------
.../modeler/ProjectFileChangeTracker.java | 6 -
.../cayenne/modeler/action/RemoveAction.java | 4 -
.../action/ReverseEngineeringAction.java | 66 ++++-
.../modeler/dialog/db/ConnectionWizard.java | 89 ++++++
.../modeler/dialog/db/DataMapViewModel.java | 46 ---
.../modeler/dialog/db/DataSourceWizard.java | 222 +++++++++++++++
.../modeler/dialog/db/DataSourceWizardView.java | 94 +++++++
.../modeler/dialog/db/DbLoaderHelper.java | 50 +++-
.../dialog/db/DbLoaderOptionsDialog.java | 253 +++++++++++++++++
.../modeler/dialog/db/ModelerDbLoader.java | 258 -----------------
.../dialog/db/ReverseEngineeringController.java | 243 ----------------
.../dialog/db/ReverseEngineeringScrollPane.java | 34 ---
.../dialog/db/ReverseEngineeringView.java | 281 -------------------
.../modeler/dialog/db/model/DbCatalog.java | 30 --
.../modeler/dialog/db/model/DbColumn.java | 34 ---
.../modeler/dialog/db/model/DbElement.java | 62 ----
.../modeler/dialog/db/model/DbEntity.java | 37 ---
.../modeler/dialog/db/model/DbModel.java | 29 --
.../modeler/dialog/db/model/DbProcedure.java | 33 ---
.../modeler/dialog/db/model/DbSchema.java | 29 --
.../dialog/pref/FilteredTreeCellRenderer.java | 85 ------
.../cayenne/modeler/dialog/pref/TreeEditor.java | 101 -------
.../cayenne/modeler/dialog/pref/TreeView.java | 56 ----
.../modeler/dialog/pref/XMLFileEditor.java | 82 ------
.../cayenne/modeler/dialog/pref/XMLView.java | 72 -----
.../modeler/editor/DataMapTabbedView.java | 21 +-
.../cayenne/modeler/util/CellRenderers.java | 13 -
.../apache/cayenne/tools/DbImporterMojo.java | 95 +------
.../cayenne/tools/DbImporterMojoTest.java | 1 -
49 files changed, 775 insertions(+), 2061 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DeduplicationVisitor.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DeduplicationVisitor.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DeduplicationVisitor.java
index 09d2d97..cd42d32 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DeduplicationVisitor.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DeduplicationVisitor.java
@@ -22,7 +22,6 @@ import org.apache.cayenne.configuration.ConfigurationNode;
import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.configuration.DataNodeDescriptor;
-import org.apache.cayenne.dbimport.ReverseEngineering;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
@@ -206,29 +205,6 @@ class DeduplicationVisitor implements ConfigurationNodeVisitor<String> {
});
}
- @Override
- public String visitReverseEngineering(ReverseEngineering reverseEngineering) {
- return resolve(new Predicate() {
- @Override
- public boolean isNameInUse(String name) {
-
- if (parent == null) {
- return false;
- }
-
- DataChannelDescriptor dataChannelDescriptor = (DataChannelDescriptor) parent;
- for (DataMap dataMap : dataChannelDescriptor.getDataMaps()) {
- if (dataMap != null && dataMap.getReverseEngineering() != null &&
- dataMap.getReverseEngineering().getName() != null
- && dataMap.getReverseEngineering().getName().equals(name)) {
- return true;
- }
- }
- return false;
- }
- });
- }
-
String resolve(Predicate nameChecker) {
int c = 1;
String name = baseName;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DefaultBaseNameVisitor.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DefaultBaseNameVisitor.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DefaultBaseNameVisitor.java
index ecc17f0..f08e04e 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DefaultBaseNameVisitor.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DefaultBaseNameVisitor.java
@@ -21,7 +21,6 @@ package org.apache.cayenne.dbsync.naming;
import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.configuration.DataNodeDescriptor;
-import org.apache.cayenne.dbimport.ReverseEngineering;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
@@ -114,9 +113,4 @@ class DefaultBaseNameVisitor implements ConfigurationNodeVisitor<String> {
public String visitQuery(QueryDescriptor query) {
return "query";
}
-
- @Override
- public String visitReverseEngineering(ReverseEngineering reverseEngineering) {
- return "reverseEngineering";
- }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/NormalizationVisitor.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/NormalizationVisitor.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/NormalizationVisitor.java
index 75d941d..ba8cf9d 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/NormalizationVisitor.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/NormalizationVisitor.java
@@ -21,7 +21,6 @@ package org.apache.cayenne.dbsync.naming;
import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.configuration.DataNodeDescriptor;
-import org.apache.cayenne.dbimport.ReverseEngineering;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
@@ -115,9 +114,4 @@ class NormalizationVisitor implements ConfigurationNodeVisitor<String> {
public String visitQuery(QueryDescriptor query) {
return baseName;
}
-
- @Override
- public String visitReverseEngineering(ReverseEngineering reverseEngineering) {
- return baseName;
- }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-project/src/main/java/org/apache/cayenne/project/ConfigurationSaver.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/ConfigurationSaver.java b/cayenne-project/src/main/java/org/apache/cayenne/project/ConfigurationSaver.java
index 01d3989..9ed8a88 100644
--- a/cayenne-project/src/main/java/org/apache/cayenne/project/ConfigurationSaver.java
+++ b/cayenne-project/src/main/java/org/apache/cayenne/project/ConfigurationSaver.java
@@ -22,7 +22,6 @@ import java.io.PrintWriter;
import org.apache.cayenne.configuration.BaseConfigurationNodeVisitor;
import org.apache.cayenne.configuration.DataChannelDescriptor;
-import org.apache.cayenne.dbimport.ReverseEngineering;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.util.XMLEncoder;
@@ -55,14 +54,6 @@ class ConfigurationSaver extends BaseConfigurationNodeVisitor<Void> {
return null;
}
- @Override
- public Void visitReverseEngineering(ReverseEngineering node) {
- XMLEncoder encoder = new XMLEncoder(printWriter, "\t", version);
- printXMLHeader(encoder);
- node.encodeAsXML(encoder);
- return null;
- }
-
private void printXMLHeader(XMLEncoder encoder) {
encoder.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-project/src/main/java/org/apache/cayenne/project/ConfigurationSourceGetter.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/ConfigurationSourceGetter.java b/cayenne-project/src/main/java/org/apache/cayenne/project/ConfigurationSourceGetter.java
index be68dad..61cafe6 100644
--- a/cayenne-project/src/main/java/org/apache/cayenne/project/ConfigurationSourceGetter.java
+++ b/cayenne-project/src/main/java/org/apache/cayenne/project/ConfigurationSourceGetter.java
@@ -20,7 +20,6 @@ package org.apache.cayenne.project;
import org.apache.cayenne.configuration.BaseConfigurationNodeVisitor;
import org.apache.cayenne.configuration.DataChannelDescriptor;
-import org.apache.cayenne.dbimport.ReverseEngineering;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.resource.Resource;
@@ -41,8 +40,4 @@ class ConfigurationSourceGetter extends BaseConfigurationNodeVisitor<Resource> {
return dataMap.getConfigurationSource();
}
- @Override
- public Resource visitReverseEngineering(ReverseEngineering reverseEngineering) {
- return reverseEngineering.getConfigurationSource();
- }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-project/src/main/java/org/apache/cayenne/project/ConfigurationSourceSetter.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/ConfigurationSourceSetter.java b/cayenne-project/src/main/java/org/apache/cayenne/project/ConfigurationSourceSetter.java
index 7a3f5d3..2854df1 100644
--- a/cayenne-project/src/main/java/org/apache/cayenne/project/ConfigurationSourceSetter.java
+++ b/cayenne-project/src/main/java/org/apache/cayenne/project/ConfigurationSourceSetter.java
@@ -21,7 +21,6 @@ package org.apache.cayenne.project;
import org.apache.cayenne.configuration.BaseConfigurationNodeVisitor;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.configuration.DataNodeDescriptor;
-import org.apache.cayenne.dbimport.ReverseEngineering;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.resource.Resource;
@@ -55,10 +54,4 @@ class ConfigurationSourceSetter extends BaseConfigurationNodeVisitor<Void> {
node.setConfigurationSource(configurationSource);
return null;
}
-
- @Override
- public Void visitReverseEngineering(ReverseEngineering node) {
- node.setConfigurationSource(configurationSource);
- return null;
- }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-project/src/main/java/org/apache/cayenne/project/DefaultConfigurationNodeParentGetter.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/DefaultConfigurationNodeParentGetter.java b/cayenne-project/src/main/java/org/apache/cayenne/project/DefaultConfigurationNodeParentGetter.java
index dc3c839..669d80b 100644
--- a/cayenne-project/src/main/java/org/apache/cayenne/project/DefaultConfigurationNodeParentGetter.java
+++ b/cayenne-project/src/main/java/org/apache/cayenne/project/DefaultConfigurationNodeParentGetter.java
@@ -22,7 +22,6 @@ import org.apache.cayenne.configuration.BaseConfigurationNodeVisitor;
import org.apache.cayenne.configuration.ConfigurationNode;
import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
import org.apache.cayenne.configuration.DataNodeDescriptor;
-import org.apache.cayenne.dbimport.ReverseEngineering;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
@@ -34,7 +33,6 @@ import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.ObjRelationship;
import org.apache.cayenne.map.Procedure;
import org.apache.cayenne.map.ProcedureParameter;
-import org.apache.cayenne.map.QueryDescriptor;
public class DefaultConfigurationNodeParentGetter implements ConfigurationNodeParentGetter {
@@ -109,15 +107,5 @@ public class DefaultConfigurationNodeParentGetter implements ConfigurationNodePa
public ConfigurationNode visitProcedureParameter(ProcedureParameter parameter) {
return (ConfigurationNode) parameter.getParent();
}
-
- @Override
- public ConfigurationNode visitQuery(QueryDescriptor query) {
- return query.getDataMap();
- }
-
- @Override
- public ConfigurationNode visitReverseEngineering(ReverseEngineering reverseEngineering) {
- return reverseEngineering;
- }
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-project/src/main/java/org/apache/cayenne/project/SaveableNodesGetter.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/SaveableNodesGetter.java b/cayenne-project/src/main/java/org/apache/cayenne/project/SaveableNodesGetter.java
index 61c9468..ee20da3 100644
--- a/cayenne-project/src/main/java/org/apache/cayenne/project/SaveableNodesGetter.java
+++ b/cayenne-project/src/main/java/org/apache/cayenne/project/SaveableNodesGetter.java
@@ -25,7 +25,6 @@ import java.util.Collections;
import org.apache.cayenne.configuration.BaseConfigurationNodeVisitor;
import org.apache.cayenne.configuration.ConfigurationNode;
import org.apache.cayenne.configuration.DataChannelDescriptor;
-import org.apache.cayenne.dbimport.ReverseEngineering;
import org.apache.cayenne.map.DataMap;
/**
@@ -43,9 +42,6 @@ class SaveableNodesGetter extends
for (DataMap map : descriptor.getDataMaps()) {
nodes.add(map);
- if (map.getReverseEngineering() != null) {
- nodes.add(map.getReverseEngineering());
- }
}
return nodes;
@@ -55,9 +51,4 @@ class SaveableNodesGetter extends
public Collection<ConfigurationNode> visitDataMap(DataMap dataMap) {
return Collections.<ConfigurationNode> singletonList(dataMap);
}
-
- @Override
- public Collection<ConfigurationNode> visitReverseEngineering(ReverseEngineering reverseEngineering) {
- return null;
- }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-project/src/main/java/org/apache/cayenne/project/validation/DefaultProjectValidator.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/validation/DefaultProjectValidator.java b/cayenne-project/src/main/java/org/apache/cayenne/project/validation/DefaultProjectValidator.java
index f240fc8..c25fefe 100644
--- a/cayenne-project/src/main/java/org/apache/cayenne/project/validation/DefaultProjectValidator.java
+++ b/cayenne-project/src/main/java/org/apache/cayenne/project/validation/DefaultProjectValidator.java
@@ -24,7 +24,6 @@ import org.apache.cayenne.configuration.ConfigurationNode;
import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.configuration.DataNodeDescriptor;
-import org.apache.cayenne.dbimport.ReverseEngineering;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
@@ -65,7 +64,6 @@ public class DefaultProjectValidator implements ProjectValidator {
private ProcedureQueryValidator procedureQueryValidator;
private EJBQLQueryValidator ejbqlQueryValidator;
private SQLTemplateValidator sqlTemplateValidator;
- private ReverseEngineeringValidator reverseEngineeringValidator;
DefaultProjectValidator() {
dataChannelValidator = new DataChannelValidator();
@@ -85,7 +83,6 @@ public class DefaultProjectValidator implements ProjectValidator {
procedureQueryValidator = new ProcedureQueryValidator();
ejbqlQueryValidator = new EJBQLQueryValidator();
sqlTemplateValidator = new SQLTemplateValidator();
- reverseEngineeringValidator = new ReverseEngineeringValidator();
}
public ValidationResult validate(ConfigurationNode node) {
@@ -273,10 +270,5 @@ public class DefaultProjectValidator implements ProjectValidator {
return validationResult;
}
-
- public ValidationResult visitReverseEngineering(ReverseEngineering reverseEngineering) {
- reverseEngineeringValidator.validate(reverseEngineering, validationResult);
- return validationResult;
- }
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-project/src/main/java/org/apache/cayenne/project/validation/ReverseEngineeringValidator.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/validation/ReverseEngineeringValidator.java b/cayenne-project/src/main/java/org/apache/cayenne/project/validation/ReverseEngineeringValidator.java
deleted file mode 100644
index 99b92ba..0000000
--- a/cayenne-project/src/main/java/org/apache/cayenne/project/validation/ReverseEngineeringValidator.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ****************************************************************/
-package org.apache.cayenne.project.validation;
-
-import org.apache.cayenne.dbimport.ReverseEngineering;
-import org.apache.cayenne.util.Util;
-import org.apache.cayenne.validation.ValidationResult;
-
-/**
- * @since 4.0
- */
-public class ReverseEngineeringValidator extends ConfigurationNodeValidator{
- void validate(ReverseEngineering reverseEngineering, ValidationResult validationResult) {
- validateName(reverseEngineering, validationResult);
- }
-
- void validateName(ReverseEngineering reverseEngineering, ValidationResult validationResult) {
- String name = reverseEngineering.getName();
-
- // Must have name
- if (Util.isEmptyString(name)) {
- addFailure(validationResult, reverseEngineering, "Unnamed ReverseEngineering");
- return;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-project/src/test/java/org/apache/cayenne/project/ReverseEngineeringSaverTest.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/test/java/org/apache/cayenne/project/ReverseEngineeringSaverTest.java b/cayenne-project/src/test/java/org/apache/cayenne/project/ReverseEngineeringSaverTest.java
deleted file mode 100644
index 1176f19..0000000
--- a/cayenne-project/src/test/java/org/apache/cayenne/project/ReverseEngineeringSaverTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package org.apache.cayenne.project;
-
-import org.apache.cayenne.configuration.*;
-import org.apache.cayenne.dbimport.ReverseEngineering;
-import org.apache.cayenne.di.*;
-import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.project.unit.Project2Case;
-import org.apache.cayenne.resource.URLResource;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.net.MalformedURLException;
-
-import static org.junit.Assert.assertTrue;
-
-/**
- * @since 4.0
- */
-public class ReverseEngineeringSaverTest extends Project2Case {
- private FileProjectSaver saver;
-
- @Before
- public void setUp() throws Exception {
- Module testModule = new Module() {
-
- public void configure(Binder binder) {
- binder.bind(ConfigurationNameMapper.class).to(
- DefaultConfigurationNameMapper.class);
- }
- };
-
- saver = new FileProjectSaver();
- Injector injector = DIBootstrap.createInjector(testModule);
- injector.injectMembers(saver);
- }
-
- @Test
- public void testSaveReversEngineering() throws MalformedURLException {
- File testFolder = setupTestDirectory("testSaverRE");
-
- DataChannelDescriptor rootNode = new DataChannelDescriptor();
- rootNode.setName("test");
-
- DataMap dataMap = new DataMap("datamap1");
- dataMap.setReverseEngineering(new ReverseEngineering("reverseEngineering1"));
- rootNode.getDataMaps().add(dataMap);
-
- Project project = new Project(new ConfigurationTree<>(rootNode));
- saver.saveAs(project, new URLResource(testFolder.toURL()));
-
- DataMapLoader dataMapLoader = new XMLDataMapLoader();
- DataMap dataMap1 = dataMapLoader.load(dataMap.getConfigurationSource());
- String reverseEngineeringName = dataMap1.getReverseEngineering().getName();
-
- File reFile = new File(testFolder, reverseEngineeringName + ".xml");
- assertTrue(reFile.exists());
- assertTrue(reFile.length() > 0);
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-server/src/main/java/org/apache/cayenne/configuration/BaseConfigurationNodeVisitor.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/BaseConfigurationNodeVisitor.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/BaseConfigurationNodeVisitor.java
index f34c813..70e07c7 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/BaseConfigurationNodeVisitor.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/BaseConfigurationNodeVisitor.java
@@ -18,7 +18,6 @@
****************************************************************/
package org.apache.cayenne.configuration;
-import org.apache.cayenne.dbimport.ReverseEngineering;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
@@ -98,8 +97,4 @@ public abstract class BaseConfigurationNodeVisitor<T> implements
public T visitQuery(QueryDescriptor query) {
throw new UnsupportedOperationException("Not implemented for Query");
}
-
- public T visitReverseEngineering(ReverseEngineering reverseEngineering) {
- throw new UnsupportedOperationException("Not implemented for ReverseEngineering");
- }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-server/src/main/java/org/apache/cayenne/configuration/ConfigurationNodeVisitor.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/ConfigurationNodeVisitor.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/ConfigurationNodeVisitor.java
index 508a5f8..60d2900 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/ConfigurationNodeVisitor.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/ConfigurationNodeVisitor.java
@@ -18,7 +18,6 @@
****************************************************************/
package org.apache.cayenne.configuration;
-import org.apache.cayenne.dbimport.ReverseEngineering;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
@@ -67,6 +66,4 @@ public interface ConfigurationNodeVisitor<T> {
T visitProcedureParameter(ProcedureParameter parameter);
T visitQuery(QueryDescriptor query);
-
- T visitReverseEngineering(ReverseEngineering reverseEngineering);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-server/src/main/java/org/apache/cayenne/configuration/DefaultConfigurationNameMapper.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/DefaultConfigurationNameMapper.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/DefaultConfigurationNameMapper.java
index 16b782a..ffe2868 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/DefaultConfigurationNameMapper.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/DefaultConfigurationNameMapper.java
@@ -18,7 +18,6 @@
****************************************************************/
package org.apache.cayenne.configuration;
-import org.apache.cayenne.dbimport.ReverseEngineering;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.resource.Resource;
@@ -32,8 +31,6 @@ public class DefaultConfigurationNameMapper implements ConfigurationNameMapper {
private static final String DATA_MAP_SUFFIX = ".map.xml";
- private static final String REVERSE_ENGINEERING_SUFFIX = ".xml";
-
protected ConfigurationNodeVisitor<String> nameMapper;
public DefaultConfigurationNameMapper() {
@@ -51,8 +48,6 @@ public class DefaultConfigurationNameMapper implements ConfigurationNameMapper {
return getDataChannelName(name);
} else if (DataMap.class.isAssignableFrom(type)) {
return getDataMapName(name);
- } else if (ReverseEngineering.class.isAssignableFrom(type)) {
- return getReverseEngineeringName(name);
}
throw new IllegalArgumentException("Unrecognized configuration type: " + type.getName());
@@ -109,14 +104,6 @@ public class DefaultConfigurationNameMapper implements ConfigurationNameMapper {
return name + DATA_MAP_SUFFIX;
}
- private String getReverseEngineeringName(String name) {
- if (name == null) {
- throw new NullPointerException("Null Reverse Engineering name");
- }
-
- return name + REVERSE_ENGINEERING_SUFFIX;
- }
-
final class NameMapper extends BaseConfigurationNodeVisitor<String> {
@Override
@@ -128,10 +115,5 @@ public class DefaultConfigurationNameMapper implements ConfigurationNameMapper {
public String visitDataMap(DataMap dataMap) {
return getDataMapName(dataMap.getName());
}
-
- @Override
- public String visitReverseEngineering(ReverseEngineering reverseEngineering) {
- return getReverseEngineeringName(reverseEngineering.getName());
- }
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-server/src/main/java/org/apache/cayenne/configuration/XMLDataChannelDescriptorLoader.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/XMLDataChannelDescriptorLoader.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/XMLDataChannelDescriptorLoader.java
index 4539f16..34775ef 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/XMLDataChannelDescriptorLoader.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/XMLDataChannelDescriptorLoader.java
@@ -18,11 +18,8 @@
****************************************************************/
package org.apache.cayenne.configuration;
-import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.ConfigurationException;
import org.apache.cayenne.conn.DataSourceInfo;
-import org.apache.cayenne.dbimport.DefaultReverseEngineeringLoader;
-import org.apache.cayenne.dbimport.ReverseEngineering;
import org.apache.cayenne.di.AdhocObjectFactory;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.map.DataMap;
@@ -214,21 +211,6 @@ public class XMLDataChannelDescriptorLoader implements DataChannelDescriptorLoad
dataMap.setConfigurationSource(dataMapResource);
dataMap.setDataChannelDescriptor(descriptor);
- try {
- if (dataMap.getReverseEngineering() != null) {
- String reverseEngineeringName = dataMap.getReverseEngineering().getName();
- String reverseEngineeringLocation = nameMapper.configurationLocation(ReverseEngineering.class, reverseEngineeringName);
- Resource reverseEngineeringResource = baseResource.getRelativeResource(reverseEngineeringLocation);
- DefaultReverseEngineeringLoader reverseEngineeringLoader = new DefaultReverseEngineeringLoader();
- ReverseEngineering reverseEngineering = reverseEngineeringLoader.load(reverseEngineeringResource.getURL().openStream());
- reverseEngineering.setName(reverseEngineeringName);
- reverseEngineering.setConfigurationSource(reverseEngineeringResource);
- dataMap.setReverseEngineering(reverseEngineering);
- }
- } catch (IOException e) {
- throw new CayenneRuntimeException("Error loading reverse engineering model", e);
- }
-
descriptor.getDataMaps().add(dataMap);
} else if (localName.equals(NODE_TAG)) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-server/src/main/java/org/apache/cayenne/dbimport/ReverseEngineering.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dbimport/ReverseEngineering.java b/cayenne-server/src/main/java/org/apache/cayenne/dbimport/ReverseEngineering.java
index 2d74d85..5781561 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dbimport/ReverseEngineering.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dbimport/ReverseEngineering.java
@@ -19,16 +19,9 @@
package org.apache.cayenne.dbimport;
-import org.apache.cayenne.configuration.ConfigurationNode;
-import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
import org.apache.cayenne.resource.Resource;
-import org.apache.cayenne.util.XMLEncoder;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.*;
import java.io.Serializable;
import java.util.Collection;
import java.util.LinkedList;
@@ -38,7 +31,7 @@ import java.util.LinkedList;
*/
@XmlRootElement(name = "reverseEngineering")
@XmlAccessorType(XmlAccessType.FIELD)
-public class ReverseEngineering extends FilterContainer implements ConfigurationNode, Serializable {
+public class ReverseEngineering extends FilterContainer implements Serializable {
@XmlTransient
protected Resource configurationSource;
@@ -166,16 +159,6 @@ public class ReverseEngineering extends FilterContainer implements Configuration
return super.toString(res, " ").toString();
}
- @Override
- public <T> T acceptVisitor(ConfigurationNodeVisitor<T> visitor) {
- return visitor.visitReverseEngineering(this);
- }
-
- public void encodeAsXML(XMLEncoder encoder) {
- DefaultReverseEngineeringWriter defaultReverseEngineeringWriter = new DefaultReverseEngineeringWriter();
- defaultReverseEngineeringWriter.write(this, encoder.getPrintWriter());
- }
-
/**
* @since 4.0
*/
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-server/src/main/java/org/apache/cayenne/map/DataMap.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/DataMap.java b/cayenne-server/src/main/java/org/apache/cayenne/map/DataMap.java
index 500ee03..5f7d9ab 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/DataMap.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/DataMap.java
@@ -25,7 +25,6 @@ import org.apache.cayenne.Persistent;
import org.apache.cayenne.configuration.ConfigurationNode;
import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
import org.apache.cayenne.configuration.DataChannelDescriptor;
-import org.apache.cayenne.dbimport.ReverseEngineering;
import org.apache.cayenne.map.event.DbEntityListener;
import org.apache.cayenne.map.event.EntityEvent;
import org.apache.cayenne.map.event.ObjEntityListener;
@@ -146,7 +145,6 @@ public class DataMap implements Serializable, ConfigurationNode, XMLSerializable
private SortedMap<String, Procedure> procedureMap;
private SortedMap<String, QueryDescriptor> queryDescriptorMap;
private SortedMap<String, SQLResult> results;
- private ReverseEngineering reverseEngineering;
/**
* @deprecated since 4.0 unused as listeners are no longer tied to a
@@ -322,12 +320,6 @@ public class DataMap implements Serializable, ConfigurationNode, XMLSerializable
encoder.printProjectVersion();
encoder.println(">");
- if (reverseEngineering != null) {
- encoder.print("<reverse-engineering-config");
- encoder.printAttribute("name", reverseEngineering.getName().trim());
- encoder.println("/>");
- }
-
// properties
if (defaultLockType == ObjEntity.LOCK_TYPE_OPTIMISTIC) {
encoder.printProperty(DEFAULT_LOCK_TYPE_PROPERTY, "optimistic");
@@ -1411,11 +1403,4 @@ public class DataMap implements Serializable, ConfigurationNode, XMLSerializable
return subObjectEntities;
}
- public ReverseEngineering getReverseEngineering() {
- return reverseEngineering;
- }
-
- public void setReverseEngineering(ReverseEngineering reverseEngineering) {
- this.reverseEngineering = reverseEngineering;
- }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-server/src/main/java/org/apache/cayenne/map/MapLoader.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/MapLoader.java b/cayenne-server/src/main/java/org/apache/cayenne/map/MapLoader.java
index 213e38e..f3164ab 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/MapLoader.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/MapLoader.java
@@ -46,11 +46,6 @@ public class MapLoader extends DefaultHandler {
public static final String DATA_MAP_TAG = "data-map";
- /**
- * @since 4.0
- */
- public static final String REVERSE_ENGINEERING = "reverse-engineering-config";
-
public static final String PROPERTY_TAG = "property";
/**
@@ -152,7 +147,6 @@ public class MapLoader extends DefaultHandler {
private Procedure procedure;
private QueryDescriptorLoader queryBuilder;
private String sqlKey;
- private ReverseEngineering reverseEngineering;
private String descending;
private String ignoreCase;
@@ -176,15 +170,6 @@ public class MapLoader extends DefaultHandler {
processStartDataMap(attributes);
}
});
-
- startTagOpMap.put(REVERSE_ENGINEERING, new StartClosure() {
-
- @Override
- void execute(Attributes attributes) throws SAXException {
- processStartReverseEngineering(attributes);
- }
- });
-
startTagOpMap.put(DB_ENTITY_TAG, new StartClosure() {
@@ -577,13 +562,6 @@ public class MapLoader extends DefaultHandler {
}
});
}
-
- private void processStartReverseEngineering(Attributes attributes) {
- reverseEngineering = new ReverseEngineering();
- reverseEngineering.setName(attributes.getValue("", "name"));
-
- dataMap.setReverseEngineering(reverseEngineering);
- }
private void processStartDataMap(Attributes attributes) {
this.mapVersion = attributes.getValue("", "project-version");
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-server/src/main/resources/org/apache/cayenne/schema/8/modelMap.xsd
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/resources/org/apache/cayenne/schema/8/modelMap.xsd b/cayenne-server/src/main/resources/org/apache/cayenne/schema/8/modelMap.xsd
index 3d77151..45c0792 100644
--- a/cayenne-server/src/main/resources/org/apache/cayenne/schema/8/modelMap.xsd
+++ b/cayenne-server/src/main/resources/org/apache/cayenne/schema/8/modelMap.xsd
@@ -31,7 +31,6 @@
<xs:element name="data-map">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" maxOccurs="1" ref="cay:reverse-engineering-config"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:property"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:embeddable"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:procedure"/>
@@ -207,12 +206,6 @@
<xs:element name="ejbql" type="xs:string"/>
- <xs:element name="reverse-engineering-config">
- <xs:complexType>
- <xs:attribute name="name" use="required" type="xs:string"/>
- </xs:complexType>
- </xs:element>
-
<xs:element name="property">
<xs:annotation>
<xs:documentation>A generic property used by other elements.</xs:documentation>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
index 10c3d13..87fc179 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
@@ -18,31 +18,17 @@
****************************************************************/
package org.apache.cayenne.tools;
-import org.apache.cayenne.configuration.ConfigurationNameMapper;
import org.apache.cayenne.configuration.DataNodeDescriptor;
-import org.apache.cayenne.configuration.XMLDataMapLoader;
import org.apache.cayenne.configuration.server.DataSourceFactory;
import org.apache.cayenne.configuration.server.DbAdapterFactory;
import org.apache.cayenne.conn.DataSourceInfo;
import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dbimport.Catalog;
-import org.apache.cayenne.dbimport.DefaultReverseEngineeringLoader;
-import org.apache.cayenne.dbimport.ExcludeColumn;
-import org.apache.cayenne.dbimport.ExcludeProcedure;
-import org.apache.cayenne.dbimport.ExcludeTable;
-import org.apache.cayenne.dbimport.IncludeColumn;
-import org.apache.cayenne.dbimport.IncludeProcedure;
-import org.apache.cayenne.dbimport.IncludeTable;
-import org.apache.cayenne.dbimport.ReverseEngineering;
-import org.apache.cayenne.dbimport.Schema;
+import org.apache.cayenne.dbimport.*;
import org.apache.cayenne.dbsync.CayenneDbSyncModule;
+import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator;
import org.apache.cayenne.dbsync.reverse.filters.FiltersConfigBuilder;
import org.apache.cayenne.di.DIBootstrap;
import org.apache.cayenne.di.Injector;
-import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator;
-import org.apache.cayenne.resource.Resource;
-import org.apache.cayenne.resource.URLResource;
import org.apache.cayenne.tools.configuration.ToolsModule;
import org.apache.cayenne.tools.dbimport.DbImportAction;
import org.apache.cayenne.tools.dbimport.DbImportConfiguration;
@@ -55,14 +41,11 @@ import org.apache.tools.ant.Task;
import javax.sql.DataSource;
import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
public class DbImporterTask extends Task {
private final DbImportConfiguration config;
private ReverseEngineering reverseEngineering;
- private boolean isReverseEngineeringDefined;
public DbImporterTask() {
this.config = new DbImportConfiguration();
@@ -74,66 +57,52 @@ public class DbImporterTask extends Task {
}
public void addIncludeColumn(IncludeColumn includeColumn) {
- isReverseEngineeringDefined = true;
reverseEngineering.addIncludeColumn(includeColumn);
}
public void addExcludeColumn(ExcludeColumn excludeColumn) {
- isReverseEngineeringDefined = true;
reverseEngineering.addExcludeColumn(excludeColumn);
}
public void addIncludeTable(IncludeTable includeTable) {
- isReverseEngineeringDefined = true;
reverseEngineering.addIncludeTable(includeTable);
}
public void addExcludeTable(ExcludeTable excludeTable) {
- isReverseEngineeringDefined = true;
reverseEngineering.addExcludeTable(excludeTable);
}
public void addIncludeProcedure(IncludeProcedure includeProcedure) {
- isReverseEngineeringDefined = true;
reverseEngineering.addIncludeProcedure(includeProcedure);
}
public void addExcludeProcedure(ExcludeProcedure excludeProcedure) {
- isReverseEngineeringDefined = true;
reverseEngineering.addExcludeProcedure(excludeProcedure);
}
public void setSkipRelationshipsLoading(boolean skipRelationshipsLoading) {
- isReverseEngineeringDefined = true;
reverseEngineering.setSkipRelationshipsLoading(skipRelationshipsLoading);
}
public void setSkipPrimaryKeyLoading(boolean skipPrimaryKeyLoading) {
- isReverseEngineeringDefined = true;
reverseEngineering.setSkipPrimaryKeyLoading(skipPrimaryKeyLoading);
}
public void addConfiguredTableType(AntTableType type) {
- isReverseEngineeringDefined = true;
reverseEngineering.addTableType(type.getName());
}
public void addConfiguredSchema(Schema schema) {
- isReverseEngineeringDefined = true;
reverseEngineering.addSchema(schema);
}
public void addCatalog(Catalog catalog) {
- isReverseEngineeringDefined = true;
reverseEngineering.addCatalog(catalog);
}
@Override
public void execute() {
-
- File dataMapFile = config.getDataMapFile();
config.setFiltersConfig(new FiltersConfigBuilder(reverseEngineering).build());
-
validateAttributes();
Log logger = new AntLogger(this);
@@ -142,73 +111,25 @@ public class DbImporterTask extends Task {
config.setSkipPrimaryKeyLoading(reverseEngineering.getSkipPrimaryKeyLoading());
config.setTableTypes(reverseEngineering.getTableTypes());
- // TODO: get rid of this fork...
- if (isReverseEngineeringDefined) {
- Injector injector = DIBootstrap.createInjector(new CayenneDbSyncModule(), new ToolsModule(logger), new DbImportModule());
+ Injector injector = DIBootstrap.createInjector(new CayenneDbSyncModule(), new ToolsModule(logger), new DbImportModule());
- validateDbImportConfiguration(config, injector);
+ validateDbImportConfiguration(config, injector);
- try {
- injector.getInstance(DbImportAction.class).execute(config);
- } catch (Exception ex) {
- Throwable th = Util.unwindException(ex);
-
- String message = "Error importing database schema";
+ try {
+ injector.getInstance(DbImportAction.class).execute(config);
+ } catch (Exception ex) {
+ Throwable th = Util.unwindException(ex);
- if (th.getLocalizedMessage() != null) {
- message += ": " + th.getLocalizedMessage();
- }
+ String message = "Error importing database schema";
- log(message, Project.MSG_ERR);
- throw new BuildException(message, th);
- } finally {
- injector.shutdown();
- }
- } else {
- if (dataMapFile.exists()) {
- try {
- URL url = dataMapFile.toURI().toURL();
- URLResource resource = new URLResource(url);
-
- XMLDataMapLoader xmlDataMapLoader = new XMLDataMapLoader();
- DataMap dataMap = xmlDataMapLoader.load(resource);
- if (dataMap.getReverseEngineering() != null) {
- Injector injector = DIBootstrap.createInjector(new CayenneDbSyncModule(), new ToolsModule(logger), new DbImportModule());
- try {
- ConfigurationNameMapper nameMapper = injector.getInstance(ConfigurationNameMapper.class);
- String reverseEngineeringLocation = nameMapper.configurationLocation(ReverseEngineering.class, dataMap.getReverseEngineering().getName());
- Resource reverseEngineeringResource = new URLResource(dataMapFile.toURI().toURL()).getRelativeResource(reverseEngineeringLocation);
-
- DefaultReverseEngineeringLoader reverseEngineeringLoader = new DefaultReverseEngineeringLoader();
- ReverseEngineering reverseEngineering = reverseEngineeringLoader.load(reverseEngineeringResource.getURL().openStream());
- reverseEngineering.setName(dataMap.getReverseEngineering().getName());
- reverseEngineering.setConfigurationSource(reverseEngineeringResource);
- dataMap.setReverseEngineering(reverseEngineering);
-
- FiltersConfigBuilder filtersConfigBuilder = new FiltersConfigBuilder(dataMap.getReverseEngineering());
- config.getDbLoaderConfig().setFiltersConfig(filtersConfigBuilder.build());
- validateDbImportConfiguration(config, injector);
- injector.getInstance(DbImportAction.class).execute(config);
- } catch (Exception ex) {
- Throwable th = Util.unwindException(ex);
-
- String message = "Error importing database schema";
-
- if (th.getLocalizedMessage() != null) {
- message += ": " + th.getLocalizedMessage();
- }
-
- log(message, Project.MSG_ERR);
- throw new BuildException(message, th);
- } finally {
- injector.shutdown();
- }
- }
- } catch (MalformedURLException e) {
- log(e.getMessage(), Project.MSG_ERR);
- throw new BuildException(e.getMessage(), e);
- }
+ if (th.getLocalizedMessage() != null) {
+ message += ": " + th.getLocalizedMessage();
}
+
+ log(message, Project.MSG_ERR);
+ throw new BuildException(message, th);
+ } finally {
+ injector.shutdown();
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectFileChangeTracker.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectFileChangeTracker.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectFileChangeTracker.java
index 20bb12b..bbb8e74 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectFileChangeTracker.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectFileChangeTracker.java
@@ -84,12 +84,6 @@ public class ProjectFileChangeTracker extends Thread {
while (it.hasNext()) {
DataMap dm = it.next();
addFile(dm.getConfigurationSource().getURL().getPath());
-
- if (dm.getReverseEngineering() != null) {
- if (dm.getReverseEngineering().getConfigurationSource() != null) {
- addFile(dm.getReverseEngineering().getConfigurationSource().getURL().getPath());
- }
- }
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java
index 3e3f13d..8dcf52f 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java
@@ -451,10 +451,6 @@ public class RemoveAction extends CayenneAction {
URL mapURL = map.getConfigurationSource().getURL();
Collection<URL> unusedResources = getCurrentProject().getUnusedResources();
unusedResources.add(mapURL);
- if (map.getReverseEngineering() != null && map.getReverseEngineering().getConfigurationSource() != null) {
- URL reverseEngineeringURL = map.getReverseEngineering().getConfigurationSource().getURL();
- unusedResources.add(reverseEngineeringURL);
- }
}
Iterator<DataNodeDescriptor> iterator = domain.getNodeDescriptors().iterator();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
----------------------------------------------------------------------
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 b531171..b1b0eef 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,20 +21,27 @@ package org.apache.cayenne.modeler.action;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.configuration.event.DataMapEvent;
+import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.dbimport.ReverseEngineering;
import org.apache.cayenne.dbsync.naming.NameBuilder;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.event.MapEvent;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.CayenneModelerController;
import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.dialog.db.ConnectionWizard;
+import org.apache.cayenne.modeler.dialog.db.DbLoaderHelper;
+import org.apache.cayenne.modeler.pref.DBConnectionInfo;
import org.apache.cayenne.modeler.util.CayenneAction;
+import javax.swing.*;
import java.awt.event.ActionEvent;
+import java.sql.Connection;
/**
* Action that imports database structure into a DataMap.
*/
-public class ReverseEngineeringAction extends CayenneAction {
+public class ReverseEngineeringAction extends DBWizardAction {
public ReverseEngineeringAction(Application application) {
super(getActionName(), application);
@@ -49,21 +56,50 @@ public class ReverseEngineeringAction extends CayenneAction {
*/
@Override
public void performAction(ActionEvent event) {
- ProjectController projectController = getProjectController();
- DataMap dataMap = projectController.getCurrentDataMap();
- DataChannelDescriptor dataChannelDescriptor = projectController.getCurrentDataChanel();
- if (dataMap == null) {
- dataMap = new DataMap();
- dataMap.setName(NameBuilder
- .builder(dataMap, dataChannelDescriptor)
- .name());
- dataChannelDescriptor.getDataMaps().add(dataMap);
- getProjectController().fireDataMapEvent(new DataMapEvent(this, dataMap, MapEvent.ADD));
+ // guess node connection
+ DBConnectionInfo nodeInfo = preferredDataSource();
+ String nodeKey = preferredDataSourceLabel(nodeInfo);
+
+ // connect
+ ConnectionWizard connectWizard = new ConnectionWizard(
+ getProjectController(),
+ "Reengineer DB Schema: Connect to Database",
+ nodeKey,
+ nodeInfo);
+
+ if (!connectWizard.startupAction()) {
+ // canceled
+ return;
}
- ((CayenneModelerController) projectController.getParent())
- .getEditorView()
- .getDataMapView()
- .setSelectedIndex(1);
+ Connection connection = connectWizard.getConnection();
+ DbAdapter adapter = connectWizard.getAdapter();
+ DBConnectionInfo dataSourceInfo = connectWizard.getConnectionInfo();
+
+ // from here pass control to DbLoaderHelper, running it from a thread separate
+ // from EventDispatch
+ ReverseEngineering reverseEngineering = new ReverseEngineering();
+
+ final DbLoaderHelper helper = new DbLoaderHelper(
+ getProjectController(),
+ connection,
+ adapter,
+ dataSourceInfo,
+ reverseEngineering);
+ Thread th = new Thread(new Runnable() {
+
+ public void run() {
+ helper.execute();
+
+ SwingUtilities.invokeLater(new Runnable() {
+
+ public void run() {
+ application.getUndoManager().discardAllEdits();
+ }
+ });
+ }
+ });
+
+ th.start();
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/ConnectionWizard.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/ConnectionWizard.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/ConnectionWizard.java
new file mode 100644
index 0000000..7af622b
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/ConnectionWizard.java
@@ -0,0 +1,89 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+
+package org.apache.cayenne.modeler.dialog.db;
+
+import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.modeler.ClassLoadingService;
+import org.apache.cayenne.modeler.pref.DBConnectionInfo;
+import org.apache.cayenne.modeler.util.CayenneController;
+
+import java.sql.Connection;
+
+/**
+ * A component for choosing a DataSource. Users can choose from the DataSources configured
+ * in preferences, and one extra set of connection settings. This object will create and
+ * keep open a JDBC connection. It is caller responsibility to dispose of it properly.
+ *
+ */
+// TODO: after refactoring DbLoader to accept a DataSource instead of connection this
+// dialog should be merged with superclass - DataSourceWizard.
+public class ConnectionWizard extends DataSourceWizard {
+ protected Connection connection;
+ protected DbAdapter adapter;
+
+ public ConnectionWizard(CayenneController parent, String title,
+ String altDataSourceKey, DBConnectionInfo altDataSource) {
+ super(parent, title, altDataSourceKey, altDataSource);
+ }
+
+ /**
+ * Overrides superclass to keep an open connection around for the caller's use.
+ */
+ public void okAction() {
+ // build connection and adapter...
+
+ DBConnectionInfo info = getConnectionInfo();
+ ClassLoadingService classLoader = getApplication().getClassLoadingService();
+
+ try {
+ this.adapter = info.makeAdapter(classLoader);
+ }
+ catch (Throwable th) {
+ reportError("DbAdapter Error", th);
+ return;
+ }
+
+ try {
+ this.connection = info.makeDataSource(classLoader).getConnection();
+ }
+ catch (Throwable th) {
+ reportError("Connection Error", th);
+ return;
+ }
+
+ // set success flag, and unblock the caller...
+ canceled = false;
+ view.dispose();
+ }
+
+ /**
+ * Returns configured DB connection.
+ */
+ public Connection getConnection() {
+ return connection;
+ }
+
+ /**
+ * Returns configured DbAdapter.
+ */
+ public DbAdapter getAdapter() {
+ return adapter;
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataMapViewModel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataMapViewModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataMapViewModel.java
deleted file mode 100644
index 6b53409..0000000
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataMapViewModel.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cayenne.modeler.dialog.db;
-
-import org.apache.cayenne.modeler.dialog.db.model.DbModel;
-
-/**
- * @since 4.0
- */
-public class DataMapViewModel {
-
- private String reverseEngineeringText;
- private DbModel reverseEngineeringTree;
-
- public String getReverseEngineeringText() {
- return reverseEngineeringText;
- }
-
- public void setReverseEngineeringText(String reverseEngineeringText) {
- this.reverseEngineeringText = reverseEngineeringText;
- }
-
- public DbModel getReverseEngineeringTree() {
- return reverseEngineeringTree;
- }
-
- public void setReverseEngineeringTree(DbModel reverseEngineeringTree) {
- this.reverseEngineeringTree = reverseEngineeringTree;
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataSourceWizard.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataSourceWizard.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataSourceWizard.java
new file mode 100644
index 0000000..33d595b
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataSourceWizard.java
@@ -0,0 +1,222 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+
+package org.apache.cayenne.modeler.dialog.db;
+
+import org.apache.cayenne.modeler.ClassLoadingService;
+import org.apache.cayenne.modeler.dialog.pref.PreferenceDialog;
+import org.apache.cayenne.modeler.pref.DBConnectionInfo;
+import org.apache.cayenne.modeler.util.CayenneController;
+import org.apache.cayenne.swing.BindingBuilder;
+import org.apache.cayenne.swing.ObjectBinding;
+
+import javax.swing.*;
+import java.awt.*;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * A subclass of ConnectionWizard that tests configured DataSource, but does not
+ * keep an open connection.
+ *
+ */
+public class DataSourceWizard extends CayenneController {
+
+ protected DataSourceWizardView view;
+
+ protected DBConnectionInfo altDataSource;
+ protected String altDataSourceKey;
+ protected ObjectBinding dataSourceBinding;
+ protected Map dataSources;
+
+ protected String dataSourceKey;
+
+ // this object is a clone of an object selected from the dropdown, as we
+ // need to allow
+ // local temporary modifications
+ protected DBConnectionInfo connectionInfo;
+
+ protected boolean canceled;
+
+ public DataSourceWizard(CayenneController parent, String title, String altDataSourceKey,
+ DBConnectionInfo altDataSource) {
+ super(parent);
+
+ this.view = createView();
+ this.view.setTitle(title);
+ this.altDataSource = altDataSource;
+ this.altDataSourceKey = altDataSourceKey;
+ this.connectionInfo = new DBConnectionInfo();
+
+ initBindings();
+ }
+
+ /**
+ * Creates swing dialog for this wizard
+ */
+ protected DataSourceWizardView createView() {
+ return new DataSourceWizardView(this);
+ }
+
+ protected void initBindings() {
+ BindingBuilder builder = new BindingBuilder(getApplication().getBindingFactory(), this);
+
+ dataSourceBinding = builder.bindToComboSelection(view.getDataSources(), "dataSourceKey");
+
+ builder.bindToAction(view.getCancelButton(), "cancelAction()");
+ builder.bindToAction(view.getOkButton(), "okAction()");
+ builder.bindToAction(view.getConfigButton(), "dataSourceConfigAction()");
+ }
+
+ public String getDataSourceKey() {
+ return dataSourceKey;
+ }
+
+ public void setDataSourceKey(String dataSourceKey) {
+ this.dataSourceKey = dataSourceKey;
+
+ // update a clone object that will be used to obtain connection...
+ DBConnectionInfo currentInfo = (DBConnectionInfo) dataSources.get(dataSourceKey);
+ if (currentInfo != null) {
+ currentInfo.copyTo(connectionInfo);
+ } else {
+ connectionInfo = new DBConnectionInfo();
+ }
+
+ view.getConnectionInfo().setConnectionInfo(connectionInfo);
+ }
+
+ /**
+ * Main action method that pops up a dialog asking for user selection.
+ * Returns true if the selection was confirmed, false - if canceled.
+ */
+ public boolean startupAction() {
+ this.canceled = true;
+
+ refreshDataSources();
+
+ view.pack();
+ view.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
+ view.setModal(true);
+ makeCloseableOnEscape();
+ centerView();
+ view.setVisible(true);
+
+ return !canceled;
+ }
+
+ public DBConnectionInfo getConnectionInfo() {
+ return connectionInfo;
+ }
+
+ /**
+ * Tests that the entered information is valid and can be used to open a
+ * conneciton. Does not store the open connection.
+ */
+ public void okAction() {
+ DBConnectionInfo info = getConnectionInfo();
+ ClassLoadingService classLoader = getApplication().getClassLoadingService();
+
+ // try making an adapter...
+ try {
+ info.makeAdapter(classLoader);
+ } catch (Throwable th) {
+ reportError("DbAdapter Error", th);
+ return;
+ }
+
+ // doing connection testing...
+ // attempt opening the connection, and close it right away
+ try {
+
+ try (Connection connection = info.makeDataSource(classLoader).getConnection();) {
+ //
+ } catch (SQLException ex) {
+ // ignore close error
+ }
+ } catch (Throwable th) {
+ reportError("Connection Error", th);
+ return;
+ }
+
+ // set success flag, and unblock the caller...
+ canceled = false;
+ view.dispose();
+ }
+
+ public void cancelAction() {
+ canceled = true;
+ view.dispose();
+ }
+
+ /**
+ * Opens preferences panel to allow configuration of DataSource presets.
+ */
+ public void dataSourceConfigAction() {
+ PreferenceDialog prefs = new PreferenceDialog(this);
+ prefs.showDataSourceEditorAction(dataSourceKey);
+ refreshDataSources();
+ }
+
+ public Component getView() {
+ return view;
+ }
+
+ protected void refreshDataSources() {
+ this.dataSources = getApplication().getCayenneProjectPreferences().getDetailObject(DBConnectionInfo.class)
+ .getChildrenPreferences();
+
+ // 1.2 migration fix - update data source adapter names
+ Iterator it = dataSources.values().iterator();
+
+ final String _12package = "org.objectstyle.cayenne.";
+ while (it.hasNext()) {
+ DBConnectionInfo info = (DBConnectionInfo) it.next();
+ if (info.getDbAdapter() != null && info.getDbAdapter().startsWith(_12package)) {
+ info.setDbAdapter("org.apache.cayenne." + info.getDbAdapter().substring(_12package.length()));
+
+ // info.getObjectContext().commitChanges();
+ }
+ }
+
+ if (altDataSourceKey != null && !dataSources.containsKey(altDataSourceKey) && altDataSource != null) {
+ dataSources.put(altDataSourceKey, altDataSource);
+ }
+
+ Object[] keys = dataSources.keySet().toArray();
+ Arrays.sort(keys);
+ view.getDataSources().setModel(new DefaultComboBoxModel(keys));
+
+ if (getDataSourceKey() == null) {
+ String key = null;
+
+ if (altDataSourceKey != null) {
+ key = altDataSourceKey;
+ } else if (keys.length > 0) {
+ key = keys[0].toString();
+ }
+
+ setDataSourceKey(key);
+ dataSourceBinding.updateView();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataSourceWizardView.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataSourceWizardView.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataSourceWizardView.java
new file mode 100644
index 0000000..d40c8d9
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataSourceWizardView.java
@@ -0,0 +1,94 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+
+package org.apache.cayenne.modeler.dialog.db;
+
+import com.jgoodies.forms.builder.PanelBuilder;
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
+import org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.modeler.dialog.pref.DBConnectionInfoEditor;
+import org.apache.cayenne.modeler.util.CayenneController;
+
+import javax.swing.*;
+import java.awt.*;
+
+/**
+ */
+public class DataSourceWizardView extends JDialog {
+
+ protected JComboBox dataSources;
+ protected JButton configButton;
+ protected JButton okButton;
+ protected JButton cancelButton;
+ protected DBConnectionInfoEditor connectionInfo;
+
+ public DataSourceWizardView(CayenneController controller) {
+ super(Application.getFrame());
+
+ this.dataSources = new JComboBox();
+
+ this.configButton = new JButton("...");
+ this.configButton.setToolTipText("configure local DataSource");
+ this.okButton = new JButton("Continue");
+ this.cancelButton = new JButton("Cancel");
+ this.connectionInfo = new DBConnectionInfoEditor(controller);
+
+ CellConstraints cc = new CellConstraints();
+ PanelBuilder builder = new PanelBuilder(new FormLayout(
+ "20dlu:grow, pref, 3dlu, fill:max(150dlu;pref), 3dlu, fill:20dlu",
+ "p"));
+ builder.setDefaultDialogBorder();
+
+ builder.addLabel("Saved DataSources:", cc.xy(2, 1));
+ builder.add(dataSources, cc.xy(4, 1));
+ builder.add(configButton, cc.xy(6, 1));
+
+ JPanel buttons = new JPanel(new FlowLayout(FlowLayout.RIGHT));
+ buttons.add(cancelButton);
+ buttons.add(okButton);
+
+ getContentPane().setLayout(new BorderLayout());
+ getContentPane().add(builder.getPanel(), BorderLayout.NORTH);
+ getContentPane().add(connectionInfo.getView(), BorderLayout.CENTER);
+ getContentPane().add(buttons, BorderLayout.SOUTH);
+
+ setTitle("DB Connection Info");
+ }
+
+ public JComboBox getDataSources() {
+ return dataSources;
+ }
+
+ public JButton getCancelButton() {
+ return cancelButton;
+ }
+
+ public JButton getConfigButton() {
+ return configButton;
+ }
+
+ public JButton getOkButton() {
+ return okButton;
+ }
+
+ public DBConnectionInfoEditor getConnectionInfo() {
+ return connectionInfo;
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
----------------------------------------------------------------------
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 58ef41b..7dede61 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
@@ -21,14 +21,13 @@ package org.apache.cayenne.modeler.dialog.db;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.configuration.ConfigurationNode;
-import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dbimport.ReverseEngineering;
+import org.apache.cayenne.dbimport.*;
import org.apache.cayenne.dbsync.CayenneDbSyncModule;
import org.apache.cayenne.dbsync.naming.NameBuilder;
-import org.apache.cayenne.dbsync.reverse.filters.FiltersConfigBuilder;
import org.apache.cayenne.dbsync.reverse.db.DbLoader;
import org.apache.cayenne.dbsync.reverse.db.DefaultDbLoaderDelegate;
+import org.apache.cayenne.dbsync.reverse.filters.FiltersConfigBuilder;
import org.apache.cayenne.di.DIBootstrap;
import org.apache.cayenne.di.Injector;
import org.apache.cayenne.map.DataMap;
@@ -42,6 +41,7 @@ import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.pref.DBConnectionInfo;
import org.apache.cayenne.modeler.util.LongRunningTask;
import org.apache.cayenne.tools.configuration.ToolsModule;
+import org.apache.cayenne.tools.dbimport.DbImportAction;
import org.apache.cayenne.tools.dbimport.DbImportConfiguration;
import org.apache.cayenne.tools.dbimport.DbImportModule;
import org.apache.cayenne.util.Util;
@@ -80,6 +80,7 @@ public class DbLoaderHelper {
protected DbImportConfiguration config;
protected ReverseEngineering reverseEngineering;
protected String loadStatusNote;
+ protected String dbUserName;
/**
* ObjEntities which were added to project during reverse engineering
@@ -89,6 +90,7 @@ public class DbLoaderHelper {
public DbLoaderHelper(ProjectController mediator, Connection connection, DbAdapter adapter,
DBConnectionInfo dbConnectionInfo, ReverseEngineering reverseEngineering) {
this.mediator = mediator;
+ this.dbUserName = dbConnectionInfo.getUserName();
try {
this.dbCatalog = connection.getCatalog();
} catch (SQLException e) {
@@ -153,6 +155,35 @@ public class DbLoaderHelper {
return;
}
+ final DbLoaderOptionsDialog dialog = new DbLoaderOptionsDialog(schemas, catalogs, dbUserName, dbCatalog);
+
+ try {
+ // since we are not inside EventDispatcher Thread, must run it via
+ // SwingUtilities
+ SwingUtilities.invokeAndWait(new Runnable() {
+
+ public void run() {
+ dialog.setVisible(true);
+ dialog.dispose();
+ }
+ });
+ } catch (Throwable th) {
+ processException(th, "Error Reengineering Database");
+ return;
+ }
+
+ if (dialog.getChoice() == DbLoaderOptionsDialog.CANCEL) {
+ return;
+ }
+
+ reverseEngineering.addCatalog(new Catalog(dialog.getSelectedCatalog()));
+ reverseEngineering.addSchema(new Schema(dialog.getSelectedSchema()));
+ reverseEngineering.addIncludeTable(new IncludeTable(dialog.getTableNamePattern()));
+ reverseEngineering.addIncludeProcedure(new IncludeProcedure(dialog.getProcedureNamePattern()));
+
+ config.setMeaningfulPkTables(dialog.getMeaningfulPk());
+ config.setNamingStrategy(dialog.getNamingStrategy());
+
LongRunningTask loadDataMapTask = new LoadDataMapTask(Application.getFrame(), "Reengineering DB");
loadDataMapTask.startAndWait();
}
@@ -323,6 +354,7 @@ public class DbLoaderHelper {
}
public final class LoadDataMapTask extends DbLoaderTask {
+ private DbImportAction importAction;
public LoadDataMapTask(JFrame frame, String title) {
super(frame, title);
@@ -348,17 +380,6 @@ public class DbLoaderHelper {
return;
}
- DataMap dataMap = mediator.getCurrentDataMap();
- DataChannelDescriptor dataChannelDescriptor = mediator.getCurrentDataChanel();
- if (dataMap.getReverseEngineering() != null) {
- if (dataMap.getReverseEngineering().getName() != null) {
- reverseEngineering.setName(dataMap.getReverseEngineering().getName());
- reverseEngineering.setConfigurationSource(dataMap.getReverseEngineering().getConfigurationSource());
- }
- } else {
- reverseEngineering.setName(NameBuilder.builder(reverseEngineering, dataChannelDescriptor).name());
- }
-
if (dataMap.getConfigurationSource() != null) {
config.setDataMapFile(new File(dataMap.getConfigurationSource().getURL().getPath()));
}
@@ -375,7 +396,6 @@ public class DbLoaderHelper {
injector.injectMembers(importAction);
try {
importAction.execute(config);
- dataMap.setReverseEngineering(reverseEngineering);
} catch (Exception e) {
processException(e, "Error importing database schema.");
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/29671e75/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderOptionsDialog.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderOptionsDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderOptionsDialog.java
new file mode 100644
index 0000000..4d9dee4
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderOptionsDialog.java
@@ -0,0 +1,253 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+
+package org.apache.cayenne.modeler.dialog.db;
+
+import com.jgoodies.forms.builder.DefaultFormBuilder;
+import com.jgoodies.forms.layout.FormLayout;
+import org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.modeler.util.CayenneDialog;
+import org.apache.cayenne.modeler.util.NameGeneratorPreferences;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Collection;
+import java.util.Vector;
+
+/**
+ * Dialog for selecting database reverse-engineering parameters.
+ */
+public class DbLoaderOptionsDialog extends CayenneDialog {
+
+ private static final Log logObj = LogFactory.getLog(DbLoaderOptionsDialog.class);
+
+ public static final int CANCEL = 0;
+ public static final int SELECT = 1;
+
+ protected JLabel catalogLabel;
+ protected JComboBox catalogSelector;
+ protected JLabel schemaLabel;
+ protected JComboBox schemaSelector;
+ protected JTextField tableNamePatternField;
+ protected JTextField meaningfulPk;
+ protected JTextField procNamePatternField;
+ protected JLabel procedureLabel;
+ protected JButton selectButton;
+ protected JButton cancelButton;
+
+ public static final String WILDCARD_PATTERN = ".*";
+
+
+ /**
+ * Combobox for naming strategy
+ */
+ protected JComboBox strategyCombo;
+//
+ protected String strategy;
+
+ protected int choice;
+
+ /**
+ * Creates and initializes new ChooseSchemaDialog.
+ */
+ public DbLoaderOptionsDialog(Collection<String> schemas, Collection<String> catalogs, String dbUserName,
+ String dbCatalog) {
+ super(Application.getFrame(), "Reengineer DB Schema: Select Options");
+
+ init();
+ initController();
+ initFromModel(schemas, catalogs, dbUserName, dbCatalog);
+
+ pack();
+ setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+ setModal(true);
+ centerWindow();
+ }
+
+ /** Sets up the graphical components. */
+ protected void init() {
+
+ // create widgets...
+ selectButton = new JButton("Continue");
+ cancelButton = new JButton("Cancel");
+ catalogSelector = new JComboBox();
+ schemaSelector = new JComboBox();
+ tableNamePatternField = new JTextField();
+ procNamePatternField = new JTextField();
+ meaningfulPk = new JTextField();
+ strategyCombo = new JComboBox();
+ strategyCombo.setEditable(true);
+
+ // assemble
+ FormLayout layout = new FormLayout(
+ "right:pref, 3dlu, fill:max(170dlu;pref):grow",
+ "");
+ DefaultFormBuilder builder = new DefaultFormBuilder(layout);
+ builder.setDefaultDialogBorder();
+
+ catalogLabel = builder.append("Select Catalog:", catalogSelector);
+ schemaLabel = builder.append("Select Schema:", schemaSelector);
+ builder.append("Table Name Pattern:", tableNamePatternField);
+ procedureLabel = builder.append("Procedure Name Pattern:", procNamePatternField);
+ builder.append("Naming Strategy:", strategyCombo);
+ builder.append("Meaningful PK", meaningfulPk);
+
+ JPanel buttons = new JPanel(new FlowLayout(FlowLayout.RIGHT));
+ buttons.add(cancelButton);
+ buttons.add(selectButton);
+
+ getContentPane().setLayout(new BorderLayout());
+ getContentPane().add(builder.getPanel(), BorderLayout.CENTER);
+ getContentPane().add(buttons, BorderLayout.SOUTH);
+ }
+
+ protected void initController() {
+ selectButton.addActionListener(new ActionListener() {
+
+ public void actionPerformed(ActionEvent e) {
+ processSelect();
+ }
+ });
+
+ cancelButton.addActionListener(new ActionListener() {
+
+ public void actionPerformed(ActionEvent e) {
+ processCancel();
+ }
+ });
+ }
+
+ protected void initFromModel(
+ Collection<String> schemas,
+ Collection<String> catalogs,
+ String dbUserName,
+ String dbCatalog) {
+
+ this.choice = CANCEL;
+ this.tableNamePatternField.setText(WILDCARD_PATTERN);
+ this.procNamePatternField.setText(WILDCARD_PATTERN);
+ this.meaningfulPk.setText(WILDCARD_PATTERN);
+
+ Vector<String> arr = NameGeneratorPreferences
+ .getInstance()
+ .getLastUsedStrategies();
+ strategyCombo.setModel(new DefaultComboBoxModel(arr));
+
+ boolean showSchemaSelector = schemas != null && !schemas.isEmpty();
+ schemaSelector.setVisible(showSchemaSelector);
+ schemaLabel.setVisible(showSchemaSelector);
+
+ if (showSchemaSelector) {
+
+ schemaSelector.setModel(new DefaultComboBoxModel(schemas.toArray()));
+
+ // select schema belonging to the user
+ if (dbUserName != null) {
+ for (String schema : schemas) {
+ if (dbUserName.equalsIgnoreCase(schema)) {
+ schemaSelector.setSelectedItem(schema);
+ break;
+ }
+ }
+ }
+ }
+
+ boolean showCatalogSelector = catalogs != null && !catalogs.isEmpty();
+ catalogSelector.setVisible(showCatalogSelector);
+ catalogLabel.setVisible(showCatalogSelector);
+
+ if (showCatalogSelector) {
+ catalogSelector.setModel(new DefaultComboBoxModel(catalogs.toArray()));
+
+ if (dbCatalog != null && !dbCatalog.isEmpty()) {
+ for (String catalog : catalogs) {
+ if (dbCatalog.equalsIgnoreCase(catalog)) {
+ catalogSelector.setSelectedItem(catalog);
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ public int getChoice() {
+ return choice;
+ }
+
+ private void processSelect() {
+ strategy = (String) strategyCombo.getSelectedItem();
+
+ choice = SELECT;
+ setVisible(false);
+ }
+
+ private void processCancel() {
+ choice = CANCEL;
+ setVisible(false);
+ }
+
+ /**
+ * Returns selected catalog.
+ */
+ public String getSelectedCatalog() {
+ String catalog = (String) catalogSelector.getSelectedItem();
+ return "".equals(catalog) ? null : catalog;
+ }
+
+ /**
+ * Returns selected schema.
+ */
+ public String getSelectedSchema() {
+ String schema = (String) schemaSelector.getSelectedItem();
+ return "".equals(schema) ? null : schema;
+ }
+
+ /**
+ * Returns the tableNamePattern.
+ */
+ public String getTableNamePattern() {
+ return "".equals(tableNamePatternField.getText()) ? null : tableNamePatternField
+ .getText();
+ }
+
+ public String getMeaningfulPk() {
+ return "".equals(meaningfulPk.getText()) ? null : meaningfulPk
+ .getText();
+ }
+
+ /**
+ * Returns the procedure name pattern.
+ */
+ public String getProcedureNamePattern() {
+ return "".equals(procNamePatternField.getText()) ? null : procNamePatternField
+ .getText();
+ }
+
+ /**
+ * Returns configured naming strategy
+ */
+ public String getNamingStrategy() {
+ return strategy;
+ }
+}