package com.zendesk.maxwell.schema.ddl; import com.fasterxml.jackson.annotation.JsonProperty; import com.zendesk.maxwell.MaxwellFilter; import com.zendesk.maxwell.schema.Database; import com.zendesk.maxwell.schema.Schema; import com.zendesk.maxwell.schema.Table; public class ResolvedTableAlter extends ResolvedSchemaChange { public String database; public String table; @JsonProperty("old") public Table oldTable; @JsonProperty("def") public Table newTable; public ResolvedTableAlter() { } public ResolvedTableAlter(String database, String table, Table oldTable, Table newTable) { this(); this.database = database; this.table = table; this.oldTable = oldTable; this.newTable = newTable; } @Override public void apply(Schema schema) throws InvalidSchemaError { Database oldDatabase = schema.findDatabaseOrThrow(this.database); Table table = oldDatabase.findTableOrThrow(this.table); Database newDatabase; if ( this.database.equals(newTable.database) ) newDatabase = oldDatabase; else newDatabase = schema.findDatabaseOrThrow(newTable.database); oldDatabase.removeTable(this.table); newDatabase.addTable(newTable); } @Override public String databaseName() { return database; } @Override public String tableName() { return table; } @Override public boolean shouldOutput(MaxwellFilter filter) { return MaxwellFilter.matches(filter, database, oldTable.getName()) && MaxwellFilter.matches(filter, database, newTable.getName()); } }