public List<Table> readDatabaseSchema(DatabaseCollector dbs, String catalog, String schema) { return readDatabaseSchema(dbs, catalog, schema, new NoopProgressListener()); }
/** * Read JDBC Metadata from the database. Does not create any classes or other ORM releated structures. * * @param catalog * @param schema * @return * @throws SQLException */ public DatabaseCollector readDatabaseSchema(String catalog, String schema) throws SQLException { // use default from settings if nothing else specified. catalog = catalog!=null ? catalog : properties.getProperty(AvailableSettings.DEFAULT_CATALOG); schema = schema!=null ? schema : properties.getProperty(AvailableSettings.DEFAULT_SCHEMA); JDBCReader reader = JDBCReaderFactory.newJDBCReader(properties,revengStrategy,serviceRegistry); DatabaseCollector dbs = new MappingsDatabaseCollector(metadataCollector, reader.getMetaDataDialect()); reader.readDatabaseSchema(dbs, catalog, schema); return dbs; }
private boolean isTable(Object key) throws HibernateException { // BIG HACK - should probably utilize the table cache before going to the jdbcreader :( if(key instanceof String) { String[] strings = StringHelper.split(".", (String) key); if(strings.length==1) { tableSelector.clearSchemaSelections(); tableSelector.addSchemaSelection( new SchemaSelection(null,null, strings[0]) ); List<?> list = reader.readDatabaseSchema( dbc, null, null ); return !list.isEmpty(); } else if(strings.length==3) { tableSelector.clearSchemaSelections(); tableSelector.addSchemaSelection( new SchemaSelection(strings[0],strings[1], strings[2]) ); List<?> list = reader.readDatabaseSchema( dbc, null, null ); return !list.isEmpty(); } else if (strings.length==2) { tableSelector.clearSchemaSelections(); tableSelector.addSchemaSelection( new SchemaSelection(null,strings[0], strings[1]) ); List<?> list = reader.readDatabaseSchema( dbc, null, null ); return !list.isEmpty(); } } return false; }
public void visit(Table table, IssueCollector pc) { if ( table.isPhysicalTable() ) { setSchemaSelection( table ); List<?> list = reader.readDatabaseSchema( dbc, null, null ); if ( list.isEmpty() ) { pc.reportIssue( new Issue( "SCHEMA_TABLE_MISSING", Issue.HIGH_PRIORITY, "Missing table " + TableNameQualifier.qualify( table.getCatalog(), table .getSchema(), table.getName() ) ) ); return; } else if ( list.size() > 1 ) { pc.reportIssue( new Issue( "SCHEMA_TABLE_MISSING", Issue.NORMAL_PRIORITY, "Found " + list.size() + " tables for " + TableNameQualifier.qualify( table.getCatalog(), table .getSchema(), table.getName() ) ) ); return; } else { currentDbTable = (Table) list.get( 0 ); visitColumns(table,pc); } } else { // log? } }