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 <[email protected]> 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); } }
