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:39 UTC

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

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);
     }
 }