You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2021/05/26 12:37:37 UTC

[cayenne] branch master updated (5e8ac71 -> 2e11cd0)

This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git.


    from 5e8ac71  CAY-2630 Prefetched relationships not preserving pending changes  test case
     new f499a7f  fix: dbimport scheme not working on sqlite, add ability to import databases where tables are outside catalogs and schemes
     new 8d81ef9  refactor: change some foreach with streams, remove duplicate code
     new 6d20bfa  Merge remote-tracking branch 'parent/pr/456' into asf-master
     new 2e11cd0  Minor code cleanup

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../cayenne/modeler/action/LoadDbSchemaAction.java |  12 +-
 .../editor/dbimport/DatabaseSchemaLoader.java      | 159 ++++++++++-----------
 .../modeler/editor/dbimport/DbImportTree.java      |  31 ++--
 .../editor/dbimport/PrintColumnsBiFunction.java    |  37 ++---
 .../modeler/editor/dbimport/tree/TableNode.java    |   9 +-
 5 files changed, 128 insertions(+), 120 deletions(-)

[cayenne] 01/04: fix: dbimport scheme not working on sqlite, add ability to import databases where tables are outside catalogs and schemes

Posted by nt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit f499a7f54a2cccbed8cdb3e1a206bee66f5e88f5
Author: dmitrij <dm...@gmail.com>
AuthorDate: Mon May 24 13:02:30 2021 +0300

    fix: dbimport scheme not working on sqlite, add ability to import databases where tables are outside catalogs and schemes
---
 .../cayenne/modeler/action/LoadDbSchemaAction.java | 12 +--
 .../editor/dbimport/DatabaseSchemaLoader.java      | 86 ++++++++++++----------
 .../modeler/editor/dbimport/DbImportTree.java      | 30 +++++---
 .../editor/dbimport/PrintColumnsBiFunction.java    | 37 ++++++----
 .../modeler/editor/dbimport/tree/TableNode.java    |  9 ++-
 5 files changed, 102 insertions(+), 72 deletions(-)

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 8d46749..9f7b015 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
@@ -76,21 +76,23 @@ public class LoadDbSchemaAction extends DBConnectionAwareAction {
             try {
 
                 DBConnectionInfo connectionInfo = getConnectionInfo("Load Db Schema");
-                if(connectionInfo == null) {
+                if (connectionInfo == null) {
                     return;
                 }
 
                 if (tablePath != null) {
                     Object userObject = ((DbImportTreeNode) tablePath.getLastPathComponent()).getUserObject();
-                    if(userObject instanceof Catalog) {
+                    if (userObject instanceof Catalog) {
                         Catalog catalog = (Catalog) userObject;
-                        if(catalog.getSchemas().isEmpty()) {
+                        if (catalog.getSchemas().isEmpty()) {
                             loadTables(connectionInfo, tablePath, rootParent);
                         }
-                    } else if(userObject instanceof Schema) {
+                    } else if (userObject instanceof Schema) {
                         loadTables(connectionInfo, tablePath, rootParent);
-                    } else if(userObject instanceof IncludeTable) {
+                    } else if (userObject instanceof IncludeTable) {
                         loadColumns(connectionInfo, tablePath);
+                    } else {
+                        loadTables(connectionInfo, tablePath, rootParent);
                     }
                 } else {
                     loadDataBase(connectionInfo);
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DatabaseSchemaLoader.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DatabaseSchemaLoader.java
index 833df84..e71d424 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DatabaseSchemaLoader.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DatabaseSchemaLoader.java
@@ -58,6 +58,10 @@ public class DatabaseSchemaLoader {
             processCatalogs(connection, dbAdapter);
         }
 
+        if (databaseReverseEngineering.getSchemas().isEmpty() && databaseReverseEngineering.getCatalogs().isEmpty()) {
+            loadTables(connectionInfo, loadingService, null, null);
+        }
+
         sort();
         return databaseReverseEngineering;
     }
@@ -84,11 +88,11 @@ public class DatabaseSchemaLoader {
             while (rsCatalog.next() && dbAdapter.supportsCatalogsOnReverseEngineering()) {
                 hasCatalogs = true;
                 String catalog = rsCatalog.getString("TABLE_CAT");
-                if(!systemCatalogs.contains(catalog)) {
+                if (!systemCatalogs.contains(catalog)) {
                     processSchemas(connection, catalog, dbAdapter);
                 }
             }
-            if(!hasCatalogs) {
+            if (!hasCatalogs) {
                 processSchemas(connection, null, dbAdapter);
             }
         }
@@ -99,8 +103,8 @@ public class DatabaseSchemaLoader {
                                 DbAdapter dbAdapter) throws SQLException {
         DatabaseMetaData metaData = connection.getMetaData();
         boolean hasSchemas = false;
-        if(metaData.supportsSchemasInTableDefinitions()) {
-            try(ResultSet rsSchema = metaData.getSchemas(catalog, null)) {
+        if (metaData.supportsSchemasInTableDefinitions()) {
+            try (ResultSet rsSchema = metaData.getSchemas(catalog, null)) {
                 List<String> systemSchemas = dbAdapter.getSystemSchemas();
                 while (rsSchema.next()) {
                     hasSchemas = true;
@@ -112,7 +116,7 @@ public class DatabaseSchemaLoader {
             }
         }
 
-        if(catalog != null && !hasSchemas) {
+        if (catalog != null && !hasSchemas) {
             packFilterContainer(catalog, null);
         }
     }
@@ -125,17 +129,19 @@ public class DatabaseSchemaLoader {
         String catalogName = null, schemaName = null;
 
         Object userObject = getUserObject(path, pathIndex);
-        if(userObject instanceof Catalog) {
-            Catalog catalog = (Catalog) userObject;
-            catalogName = catalog.getName();
-            if(!catalog.getSchemas().isEmpty()) {
-                userObject = getUserObject(path, ++pathIndex);
-                if (userObject instanceof Schema) {
-                    schemaName = ((Schema) userObject).getName();
+        if (userObject != null) {
+            if (userObject instanceof Catalog) {
+                Catalog catalog = (Catalog) userObject;
+                catalogName = catalog.getName();
+                if (!catalog.getSchemas().isEmpty()) {
+                    userObject = getUserObject(path, ++pathIndex);
+                    if (userObject instanceof Schema) {
+                        schemaName = ((Schema) userObject).getName();
+                    }
                 }
+            } else if (userObject instanceof Schema) {
+                schemaName = ((Schema) userObject).getName();
             }
-        } else if(userObject instanceof Schema) {
-            schemaName = ((Schema) userObject).getName();
         }
 
         try (Connection connection = connectionInfo.makeDataSource(loadingService).getConnection()) {
@@ -153,8 +159,9 @@ public class DatabaseSchemaLoader {
                     String catalog = resultSet.getString("TABLE_CAT");
                     packTable(table, catalog == null ? catalogName : catalog, schema, null);
                 }
-                if(!hasTables) {
-                    packFilterContainer(catalogName, schemaName);
+                if (!hasTables) {
+                    if (catalogName != null ||  schemaName != null)
+                        packFilterContainer(catalogName, schemaName);
                 }
                 packProcedures(connection);
             }
@@ -169,14 +176,11 @@ public class DatabaseSchemaLoader {
         String catalogName = null, schemaName = null;
 
         Object userObject = getUserObject(path, pathIndex);
-        if(userObject instanceof Catalog) {
+        if (userObject instanceof Catalog) {
             catalogName = ((Catalog) userObject).getName();
             userObject = getUserObject(path, ++pathIndex);
-            if(userObject instanceof Schema) {
-                schemaName = ((Schema) userObject).getName();
-                userObject = getUserObject(path, ++pathIndex);
-            }
-        } else if(userObject instanceof Schema) {
+        }
+        if (userObject instanceof Schema) {
             schemaName = ((Schema) userObject).getName();
             userObject = getUserObject(path, ++pathIndex);
         }
@@ -198,7 +202,7 @@ public class DatabaseSchemaLoader {
         if (catalogName != null && schemaName == null) {
             Catalog parentCatalog = getCatalogByName(databaseReverseEngineering.getCatalogs(), catalogName);
 
-            if(parentCatalog == null) {
+            if (parentCatalog == null) {
                 parentCatalog = new Catalog();
                 parentCatalog.setName(catalogName);
                 databaseReverseEngineering.addCatalog(parentCatalog);
@@ -208,7 +212,7 @@ public class DatabaseSchemaLoader {
         } else if (catalogName == null) {
             Schema parentSchema = getSchemaByName(databaseReverseEngineering.getSchemas(), schemaName);
 
-            if(parentSchema == null) {
+            if (parentSchema == null) {
                 parentSchema = new Schema();
                 parentSchema.setName(schemaName);
                 databaseReverseEngineering.addSchema(parentSchema);
@@ -219,7 +223,7 @@ public class DatabaseSchemaLoader {
             Schema parentSchema;
             if (parentCatalog != null) {
                 parentSchema = getSchemaByName(parentCatalog.getSchemas(), schemaName);
-                if(parentSchema == null) {
+                if (parentSchema == null) {
                     parentSchema = new Schema();
                     parentSchema.setName(schemaName);
                     parentCatalog.addSchema(parentSchema);
@@ -237,22 +241,24 @@ public class DatabaseSchemaLoader {
     }
 
     private Object getUserObject(TreePath path, int pathIndex) {
-        return ((DbImportTreeNode)path.getPathComponent(pathIndex)).getUserObject();
+        if (path == null)
+            return null;
+        return ((DbImportTreeNode) path.getPathComponent(pathIndex)).getUserObject();
     }
 
     private String processTable(Object userObject) {
-        if(userObject instanceof IncludeTable) {
-            return  ((IncludeTable) userObject).getPattern();
+        if (userObject instanceof IncludeTable) {
+            return ((IncludeTable) userObject).getPattern();
         }
         return null;
     }
 
     private void packProcedures(Connection connection) throws SQLException {
         Collection<Catalog> catalogs = databaseReverseEngineering.getCatalogs();
-        for(Catalog catalog : catalogs) {
+        for (Catalog catalog : catalogs) {
             Collection<Schema> schemas = catalog.getSchemas();
-            if(!schemas.isEmpty()) {
-                for(Schema schema : schemas) {
+            if (!schemas.isEmpty()) {
+                for (Schema schema : schemas) {
                     ResultSet procResultSet = getProcedures(connection, catalog.getName(), schema.getName());
                     packProcedures(procResultSet, schema);
                 }
@@ -263,7 +269,7 @@ public class DatabaseSchemaLoader {
         }
 
         Collection<Schema> schemas = databaseReverseEngineering.getSchemas();
-        for(Schema schema : schemas) {
+        for (Schema schema : schemas) {
             ResultSet procResultSet = getProcedures(connection, null, schema.getName());
             packProcedures(procResultSet, schema);
         }
@@ -291,6 +297,7 @@ public class DatabaseSchemaLoader {
             if (!databaseReverseEngineering.getIncludeTables().contains(table)) {
                 databaseReverseEngineering.addIncludeTable(table);
             }
+            addColumn(null, table, columnName);
             return;
         }
 
@@ -306,12 +313,17 @@ public class DatabaseSchemaLoader {
     }
 
     private void addColumn(FilterContainer filterContainer, IncludeTable table, String columnName) {
-        IncludeTable foundTable = getTableByName(filterContainer.getIncludeTables(), table.getPattern());
+        if (columnName == null)
+            return;
+
+        IncludeTable foundTable;
+        if (filterContainer != null)
+            foundTable = getTableByName(filterContainer.getIncludeTables(), table.getPattern());
+        else
+            foundTable = getTableByName(databaseReverseEngineering.getIncludeTables(), table.getPattern());
         table = foundTable != null ? foundTable : table;
-        if (columnName != null) {
-            IncludeColumn includeColumn = new IncludeColumn(columnName);
-            table.addIncludeColumn(includeColumn);
-        }
+        IncludeColumn includeColumn = new IncludeColumn(columnName);
+        table.addIncludeColumn(includeColumn);
     }
 
     private Catalog getCatalogByName(Collection<Catalog> catalogs, String catalogName) {
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DbImportTree.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DbImportTree.java
index 6438d51..d035fb3 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DbImportTree.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DbImportTree.java
@@ -79,18 +79,22 @@ public class DbImportTree extends JTree {
         DbImportModel model = (DbImportModel) this.getModel();
         DbImportTreeNode root = (DbImportTreeNode) model.getRoot();
         Collection<Catalog> catalogs = reverseEngineering.getCatalogs();
-        if(!catalogs.isEmpty()) {
+        if (!catalogs.isEmpty()) {
             catalogs.forEach(catalog -> {
                 Collection<Schema> schemas = catalog.getSchemas();
-                if(!schemas.isEmpty()) {
+                if (!schemas.isEmpty()) {
                     DbImportTreeNode currentRoot = findNodeInParent(root, catalog);
                     schemas.forEach(schema -> packNextFilter(schema, currentRoot, processor));
                 } else {
                     packNextFilter(catalog, root, processor);
                 }
             });
-        } else {
+        } else if (!reverseEngineering.getSchemas().isEmpty()) {
             reverseEngineering.getSchemas().forEach(schema -> packNextFilter(schema, root, processor));
+        } else if (!reverseEngineering.getIncludeTables().isEmpty()) {
+            Schema schema = new Schema();
+            schema.getIncludeTables().addAll(reverseEngineering.getIncludeTables());
+            packNextFilter(schema, root, processor);
         }
     }
 
@@ -98,11 +102,15 @@ public class DbImportTree extends JTree {
                                 BiFunction<FilterContainer, DbImportTreeNode, Void> processor) {
         DbImportTreeNode container = findNodeInParent(root, filterContainer);
 
-        if (container == null) {
-            return;
+        if (container != null) {
+            container.setLoaded(true);
+        } else {
+            if (!filterContainer.getIncludeTables().isEmpty())
+                container = root;
+            else
+                return;
         }
 
-        container.setLoaded(true);
         processor.apply(filterContainer, container);
     }
 
@@ -128,14 +136,14 @@ public class DbImportTree extends JTree {
                 }
             }
 
-            if(object instanceof Schema) {
+            if (object instanceof Schema) {
                 Schema schema = (Schema) object;
-                if(!(userObject instanceof Schema)) {
+                if (!(userObject instanceof Schema)) {
                     continue;
                 }
 
                 Schema currentSchema = (Schema) userObject;
-                if(currentSchema.getName().equals(schema.getName())) {
+                if (currentSchema.getName().equals(schema.getName())) {
                     return node;
                 }
             }
@@ -239,7 +247,7 @@ public class DbImportTree extends JTree {
         expandBeginningWithNode(getRootNode(), expandIndexesList);
     }
 
-    public  <T extends PatternParam> void printParams(Collection<T> collection, DbImportTreeNode parent) {
+    public <T extends PatternParam> void printParams(Collection<T> collection, DbImportTreeNode parent) {
         for (T element : collection) {
             DbImportTreeNode node = !isTransferable ? new DbImportTreeNode(element) : new TransferableNode(element);
             if (!"".equals(node.getSimpleNodeName())) {
@@ -334,7 +342,7 @@ public class DbImportTree extends JTree {
     }
 
     public DbImportTreeNode getSelectedNode() {
-        if(this.getSelectionPath() == null) {
+        if (this.getSelectionPath() == null) {
             return null;
         }
         return (DbImportTreeNode) this.getSelectionPath().getLastPathComponent();
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/PrintColumnsBiFunction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/PrintColumnsBiFunction.java
index 1458bec..be77314 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/PrintColumnsBiFunction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/PrintColumnsBiFunction.java
@@ -22,6 +22,7 @@ package org.apache.cayenne.modeler.editor.dbimport;
 import java.util.function.BiFunction;
 
 import org.apache.cayenne.dbsync.reverse.dbimport.FilterContainer;
+import org.apache.cayenne.dbsync.reverse.dbimport.IncludeTable;
 import org.apache.cayenne.modeler.dialog.db.load.DbImportTreeNode;
 
 public class PrintColumnsBiFunction implements BiFunction<FilterContainer, DbImportTreeNode, Void> {
@@ -34,22 +35,26 @@ public class PrintColumnsBiFunction implements BiFunction<FilterContainer, DbImp
 
     @Override
     public Void apply(FilterContainer filterContainer, DbImportTreeNode root) {
-        DbImportModel model = (DbImportModel) dbImportTree.getModel();
-        filterContainer.getIncludeTables().forEach(tableFilter -> {
-            DbImportTreeNode container = dbImportTree
-                    .findNodeInParent(root, tableFilter);
-            if (container == null) {
-                return;
-            }
-            if (container.getChildCount() != 0) {
-                container.removeAllChildren();
-            }
-
-            dbImportTree.packColumns(tableFilter , container);
-
-            container.setLoaded(true);
-            model.reload(container);
-        });
+        if (filterContainer != null) {
+            filterContainer.getIncludeTables().forEach(tableFilter -> processTable(tableFilter, root));
+        }
         return null;
     }
+
+    private void processTable(IncludeTable tableFilter, DbImportTreeNode root) {
+        DbImportModel model = (DbImportModel) dbImportTree.getModel();
+        DbImportTreeNode container = dbImportTree
+                .findNodeInParent(root, tableFilter);
+        if (container == null) {
+            return;
+        }
+        if (container.getChildCount() != 0) {
+            container.removeAllChildren();
+        }
+
+        dbImportTree.packColumns(tableFilter, container);
+
+        container.setLoaded(true);
+        model.reload(container);
+    }
 }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/tree/TableNode.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/tree/TableNode.java
index 08652d1..c75a712 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/tree/TableNode.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/tree/TableNode.java
@@ -36,9 +36,12 @@ abstract class TableNode<T extends Node> extends Node<T> {
     
     @Override
     public Status getStatus(ReverseEngineering config) {
-        Status parentStatus = getParent().getStatus(config);
-        if(parentStatus != Status.INCLUDE) {
-            return parentStatus;
+        T parent = getParent();
+        if(parent != null) {
+            Status parentStatus = parent.getStatus(config);
+            if (parentStatus != Status.INCLUDE) {
+                return parentStatus;
+            }
         }
 
         List<IncludeTable> includeTables = new ArrayList<>();

[cayenne] 04/04: Minor code cleanup

Posted by nt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 2e11cd0e093b97b8f4dda023f92991cf4fb1b7d7
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Wed May 26 15:37:24 2021 +0300

    Minor code cleanup
---
 .../editor/dbimport/DatabaseSchemaLoader.java       | 21 +++++++++++++++------
 .../modeler/editor/dbimport/DbImportTree.java       |  5 +++--
 2 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DatabaseSchemaLoader.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DatabaseSchemaLoader.java
index 51b2b2c..476c62d 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DatabaseSchemaLoader.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DatabaseSchemaLoader.java
@@ -29,7 +29,15 @@ import java.util.Comparator;
 import java.util.List;
 
 import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dbsync.reverse.dbimport.*;
+import org.apache.cayenne.dbsync.reverse.dbimport.Catalog;
+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.dbsync.reverse.dbimport.SchemaContainer;
 import org.apache.cayenne.modeler.ClassLoadingService;
 import org.apache.cayenne.modeler.dialog.db.load.DbImportTreeNode;
 import org.apache.cayenne.modeler.pref.DBConnectionInfo;
@@ -152,9 +160,8 @@ public class DatabaseSchemaLoader {
                     String catalog = resultSet.getString("TABLE_CAT");
                     packTable(table, catalog == null ? catalogName : catalog, schema, null);
                 }
-                if (!hasTables) {
-                    if (catalogName != null || schemaName != null)
-                        packFilterContainer(catalogName, schemaName);
+                if (!hasTables && (catalogName != null || schemaName != null)) {
+                    packFilterContainer(catalogName, schemaName);
                 }
                 packProcedures(connection);
             }
@@ -218,8 +225,9 @@ public class DatabaseSchemaLoader {
     }
 
     private Object getUserObjectOrNull(TreePath path, int pathIndex) {
-        if (path == null)
+        if (path == null) {
             return null;
+        }
         return ((DbImportTreeNode) path.getPathComponent(pathIndex)).getUserObject();
     }
 
@@ -290,8 +298,9 @@ public class DatabaseSchemaLoader {
     }
 
     private void addColumn(FilterContainer filterContainer, IncludeTable table, String columnName) {
-        if (columnName == null)
+        if (columnName == null) {
             return;
+        }
 
         filterContainer = filterContainer == null ? databaseReverseEngineering : filterContainer;
         IncludeTable foundTable = getTableByName(filterContainer.getIncludeTables(), table.getPattern());
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DbImportTree.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DbImportTree.java
index d035fb3..6770525 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DbImportTree.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DbImportTree.java
@@ -105,10 +105,11 @@ public class DbImportTree extends JTree {
         if (container != null) {
             container.setLoaded(true);
         } else {
-            if (!filterContainer.getIncludeTables().isEmpty())
+            if (!filterContainer.getIncludeTables().isEmpty()) {
                 container = root;
-            else
+            } else {
                 return;
+            }
         }
 
         processor.apply(filterContainer, container);

[cayenne] 02/04: refactor: change some foreach with streams, remove duplicate code

Posted by nt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 8d81ef96b65181cde3e040304301584377568dc5
Author: dmitrij <dm...@gmail.com>
AuthorDate: Mon May 24 13:55:15 2021 +0300

    refactor: change some foreach with streams, remove duplicate code
---
 .../editor/dbimport/DatabaseSchemaLoader.java      | 100 +++++++--------------
 1 file changed, 34 insertions(+), 66 deletions(-)

diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DatabaseSchemaLoader.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DatabaseSchemaLoader.java
index e71d424..51b2b2c 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DatabaseSchemaLoader.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DatabaseSchemaLoader.java
@@ -29,14 +29,7 @@ import java.util.Comparator;
 import java.util.List;
 
 import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dbsync.reverse.dbimport.Catalog;
-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.dbsync.reverse.dbimport.*;
 import org.apache.cayenne.modeler.ClassLoadingService;
 import org.apache.cayenne.modeler.dialog.db.load.DbImportTreeNode;
 import org.apache.cayenne.modeler.pref.DBConnectionInfo;
@@ -128,13 +121,13 @@ public class DatabaseSchemaLoader {
         int pathIndex = 1;
         String catalogName = null, schemaName = null;
 
-        Object userObject = getUserObject(path, pathIndex);
+        Object userObject = getUserObjectOrNull(path, pathIndex);
         if (userObject != null) {
             if (userObject instanceof Catalog) {
                 Catalog catalog = (Catalog) userObject;
                 catalogName = catalog.getName();
                 if (!catalog.getSchemas().isEmpty()) {
-                    userObject = getUserObject(path, ++pathIndex);
+                    userObject = getUserObjectOrNull(path, ++pathIndex);
                     if (userObject instanceof Schema) {
                         schemaName = ((Schema) userObject).getName();
                     }
@@ -160,7 +153,7 @@ public class DatabaseSchemaLoader {
                     packTable(table, catalog == null ? catalogName : catalog, schema, null);
                 }
                 if (!hasTables) {
-                    if (catalogName != null ||  schemaName != null)
+                    if (catalogName != null || schemaName != null)
                         packFilterContainer(catalogName, schemaName);
                 }
                 packProcedures(connection);
@@ -175,14 +168,14 @@ public class DatabaseSchemaLoader {
         int pathIndex = 1;
         String catalogName = null, schemaName = null;
 
-        Object userObject = getUserObject(path, pathIndex);
+        Object userObject = getUserObjectOrNull(path, pathIndex);
         if (userObject instanceof Catalog) {
             catalogName = ((Catalog) userObject).getName();
-            userObject = getUserObject(path, ++pathIndex);
+            userObject = getUserObjectOrNull(path, ++pathIndex);
         }
         if (userObject instanceof Schema) {
             schemaName = ((Schema) userObject).getName();
-            userObject = getUserObject(path, ++pathIndex);
+            userObject = getUserObjectOrNull(path, ++pathIndex);
         }
 
         String tableName = processTable(userObject);
@@ -199,48 +192,32 @@ public class DatabaseSchemaLoader {
     }
 
     private FilterContainer packFilterContainer(String catalogName, String schemaName) {
-        if (catalogName != null && schemaName == null) {
-            Catalog parentCatalog = getCatalogByName(databaseReverseEngineering.getCatalogs(), catalogName);
-
+        SchemaContainer parentCatalog;
+        if (catalogName == null) {
+            parentCatalog = databaseReverseEngineering;
+        } else {
+            parentCatalog = getCatalogByName(databaseReverseEngineering.getCatalogs(), catalogName);
             if (parentCatalog == null) {
                 parentCatalog = new Catalog();
                 parentCatalog.setName(catalogName);
-                databaseReverseEngineering.addCatalog(parentCatalog);
+                databaseReverseEngineering.addCatalog((Catalog) parentCatalog);
             }
+        }
 
-            return parentCatalog;
-        } else if (catalogName == null) {
-            Schema parentSchema = getSchemaByName(databaseReverseEngineering.getSchemas(), schemaName);
-
+        Schema parentSchema = null;
+        if (schemaName != null) {
+            parentSchema = getSchemaByName(parentCatalog.getSchemas(), schemaName);
             if (parentSchema == null) {
                 parentSchema = new Schema();
                 parentSchema.setName(schemaName);
-                databaseReverseEngineering.addSchema(parentSchema);
-            }
-            return parentSchema;
-        } else {
-            Catalog parentCatalog = getCatalogByName(databaseReverseEngineering.getCatalogs(), catalogName);
-            Schema parentSchema;
-            if (parentCatalog != null) {
-                parentSchema = getSchemaByName(parentCatalog.getSchemas(), schemaName);
-                if (parentSchema == null) {
-                    parentSchema = new Schema();
-                    parentSchema.setName(schemaName);
-                    parentCatalog.addSchema(parentSchema);
-                }
-            } else {
-                parentCatalog = new Catalog();
-                parentCatalog.setName(catalogName);
-                parentSchema = new Schema();
-                parentSchema.setName(schemaName);
                 parentCatalog.addSchema(parentSchema);
-                databaseReverseEngineering.addCatalog(parentCatalog);
             }
-            return parentSchema;
         }
+
+        return parentSchema == null ? parentCatalog : parentSchema;
     }
 
-    private Object getUserObject(TreePath path, int pathIndex) {
+    private Object getUserObjectOrNull(TreePath path, int pathIndex) {
         if (path == null)
             return null;
         return ((DbImportTreeNode) path.getPathComponent(pathIndex)).getUserObject();
@@ -316,40 +293,31 @@ public class DatabaseSchemaLoader {
         if (columnName == null)
             return;
 
-        IncludeTable foundTable;
-        if (filterContainer != null)
-            foundTable = getTableByName(filterContainer.getIncludeTables(), table.getPattern());
-        else
-            foundTable = getTableByName(databaseReverseEngineering.getIncludeTables(), table.getPattern());
+        filterContainer = filterContainer == null ? databaseReverseEngineering : filterContainer;
+        IncludeTable foundTable = getTableByName(filterContainer.getIncludeTables(), table.getPattern());
         table = foundTable != null ? foundTable : table;
         IncludeColumn includeColumn = new IncludeColumn(columnName);
         table.addIncludeColumn(includeColumn);
     }
 
     private Catalog getCatalogByName(Collection<Catalog> catalogs, String catalogName) {
-        for (Catalog catalog : catalogs) {
-            if (catalog.getName().equals(catalogName)) {
-                return catalog;
-            }
-        }
-        return null;
+        return catalogs.stream()
+                .filter(catalog -> catalog.getName().equals(catalogName))
+                .findAny()
+                .orElse(null);
     }
 
     private IncludeTable getTableByName(Collection<IncludeTable> tables, String catalogName) {
-        for (IncludeTable table : tables) {
-            if (table.getPattern().equals(catalogName)) {
-                return table;
-            }
-        }
-        return null;
+        return tables.stream()
+                .filter(table -> table.getPattern().equals(catalogName))
+                .findAny()
+                .orElse(null);
     }
 
     private Schema getSchemaByName(Collection<Schema> schemas, String schemaName) {
-        for (Schema schema : schemas) {
-            if (schema.getName().equals(schemaName)) {
-                return schema;
-            }
-        }
-        return null;
+        return schemas.stream()
+                .filter(schema -> schema.getName().equals(schemaName))
+                .findAny()
+                .orElse(null);
     }
 }

[cayenne] 03/04: Merge remote-tracking branch 'parent/pr/456' into asf-master

Posted by nt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 6d20bfa5a61c974463ba09a9374059d3c8aa4282
Merge: 5e8ac71 8d81ef9
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Wed May 26 15:30:41 2021 +0300

    Merge remote-tracking branch 'parent/pr/456' into asf-master

 .../cayenne/modeler/action/LoadDbSchemaAction.java |  12 +-
 .../editor/dbimport/DatabaseSchemaLoader.java      | 168 +++++++++------------
 .../modeler/editor/dbimport/DbImportTree.java      |  30 ++--
 .../editor/dbimport/PrintColumnsBiFunction.java    |  37 +++--
 .../modeler/editor/dbimport/tree/TableNode.java    |   9 +-
 5 files changed, 127 insertions(+), 129 deletions(-)