private static DDLTable readTable(DatabaseMetaDataReader databaseMetaDataReader, DatabaseMetaData databaseMetaData, String tableName, boolean includeForeignKeys) { DDLTable table = new DDLTable(); table.setName(tableName); final List<DDLField> fields = readFields(databaseMetaDataReader, databaseMetaData, tableName); table.setFields(fields.toArray(new DDLField[fields.size()])); if (includeForeignKeys) { final List<DDLForeignKey> foreignKeys = readForeignKeys(databaseMetaDataReader, databaseMetaData, tableName); table.setForeignKeys(foreignKeys.toArray(new DDLForeignKey[foreignKeys.size()])); } final List<DDLIndex> indexes = readIndexes(databaseMetaDataReader, databaseMetaData, tableName); table.setIndexes(indexes.toArray(new DDLIndex[indexes.size()])); return table; }
protected Iterable<DDLForeignKey> findForeignKeysForField(DDLTable table, final DDLField field) { return Iterables.filter(newArrayList(table.getForeignKeys()), new Predicate<DDLForeignKey>() { @Override public boolean apply(DDLForeignKey fk) { return fk.getField().equals(field.getName()); } }); }
private Iterable<DDLIndex> findIndexesForField(final DDLTable table, final DDLField field) { return Stream.of(table.getIndexes()) .filter(index -> index.containsFieldWithName(field.getName())) .filter(index -> hasIndex(table.getName(), index.getIndexName())) .collect(Collectors.toList()); }
@Override public String toString() { return getName(); }
final String tableName = transform(table.getName(), caseSensitive); from.put(tableName, table); final String tableName = transform(table.getName(), caseSensitive); onto.put(tableName, table); final String tableName = transform(table.getName(), caseSensitive); if (onto.containsKey(tableName)) { alterTables.add(table); String tableName = transform(table.getName(), caseSensitive); for (DDLIndex index : table.getIndexes()) { DDLAction indexAction = new DDLAction(DDLActionType.CREATE_INDEX); indexAction.setIndex(index); dropKeys.addAll(Arrays.asList(table.getForeignKeys())); for (DDLForeignKey fKey : alterTable.getForeignKeys()) { if (equals(fKey.getTable(), table.getName(), caseSensitive)) { dropKeys.add(fKey); final String s = fromTable.getName(); String tableName = transform(s, caseSensitive); for (DDLField field : fromTable.getFields()) { String fieldName = transform(field.getName(), caseSensitive); for (DDLField field : ontoTable.getFields()) {
if ((key.getTable().equals(action.getTable().getName()) && key.getForeignField().equals(action.getField().getName())) || (key.getDomesticTable().equals(action.getTable().getName()) && key.getField().equals(action.getField().getName()))) { dependencies.add(depAction); if ((key.getTable().equals(action.getTable().getName()) && key.getForeignField().equals(action.getField().getName())) || (key.getDomesticTable().equals(action.getTable().getName()) && key.getField().equals(action.getField().getName()))) { dependencies.add(depAction); if ((depAction.getTable().equals(action.getTable()) && depAction.getField().equals(action.getField())) || (depAction.getTable().equals(action.getTable()) && depAction.getField().equals(action.getOldField()))) { dependencies.add(depAction); if (key.getTable().equals(action.getTable().getName()) || key.getDomesticTable().equals(action.getTable().getName())) { dependencies.add(depAction); if (depAction.getTable().equals(action.getTable())) { dependencies.add(depAction); if (depAction.getTable().equals(action.getTable())) { dependencies.add(depAction); for (DDLForeignKey key : action.getTable().getForeignKeys()) { for (DDLAction depAction : creates) { if (depAction != action && depAction.getTable().getName().equals(key.getTable())) { dependencies.add(depAction); if (depAction.getTable().getName().equals(key.getTable()) && depAction.getField().getName().equals(key.getForeignField())) { dependencies.add(depAction);
protected final Iterable<SQLAction> renderFields(DDLTable table, Predicate<DDLField> filter, Function<DDLField, Iterable<SQLAction>> render) { final Iterable<DDLField> fields = Lists.newArrayList(table.getFields()); return concat(transform(filter(fields, filter), render)); }
private Iterable<SQLAction> renderDropTableActions(NameConverters nameConverters, DDLTable table) { ImmutableList.Builder<SQLAction> ret = ImmutableList.builder(); for (DDLIndex index : table.getIndexes()) { final SQLAction sqlAction = renderDropIndex(nameConverters.getIndexNameConverter(), index); if (sqlAction != null) { ret.add(sqlAction); } } ret.addAll(renderDropAccessories(nameConverters, table)); ret.add(renderDropTableStatement(table)); return ret.build(); }
@Override public boolean equals(Object obj) { if (obj instanceof DDLAction) { DDLAction action = (DDLAction) obj; if (action == this) { return true; } if ((action.getTable() == null || action.getTable().equals(table)) && (action.getActionType() == actionType) && (action.getOldField() == null || action.getOldField().equals(oldField)) && (action.getField() == null || action.getField().equals(field)) && (action.getKey() == null || action.getKey().equals(key)) && (action.getIndex() == null || action.getIndex().equals(index)) && (action.getValues() == null || Arrays.equals(action.getValues(), values))) { return true; } return false; } return super.equals(obj); } }
@Override public int hashCode() { int back = 0; if (actionType != null) { back += actionType.hashCode(); } if (table != null) { back += table.hashCode(); } if (oldField != null) { back += oldField.hashCode(); } if (field != null) { back += field.hashCode(); } if (key != null) { back += key.hashCode(); } if (index != null) { back += index.hashCode(); } if (values != null) { back += Arrays.hashCode(values); } back %= 2 << 15; return back; }
@Override public String toString() { return getName(); }
final String tableName = transform(table.getName(), caseSensitive); from.put(tableName, table); final String tableName = transform(table.getName(), caseSensitive); onto.put(tableName, table); final String tableName = transform(table.getName(), caseSensitive); if (onto.containsKey(tableName)) { alterTables.add(table); String tableName = transform(table.getName(), caseSensitive); for (DDLIndex index : table.getIndexes()) { DDLAction indexAction = new DDLAction(DDLActionType.CREATE_INDEX); indexAction.setIndex(index); dropKeys.addAll(Arrays.asList(table.getForeignKeys())); for (DDLForeignKey fKey : alterTable.getForeignKeys()) { if (equals(fKey.getTable(), table.getName(), caseSensitive)) { dropKeys.add(fKey); final String s = fromTable.getName(); String tableName = transform(s, caseSensitive); for (DDLField field : fromTable.getFields()) { String fieldName = transform(field.getName(), caseSensitive); for (DDLField field : ontoTable.getFields()) {
if ((key.getTable().equals(action.getTable().getName()) && key.getForeignField().equals(action.getField().getName())) || (key.getDomesticTable().equals(action.getTable().getName()) && key.getField().equals(action.getField().getName()))) { dependencies.add(depAction); if ((key.getTable().equals(action.getTable().getName()) && key.getForeignField().equals(action.getField().getName())) || (key.getDomesticTable().equals(action.getTable().getName()) && key.getField().equals(action.getField().getName()))) { dependencies.add(depAction); if ((depAction.getTable().equals(action.getTable()) && depAction.getField().equals(action.getField())) || (depAction.getTable().equals(action.getTable()) && depAction.getField().equals(action.getOldField()))) { dependencies.add(depAction); if (key.getTable().equals(action.getTable().getName()) || key.getDomesticTable().equals(action.getTable().getName())) { dependencies.add(depAction); if (depAction.getTable().equals(action.getTable())) { dependencies.add(depAction); if (depAction.getTable().equals(action.getTable())) { dependencies.add(depAction); for (DDLForeignKey key : action.getTable().getForeignKeys()) { for (DDLAction depAction : creates) { if (depAction != action && depAction.getTable().getName().equals(key.getTable())) { dependencies.add(depAction); if (depAction.getTable().getName().equals(key.getTable()) && depAction.getField().getName().equals(key.getForeignField())) { dependencies.add(depAction);
private Iterable<DDLIndex> findIndexesForField(final DDLTable table, final DDLField field) { return Stream.of(table.getIndexes()) .filter(index -> index.containsFieldWithName(field.getName())) .filter(index -> hasIndex(table.getName(), index.getIndexName())) .collect(Collectors.toList()); }
protected final Iterable<SQLAction> renderFields(DDLTable table, Predicate<DDLField> filter, Function<DDLField, Iterable<SQLAction>> render) { final Iterable<DDLField> fields = Lists.newArrayList(table.getFields()); return concat(transform(filter(fields, filter), render)); }
private Iterable<SQLAction> renderDropTableActions(NameConverters nameConverters, DDLTable table) { ImmutableList.Builder<SQLAction> ret = ImmutableList.builder(); for (DDLIndex index : table.getIndexes()) { final SQLAction sqlAction = renderDropIndex(nameConverters.getIndexNameConverter(), index); if (sqlAction != null) { ret.add(sqlAction); } } ret.addAll(renderDropAccessories(nameConverters, table)); ret.add(renderDropTableStatement(table)); return ret.build(); }
@Override public boolean equals(Object obj) { if (obj instanceof DDLAction) { DDLAction action = (DDLAction) obj; if (action == this) { return true; } if ((action.getTable() == null || action.getTable().equals(table)) && (action.getActionType() == actionType) && (action.getOldField() == null || action.getOldField().equals(oldField)) && (action.getField() == null || action.getField().equals(field)) && (action.getKey() == null || action.getKey().equals(key)) && (action.getIndex() == null || action.getIndex().equals(index)) && (action.getValues() == null || Arrays.equals(action.getValues(), values))) { return true; } return false; } return super.equals(obj); } }
@Override public int hashCode() { int back = 0; if (actionType != null) { back += actionType.hashCode(); } if (table != null) { back += table.hashCode(); } if (oldField != null) { back += oldField.hashCode(); } if (field != null) { back += field.hashCode(); } if (key != null) { back += key.hashCode(); } if (index != null) { back += index.hashCode(); } if (values != null) { back += Arrays.hashCode(values); } back %= 2 << 15; return back; }