Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
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
	}
}

...