[cayenne] branch STABLE-4.1 updated: CAY-2600 Modeler DbImport: Can't retrieve schema for databases with no catalog support
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 o
[cayenne] branch STABLE-4.1 updated: CAY-2600 Modeler DbImport: Can't retrieve schema for databases with no catalog support
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 = path.getPathComponent(1