THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||
---|---|---|
| ||
public JDBCCatalog extends AbstractCatalog { JDBCDialect dialect; Catalog internal; public JDBCCatalog(String catalogName, String defaultDatabase, String userName, String pwd, String baseUrl) { JDBCDialect d = JDBCDialects.get(baseUrl).get(); switch(d) { case postgres: internal = new PostgresJDBCCatalog(...); break; case derby: ... } } void open() { // verify jdbc connection to fail earlier } void close(); Optional<TableFactory> getTableFactory() { return Optional.of(new JDBCTableSourceSinkFactory()); } List<String> listDatabases() { return internal.listDatabases(); } boolean databaseExists(String dbname) { return listDatabases.contains(dbname); } boolean tableExists(ObjectPath path) { databaseExists(path.getDatabaseName()) return listTables().contains(path.getObjectName()); } List<String> listDatabases() { return internal.listDatabases(); } CatalogTable getTable(ObjectPath op) { return internal.getTable(op); } List<String> listTables(String db) { return internal.listTables(db); } } public PostgresJDBCCatalog extends JDBCCatalog { // cannot be instantiated by users protected PostgresJDBCCatalog(String catalogName, String defaultDatabase, String userName, String pwd, String baseUrl) { } boolean databaseExists(String dbname) { // execute and parse result } boolean tableExists(ObjectPath path) { // execute and parse result } List<String> listDatabases() { // execute and parse result } CatalogTable getTable(ObjectPath op) { // execute and parse result // map data types and build catalog table } List<String> listTables() { // execute and parse result } } |
...