Repository: ignite Updated Branches: refs/heads/ignite-843 b9cd18447 -> e47c26b7b
IGNITE-843 Minor refactoring. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/e47c26b7 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/e47c26b7 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/e47c26b7 Branch: refs/heads/ignite-843 Commit: e47c26b7bece4d33014e88fa6c4f1c5ec83fb8dc Parents: b9cd184 Author: Alexey Kuznetsov <[email protected]> Authored: Mon Aug 24 10:15:14 2015 +0700 Committer: Alexey Kuznetsov <[email protected]> Committed: Mon Aug 24 10:15:14 2015 +0700 ---------------------------------------------------------------------- .../handlers/DatabaseMetadataExtractor.java | 74 +++++++++++++++----- .../ignite/schema/parser/DbMetadataReader.java | 4 +- .../parser/dialect/DatabaseMetadataDialect.java | 2 +- .../parser/dialect/JdbcMetadataDialect.java | 4 +- .../parser/dialect/MySQLMetadataDialect.java | 2 +- .../parser/dialect/OracleMetadataDialect.java | 4 +- .../schema/parser/DatabaseMetadataParser.java | 4 +- 7 files changed, 65 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/e47c26b7/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java ---------------------------------------------------------------------- diff --git a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java index 2bf823c..55e3307 100644 --- a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java +++ b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java @@ -58,23 +58,59 @@ public class DatabaseMetadataExtractor { * @param jdbcDriverCls JDBC driver class. * @param jdbcUrl JDBC URL. * @param jdbcInfo Properties to connect to database. - * @return Collection of tables. + * @return Connection to database. + * @throws SQLException */ - @Remote - public Collection<DbTable> extractMetadata(String jdbcDriverJarPath, String jdbcDriverCls, String jdbcUrl, - Properties jdbcInfo, boolean tblsOnly) throws SQLException { - log.log(Level.INFO, "Collecting database metadata..."); - + private Connection connect(String jdbcDriverJarPath, String jdbcDriverCls, String jdbcUrl, Properties jdbcInfo) throws SQLException { if (!new File(jdbcDriverJarPath).isAbsolute() && driversFolder != null) jdbcDriverJarPath = new File(driversFolder, jdbcDriverJarPath).getPath(); - Connection conn = DbMetadataReader.getInstance().connect(jdbcDriverJarPath, jdbcDriverCls, jdbcUrl, jdbcInfo); + return DbMetadataReader.getInstance().connect(jdbcDriverJarPath, jdbcDriverCls, jdbcUrl, jdbcInfo); + } - Collection<DbTable> metadata = DbMetadataReader.getInstance().extractMetadata(conn, tblsOnly); + /** + * @param jdbcDriverJarPath JDBC driver JAR path. + * @param jdbcDriverCls JDBC driver class. + * @param jdbcUrl JDBC URL. + * @param jdbcInfo Properties to connect to database. + * @return Collection of schema names. + * @throws SQLException + */ + @Remote + public Collection<String> schemas(String jdbcDriverJarPath, String jdbcDriverCls, String jdbcUrl, + Properties jdbcInfo) throws SQLException { + log.log(Level.INFO, "Collecting database schemas..."); + + try (Connection conn = connect(jdbcDriverJarPath, jdbcDriverCls, jdbcUrl, jdbcInfo)) { + Collection<String> schemas = DbMetadataReader.getInstance().schemas(conn); - log.log(Level.INFO, "Collected: " + metadata.size()); + log.log(Level.INFO, "Collected schemas: " + schemas.size()); - return metadata; + return schemas; + } + } + + /** + * @param jdbcDriverJarPath JDBC driver JAR path. + * @param jdbcDriverCls JDBC driver class. + * @param jdbcUrl JDBC URL. + * @param jdbcInfo Properties to connect to database. + * @param schemas List of schema names to process. + * @param tblsOnly If {@code true} then only tables will be processed otherwise views also will be processed. + * @return Collection of tables. + */ + @Remote + public Collection<DbTable> metadata(String jdbcDriverJarPath, String jdbcDriverCls, String jdbcUrl, + Properties jdbcInfo, List<String> schemas, boolean tblsOnly) throws SQLException { + log.log(Level.INFO, "Collecting database metadata..."); + + try (Connection conn = connect(jdbcDriverJarPath, jdbcDriverCls, jdbcUrl, jdbcInfo)) { + Collection<DbTable> metadata = DbMetadataReader.getInstance().metadata(conn, schemas, tblsOnly); + + log.log(Level.INFO, "Collected metadata: " + metadata.size()); + + return metadata; + } } /** @@ -82,17 +118,17 @@ public class DatabaseMetadataExtractor { */ private static class JdbcDriver { /** */ - private final String jdbcDriverClass; - /** */ private final String jdbcDriverJar; + /** */ + private final String jdbcDriverClass; /** - * @param jdbcDriverClass Optional JDBC driver class. * @param jdbcDriverJar File name of driver jar file. + * @param jdbcDriverClass Optional JDBC driver class. */ - public JdbcDriver(String jdbcDriverClass, String jdbcDriverJar) { - this.jdbcDriverClass = jdbcDriverClass; + public JdbcDriver(String jdbcDriverJar, String jdbcDriverClass) { this.jdbcDriverJar = jdbcDriverJar; + this.jdbcDriverClass = jdbcDriverClass; } } @@ -139,15 +175,15 @@ public class DatabaseMetadataExtractor { URL url = new URL(spec); try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()))) { - String jdbcDriverClass = reader.readLine(); + String jdbcDriverCls = reader.readLine(); - res.add(new JdbcDriver(jdbcDriverClass, fileName)); + res.add(new JdbcDriver(fileName, jdbcDriverCls)); - log.log(Level.INFO, "Found: [driver=" + fileName + ", class=" + jdbcDriverClass + "]"); + log.log(Level.INFO, "Found: [driver=" + fileName + ", class=" + jdbcDriverCls + "]"); } } catch (IOException e) { - res.add(new JdbcDriver(null, fileName)); + res.add(new JdbcDriver(fileName, null)); log.log(Level.INFO, "Found: [driver=" + fileName + "]"); log.log(Level.INFO, "Failed to detect driver class: " + e.getMessage()); http://git-wip-us.apache.org/repos/asf/ignite/blob/e47c26b7/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/DbMetadataReader.java ---------------------------------------------------------------------- diff --git a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/DbMetadataReader.java b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/DbMetadataReader.java index eb447b9..61801d0 100644 --- a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/DbMetadataReader.java +++ b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/DbMetadataReader.java @@ -77,7 +77,7 @@ public class DbMetadataReader { * @return List of schema names. * @throws SQLException If schemas loading failed. */ - public List<String> schemas(Connection conn) throws SQLException { + public Collection<String> schemas(Connection conn) throws SQLException { return dialect(conn).schemas(conn); } @@ -88,7 +88,7 @@ public class DbMetadataReader { * @param schemas List of database schemas to process. In case of empty list all schemas will be processed. * @param tblsOnly Tables only flag. */ - public Collection<DbTable> extractMetadata(Connection conn, List<String> schemas, boolean tblsOnly) throws SQLException { + public Collection<DbTable> metadata(Connection conn, List<String> schemas, boolean tblsOnly) throws SQLException { DatabaseMetadataDialect dialect; try { http://git-wip-us.apache.org/repos/asf/ignite/blob/e47c26b7/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/DatabaseMetadataDialect.java ---------------------------------------------------------------------- diff --git a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/DatabaseMetadataDialect.java b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/DatabaseMetadataDialect.java index 9c059b8..b801029 100644 --- a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/DatabaseMetadataDialect.java +++ b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/DatabaseMetadataDialect.java @@ -33,7 +33,7 @@ public abstract class DatabaseMetadataDialect { * @return Collection of schema descriptors. * @throws SQLException If failed to get schemas. */ - public abstract List<String> schemas(Connection conn) throws SQLException; + public abstract Collection<String> schemas(Connection conn) throws SQLException; /** * Gets tables from database. http://git-wip-us.apache.org/repos/asf/ignite/blob/e47c26b7/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java ---------------------------------------------------------------------- diff --git a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java index 1bb6840..73785e8 100644 --- a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java +++ b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/JdbcMetadataDialect.java @@ -63,8 +63,8 @@ public class JdbcMetadataDialect extends DatabaseMetadataDialect { private static final int IDX_ASC_OR_DESC_IDX = 10; /** {@inheritDoc} */ - @Override public List<String> schemas(Connection conn) throws SQLException { - List<String> schemas = new ArrayList<>(); + @Override public Collection<String> schemas(Connection conn) throws SQLException { + Collection<String> schemas = new ArrayList<>(); ResultSet rs = conn.getMetaData().getSchemas(); http://git-wip-us.apache.org/repos/asf/ignite/blob/e47c26b7/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/MySQLMetadataDialect.java ---------------------------------------------------------------------- diff --git a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/MySQLMetadataDialect.java b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/MySQLMetadataDialect.java index b592321..e0f6fe9 100644 --- a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/MySQLMetadataDialect.java +++ b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/MySQLMetadataDialect.java @@ -25,7 +25,7 @@ import java.util.*; */ public class MySQLMetadataDialect extends JdbcMetadataDialect { /** {@inheritDoc} */ - @Override public List<String> schemas(Connection conn) throws SQLException { + @Override public Collection<String> schemas(Connection conn) throws SQLException { List<String> schemas = new ArrayList<>(); ResultSet rs = conn.getMetaData().getCatalogs(); http://git-wip-us.apache.org/repos/asf/ignite/blob/e47c26b7/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java ---------------------------------------------------------------------- diff --git a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java index c569a29..a3cc203 100644 --- a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java +++ b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java @@ -94,8 +94,8 @@ public class OracleMetadataDialect extends DatabaseMetadataDialect { } /** {@inheritDoc} */ - @Override public List<String> schemas(Connection conn) throws SQLException { - List<String> schemas = new ArrayList<>(); + @Override public Collection<String> schemas(Connection conn) throws SQLException { + Collection<String> schemas = new ArrayList<>(); ResultSet rs = conn.getMetaData().getSchemas(); http://git-wip-us.apache.org/repos/asf/ignite/blob/e47c26b7/modules/schema-import/src/main/java/org/apache/ignite/schema/parser/DatabaseMetadataParser.java ---------------------------------------------------------------------- diff --git a/modules/schema-import/src/main/java/org/apache/ignite/schema/parser/DatabaseMetadataParser.java b/modules/schema-import/src/main/java/org/apache/ignite/schema/parser/DatabaseMetadataParser.java index 0a35854..126d2ab 100644 --- a/modules/schema-import/src/main/java/org/apache/ignite/schema/parser/DatabaseMetadataParser.java +++ b/modules/schema-import/src/main/java/org/apache/ignite/schema/parser/DatabaseMetadataParser.java @@ -35,7 +35,7 @@ public class DatabaseMetadataParser { * @throws SQLException If schemas loading failed. */ public static ObservableList<SchemaDescriptor> schemas(Connection conn) throws SQLException { - List<String> dbSchemas = DbMetadataReader.getInstance().schemas(conn); + Collection<String> dbSchemas = DbMetadataReader.getInstance().schemas(conn); List<SchemaDescriptor> uiSchemas = new ArrayList<>(dbSchemas.size()); @@ -60,7 +60,7 @@ public class DatabaseMetadataParser { Map<String, Collection<PojoDescriptor>> childrens = new HashMap<>(); - for (DbTable tbl : DbMetadataReader.getInstance().extractMetadata(conn, schemas, tblsOnly)) { + for (DbTable tbl : DbMetadataReader.getInstance().metadata(conn, schemas, tblsOnly)) { String schema = tbl.schema(); PojoDescriptor parent = parents.get(schema);
