private static Iterable<Iterable<SQLAction>> generateImpl(final DatabaseProvider provider, final SchemaConfiguration schemaConfiguration, final NameConverters nameConverters, final boolean executeDestructiveUpdates, Class<? extends RawEntity<?>>... classes) throws SQLException { final DDLTable[] parsedTables = parseDDL(provider, nameConverters, classes); final DDLTable[] readTables = SchemaReader.readSchema(provider, nameConverters, schemaConfiguration); final DDLAction[] actions = SchemaReader.sortTopologically(SchemaReader.diffSchema(provider.getTypeManager(), parsedTables, readTables, provider.isCaseSensitive())); return Iterables.transform(Iterables.filter(ImmutableList.copyOf(actions), new Predicate<DDLAction>() { @Override public boolean apply(final DDLAction input) { switch (input.getActionType()) { case DROP: case ALTER_DROP_COLUMN: return executeDestructiveUpdates; default: return true; } } }), new Function<DDLAction, Iterable<SQLAction>>() { public Iterable<SQLAction> apply(DDLAction from) { return provider.renderAction(nameConverters, from); } }); }
private static Iterable<Iterable<SQLAction>> generateImpl(final DatabaseProvider provider, final SchemaConfiguration schemaConfiguration, final NameConverters nameConverters, final boolean executeDestructiveUpdates, Class<? extends RawEntity<?>>... classes) throws SQLException { final DDLTable[] parsedTables = parseDDL(provider, nameConverters, classes); final DDLTable[] readTables = SchemaReader.readSchema(provider, nameConverters, schemaConfiguration); final DDLAction[] actions = SchemaReader.sortTopologically(SchemaReader.diffSchema(provider.getTypeManager(), parsedTables, readTables, provider.isCaseSensitive())); return Iterables.transform(Iterables.filter(ImmutableList.copyOf(actions), new Predicate<DDLAction>() { @Override public boolean apply(final DDLAction input) { switch (input.getActionType()) { case DROP: case ALTER_DROP_COLUMN: return executeDestructiveUpdates; default: return true; } } }), new Function<DDLAction, Iterable<SQLAction>>() { public Iterable<SQLAction> apply(DDLAction from) { return provider.renderAction(nameConverters, from); } }); }