This is an automated email from the ASF dual-hosted git repository.
ntimofeev pushed a commit to branch STABLE-4.1
in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/STABLE-4.1 by this push:
new cfb1a43 Sort tables and columns in DBImport DB schema view
cfb1a43 is described below
commit cfb1a43b01b8bf5de55ba0e04c77929e40197101
Author: Nikita Timofeev <[email protected]>
AuthorDate: Wed Sep 25 13:22:52 2019 +0300
Sort tables and columns in DBImport DB schema view
---
.../dbsync/reverse/dbimport/FilterContainer.java | 37 +++++++++++-----------
.../dbsync/reverse/dbimport/IncludeTable.java | 15 +++++----
.../reverse/dbimport/ReverseEngineering.java | 9 +++---
.../dbsync/reverse/dbimport/SchemaContainer.java | 8 ++---
.../editor/dbimport/DatabaseSchemaLoader.java | 20 ++++++++++++
5 files changed, 55 insertions(+), 34 deletions(-)
diff --git
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/FilterContainer.java
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/FilterContainer.java
index 3914439..22b62ec 100644
---
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/FilterContainer.java
+++
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/FilterContainer.java
@@ -21,9 +21,8 @@ package org.apache.cayenne.dbsync.reverse.dbimport;
import org.apache.cayenne.util.Util;
-import java.util.Collection;
-import java.util.LinkedList;
-
+import java.util.ArrayList;
+import java.util.List;
/**
* @since 4.0.
@@ -32,19 +31,19 @@ public abstract class FilterContainer {
private String name;
- private final Collection<IncludeTable> includeTableCollection = new
LinkedList<>();
+ private final List<IncludeTable> includeTableCollection = new
ArrayList<>();
- private final Collection<ExcludeTable> excludeTableCollection = new
LinkedList<>();
+ private final List<ExcludeTable> excludeTableCollection = new
ArrayList<>();
- private final Collection<IncludeColumn> includeColumnCollection = new
LinkedList<>();
+ private final List<IncludeColumn> includeColumnCollection = new
ArrayList<>();
- private final Collection<ExcludeColumn> excludeColumnCollection = new
LinkedList<>();
+ private final List<ExcludeColumn> excludeColumnCollection = new
ArrayList<>();
- private final Collection<IncludeProcedure> includeProcedureCollection =
new LinkedList<>();
+ private final List<IncludeProcedure> includeProcedureCollection = new
ArrayList<>();
- private final Collection<ExcludeProcedure> excludeProcedureCollection =
new LinkedList<>();
+ private final List<ExcludeProcedure> excludeProcedureCollection = new
ArrayList<>();
- private final Collection<ExcludeRelationship>
excludeRelationshipCollection = new LinkedList<>();
+ private final List<ExcludeRelationship> excludeRelationshipCollection =
new ArrayList<>();
public FilterContainer() {
}
@@ -71,34 +70,34 @@ public abstract class FilterContainer {
}
}
- public Collection<IncludeTable> getIncludeTables() {
+ public List<IncludeTable> getIncludeTables() {
return includeTableCollection;
}
- public Collection<ExcludeTable> getExcludeTables() {
+ public List<ExcludeTable> getExcludeTables() {
return excludeTableCollection;
}
- public Collection<IncludeColumn> getIncludeColumns() {
+ public List<IncludeColumn> getIncludeColumns() {
return includeColumnCollection;
}
- public Collection<ExcludeColumn> getExcludeColumns() {
+ public List<ExcludeColumn> getExcludeColumns() {
return excludeColumnCollection;
}
- public Collection<IncludeProcedure> getIncludeProcedures() {
+ public List<IncludeProcedure> getIncludeProcedures() {
return includeProcedureCollection;
}
- public Collection<ExcludeProcedure> getExcludeProcedures() {
+ public List<ExcludeProcedure> getExcludeProcedures() {
return excludeProcedureCollection;
}
/**
* @since 4.1
*/
- public Collection<ExcludeRelationship> getExcludeRelationship() {
+ public List<ExcludeRelationship> getExcludeRelationship() {
return excludeRelationshipCollection;
}
@@ -193,7 +192,7 @@ public abstract class FilterContainer {
&& includeProcedureCollection.isEmpty() &&
excludeProcedureCollection.isEmpty() && excludeRelationshipCollection.isEmpty();
}
- static boolean isBlank(Collection<?> collection) {
+ static boolean isBlank(List<?> collection) {
return collection == null || collection.isEmpty();
}
@@ -214,7 +213,7 @@ public abstract class FilterContainer {
return res;
}
- protected void appendCollection(StringBuilder res, String prefix,
Collection<? extends PatternParam> collection) {
+ protected void appendCollection(StringBuilder res, String prefix, List<?
extends PatternParam> collection) {
if (!isBlank(collection)) {
for (PatternParam item : collection) {
item.toString(res, prefix);
diff --git
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/IncludeTable.java
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/IncludeTable.java
index 0dd46f2..a1f1f2a 100644
---
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/IncludeTable.java
+++
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/IncludeTable.java
@@ -23,19 +23,20 @@ import
org.apache.cayenne.configuration.ConfigurationNodeVisitor;
import org.apache.cayenne.util.XMLEncoder;
import org.apache.cayenne.util.XMLSerializable;
+import java.util.ArrayList;
import java.util.Collection;
-import java.util.LinkedList;
+import java.util.List;
/**
* @since 4.0.
*/
public class IncludeTable extends PatternParam implements XMLSerializable {
- private final Collection<IncludeColumn> includeColumns = new
LinkedList<>();
+ private final List<IncludeColumn> includeColumns = new ArrayList<>();
- private final Collection<ExcludeColumn> excludeColumns = new
LinkedList<>();
+ private final List<ExcludeColumn> excludeColumns = new ArrayList<>();
- private final Collection<ExcludeRelationship> excludeRelationship = new
LinkedList<>();
+ private final List<ExcludeRelationship> excludeRelationship = new
ArrayList<>();
public IncludeTable() {
}
@@ -54,7 +55,7 @@ public class IncludeTable extends PatternParam implements
XMLSerializable {
}
}
- public Collection<IncludeColumn> getIncludeColumns() {
+ public List<IncludeColumn> getIncludeColumns() {
return includeColumns;
}
@@ -62,7 +63,7 @@ public class IncludeTable extends PatternParam implements
XMLSerializable {
this.includeColumns.addAll(includeColumns);
}
- public Collection<ExcludeColumn> getExcludeColumns() {
+ public List<ExcludeColumn> getExcludeColumns() {
return excludeColumns;
}
@@ -73,7 +74,7 @@ public class IncludeTable extends PatternParam implements
XMLSerializable {
/**
* @since 4.1
*/
- public Collection<ExcludeRelationship> getExcludeRelationship() {
+ public List<ExcludeRelationship> getExcludeRelationship() {
return excludeRelationship;
}
diff --git
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/ReverseEngineering.java
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/ReverseEngineering.java
index 28b0e70..184c673 100644
---
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/ReverseEngineering.java
+++
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/ReverseEngineering.java
@@ -20,9 +20,10 @@
package org.apache.cayenne.dbsync.reverse.dbimport;
import java.io.Serializable;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
-import java.util.LinkedList;
+import java.util.List;
import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
import org.apache.cayenne.dbsync.xml.DbImportExtension;
@@ -118,9 +119,9 @@ public class ReverseEngineering extends SchemaContainer
implements Serializable,
* <li> "SYNONYM"
* </ul>
*/
- private final Collection<String> tableTypes = new LinkedList<>();
+ private final List<String> tableTypes = new ArrayList<>();
- private final Collection<Catalog> catalogCollection = new LinkedList<>();
+ private final List<Catalog> catalogCollection = new ArrayList<>();
public ReverseEngineering() {
}
@@ -160,7 +161,7 @@ public class ReverseEngineering extends SchemaContainer
implements Serializable,
this.skipPrimaryKeyLoading = skipPrimaryKeyLoading;
}
- public Collection<Catalog> getCatalogs() {
+ public List<Catalog> getCatalogs() {
return catalogCollection;
}
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 8d18417..512ee70 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
@@ -19,17 +19,17 @@
package org.apache.cayenne.dbsync.reverse.dbimport;
-import java.util.Collection;
-import java.util.LinkedList;
+import java.util.ArrayList;
+import java.util.List;
/**
* @since 4.0
*/
public abstract class SchemaContainer extends FilterContainer {
- private final Collection<Schema> schemaCollection = new LinkedList<>();
+ private final List<Schema> schemaCollection = new ArrayList<>();
- public Collection<Schema> getSchemas() {
+ public List<Schema> getSchemas() {
return schemaCollection;
}
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 fafd9c8..0f32766 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
@@ -25,6 +25,7 @@ import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
+import java.util.Comparator;
import java.util.List;
import org.apache.cayenne.dba.DbAdapter;
@@ -33,6 +34,7 @@ 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.ClassLoadingService;
@@ -60,9 +62,26 @@ public class DatabaseSchemaLoader {
"GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS",
"SYNONYM"};
processCatalogs(connection, types, dbAdapter);
}
+
+ sort();
return databaseReverseEngineering;
}
+ private void sort() {
+ databaseReverseEngineering.getCatalogs().forEach(catalog -> {
+ catalog.getSchemas().forEach(this::sort);
+ sort(catalog);
+ });
+ sort(databaseReverseEngineering);
+ }
+
+ private void sort(FilterContainer filterContainer) {
+ Comparator<PatternParam> comparator =
Comparator.comparing(PatternParam::getPattern);
+ filterContainer.getIncludeTables().sort(comparator);
+ filterContainer.getIncludeTables().forEach(table ->
table.getIncludeColumns().sort(comparator));
+ filterContainer.getIncludeProcedures().sort(comparator);
+ }
+
private void processCatalogs(Connection connection, String[] types,
DbAdapter dbAdapter) throws SQLException {
try (ResultSet rsCatalog = connection.getMetaData().getCatalogs()) {
boolean hasCatalogs = false;
@@ -133,6 +152,7 @@ public class DatabaseSchemaLoader {
}
}
}
+ sort();
return databaseReverseEngineering;
}