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()) {

Reply via email to