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
The following commit(s) were added to refs/heads/master by this push:
new 907b3cd CAY-2695 Reverse engineering on SQLite fails due to feature
not being supported
907b3cd is described below
commit 907b3cdc069cb2cf0862e2e76151afd99c55af2d
Author: Nikita Timofeev <[email protected]>
AuthorDate: Mon Mar 1 17:25:58 2021 +0300
CAY-2695 Reverse engineering on SQLite fails due to feature not being
supported
---
.../reverse/filters/FiltersConfigBuilder.java | 25 ++++----------------
.../editor/dbimport/DatabaseSchemaLoader.java | 27 ++++++++++++----------
.../modeler/editor/dbimport/DbImportTree.java | 6 ++---
3 files changed, 23 insertions(+), 35 deletions(-)
diff --git
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/filters/FiltersConfigBuilder.java
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/filters/FiltersConfigBuilder.java
index 50930a0..aca90ba 100644
---
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/filters/FiltersConfigBuilder.java
+++
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/filters/FiltersConfigBuilder.java
@@ -113,6 +113,11 @@ public final class FiltersConfigBuilder {
private List<Schema> processSchemas(DatabaseMetaData databaseMetaData,
String catalogName,
List<String> systemSchemas) throws
SQLException {
+
+ if(!databaseMetaData.supportsSchemasInTableDefinitions()) {
+ return Collections.emptyList();
+ }
+
List<Schema> schemas = new ArrayList<>();
try(ResultSet schemaRs = databaseMetaData.getSchemas(catalogName,
null)) {
while(schemaRs.next()) {
@@ -183,26 +188,6 @@ public final class FiltersConfigBuilder {
}
return filter;
-
- }
-
- private PatternFilter transform(Collection<? extends PatternParam>
include, Collection<? extends PatternParam> exclude, Collection<? extends
PatternParam> excludeRel) {
- PatternFilter filter = new PatternFilter();
-
- for (PatternParam patternParam : include) {
- filter.include(patternParam.getPattern());
- }
-
- for (PatternParam patternParam : exclude) {
- filter.exclude(patternParam.getPattern());
- }
-
- for(PatternParam patternParam : excludeRel){
- filter.exclude(patternParam.getPattern());
- }
-
- return filter;
-
}
/**
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 31d7aa7..833df84 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
@@ -45,7 +45,7 @@ public class DatabaseSchemaLoader {
private static final String INCLUDE_ALL_PATTERN = "%";
- private ReverseEngineering databaseReverseEngineering;
+ private final ReverseEngineering databaseReverseEngineering;
public DatabaseSchemaLoader() {
databaseReverseEngineering = new ReverseEngineering();
@@ -98,19 +98,22 @@ public class DatabaseSchemaLoader {
String catalog,
DbAdapter dbAdapter) throws SQLException {
DatabaseMetaData metaData = connection.getMetaData();
- try(ResultSet rsSchema = metaData.getSchemas(catalog, null)) {
- boolean hasSchemas = false;
- List<String> systemSchemas = dbAdapter.getSystemSchemas();
- while (rsSchema.next()) {
- hasSchemas = true;
- String schema = rsSchema.getString("TABLE_SCHEM");
- if(!systemSchemas.contains(schema)) {
- packFilterContainer(catalog, schema);
+ boolean hasSchemas = false;
+ if(metaData.supportsSchemasInTableDefinitions()) {
+ try(ResultSet rsSchema = metaData.getSchemas(catalog, null)) {
+ List<String> systemSchemas = dbAdapter.getSystemSchemas();
+ while (rsSchema.next()) {
+ hasSchemas = true;
+ String schema = rsSchema.getString("TABLE_SCHEM");
+ if (!systemSchemas.contains(schema)) {
+ packFilterContainer(catalog, schema);
+ }
}
}
- if(!hasSchemas) {
- packFilterContainer(catalog, null);
- }
+ }
+
+ if(catalog != null && !hasSchemas) {
+ packFilterContainer(catalog, null);
}
}
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 b30b945..6438d51 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
@@ -242,7 +242,7 @@ public class DbImportTree extends JTree {
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 (!node.getSimpleNodeName().equals("")) {
+ if (!"".equals(node.getSimpleNodeName())) {
parent.add(node);
}
}
@@ -276,7 +276,7 @@ public class DbImportTree extends JTree {
private void printSchemas(Collection<Schema> schemas, DbImportTreeNode
parent) {
for (Schema schema : schemas) {
DbImportTreeNode node = !isTransferable ? new
DbImportTreeNode(schema) : new TransferableNode(schema);
- if (!node.getSimpleNodeName().equals("")) {
+ if (!"".equals(node.getSimpleNodeName())) {
if (isTransferable && schema.getIncludeTables().isEmpty() &&
schema.getExcludeTables().isEmpty()) {
printParams(Collections.singletonList(new
IncludeTable("Loading...")), node);
@@ -291,7 +291,7 @@ public class DbImportTree extends JTree {
private void printCatalogs(Collection<Catalog> catalogs, DbImportTreeNode
parent) {
for (Catalog catalog : catalogs) {
DbImportTreeNode node = !isTransferable ? new
DbImportTreeNode(catalog) : new TransferableNode(catalog);
- if (!node.getSimpleNodeName().equals("")) {
+ if (!"".equals(node.getSimpleNodeName())) {
if (isTransferable && catalog.getSchemas().isEmpty() &&
catalog.getIncludeTables().isEmpty() &&
catalog.getExcludeTables().isEmpty()) {