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