public static boolean isTablePresent(String tableName, Metadata metadata) { for ( Table table : metadata.collectTableMappings() ) { if ( tableName.equals( table.getName() ) ) { return true; } } return false; } }
@SuppressWarnings("unchecked") public static boolean isColumnPresent(String tableName, String columnName, Metadata metadata) { for ( Table table : metadata.collectTableMappings() ) { if (tableName.equals( table.getName() ) ) { Iterator<Column> columns = (Iterator<Column>) table.getColumnIterator(); while ( columns.hasNext() ) { Column column = columns.next(); if ( columnName.equals( column.getName() ) ) { return true; } } } } return false; }
@Test @TestForIssue( jiraKey = "HHH-8026" ) public void testUnNamedConstraints() { StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); try { final Metadata metadata = new MetadataSources( ssr ) .addAnnotatedClass( UniqueNoNameA.class ) .addAnnotatedClass( UniqueNoNameB.class ) .buildMetadata(); org.hibernate.mapping.Table tableA = null; org.hibernate.mapping.Table tableB = null; for ( org.hibernate.mapping.Table table : metadata.collectTableMappings() ) { if ( table.getName().equals( "UniqueNoNameA" ) ) { tableA = table; } else if ( table.getName().equals( "UniqueNoNameB" ) ) { tableB = table; } } assertTrue( "Could not find the expected tables.", tableA != null && tableB != null ); assertFalse( tableA.getUniqueKeyIterator().next().getName().equals( tableB.getUniqueKeyIterator().next().getName() ) ); } finally { StandardServiceRegistryBuilder.destroy( ssr ); } }
private List<Table> getTables(Metadata metadata) { List<Table> list = new ArrayList<Table>(); Iterator<Table> iter = metadata.collectTableMappings().iterator(); while(iter.hasNext()) { Table element = iter.next(); list.add(element); } return list; }
private List<Table> getTables(Metadata metadata) { List<Table> list = new ArrayList<Table>(); Iterator<Table> iter = metadata.collectTableMappings().iterator(); while(iter.hasNext()) { Table element = iter.next(); list.add(element); } return list; }
public static Table getTable(Metadata metadata, String tabName) { if (metadata != null) { Iterator<Table> iter = metadata.collectTableMappings().iterator(); while (iter.hasNext()) { Table table = (Table) iter.next(); if (table.getName().equals(tabName)) { return table; } } } return null; }
abstract protected void visit(Table table, Column col, IssueCollector collector);
abstract protected void visit(Table table, Column col, IssueCollector collector);
@Test public void testBasic() throws SQLException { Metadata metadata = MetadataDescriptorFactory .createJdbcDescriptor(null, null, true) .createMetadata(); JUnitUtil.assertIteratorContainsExactly( "There should be " + TABLECOUNT + " tables!", metadata.collectTableMappings().iterator(), TABLECOUNT); Table tab = (Table) metadata.collectTableMappings().iterator().next(); Assert.assertEquals(tab.getColumnSpan(), COLCOUNT+1); }
/** * Generate one file per table with detail information. */ public void generateTablesDetails() { Metadata metadata = getMetadata(); Iterator<Table> tables = metadata.collectTableMappings().iterator(); while (tables.hasNext() ) { Table table = tables.next(); DocFile docFile = docFileManager.getTableDocFile(table); if(docFile!=null) { File file = docFile.getFile(); Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("docFile", docFile); parameters.put("table", table); processTemplate(parameters, FTL_TABLES_TABLE, file); } } }
/** * Generate one file per table with detail information. */ public void generateTablesDetails() { Metadata metadata = getMetadata(); Iterator<Table> tables = metadata.collectTableMappings().iterator(); while (tables.hasNext() ) { Table table = tables.next(); DocFile docFile = docFileManager.getTableDocFile(table); if(docFile!=null) { File file = docFile.getFile(); Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("docFile", docFile); parameters.put("table", table); processTemplate(parameters, FTL_TABLES_TABLE, file); } } }
/** * Create quoted string with schema.table * @param settings Datasource settings * @param conn SQL connection * @return {@link List} with table names * @throws SQLException If an error occurs while checking catalog/schema */ protected List<String> getQuotedSchemaTableNames(Map<String, Object> settings, Connection conn) throws SQLException { String catalog = checkCatalog(conn); String schema = checkSchema((String) settings.get(SCHEMA_KEY), catalog, conn); CustomConfiguration config = getConfig(settings); Iterator<Table> tables = getMetadata(conn, settings).collectTableMappings().iterator(); List<String> names = new LinkedList<String>(); while (tables.hasNext()) { Table table = tables.next(); if (table.isPhysicalTable()) { names.add(table.getQualifiedName(getDialectInternal(), catalog, schema)); } } return names; }
private boolean areSomeTablesPresent(Metadata metadata) { Collection<String> presentTables = new ArrayList<>(); Collection<String> missingTables = new ArrayList<>(); for (Table table : metadata.collectTableMappings()) { String tableName = table.getName(); try (Session session = baseHelper.beginReadOnlyTransaction()) { List<?> result = session.createNativeQuery("select count(*) from " + tableName).list(); LOGGER.debug("Table {} seems to be present; number of records is {}", tableName, result); presentTables.add(tableName); } catch (Throwable t) { LOGGER.debug("Table {} seems to be missing: {}", tableName, t.getMessage(), t); missingTables.add(tableName); } } LOGGER.info("The following midPoint tables are present (not necessarily well-defined): {}", presentTables); LOGGER.info("Couldn't find the following midPoint tables: {}", missingTables); return !presentTables.isEmpty(); }
/** * Create quoted string with schema.table * * @param settings * Datasource settings * @param conn * SQL connection * @return {@link List} with table names * @throws SQLException * If an error occurs while checking catalog/schema */ protected List<String> getQuotedSchemaTableNames(Map<String, Object> settings, Connection conn) throws SQLException { String catalog = checkCatalog(conn); String schema = checkSchema((String) settings.get(SCHEMA_KEY), catalog, conn); CustomConfiguration config = getConfig(settings); Iterator<Table> tables = getMetadata(conn, settings).collectTableMappings().iterator(); List<String> names = new LinkedList<String>(); while (tables.hasNext()) { Table table = tables.next(); if (table.isPhysicalTable()) { names.add(table.getQualifiedName(getDialectInternal(), catalog, schema)); } } return names; }
@Override public boolean checkIfSchemaExists(Map<String, Object> settings) { Connection conn = null; try { /* check if any of the needed tables is existing */ conn = openConnection(settings); Metadata metadata = getMetadata(conn, settings); Iterator<Table> iter = metadata.collectTableMappings().iterator(); String catalog = checkCatalog(conn); String schema = checkSchema((String) settings.get(SCHEMA_KEY), catalog, conn); Set<String> tableNames = getTableNames(conn, catalog, schema); while (iter.hasNext()) { Table table = iter.next(); if (table.isPhysicalTable() && tableNames.contains(table.getName())) { return true; } } return false; } catch (SQLException ex) { throw new ConfigurationError(ex); } finally { close(conn); } }
@Override public void clear(Properties properties) { Map<String, Object> settings = parseDatasourceProperties(properties); CustomConfiguration config = getConfig(settings); Connection conn = null; Statement stmt = null; try { conn = openConnection(settings); Iterator<Table> tables = getMetadata(conn, settings).collectTableMappings().iterator(); stmt = conn.createStatement(); stmt.execute("set referential_integrity false"); while (tables.hasNext()) { Table table = tables.next(); if (table.isPhysicalTable()) { stmt.execute("truncate table " + table.getQuotedName(new GeoDBDialect())); } } stmt.execute("set referential_integrity true"); GeoDB.InitGeoDB(conn); } catch (SQLException ex) { throw new ConfigurationError(ex); } finally { close(stmt); close(conn); } }
/** * Update the unique key constraint names, as per hibernate 2 naming. */ @SuppressWarnings("unchecked") public void updateUniqueKeyConstraints(final Metadata metadata) { for (Table table : metadata.collectTableMappings()) { Iterator<Column> i = table.getColumnIterator(); while (i.hasNext()) { final Column column = i.next(); if (column.isUnique()) { UniqueKey uk = table.getOrCreateUniqueKey(Constraint.generateName("UK_", table, column)); uk.setName(determineUniqueKeyName(table.getName(), column.getName())); } } } }
@Test public void testOverlapping() { OverrideRepository or = new OverrideRepository(); or.addSchemaSelection(new SchemaSelection(null, "OVRTEST")); or.addSchemaSelection(new SchemaSelection(null, null, "MASTER")); or.addSchemaSelection(new SchemaSelection(null, null, "CHILD")); ReverseEngineeringStrategy res = or.getReverseEngineeringStrategy(new DefaultReverseEngineeringStrategy()); Metadata metadata = MetadataDescriptorFactory .createJdbcDescriptor(res, null, true) .createMetadata(); Set<TableIdentifier> tables = new HashSet<TableIdentifier>(); Iterator<Table> iter = metadata.collectTableMappings().iterator(); while(iter.hasNext()) { Table element = iter.next(); boolean added = tables.add(TableIdentifier.create(element)); if(!added) Assert.fail("duplicate table found for " + element); } Assert.assertEquals(4,tables.size()); }
@Test public void testBasic() throws SQLException { JUnitUtil.assertIteratorContainsExactly( "There should be 2 tables!", metadata.collectTableMappings().iterator(), 2); Table table = HibernateUtil.getTable(metadata, JdbcUtil.toIdentifier(this, "B_TAB" ) ); Table table2 = HibernateUtil.getTable(metadata, JdbcUtil.toIdentifier(this, "B2TAB" ) ); Assert.assertNotNull(table); Assert.assertNotNull(table2); Assert.assertEquals(table.getColumnSpan(), 2); Assert.assertEquals(table2.getColumnSpan(), 2); }
protected void cleanUpContext() { if(getProperties()!=null) { iterator = getProperties().entrySet().iterator(); while ( iterator.hasNext() ) { Entry<Object, Object> element = iterator.next(); Object value = transformValue(element.getValue()); String key = element.getKey().toString(); if(key.startsWith(ExporterSettings.PREFIX_KEY)) { getTemplateHelper().removeFromContext(key.substring(ExporterSettings.PREFIX_KEY.length()), value); } getTemplateHelper().removeFromContext(key, value); } } if(getOutputDirectory()!=null) { getTemplateHelper().removeFromContext("outputdir", getOutputDirectory()); } if(getTemplatePath()!=null) { getTemplateHelper().removeFromContext("template_path", getTemplatePath()); } getTemplateHelper().removeFromContext("exporter", this); getTemplateHelper().removeFromContext("artifacts", collector); if(getMetadata() != null) { getTemplateHelper().removeFromContext("md", metadata); getTemplateHelper().removeFromContext("props", getProperties()); getTemplateHelper().removeFromContext("tables", metadata.collectTableMappings()); } getTemplateHelper().removeFromContext("c2h", getCfg2HbmTool()); getTemplateHelper().removeFromContext("c2j", getCfg2JavaTool()); }