[cayenne] branch STABLE-4.1 updated: CAY-2600 Modeler DbImport: Can't retrieve schema for databases with no catalog support

2019-08-23 Thread abulatski
This is an automated email from the ASF dual-hosted git repository.

abulatski 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 8d5a9fe  CAY-2600 Modeler DbImport: Can't retrieve schema for 
databases with no catalog support
8d5a9fe is described below

commit 8d5a9fe1f0b228cd7668c3599c5aa73ad28fa252
Author: Arseni Bulatski 
AuthorDate: Fri Aug 23 16:18:05 2019 +0300

CAY-2600 Modeler DbImport: Can't retrieve schema for databases with no 
catalog support

(cherry picked from commit dc088800eab47bd6b8a34144ef051d6f8c155879)
---
 .../java/org/apache/cayenne/dba/AutoAdapter.java   |  28 +++-
 .../java/org/apache/cayenne/dba/DbAdapter.java |  23 ++-
 .../java/org/apache/cayenne/dba/JdbcAdapter.java   |  12 +-
 .../org/apache/cayenne/dba/mysql/MySQLAdapter.java |  13 +-
 .../apache/cayenne/dba/oracle/OracleAdapter.java   |  36 +++--
 .../cayenne/dba/sqlserver/SQLServerAdapter.java|  18 ++-
 .../cayenne/modeler/action/LoadDbSchemaAction.java |   3 +-
 .../editor/dbimport/DatabaseSchemaLoader.java  | 168 +++--
 .../modeler/editor/dbimport/DbImportTree.java  |  64 +---
 9 files changed, 231 insertions(+), 134 deletions(-)

diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java 
b/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
index 44f1b25..77ef360 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
@@ -7,7 +7,7 @@
  *  "License"); you may not use this file except in compliance
  *  with the License.  You may obtain a copy of the License at
  *
- *http://www.apache.org/licenses/LICENSE-2.0
+ *https://www.apache.org/licenses/LICENSE-2.0
  *
  *  Unless required by applicable law or agreed to in writing,
  *  software distributed under the License is distributed on an
@@ -19,6 +19,12 @@
 
 package org.apache.cayenne.dba;
 
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.translator.ParameterBinding;
@@ -37,15 +43,11 @@ import org.apache.cayenne.query.Query;
 import org.apache.cayenne.query.SQLAction;
 import org.apache.cayenne.query.SelectQuery;
 
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.util.Collection;
-
 /**
  * A DbAdapter that automatically detects the kind of database it is running on
  * and instantiates an appropriate DB-specific adapter, delegating all
  * subsequent method calls to this adapter.
- * 
+ *
  * @since 1.2
  */
 public class AutoAdapter implements DbAdapter {
@@ -62,7 +64,7 @@ public class AutoAdapter implements DbAdapter {
/**
 * Creates an {@link AutoAdapter} based on a delegate adapter obtained 
via
 * "adapterProvider".
-* 
+*
 * @since 3.1
 */
public AutoAdapter(Provider adapterProvider, JdbcEventLogger 
logger) {
@@ -96,7 +98,7 @@ public class AutoAdapter implements DbAdapter {
protected DbAdapter loadAdapter() {
return adapterProvider.get();
}
-   
+
/**
 * @since 4.0
 */
@@ -242,4 +244,14 @@ public class AutoAdapter implements DbAdapter {
public EJBQLTranslatorFactory getEjbqlTranslatorFactory() {
return getAdapter().getEjbqlTranslatorFactory();
}
+
+   @Override
+   public List getSystemCatalogs() {
+   return Collections.emptyList();
+   }
+
+   @Override
+   public List getSystemSchemas() {
+   return Collections.emptyList();
+   }
 }
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java 
b/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java
index ae8073e..3d7988f 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java
@@ -7,7 +7,7 @@
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
  * 
- * http://www.apache.org/licenses/LICENSE-2.0
+ * https://www.apache.org/licenses/LICENSE-2.0
  * 
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
@@ -18,6 +18,11 @@
  /
 package org.apache.cayenne.dba;
 
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.List;
+
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.translator.ParameterBinding;
 import 

[cayenne] branch STABLE-4.1 updated: CAY-2600 Modeler DbImport: Can't retrieve schema for databases with no catalog support

2019-08-15 Thread abulatski
This is an automated email from the ASF dual-hosted git repository.

abulatski 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 fc52cf2  CAY-2600 Modeler DbImport: Can't retrieve schema for 
databases with no catalog support
fc52cf2 is described below

commit fc52cf219e9fb01f8e72e7bd9e0467af24c2a3b0
Author: Arseni Bulatski 
AuthorDate: Thu Aug 15 14:05:42 2019 +0300

CAY-2600 Modeler DbImport: Can't retrieve schema for databases with no 
catalog support

(cherry picked from commit 285d75237d8b0659771c2f219562b57397f19f02)
---
 RELEASE-NOTES.txt  |   1 +
 .../editor/dbimport/DatabaseSchemaLoader.java  | 179 -
 .../modeler/editor/dbimport/DbImportTree.java  |  48 --
 3 files changed, 138 insertions(+), 90 deletions(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 4a5c865..953bc62 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -30,6 +30,7 @@ CAY-2591 Modeler: project becomes dirty after click on 
dbImport or cgen tab
 CAY-2594 DbImport: AutoAdapter resolving inside an import operation hangs up 
the op on Hana DB
 CAY-2595 ObjAttributes are not sorted in alphabetical ordering on save
 CAY-2596 DbImport xml config changes after dbImport plugin task execution
+CAY-2600 Modeler DbImport: Can't retrieve schema for databases with no catalog 
support
 CAY-2601 Modeler DbImport: result dialog issues
 CAY-2603 NPE reloading project in the model
 CAY-2605 Modeler: Unable to save - java.nio.file.InvalidPathException
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 30403a4..720541c 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
@@ -26,18 +26,19 @@ import java.sql.SQLException;
 import java.util.Collection;
 
 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.ReverseEngineering;
 import org.apache.cayenne.dbsync.reverse.dbimport.Schema;
 import org.apache.cayenne.modeler.ClassLoadingService;
+import org.apache.cayenne.modeler.dialog.db.load.DbImportTreeNode;
 import org.apache.cayenne.modeler.pref.DBConnectionInfo;
 
 public class DatabaseSchemaLoader {
 
 private static final String INCLUDE_ALL_PATTERN = "%";
-private static final String EMPTY_DEFAULT_CATALOG = "";
 private static final int TABLE_INDEX = 3;
 private static final int SCHEMA_INDEX = 2;
 private static final int CATALOG_INDEX = 1;
@@ -56,36 +57,82 @@ public class DatabaseSchemaLoader {
 tableTypesFromConfig :
 new String[]{"TABLE", "VIEW", "SYSTEM TABLE",
 "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", 
"SYNONYM"};
-try (ResultSet rs = connection.getMetaData().getCatalogs()) {
-String defaultCatalog = connection.getCatalog();
-while (rs.next()) {
-ResultSet resultSet;
-if (defaultCatalog.equals(EMPTY_DEFAULT_CATALOG)) {
-resultSet = connection.getMetaData()
-.getTables(rs.getString(1), null, 
INCLUDE_ALL_PATTERN, types);
-} else {
-resultSet = connection.getMetaData()
-.getTables(defaultCatalog, null, 
INCLUDE_ALL_PATTERN, types);
-}
-String tableName = "";
-String schemaName = "";
-String catalogName = "";
-while (resultSet.next()) {
-tableName = resultSet.getString(TABLE_INDEX);
-schemaName = resultSet.getString(SCHEMA_INDEX);
-catalogName = resultSet.getString(CATALOG_INDEX);
-packTable(tableName, catalogName, schemaName, null);
-}
-packFunctions(connection);
-}
-}
+processCatalogs(connection, types);
 }
 return databaseReverseEngineering;
 }
 
-public ReverseEngineering loadColumns(DBConnectionInfo connectionInfo, 
ClassLoadingService loadingService, TreePath path) throws SQLException {
-String catalogName =