CAY-2337 Code refactoring, bugs fixing

Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/51289d1c
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/51289d1c
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/51289d1c

Branch: refs/heads/master
Commit: 51289d1c00dd3476beb705088798b86cfe495597
Parents: 2ead78b
Author: Maxim Petrusevich <maks1...@gmail.com>
Authored: Wed Mar 28 11:32:33 2018 +0300
Committer: Maxim Petrusevich <maks1...@gmail.com>
Committed: Wed Mar 28 11:32:33 2018 +0300

----------------------------------------------------------------------
 .../reverse/dbimport/DefaultDbImportAction.java |  17 +-
 .../reverse/dbimport/SchemaContainer.java       |   2 +-
 .../merge/builders/DbAttributeBuilder.java      |   2 +-
 .../modeler/action/AddCatalogAction.java        |  91 ----
 .../modeler/action/AddExcludeColumnAction.java  |  41 --
 .../action/AddExcludeProcedureAction.java       |  41 --
 .../modeler/action/AddExcludeTableAction.java   |  41 --
 .../modeler/action/AddIncludeColumnAction.java  |  41 --
 .../action/AddIncludeProcedureAction.java       |  41 --
 .../modeler/action/AddIncludeTableAction.java   |  92 ----
 .../modeler/action/AddPatternParamAction.java   | 140 ------
 .../cayenne/modeler/action/AddSchemaAction.java |  97 ----
 .../action/DbEntityCounterpartAction.java       |   3 -
 .../modeler/action/DefaultActionManager.java    |  12 +
 .../modeler/action/DeleteNodeAction.java        | 175 --------
 .../cayenne/modeler/action/EditNodeAction.java  |  93 ----
 .../modeler/action/LoadDbSchemaAction.java      | 183 +-------
 .../modeler/action/MoveImportNodeAction.java    | 235 ----------
 .../modeler/action/MoveInvertNodeAction.java    |  35 --
 .../action/ReverseEngineeringAction.java        |   2 +-
 .../modeler/action/TreeManipulationAction.java  | 197 --------
 .../action/dbimport/AddCatalogAction.java       |  61 +++
 .../action/dbimport/AddExcludeColumnAction.java |  41 ++
 .../dbimport/AddExcludeProcedureAction.java     |  41 ++
 .../action/dbimport/AddExcludeTableAction.java  |  41 ++
 .../action/dbimport/AddIncludeColumnAction.java |  41 ++
 .../dbimport/AddIncludeProcedureAction.java     |  41 ++
 .../action/dbimport/AddIncludeTableAction.java  |  69 +++
 .../action/dbimport/AddPatternParamAction.java  | 117 +++++
 .../action/dbimport/AddSchemaAction.java        |  67 +++
 .../action/dbimport/DeleteNodeAction.java       | 170 +++++++
 .../modeler/action/dbimport/EditNodeAction.java |  88 ++++
 .../action/dbimport/MoveImportNodeAction.java   | 238 ++++++++++
 .../action/dbimport/MoveInvertNodeAction.java   |  35 ++
 .../action/dbimport/TreeManipulationAction.java | 243 ++++++++++
 .../modeler/dialog/db/load/DbLoaderContext.java |   2 +-
 .../dialog/db/load/DefaultPopUpMenu.java        |   4 +-
 .../dialog/db/load/ModelerDbImportAction.java   |  45 +-
 .../modeler/dialog/db/load/RootPopUpMenu.java   |  16 +-
 .../modeler/editor/ColorTreeRenderer.java       | 146 ------
 .../modeler/editor/DataMapTabbedView.java       |   1 +
 .../cayenne/modeler/editor/DbImportModel.java   |  75 ----
 .../modeler/editor/DbImportNodeHandler.java     | 341 --------------
 .../cayenne/modeler/editor/DbImportTree.java    | 207 ---------
 .../modeler/editor/DbImportTreeCellEditor.java  | 154 -------
 .../editor/DbImportTreeCellRenderer.java        |  96 ----
 .../cayenne/modeler/editor/DbImportView.java    | 236 ----------
 .../modeler/editor/DraggableTreePanel.java      | 428 ------------------
 .../editor/ReverseEngineeringConfigPanel.java   | 223 ---------
 .../editor/ReverseEngineeringTreePanel.java     | 169 -------
 .../modeler/editor/TreeToolbarPanel.java        | 229 ----------
 .../editor/dbimport/ColorTreeRenderer.java      | 146 ++++++
 .../editor/dbimport/DatabaseSchemaLoader.java   | 184 ++++++++
 .../modeler/editor/dbimport/DbImportModel.java  |  75 ++++
 .../editor/dbimport/DbImportNodeHandler.java    | 341 ++++++++++++++
 .../modeler/editor/dbimport/DbImportTree.java   | 207 +++++++++
 .../editor/dbimport/DbImportTreeCellEditor.java | 154 +++++++
 .../dbimport/DbImportTreeCellRenderer.java      |  95 ++++
 .../modeler/editor/dbimport/DbImportView.java   | 236 ++++++++++
 .../editor/dbimport/DraggableTreePanel.java     | 449 +++++++++++++++++++
 .../dbimport/ReverseEngineeringConfigPanel.java | 221 +++++++++
 .../dbimport/ReverseEngineeringTreePanel.java   | 173 +++++++
 .../editor/dbimport/TreeToolbarPanel.java       | 231 ++++++++++
 .../modeler/graph/extension/GraphHandler.java   |   6 -
 .../modeler/undo/DbImportTreeUndoableEdit.java  |   2 +-
 65 files changed, 3873 insertions(+), 3893 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportAction.java
----------------------------------------------------------------------
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportAction.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportAction.java
index 2c8f6b2..1a54fa4 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportAction.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportAction.java
@@ -397,11 +397,17 @@ public class DefaultDbImportAction implements 
DbImportAction {
         return true;
     }
 
+    protected void addMessageToLogs(String message, List<String> messages) {
+        messages.add(message);
+    }
+
+    protected void logMessages(List<String> messages) {
+        messages.forEach(logger::info);
+    }
+
     protected boolean syncProcedures(DataMap targetDataMap, DataMap 
loadedDataMap, FiltersConfig filters) {
         Collection<Procedure> procedures = loadedDataMap.getProcedures();
-        if (procedures.isEmpty()) {
-            return false;
-        }
+        List<String> messages = new LinkedList<>();
 
         boolean hasChanges = false;
         for (Procedure procedure : procedures) {
@@ -414,13 +420,14 @@ public class DefaultDbImportAction implements 
DbImportAction {
             // maybe we need to compare oldProcedure's and procedure's fully 
qualified names?
             if (oldProcedure != null) {
                 targetDataMap.removeProcedure(procedure.getName());
-                logger.info("Replace procedure " + procedure.getName());
+                addMessageToLogs("Replace procedure " + procedure.getName(), 
messages);
             } else {
-                logger.info("Add new procedure " + procedure.getName());
+                addMessageToLogs("Add new procedure " + procedure.getName(), 
messages);
             }
             targetDataMap.addProcedure(procedure);
             hasChanges = true;
         }
+        logMessages(messages);
         return hasChanges;
     }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/SchemaContainer.java
----------------------------------------------------------------------
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/SchemaContainer.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/SchemaContainer.java
index e7a9391..8d18417 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/SchemaContainer.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/SchemaContainer.java
@@ -25,7 +25,7 @@ import java.util.LinkedList;
 /**
  * @since 4.0
  */
-public abstract class SchemaContainer extends FilterContainer implements 
Cloneable {
+public abstract class SchemaContainer extends FilterContainer {
 
     private final Collection<Schema> schemaCollection = new LinkedList<>();
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/builders/DbAttributeBuilder.java
----------------------------------------------------------------------
diff --git 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/builders/DbAttributeBuilder.java
 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/builders/DbAttributeBuilder.java
index 5acb389..094a904 100644
--- 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/builders/DbAttributeBuilder.java
+++ 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/builders/DbAttributeBuilder.java
@@ -100,7 +100,7 @@ public class DbAttributeBuilder extends 
DefaultBuilder<DbAttribute> {
 
     @Override
     public DbAttribute build() {
-        if (Util.isEmptyString((obj.getName()))) {
+        if (Util.isEmptyString(obj.getName())) {
             name();
         }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddCatalogAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddCatalogAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddCatalogAction.java
deleted file mode 100644
index 50ebe74..0000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddCatalogAction.java
+++ /dev/null
@@ -1,91 +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.action;
-
-import org.apache.cayenne.dbsync.reverse.dbimport.Catalog;
-import org.apache.cayenne.dbsync.reverse.dbimport.ReverseEngineering;
-import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.dialog.db.load.DbImportTreeNode;
-import org.apache.cayenne.modeler.undo.DbImportTreeUndoableEdit;
-
-import javax.swing.tree.TreePath;
-import java.awt.event.ActionEvent;
-
-/**
- * @since 4.1
- */
-public class AddCatalogAction extends TreeManipulationAction {
-
-    private static final String ACTION_NAME = "Add Catalog";
-    private static final String ICON_NAME = "icon-dbi-catalog.png";
-
-    AddCatalogAction(Application application) {
-        super(ACTION_NAME, application);
-        insertableNodeClass = Catalog.class;
-    }
-
-    public String getIconName() {
-        return ICON_NAME;
-    }
-
-    @Override
-    public void performAction(ActionEvent e) {
-        boolean updateSelected = false;
-        tree.stopEditing();
-        String name = insertableNodeName != null ? insertableNodeName : 
EMPTY_NAME;
-        if (tree.getSelectionPath() == null) {
-            TreePath root = new TreePath(tree.getRootNode());
-            tree.setSelectionPath(root);
-        }
-        if (foundNode == null) {
-            selectedElement = tree.getSelectedNode();
-        } else {
-            selectedElement = foundNode;
-        }
-        parentElement = (DbImportTreeNode) selectedElement.getParent();
-        if (parentElement == null) {
-            parentElement = selectedElement;
-        }
-        Catalog newCatalog = new Catalog(name);
-        ReverseEngineering reverseEngineeringOldCopy = new 
ReverseEngineering(tree.getReverseEngineering());
-        if (reverseEngineeringIsEmpty()) {
-            tree.getRootNode().removeAllChildren();
-        }
-        if (canBeInserted(selectedElement)) {
-            ((ReverseEngineering) 
selectedElement.getUserObject()).addCatalog(newCatalog);
-            selectedElement.add(new DbImportTreeNode(newCatalog));
-            updateSelected = true;
-        } else if (canInsert()) {
-            ((ReverseEngineering) 
parentElement.getUserObject()).addCatalog(newCatalog);
-            parentElement.add(new DbImportTreeNode(newCatalog));
-            updateSelected = false;
-        }
-        if (!isMultipleAction) {
-            updateAfterInsert(updateSelected);
-        }
-        ReverseEngineering reverseEngineeringNewCopy = new 
ReverseEngineering(tree.getReverseEngineering());
-        if ((!isMultipleAction) && (!insertableNodeName.equals(EMPTY_NAME))) {
-            DbImportTreeUndoableEdit undoableEdit = new 
DbImportTreeUndoableEdit(
-                    reverseEngineeringOldCopy, reverseEngineeringNewCopy, 
tree, getProjectController()
-            );
-            
getProjectController().getApplication().getUndoManager().addEdit(undoableEdit);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddExcludeColumnAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddExcludeColumnAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddExcludeColumnAction.java
deleted file mode 100644
index d36c7e2..0000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddExcludeColumnAction.java
+++ /dev/null
@@ -1,41 +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.action;
-
-import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeColumn;
-import org.apache.cayenne.modeler.Application;
-
-/**
- * @since 4.1
- */
-public class AddExcludeColumnAction extends AddPatternParamAction {
-
-    private static final String ACTION_NAME = "Add Exclude Column";
-    private static final String ICON_NAME = "icon-dbi-excludeColumn.png";
-
-    public AddExcludeColumnAction(Application application) {
-        super(ACTION_NAME, application);
-        insertableNodeClass = ExcludeColumn.class;
-    }
-
-    public String getIconName() {
-        return ICON_NAME;
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddExcludeProcedureAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddExcludeProcedureAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddExcludeProcedureAction.java
deleted file mode 100644
index 09ec188..0000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddExcludeProcedureAction.java
+++ /dev/null
@@ -1,41 +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.action;
-
-import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeProcedure;
-import org.apache.cayenne.modeler.Application;
-
-/**
- * @since 4.1
- */
-public class AddExcludeProcedureAction extends AddPatternParamAction {
-
-    private static final String ACTION_NAME = "Add Exclude Procedure";
-    private static final String ICON_NAME = "icon-dbi-excludeProcedure.png";
-
-    public AddExcludeProcedureAction(Application application) {
-        super(ACTION_NAME, application);
-        insertableNodeClass = ExcludeProcedure.class;
-    }
-
-    public String getIconName() {
-        return ICON_NAME;
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddExcludeTableAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddExcludeTableAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddExcludeTableAction.java
deleted file mode 100644
index 58baef2..0000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddExcludeTableAction.java
+++ /dev/null
@@ -1,41 +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.action;
-
-import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeTable;
-import org.apache.cayenne.modeler.Application;
-
-/**
- * @since 4.1
- */
-public class AddExcludeTableAction extends AddPatternParamAction {
-
-    private static final String ACTION_NAME = "Add Exclude Table";
-    private static final String ICON_NAME = "icon-dbi-excludeTable.png";
-
-    public AddExcludeTableAction(Application application) {
-        super(ACTION_NAME, application);
-        insertableNodeClass = ExcludeTable.class;
-    }
-
-    public String getIconName() {
-        return ICON_NAME;
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddIncludeColumnAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddIncludeColumnAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddIncludeColumnAction.java
deleted file mode 100644
index e2b27b1..0000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddIncludeColumnAction.java
+++ /dev/null
@@ -1,41 +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.action;
-
-import org.apache.cayenne.dbsync.reverse.dbimport.IncludeColumn;
-import org.apache.cayenne.modeler.Application;
-
-/**
- * @since 4.1
- */
-public class AddIncludeColumnAction extends AddPatternParamAction {
-
-    private static final String ACTION_NAME = "Add Include Column";
-    private static final String ICON_NAME = "icon-dbi-includeColumn.png";
-
-    public AddIncludeColumnAction(Application application) {
-        super(ACTION_NAME, application);
-        insertableNodeClass = IncludeColumn.class;
-    }
-
-    public String getIconName() {
-        return ICON_NAME;
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddIncludeProcedureAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddIncludeProcedureAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddIncludeProcedureAction.java
deleted file mode 100644
index 6a04a63..0000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddIncludeProcedureAction.java
+++ /dev/null
@@ -1,41 +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.action;
-
-import org.apache.cayenne.dbsync.reverse.dbimport.IncludeProcedure;
-import org.apache.cayenne.modeler.Application;
-
-/**
- * @since 4.1
- */
-public class AddIncludeProcedureAction extends AddPatternParamAction {
-
-    private static final String ACTION_NAME = "Add Include Procedure";
-    private static final String ICON_NAME = "icon-dbi-includeProcedure.png";
-
-    public AddIncludeProcedureAction(Application application) {
-        super(ACTION_NAME, application);
-        insertableNodeClass = IncludeProcedure.class;
-    }
-
-    public String getIconName() {
-        return ICON_NAME;
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddIncludeTableAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddIncludeTableAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddIncludeTableAction.java
deleted file mode 100644
index 136a166..0000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddIncludeTableAction.java
+++ /dev/null
@@ -1,92 +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.action;
-
-import org.apache.cayenne.dbsync.reverse.dbimport.FilterContainer;
-import org.apache.cayenne.dbsync.reverse.dbimport.IncludeTable;
-import org.apache.cayenne.dbsync.reverse.dbimport.ReverseEngineering;
-import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.dialog.db.load.DbImportTreeNode;
-import org.apache.cayenne.modeler.undo.DbImportTreeUndoableEdit;
-
-import javax.swing.tree.TreePath;
-import java.awt.event.ActionEvent;
-
-/**
- * @since 4.1
- */
-public class AddIncludeTableAction extends TreeManipulationAction {
-
-    private static final String ACTION_NAME = "Add Include Table";
-    private static final String ICON_NAME = "icon-dbi-includeTable.png";
-
-    AddIncludeTableAction(Application application) {
-        super(ACTION_NAME, application);
-        insertableNodeClass = IncludeTable.class;
-    }
-
-    public String getIconName() {
-        return ICON_NAME;
-    }
-
-    @Override
-    public void performAction(ActionEvent e) {
-        boolean updateSelected = false;
-        tree.stopEditing();
-        String name = insertableNodeName != null ? insertableNodeName : 
EMPTY_NAME;
-        if (tree.getSelectionPath() == null) {
-            TreePath root = new TreePath(tree.getRootNode());
-            tree.setSelectionPath(root);
-        }
-        if (foundNode == null) {
-            selectedElement = tree.getSelectedNode();
-        } else {
-            selectedElement = foundNode;
-        }
-        parentElement = (DbImportTreeNode) selectedElement.getParent();
-        ReverseEngineering reverseEngineeringOldCopy = new 
ReverseEngineering(tree.getReverseEngineering());
-        IncludeTable newTable = new IncludeTable(name);
-        if (reverseEngineeringIsEmpty()) {
-            tree.getRootNode().removeAllChildren();
-        }
-        if (canBeInserted(selectedElement)) {
-            ((FilterContainer) 
selectedElement.getUserObject()).addIncludeTable(newTable);
-            selectedElement.add(new DbImportTreeNode(newTable));
-            updateSelected = true;
-        } else {
-            if (parentElement == null) {
-                parentElement = tree.getRootNode();
-            }
-            ((FilterContainer) 
parentElement.getUserObject()).addIncludeTable(newTable);
-            parentElement.add(new DbImportTreeNode(newTable));
-            updateSelected = false;
-        }
-        if (!isMultipleAction) {
-            updateAfterInsert(updateSelected);
-        }
-        ReverseEngineering reverseEngineeringNewCopy = new 
ReverseEngineering(tree.getReverseEngineering());
-        if ((!isMultipleAction) && (!insertableNodeName.equals(EMPTY_NAME))) {
-            DbImportTreeUndoableEdit undoableEdit = new 
DbImportTreeUndoableEdit(
-                    reverseEngineeringOldCopy, reverseEngineeringNewCopy, 
tree, getProjectController()
-            );
-            
getProjectController().getApplication().getUndoManager().addEdit(undoableEdit);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddPatternParamAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddPatternParamAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddPatternParamAction.java
deleted file mode 100644
index 78479fc..0000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddPatternParamAction.java
+++ /dev/null
@@ -1,140 +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.action;
-
-import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeColumn;
-import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeProcedure;
-import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeTable;
-import org.apache.cayenne.dbsync.reverse.dbimport.FilterContainer;
-import org.apache.cayenne.dbsync.reverse.dbimport.IncludeColumn;
-import org.apache.cayenne.dbsync.reverse.dbimport.IncludeProcedure;
-import org.apache.cayenne.dbsync.reverse.dbimport.IncludeTable;
-import org.apache.cayenne.dbsync.reverse.dbimport.PatternParam;
-import org.apache.cayenne.dbsync.reverse.dbimport.ReverseEngineering;
-import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.dialog.db.load.DbImportTreeNode;
-import org.apache.cayenne.modeler.undo.DbImportTreeUndoableEdit;
-
-import javax.swing.tree.TreePath;
-import java.awt.event.ActionEvent;
-
-/**
- * @since 4.1
- */
-public abstract class AddPatternParamAction extends TreeManipulationAction {
-
-    private Class paramClass;
-
-    AddPatternParamAction(String name, Application application) {
-        super(name, application);
-    }
-
-    private void addPatternParamToContainer(Class paramClass, Object 
selectedObject, String name, DbImportTreeNode node) {
-        FilterContainer container = (FilterContainer) selectedObject;
-        PatternParam element = null;
-        if (paramClass == ExcludeTable.class) {
-            element = new ExcludeTable(name);
-            container.addExcludeTable((ExcludeTable) element);
-        } else if (paramClass == IncludeColumn.class) {
-            element = new IncludeColumn(name);
-            container.addIncludeColumn((IncludeColumn) element);
-        } else if (paramClass == ExcludeColumn.class) {
-            element = new ExcludeColumn(name);
-            container.addExcludeColumn((ExcludeColumn) element);
-        } else if (paramClass == IncludeProcedure.class) {
-            element = new IncludeProcedure(name);
-            container.addIncludeProcedure((IncludeProcedure) element);
-        } else if (paramClass == ExcludeProcedure.class) {
-            element = new ExcludeProcedure(name);
-            container.addExcludeProcedure((ExcludeProcedure) element);
-        }
-        node.add(new DbImportTreeNode(element));
-    }
-
-    private void addPatternParamToIncludeTable(Class paramClass, Object 
selectedObject, String name, DbImportTreeNode node) {
-        IncludeTable includeTable = (IncludeTable) selectedObject;
-        PatternParam element = null;
-        if (paramClass == IncludeColumn.class) {
-            element = new IncludeColumn(name);
-            includeTable.addIncludeColumn((IncludeColumn) element);
-
-        } else if (paramClass == ExcludeColumn.class) {
-            element = new ExcludeColumn(name);
-            includeTable.addExcludeColumn((ExcludeColumn) element);
-        }
-        node.add(new DbImportTreeNode(element));
-    }
-
-    @Override
-    public void performAction(ActionEvent e) {
-        tree.stopEditing();
-        String name = insertableNodeName != null ? insertableNodeName : 
EMPTY_NAME;
-        boolean updateSelected;
-        if (tree.getSelectionPath() == null) {
-            TreePath root = new TreePath(tree.getRootNode());
-            tree.setSelectionPath(root);
-        }
-        if (foundNode == null) {
-            selectedElement = tree.getSelectedNode();
-        } else {
-            selectedElement = foundNode;
-        }
-        parentElement = (DbImportTreeNode) selectedElement.getParent();
-        Object selectedObject;
-        ReverseEngineering reverseEngineeringOldCopy = new 
ReverseEngineering(tree.getReverseEngineering());
-        if (reverseEngineeringIsEmpty()) {
-            tree.getRootNode().removeAllChildren();
-        }
-        if (canBeInserted(selectedElement)) {
-            selectedObject = selectedElement.getUserObject();
-            if (selectedObject instanceof FilterContainer) {
-                addPatternParamToContainer(paramClass, selectedObject, name, 
selectedElement);
-            } else if (selectedObject instanceof IncludeTable) {
-                addPatternParamToIncludeTable(paramClass, selectedObject, 
name, selectedElement);
-            }
-            updateSelected = true;
-        } else {
-            if (parentElement == null) {
-                parentElement = tree.getRootNode();
-            }
-            selectedObject = parentElement.getUserObject();
-            if (selectedObject instanceof FilterContainer) {
-                addPatternParamToContainer(paramClass, selectedObject, name, 
parentElement);
-            } else if (selectedObject instanceof IncludeTable) {
-                addPatternParamToIncludeTable(paramClass, selectedObject, 
name, parentElement);
-            }
-            updateSelected = false;
-        }
-        if (!isMultipleAction) {
-            updateAfterInsert(updateSelected);
-        }
-        ReverseEngineering reverseEngineeringNewCopy = new 
ReverseEngineering(tree.getReverseEngineering());
-        if ((!isMultipleAction) && (!insertableNodeName.equals(EMPTY_NAME))) {
-            DbImportTreeUndoableEdit undoableEdit = new 
DbImportTreeUndoableEdit(
-                    reverseEngineeringOldCopy, reverseEngineeringNewCopy, 
tree, getProjectController()
-            );
-            
getProjectController().getApplication().getUndoManager().addEdit(undoableEdit);
-        }
-    }
-
-    public void setParamClass(Class paramClass) {
-        this.paramClass = paramClass;
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddSchemaAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddSchemaAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddSchemaAction.java
deleted file mode 100644
index 817b17c..0000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/AddSchemaAction.java
+++ /dev/null
@@ -1,97 +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.action;
-
-import org.apache.cayenne.dbsync.reverse.dbimport.Catalog;
-import org.apache.cayenne.dbsync.reverse.dbimport.ReverseEngineering;
-import org.apache.cayenne.dbsync.reverse.dbimport.Schema;
-import org.apache.cayenne.dbsync.reverse.dbimport.SchemaContainer;
-import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.dialog.db.load.DbImportTreeNode;
-import org.apache.cayenne.modeler.undo.DbImportTreeUndoableEdit;
-
-import javax.swing.tree.TreePath;
-import java.awt.event.ActionEvent;
-
-/**
- * @since 4.1
- */
-public class AddSchemaAction extends TreeManipulationAction {
-
-    private static final String ACTION_NAME = "Add Schema";
-    private static final String ICON_NAME = "icon-dbi-schema.png";
-
-    AddSchemaAction(Application application) {
-        super(ACTION_NAME, application);
-        insertableNodeClass = Schema.class;
-    }
-
-    public String getIconName() {
-        return ICON_NAME;
-    }
-
-    @Override
-    public void performAction(ActionEvent e) {
-        boolean updateSelected = false;
-        tree.stopEditing();
-        String name = insertableNodeName != null ? insertableNodeName : 
EMPTY_NAME;
-        if (tree.getSelectionPath() == null) {
-            TreePath root = new TreePath(tree.getRootNode());
-            tree.setSelectionPath(root);
-        }
-        if (foundNode == null) {
-            selectedElement = tree.getSelectedNode();
-        } else {
-            selectedElement = foundNode;
-        }
-        parentElement = (DbImportTreeNode) selectedElement.getParent();
-        if (parentElement == null) {
-            parentElement = tree.getRootNode();
-        }
-        Schema newSchema = new Schema(name);
-        ReverseEngineering reverseEngineeringOldCopy = new 
ReverseEngineering(tree.getReverseEngineering());
-        if (reverseEngineeringIsEmpty()) {
-            tree.getRootNode().removeAllChildren();
-        }
-        if (canBeInserted(selectedElement)) {
-            ((SchemaContainer) 
selectedElement.getUserObject()).addSchema(newSchema);
-            selectedElement.add(new DbImportTreeNode(newSchema));
-            updateSelected = true;
-        } else if (canInsert()) {
-            if (parentElement.isReverseEngineering()) {
-                ((ReverseEngineering) 
parentElement.getUserObject()).addSchema(newSchema);
-            } else {
-                ((Catalog) parentElement.getUserObject()).addSchema(newSchema);
-            }
-            parentElement.add(new DbImportTreeNode(newSchema));
-            updateSelected = false;
-        }
-        if (!isMultipleAction) {
-            updateAfterInsert(updateSelected);
-        }
-        ReverseEngineering reverseEngineeringNewCopy = new 
ReverseEngineering(tree.getReverseEngineering());
-        if ((!isMultipleAction) && (!insertableNodeName.equals(EMPTY_NAME))) {
-            DbImportTreeUndoableEdit undoableEdit = new 
DbImportTreeUndoableEdit(
-                    reverseEngineeringOldCopy, reverseEngineeringNewCopy, 
tree, getProjectController()
-            );
-            
getProjectController().getApplication().getUndoManager().addEdit(undoableEdit);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntityCounterpartAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntityCounterpartAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntityCounterpartAction.java
index b3755cd..700b951 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntityCounterpartAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntityCounterpartAction.java
@@ -21,9 +21,6 @@ package org.apache.cayenne.modeler.action;
 
 import java.util.Iterator;
 
-import javax.swing.tree.TreePath;
-
-import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.Entity;
 import org.apache.cayenne.map.ObjEntity;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DefaultActionManager.java
----------------------------------------------------------------------
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 a626365..3d9d586 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
@@ -22,6 +22,18 @@ import 
org.apache.cayenne.configuration.ConfigurationNameMapper;
 import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.modeler.action.dbimport.AddCatalogAction;
+import org.apache.cayenne.modeler.action.dbimport.AddExcludeColumnAction;
+import org.apache.cayenne.modeler.action.dbimport.AddExcludeProcedureAction;
+import org.apache.cayenne.modeler.action.dbimport.AddExcludeTableAction;
+import org.apache.cayenne.modeler.action.dbimport.AddIncludeColumnAction;
+import org.apache.cayenne.modeler.action.dbimport.AddIncludeProcedureAction;
+import org.apache.cayenne.modeler.action.dbimport.AddIncludeTableAction;
+import org.apache.cayenne.modeler.action.dbimport.AddSchemaAction;
+import org.apache.cayenne.modeler.action.dbimport.DeleteNodeAction;
+import org.apache.cayenne.modeler.action.dbimport.EditNodeAction;
+import org.apache.cayenne.modeler.action.dbimport.MoveImportNodeAction;
+import org.apache.cayenne.modeler.action.dbimport.MoveInvertNodeAction;
 import org.apache.cayenne.modeler.graph.action.ShowGraphEntityAction;
 import org.apache.cayenne.modeler.util.CayenneAction;
 import org.apache.cayenne.project.ConfigurationNodeParentGetter;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DeleteNodeAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DeleteNodeAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DeleteNodeAction.java
deleted file mode 100644
index 4645ee7..0000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DeleteNodeAction.java
+++ /dev/null
@@ -1,175 +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.action;
-
-import org.apache.cayenne.dbsync.reverse.dbimport.Catalog;
-import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeColumn;
-import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeProcedure;
-import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeTable;
-import org.apache.cayenne.dbsync.reverse.dbimport.FilterContainer;
-import org.apache.cayenne.dbsync.reverse.dbimport.IncludeColumn;
-import org.apache.cayenne.dbsync.reverse.dbimport.IncludeProcedure;
-import org.apache.cayenne.dbsync.reverse.dbimport.IncludeTable;
-import org.apache.cayenne.dbsync.reverse.dbimport.PatternParam;
-import org.apache.cayenne.dbsync.reverse.dbimport.ReverseEngineering;
-import org.apache.cayenne.dbsync.reverse.dbimport.Schema;
-import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.dialog.db.load.DbImportTreeNode;
-import org.apache.cayenne.modeler.editor.DbImportModel;
-import org.apache.cayenne.modeler.editor.DbImportView;
-import org.apache.cayenne.modeler.editor.DraggableTreePanel;
-import org.apache.cayenne.modeler.undo.DbImportTreeUndoableEdit;
-
-import javax.swing.tree.DefaultTreeModel;
-import javax.swing.tree.TreePath;
-import java.awt.event.ActionEvent;
-import java.util.ArrayList;
-
-/**
- * @since 4.1
- */
-public class DeleteNodeAction extends TreeManipulationAction {
-
-    private static final String ACTION_NAME = "Delete";
-    private static final String ICON_NAME = "icon-trash.png";
-
-    private DraggableTreePanel panel;
-
-    DeleteNodeAction(Application application) {
-        super(ACTION_NAME, application);
-    }
-
-    public String getIconName() {
-        return ICON_NAME;
-    }
-
-    private void removePatternParams(FilterContainer container, Object 
selectedObject) {
-        container.getExcludeTables().remove(selectedObject);
-        container.getIncludeColumns().remove(selectedObject);
-        container.getExcludeColumns().remove(selectedObject);
-        container.getIncludeProcedures().remove(selectedObject);
-        container.getExcludeProcedures().remove(selectedObject);
-    }
-
-    private void deleteChilds(Catalog catalog) {
-        Object selectedObject = this.selectedElement.getUserObject();
-        if (selectedObject instanceof Schema) {
-            catalog.getSchemas().remove(selectedObject);
-        } else if (selectedObject instanceof IncludeTable) {
-            catalog.getIncludeTables().remove(selectedObject);
-        } else if (selectedObject instanceof PatternParam) {
-            removePatternParams(catalog, selectedObject);
-        }
-    }
-
-    private void deleteChilds(Schema schema) {
-        Object selectedObject = this.selectedElement.getUserObject();
-        if (selectedObject instanceof IncludeTable) {
-            schema.getIncludeTables().remove(selectedObject);
-        } else if (selectedObject instanceof PatternParam) {
-            removePatternParams(schema, selectedObject);
-        }
-    }
-
-    private void deleteChilds(IncludeTable includeTable) {
-        Object selectedObject = this.selectedElement.getUserObject();
-        includeTable.getIncludeColumns().remove(selectedObject);
-        includeTable.getExcludeColumns().remove(selectedObject);
-    }
-
-    private void deleteChilds(ReverseEngineering reverseEngineering) {
-        Object selectedObject = this.selectedElement.getUserObject();
-        if (selectedObject instanceof Catalog) {
-            reverseEngineering.getCatalogs().remove(selectedObject);
-        } else if (selectedObject instanceof Schema) {
-            reverseEngineering.getSchemas().remove(selectedObject);
-        } else if (selectedObject instanceof IncludeTable) {
-            reverseEngineering.getIncludeTables().remove(selectedObject);
-        } else if (selectedObject instanceof ExcludeTable) {
-            reverseEngineering.getExcludeTables().remove(selectedObject);
-        } else if (selectedObject instanceof IncludeColumn) {
-            reverseEngineering.getIncludeColumns().remove(selectedObject);
-        } else if (selectedObject instanceof ExcludeColumn) {
-            reverseEngineering.getExcludeColumns().remove(selectedObject);
-        } else if (selectedObject instanceof IncludeProcedure) {
-            reverseEngineering.getIncludeProcedures().remove(selectedObject);
-        } else if (selectedObject instanceof ExcludeProcedure) {
-            reverseEngineering.getExcludeProcedures().remove(selectedObject);
-        }
-    }
-
-    private void updateParentChilds() {
-        DbImportModel model = (DbImportModel) tree.getModel();
-        model.removeNodeFromParent(selectedElement);
-        getProjectController().setDirty(true);
-        model.reload(parentElement);
-    }
-
-    @Override
-    public void performAction(ActionEvent e) {
-        tree.stopEditing();
-        final TreePath[] paths = tree.getSelectionPaths();
-        final DbImportView rootParent = ((DbImportView) 
panel.getParent().getParent());
-        rootParent.getLoadDbSchemaButton().setEnabled(false);
-        rootParent.getReverseEngineeringProgress().setVisible(true);
-        if (paths != null) {
-            ReverseEngineering reverseEngineeringOldCopy = new 
ReverseEngineering(tree.getReverseEngineering());
-            rootParent.lockToolbarButtons();
-            for (TreePath path : paths) {
-                selectedElement = (DbImportTreeNode) 
path.getLastPathComponent();
-                parentElement = (DbImportTreeNode) selectedElement.getParent();
-                if (parentElement != null) {
-                    Object parentUserObject = parentElement.getUserObject();
-                    if (parentUserObject instanceof ReverseEngineering) {
-                        ReverseEngineering reverseEngineering = 
(ReverseEngineering) parentUserObject;
-                        deleteChilds(reverseEngineering);
-                    } else if (parentUserObject instanceof Catalog) {
-                        Catalog catalog = (Catalog) parentUserObject;
-                        deleteChilds(catalog);
-                    } else if (parentUserObject instanceof Schema) {
-                        Schema schema = (Schema) parentUserObject;
-                        deleteChilds(schema);
-                    } else if (parentUserObject instanceof IncludeTable) {
-                        IncludeTable includeTable = (IncludeTable) 
parentUserObject;
-                        deleteChilds(includeTable);
-                    }
-                }
-            }
-            if (paths.length > 1) {
-                getProjectController().setDirty(true);
-                ArrayList<DbImportTreeNode> expandList = 
tree.getTreeExpandList();
-                
tree.translateReverseEngineeringToTree(tree.getReverseEngineering(), false);
-                tree.expandTree(expandList);
-            } else {
-                updateParentChilds();
-            }
-            ReverseEngineering reverseEngineeringNewCopy = new 
ReverseEngineering(tree.getReverseEngineering());
-            getProjectController().getApplication().getUndoManager().addEdit(
-                    new DbImportTreeUndoableEdit(reverseEngineeringOldCopy, 
reverseEngineeringNewCopy, tree, getProjectController())
-            );
-            rootParent.getLoadDbSchemaButton().setEnabled(true);
-            rootParent.getReverseEngineeringProgress().setVisible(false);
-        }
-    }
-
-    public void setPanel(DraggableTreePanel panel) {
-        this.panel = panel;
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/EditNodeAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/EditNodeAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/EditNodeAction.java
deleted file mode 100644
index ac0fa46..0000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/EditNodeAction.java
+++ /dev/null
@@ -1,93 +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.action;
-
-import org.apache.cayenne.dbsync.reverse.dbimport.FilterContainer;
-import org.apache.cayenne.dbsync.reverse.dbimport.PatternParam;
-import org.apache.cayenne.dbsync.reverse.dbimport.ReverseEngineering;
-import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.dialog.db.load.DbImportTreeNode;
-import org.apache.cayenne.modeler.undo.DbImportTreeUndoableEdit;
-import org.apache.cayenne.util.Util;
-
-import java.awt.event.ActionEvent;
-
-/**
- * @since 4.1
- */
-public class EditNodeAction extends TreeManipulationAction {
-
-    private static final String ACTION_NAME = "Rename";
-    private static final String ICON_NAME = "icon-edit.png";
-
-    private String actionName;
-
-    EditNodeAction(Application application) {
-        super(ACTION_NAME, application);
-    }
-
-    public String getIconName() {
-        return ICON_NAME;
-    }
-
-    @Override
-    public void performAction(ActionEvent e) {
-        if (tree.isEditing()) {
-            return;
-        }
-        if (e != null) {
-            if (tree.getSelectionPath() != null) {
-                tree.startEditingAtPath(tree.getSelectionPath());
-            }
-        }
-        if (actionName == null) {
-            return;
-        }
-        if (tree.getSelectionPath() != null) {
-            selectedElement = tree.getSelectedNode();
-            parentElement = (DbImportTreeNode) selectedElement.getParent();
-            if (parentElement != null) {
-                Object selectedObject = selectedElement.getUserObject();
-                ReverseEngineering reverseEngineeringOldCopy = new 
ReverseEngineering(tree.getReverseEngineering());
-                if (!Util.isEmptyString(actionName)) {
-                    if (selectedObject instanceof FilterContainer) {
-                        ((FilterContainer) selectedObject).setName(actionName);
-                    } else if (selectedObject instanceof PatternParam) {
-                        ((PatternParam) selectedObject).setPattern(actionName);
-                    }
-                    updateModel(true);
-                    selectedElement = null;
-                }
-                ReverseEngineering reverseEngineeringNewCopy = new 
ReverseEngineering(tree.getReverseEngineering());
-                if (!actionName.equals(EMPTY_NAME)) {
-                    DbImportTreeUndoableEdit undoableEdit = new 
DbImportTreeUndoableEdit(
-                            reverseEngineeringOldCopy, 
reverseEngineeringNewCopy, tree, getProjectController()
-                    );
-                    
getProjectController().getApplication().getUndoManager().addEdit(undoableEdit);
-                }
-            }
-        }
-    }
-
-    public void setActionName(String name) {
-        this.actionName = name;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java
----------------------------------------------------------------------
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 6b8a5c0..671b7c7 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
@@ -19,26 +19,20 @@
 
 package org.apache.cayenne.modeler.action;
 
-import org.apache.cayenne.dbsync.reverse.dbimport.Catalog;
-import org.apache.cayenne.dbsync.reverse.dbimport.IncludeProcedure;
-import org.apache.cayenne.dbsync.reverse.dbimport.IncludeTable;
 import org.apache.cayenne.dbsync.reverse.dbimport.ReverseEngineering;
-import org.apache.cayenne.dbsync.reverse.dbimport.Schema;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.dialog.db.DataSourceWizard;
-import org.apache.cayenne.modeler.editor.DbImportModel;
-import org.apache.cayenne.modeler.editor.DbImportView;
-import org.apache.cayenne.modeler.editor.DraggableTreePanel;
+import org.apache.cayenne.modeler.editor.dbimport.DatabaseSchemaLoader;
+import org.apache.cayenne.modeler.editor.dbimport.DbImportModel;
+import org.apache.cayenne.modeler.editor.dbimport.DbImportView;
+import org.apache.cayenne.modeler.editor.dbimport.DraggableTreePanel;
 import org.apache.cayenne.modeler.pref.DBConnectionInfo;
 import org.apache.cayenne.modeler.pref.DataMapDefaults;
 import org.apache.cayenne.modeler.util.CayenneAction;
 
 import javax.swing.JOptionPane;
 import java.awt.event.ActionEvent;
-import java.sql.Connection;
-import java.sql.ResultSet;
 import java.sql.SQLException;
-import java.util.Collection;
 
 import static 
org.apache.cayenne.modeler.pref.DBConnectionInfo.DB_ADAPTER_PROPERTY;
 import static org.apache.cayenne.modeler.pref.DBConnectionInfo.URL_PROPERTY;
@@ -53,16 +47,9 @@ public class LoadDbSchemaAction extends CayenneAction {
 
     private static final String ICON_NAME = "icon-dbi-refresh.png";
     private static final String ACTION_NAME = "Refresh Db Schema";
-    private static final String INCLUDE_ALL_PATTERN = "%";
-    private static final String EMPTY_DEFAULT_CATALOG = "";
-    private static final int TABLE_INDEX = 3;
-    private static final int SCHEMA_INDEX = 2;
-    private static final int CATALOG_INDEX = 1;
-
-    private ReverseEngineering databaseReverseEngineering;
     private DraggableTreePanel draggableTreePanel;
 
-    public LoadDbSchemaAction(Application application) {
+    LoadDbSchemaAction(Application application) {
         super(ACTION_NAME, application);
     }
 
@@ -92,36 +79,17 @@ public class LoadDbSchemaAction extends CayenneAction {
             } else {
                 connectionInfo = getConnectionInfoFromPreferences();
             }
-
-            databaseReverseEngineering = new ReverseEngineering();
-
-            try(Connection connection = 
connectionInfo.makeDataSource(getApplication().getClassLoadingService()).getConnection())
 {
-                String[] types = {"TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL 
TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM"};
-                try (ResultSet rs = connection.getMetaData().getCatalogs()) {
-                    String defaultCatalog = connection.getCatalog();
-                    while (rs.next()) {
-                        ResultSet resultSet;
-                        if (defaultCatalog.equals(EMPTY_DEFAULT_CATALOG)) {
-                            resultSet = 
connection.getMetaData().getTables(rs.getString(1), null, INCLUDE_ALL_PATTERN, 
types);
-                        } else {
-                            resultSet = 
connection.getMetaData().getTables(defaultCatalog, null, INCLUDE_ALL_PATTERN, 
types);
-                        }
-                        String tableName = "";
-                        String schemaName = "";
-                        String catalogName = "";
-                        while (resultSet.next()) {
-                            tableName = resultSet.getString(TABLE_INDEX);
-                            schemaName = resultSet.getString(SCHEMA_INDEX);
-                            catalogName = resultSet.getString(CATALOG_INDEX);
-                            packTable(tableName, catalogName, schemaName);
-                        }
-                        packFunctions(connection);
-                    }
-                }
-
-                draggableTreePanel.getSourceTree().setEnabled(true);
-                
draggableTreePanel.getSourceTree().translateReverseEngineeringToTree(databaseReverseEngineering,
 true);
-                
draggableTreePanel.bindReverseEngineeringToDatamap(getProjectController().getCurrentDataMap(),
 databaseReverseEngineering);
+            try {
+                ReverseEngineering databaseReverseEngineering = new 
DatabaseSchemaLoader()
+                        .load(connectionInfo, 
getApplication().getClassLoadingService());
+                draggableTreePanel
+                        .getSourceTree()
+                        .setEnabled(true);
+                draggableTreePanel
+                        .getSourceTree()
+                        
.translateReverseEngineeringToTree(databaseReverseEngineering, true);
+                draggableTreePanel
+                        
.bindReverseEngineeringToDatamap(getProjectController().getCurrentDataMap(), 
databaseReverseEngineering);
                 ((DbImportModel) 
draggableTreePanel.getSourceTree().getModel()).reload();
             } catch (SQLException exception) {
                 JOptionPane.showMessageDialog(
@@ -167,125 +135,6 @@ public class LoadDbSchemaAction extends CayenneAction {
         dataMapDefaults.getCurrentPreference().put(JDBC_DRIVER_PROPERTY, 
connectWizard.getConnectionInfo().getJdbcDriver());
     }
 
-    private void packFunctions(Connection connection) throws SQLException {
-        Collection<Catalog> catalogs = 
databaseReverseEngineering.getCatalogs();
-        for (Catalog catalog : catalogs) {
-            ResultSet procResultSet = 
connection.getMetaData().getProcedures(catalog.getName(), null, "%");
-            while (procResultSet.next()) {
-                IncludeProcedure includeProcedure = new 
IncludeProcedure(procResultSet.getString(3));
-                if 
(!catalog.getIncludeProcedures().contains(includeProcedure)) {
-                    catalog.addIncludeProcedure(includeProcedure);
-                }
-            }
-        }
-        for (Schema schema : databaseReverseEngineering.getSchemas()) {
-            ResultSet procResultSet = 
connection.getMetaData().getProcedures(null, schema.getName(), "%");
-            while (procResultSet.next()) {
-                IncludeProcedure includeProcedure = new 
IncludeProcedure(procResultSet.getString(3));
-                if (!schema.getIncludeProcedures().contains(includeProcedure)) 
{
-                    schema.addIncludeProcedure(includeProcedure);
-                }
-            }
-        }
-        for (Catalog catalog : catalogs) {
-            for (Schema schema : catalog.getSchemas()) {
-                ResultSet procResultSet = 
connection.getMetaData().getProcedures(catalog.getName(), schema.getName(), 
"%");
-                while (procResultSet.next()) {
-                    IncludeProcedure includeProcedure = new 
IncludeProcedure(procResultSet.getString(3));
-                    if 
(!schema.getIncludeProcedures().contains(includeProcedure)) {
-                        schema.addIncludeProcedure(includeProcedure);
-                    }
-                }
-            }
-        }
-    }
-
-    private void packTable(String tableName, String catalogName, String 
schemaName) {
-        IncludeTable newTable = new IncludeTable();
-        newTable.setPattern(tableName);
-        if ((catalogName == null) && (schemaName == null)) {
-            if 
(!databaseReverseEngineering.getIncludeTables().contains(newTable)) {
-                databaseReverseEngineering.addIncludeTable(newTable);
-            }
-        }
-        if ((catalogName != null) && (schemaName == null)) {
-            Catalog parentCatalog = 
getCatalogByName(databaseReverseEngineering.getCatalogs(), catalogName);
-            if (parentCatalog != null) {
-                if (!parentCatalog.getIncludeTables().contains(newTable)) {
-                    parentCatalog.addIncludeTable(newTable);
-                }
-            } else {
-                parentCatalog = new Catalog();
-                parentCatalog.setName(catalogName);
-                if (!parentCatalog.getIncludeTables().contains(newTable)) {
-                    parentCatalog.addIncludeTable(newTable);
-                }
-                databaseReverseEngineering.addCatalog(parentCatalog);
-            }
-        }
-        if ((catalogName == null) && (schemaName != null)) {
-            Schema parentSchema = 
getSchemaByName(databaseReverseEngineering.getSchemas(), schemaName);
-            if (parentSchema != null) {
-                if (!parentSchema.getIncludeTables().contains(newTable)) {
-                    parentSchema.addIncludeTable(newTable);
-                }
-            } else {
-                parentSchema = new Schema();
-                parentSchema.setName(schemaName);
-                if (!parentSchema.getIncludeTables().contains(newTable)) {
-                    parentSchema.addIncludeTable(newTable);
-                }
-                databaseReverseEngineering.addSchema(parentSchema);
-            }
-        }
-        if ((catalogName != null) && (schemaName != null)) {
-            Catalog parentCatalog = 
getCatalogByName(databaseReverseEngineering.getCatalogs(), catalogName);
-            Schema parentSchema;
-            if (parentCatalog != null) {
-                parentSchema = getSchemaByName(parentCatalog.getSchemas(), 
schemaName);
-                if (parentSchema != null) {
-                    if (!parentSchema.getIncludeTables().contains(newTable)) {
-                        parentSchema.addIncludeTable(newTable);
-                    }
-                } else {
-                    parentSchema = new Schema();
-                    parentSchema.setName(schemaName);
-                    if (!parentSchema.getIncludeTables().contains(newTable)) {
-                        parentSchema.addIncludeTable(newTable);
-                    }
-                    parentCatalog.addSchema(parentSchema);
-                }
-            } else {
-                parentCatalog = new Catalog();
-                parentCatalog.setName(catalogName);
-                parentSchema = new Schema();
-                parentSchema.setName(schemaName);
-                if (!parentSchema.getIncludeTables().contains(newTable)) {
-                    parentSchema.addIncludeTable(newTable);
-                }
-                databaseReverseEngineering.addCatalog(parentCatalog);
-            }
-        }
-    }
-
-    private Catalog getCatalogByName(Collection<Catalog> catalogs, String 
catalogName) {
-        for (Catalog catalog : catalogs) {
-            if (catalog.getName().equals(catalogName)) {
-                return catalog;
-            }
-        }
-        return null;
-    }
-
-    private Schema getSchemaByName(Collection<Schema> schemas, String 
schemaName) {
-        for (Schema schema : schemas) {
-            if (schema.getName().equals(schemaName)) {
-                return schema;
-            }
-        }
-        return null;
-    }
-
     public void setDraggableTreePanel(DraggableTreePanel draggableTreePanel) {
         this.draggableTreePanel = draggableTreePanel;
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MoveImportNodeAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MoveImportNodeAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MoveImportNodeAction.java
deleted file mode 100644
index 525f6ab..0000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MoveImportNodeAction.java
+++ /dev/null
@@ -1,235 +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.action;
-
-import org.apache.cayenne.dbsync.reverse.dbimport.Catalog;
-import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeColumn;
-import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeProcedure;
-import org.apache.cayenne.dbsync.reverse.dbimport.ExcludeTable;
-import org.apache.cayenne.dbsync.reverse.dbimport.IncludeColumn;
-import org.apache.cayenne.dbsync.reverse.dbimport.IncludeProcedure;
-import org.apache.cayenne.dbsync.reverse.dbimport.IncludeTable;
-import org.apache.cayenne.dbsync.reverse.dbimport.ReverseEngineering;
-import org.apache.cayenne.dbsync.reverse.dbimport.Schema;
-import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.dialog.db.load.DbImportTreeNode;
-import org.apache.cayenne.modeler.editor.DbImportTree;
-import org.apache.cayenne.modeler.editor.DbImportView;
-import org.apache.cayenne.modeler.editor.DraggableTreePanel;
-import org.apache.cayenne.modeler.undo.DbImportTreeUndoableEdit;
-import org.apache.cayenne.modeler.util.CayenneAction;
-
-import javax.swing.tree.TreePath;
-import java.awt.event.ActionEvent;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.regex.Matcher;
-
-/**
- * @since 4.1
- */
-public class MoveImportNodeAction extends CayenneAction {
-
-    private static final String ICON_NAME = "icon-backward.png";
-    private static final String ACTION_NAME = "Include";
-    private static final String EMPTY_NAME = "";
-
-    private DbImportTree sourceTree;
-    private DbImportTree targetTree;
-    private DraggableTreePanel panel;
-    protected boolean moveInverted;
-    private Map<Class, Class> classMap;
-
-    MoveImportNodeAction(Application application) {
-        super(ACTION_NAME, application);
-    }
-
-    MoveImportNodeAction(String actionName, Application application) {
-        super(actionName, application);
-        initMap();
-    }
-
-    private void initMap() {
-        classMap = new HashMap<>();
-        classMap.put(IncludeTable.class, ExcludeTable.class);
-        classMap.put(IncludeColumn.class, ExcludeColumn.class);
-        classMap.put(IncludeProcedure.class, ExcludeProcedure.class);
-        classMap.put(Schema.class, Schema.class);
-        classMap.put(Catalog.class, Catalog.class);
-    }
-
-    public String getIconName() {
-        return ICON_NAME;
-    }
-
-    private boolean canInsert(TreePath path, DbImportTreeNode foundNode) {
-        DbImportTreeNode sourceElement = (DbImportTreeNode) 
path.getLastPathComponent();
-        DbImportTreeNode selectedElement;
-        if (foundNode == null) {
-            if (targetTree.getSelectionPath() != null) {
-                DbImportTreeNode node = targetTree.getSelectedNode();
-                if ((node.getUserObject().getClass() == Catalog.class)
-                        || (node.getUserObject().getClass() == Schema.class)
-                        || (node.getUserObject().getClass() == 
ReverseEngineering.class)) {
-                    selectedElement = targetTree.getSelectedNode();
-                } else {
-                    selectedElement = (DbImportTreeNode) 
targetTree.getSelectionPath().
-                            getParentPath().getLastPathComponent();
-                }
-            } else {
-                selectedElement = targetTree.getRootNode();
-            }
-        } else {
-            selectedElement = foundNode;
-        }
-        if ((nodeClassesIsSameTypes(sourceElement, selectedElement))
-                && 
(sourceElement.getSimpleNodeName().equals(selectedElement.getSimpleNodeName())))
 {
-            return false;
-        }
-        int childCount = selectedElement.getChildCount();
-        for (int i = 0; i < childCount; i++) {
-            DbImportTreeNode child = (DbImportTreeNode) 
selectedElement.getChildAt(i);
-            if ((nodeClassesIsSameTypes(sourceElement, child))
-                && 
(sourceElement.getSimpleNodeName().equals(child.getSimpleNodeName()))) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public void performAction(ActionEvent e) {
-        TreePath[] paths = sourceTree.getSelectionPaths();
-        TreeManipulationAction action = null;
-        String insertableName = EMPTY_NAME;
-        DbImportView rootParent = (DbImportView) panel.getParent().getParent();
-        rootParent.getReverseEngineeringProgress().setVisible(true);
-        if (paths != null) {
-            boolean isChanged = false;
-            ReverseEngineering reverseEngineeringOldCopy = new 
ReverseEngineering(targetTree.getReverseEngineering());
-            try {
-                for (TreePath path : paths) {
-                    DbImportTreeNode selectedElement = (DbImportTreeNode) 
path.getLastPathComponent();
-                    DbImportTreeNode previousNode;
-                    DbImportTreeNode foundNode = 
targetTree.findNodeByParentsChain(
-                            targetTree.getRootNode(), selectedElement, 0
-                    );
-                    // If parent nodes from db schema doesn't exist, create it
-                    if (foundNode == null) {
-                        for (int i = selectedElement.getParents().size() - 2; 
i >= 0; i--) {
-                            DbImportTreeNode insertedNode = 
selectedElement.getParents().get(i);
-                            previousNode = 
targetTree.findNodeByParentsChain(targetTree.getRootNode(), insertedNode, 0);
-                            TreeManipulationAction manipulationAction = 
panel.getActionByNodeType(
-                                    insertedNode.getUserObject().getClass()
-                            );
-                            if (canInsert(new 
TreePath(insertedNode.getPath()), previousNode)) {
-                                manipulationAction.setFoundNode(previousNode);
-                                
manipulationAction.setInsertableNodeName(insertedNode.getSimpleNodeName());
-                                manipulationAction.setTree(targetTree);
-                                manipulationAction.setMovedFromDbSchema(true);
-                                manipulationAction.actionPerformed(e);
-                                manipulationAction.setFoundNode(null);
-                                manipulationAction.setMultipleAction(false);
-                            }
-                        }
-                    }
-                    // Again find node where we insert our node
-                    foundNode = 
targetTree.findNodeByParentsChain(targetTree.getRootNode(), selectedElement, 0);
-                    if (!moveInverted) {
-                        action = 
panel.getActionByNodeType(selectedElement.getUserObject().getClass());
-                    } else {
-                        action = 
panel.getActionByNodeType(classMap.get(selectedElement.getUserObject().getClass()));
-                    }
-                    if (action != null) {
-                        if (paths.length > 1) {
-                            action.setMultipleAction(true);
-                        } else {
-                            action.setMultipleAction(false);
-                        }
-                        if (canInsert(path, foundNode)) {
-                            insertableName = 
selectedElement.getSimpleNodeName();
-                            action.setFoundNode(foundNode);
-                            
action.setInsertableNodeName(Matcher.quoteReplacement(insertableName));
-                            action.setTree(targetTree);
-                            action.setMovedFromDbSchema(true);
-                            action.actionPerformed(e);
-                            action.setFoundNode(null);
-                            action.resetActionFlags();
-                            isChanged = true;
-                            sourceTree.setSelectionRow(-1);
-                            panel.getMoveButton().setEnabled(false);
-                            panel.getMoveInvertButton().setEnabled(false);
-                        }
-                    }
-                }
-                if ((paths.length > 1) && (targetTree.getSelectionPath() != 
null)) {
-                    getProjectController().setDirty(true);
-                    ArrayList<DbImportTreeNode> expandList = 
targetTree.getTreeExpandList();
-                    
targetTree.translateReverseEngineeringToTree(targetTree.getReverseEngineering(),
 false);
-                    targetTree.expandTree(expandList);
-                }
-                if ((isChanged) && (!insertableName.equals(EMPTY_NAME))) {
-                    ReverseEngineering reverseEngineeringNewCopy = new 
ReverseEngineering(targetTree.getReverseEngineering());
-                    DbImportTreeUndoableEdit undoableEdit = new 
DbImportTreeUndoableEdit(
-                            reverseEngineeringOldCopy, 
reverseEngineeringNewCopy, targetTree, getProjectController()
-                    );
-                    
getProjectController().getApplication().getUndoManager().addEdit(undoableEdit);
-                }
-            } finally {
-                rootParent.getReverseEngineeringProgress().setVisible(false);
-                if (action != null) {
-                    action.resetActionFlags();
-                }
-            }
-        }
-    }
-
-    private boolean nodeClassesIsSameTypes(DbImportTreeNode sourceElement, 
DbImportTreeNode selectedElement) {
-        if (sourceElement.getUserObject().getClass() == 
selectedElement.getUserObject().getClass()) {
-            return true;
-        }
-        if (sourceElement.getUserObject().getClass() == IncludeTable.class) {
-            if ((selectedElement.getUserObject().getClass() == 
IncludeTable.class)
-                || (selectedElement.getUserObject().getClass() == 
ExcludeTable.class)) {
-                return true;
-            }
-        }
-        if (sourceElement.getUserObject().getClass() == 
IncludeProcedure.class) {
-            if ((selectedElement.getUserObject().getClass() == 
IncludeProcedure.class)
-                    || (selectedElement.getUserObject().getClass() == 
ExcludeProcedure.class)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public void setSourceTree(DbImportTree sourceTree) {
-        this.sourceTree = sourceTree;
-    }
-
-    public void setTargetTree(DbImportTree targetTree) {
-        this.targetTree = targetTree;
-    }
-
-    public void setPanel(DraggableTreePanel panel) {
-        this.panel = panel;
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MoveInvertNodeAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MoveInvertNodeAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MoveInvertNodeAction.java
deleted file mode 100644
index 653cc91..0000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MoveInvertNodeAction.java
+++ /dev/null
@@ -1,35 +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.action;
-
-import org.apache.cayenne.modeler.Application;
-
-/**
- * @since 4.1
- */
-public class MoveInvertNodeAction extends MoveImportNodeAction {
-
-    private static final String ACTION_NAME = "Exclude";
-
-    MoveInvertNodeAction(Application application) {
-        super(ACTION_NAME, application);
-        moveInverted = true;
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51289d1c/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 3bb3a16..89b61db 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
@@ -24,7 +24,7 @@ import org.apache.cayenne.modeler.dialog.db.DataSourceWizard;
 import org.apache.cayenne.modeler.dialog.db.DbActionOptionsDialog;
 import org.apache.cayenne.modeler.dialog.db.load.DbLoaderContext;
 import org.apache.cayenne.modeler.dialog.db.load.LoadDataMapTask;
-import org.apache.cayenne.modeler.editor.DbImportView;
+import org.apache.cayenne.modeler.editor.dbimport.DbImportView;
 import org.apache.cayenne.modeler.pref.DBConnectionInfo;
 import org.apache.cayenne.modeler.pref.DataMapDefaults;
 

Reply via email to