refactoring ModelerDbImportAction
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/72dc1a3b Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/72dc1a3b Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/72dc1a3b Branch: refs/heads/master Commit: 72dc1a3b419540bf424f5b4d6ea8707dc2a919d5 Parents: 5461647 Author: Andrus Adamchik <and...@objectstyle.com> Authored: Sat Nov 5 12:46:11 2016 +0300 Committer: Andrus Adamchik <and...@objectstyle.com> Committed: Sat Nov 5 13:32:07 2016 +0300 ---------------------------------------------------------------------- .../cayenne/dbsync/reverse/db/DbLoader.java | 59 +++++++------------- .../cayenne/modeler/action/MigrateAction.java | 3 +- .../modeler/dialog/db/DbLoaderHelper.java | 11 ++-- 3 files changed, 27 insertions(+), 46 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cayenne/blob/72dc1a3b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java ---------------------------------------------------------------------- diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java index 65dd871..b171b5f 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java @@ -63,7 +63,7 @@ public class DbLoader { private final Connection connection; private final DbAdapter adapter; private final DbLoaderDelegate delegate; - private ObjectNameGenerator nameGenerator; + private final ObjectNameGenerator nameGenerator; private DatabaseMetaData metaData; public DbLoader(Connection connection, DbAdapter adapter, DbLoaderDelegate delegate, ObjectNameGenerator nameGenerator) { @@ -97,56 +97,38 @@ public class DbLoader { } /** - * Returns DatabaseMetaData object associated with this DbLoader. - */ - private DatabaseMetaData getMetaData() throws SQLException { - if (metaData == null) { - metaData = connection.getMetaData(); - } - return metaData; - } - - /** - * Check if database support schemas. - */ - protected boolean supportSchemas() throws SQLException { - if (metaData == null) { - metaData = connection.getMetaData(); - } - return metaData.supportsSchemasInTableDefinitions(); - } - - /** - * Check if database support catalogs. + * Retrieves catalogs for a given connection. + * + * @return List with the catalog names; empty list if none found. */ - protected boolean supportCatalogs() throws SQLException { - if (metaData == null) { - metaData = connection.getMetaData(); + // using a static method for catalog loading as we don't need a full DbLoader for this operation + public static List<String> loadCatalogs(Connection connection) throws SQLException { + try (ResultSet rs = connection.getMetaData().getCatalogs()) { + return getStrings(rs); } - return metaData.supportsCatalogsInTableDefinitions(); } /** - * Retrieves catalogs for the database associated with this DbLoader. + * Retrieves the schemas for the given connection. * - * @return List with the catalog names, empty Array if none found. + * @return List with the schema names; empty list if none found. */ - public List<String> loadCatalogs() throws SQLException { - try (ResultSet rs = getMetaData().getCatalogs()) { + // using a static method for catalog loading as we don't need a full DbLoader for this operation + public static List<String> loadSchemas(Connection connection) throws SQLException { + + try (ResultSet rs = connection.getMetaData().getSchemas()) { return getStrings(rs); } } /** - * Retrieves the schemas for the database. - * - * @return List with the schema names, empty Array if none found. + * Returns DatabaseMetaData object associated with this DbLoader. */ - public List<String> loadSchemas() throws SQLException { - - try (ResultSet rs = getMetaData().getSchemas()) { - return getStrings(rs); + private DatabaseMetaData getMetaData() throws SQLException { + if (metaData == null) { + metaData = connection.getMetaData(); } + return metaData; } protected void loadDbRelationships(DbLoaderConfiguration config, String catalog, String schema, @@ -297,7 +279,7 @@ public class DbLoader { } catch (SQLException cay182Ex) { // Sybase-specific - the line above blows on VIEWS, see CAY-182. LOGGER.info("Error getting relationships for '" + catalog + "." + schema + "', ignoring. " - + cay182Ex.getMessage(), cay182Ex); + + cay182Ex.getMessage(), cay182Ex); return new HashMap<>(); } @@ -336,7 +318,6 @@ public class DbLoader { LOGGER.info("Skip relation: '" + key + "' because table '" + tableName + "' not found"); } - protected String[] getTableTypes(DbLoaderConfiguration config) { String[] configTypes = config.getTableTypes(); http://git-wip-us.apache.org/repos/asf/cayenne/blob/72dc1a3b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MigrateAction.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MigrateAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MigrateAction.java index 9c5436a..f565cda 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MigrateAction.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MigrateAction.java @@ -21,7 +21,6 @@ package org.apache.cayenne.modeler.action; import org.apache.cayenne.dba.DbAdapter; import org.apache.cayenne.dbsync.merge.factory.MergerTokenFactoryProvider; -import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator; import org.apache.cayenne.dbsync.reverse.db.DbLoader; import org.apache.cayenne.map.DataMap; import org.apache.cayenne.modeler.Application; @@ -107,6 +106,6 @@ public class MigrateAction extends DBWizardAction { DataSource dataSource = connectWizard.getConnectionInfo() .makeDataSource(getApplication().getClassLoadingService()); - return new DbLoader(dataSource.getConnection(), dbAdapter, null, new DefaultObjectNameGenerator()).loadSchemas(); + return DbLoader.loadSchemas(dataSource.getConnection()); } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/72dc1a3b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java ---------------------------------------------------------------------- diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java index 3ef1275..3d2f317 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java @@ -206,9 +206,6 @@ public class DbLoaderHelper { }); } - protected DbLoader createDbLoader(DbImportConfiguration configuration) { - return new DbLoader(connection, adapter, new LoaderDelegate(), configuration.createNameGenerator()); - } private final class LoaderDelegate extends DefaultDbLoaderDelegate { @@ -310,7 +307,7 @@ public class DbLoaderHelper { loadStatusNote = "Loading available catalogs..."; try { - result = createDbLoader(config).loadCatalogs(); + result = DbLoader.loadCatalogs(connection); } catch (Throwable th) { processException(th, "Error Loading Catalogs"); } @@ -328,7 +325,7 @@ public class DbLoaderHelper { loadStatusNote = "Loading available schemas..."; try { - result = createDbLoader(config).loadSchemas(); + result = DbLoader.loadSchemas(connection); } catch (Throwable th) { processException(th, "Error Loading Schemas"); } @@ -394,6 +391,10 @@ public class DbLoaderHelper { targetDataMap, createDbLoader(config)); } + + protected DbLoader createDbLoader(DbImportConfiguration configuration) { + return new DbLoader(connection, adapter, new LoaderDelegate(), configuration.createNameGenerator()); + } } }