package liquibase.dbdoc;
import liquibase.change.Change;
import liquibase.database.Database;
import liquibase.database.structure.Column;
import liquibase.database.structure.Table;
import liquibase.database.typeconversion.TypeConverterFactory;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class TableWriter extends HTMLWriter {
public TableWriter(File rootOutputDir, Database database) {
super(new File(rootOutputDir, "tables"), database);
}
@Override
protected String createTitle(Object object) {
return "Changes affecting table \""+object.toString() + "\"";
}
@Override
protected void writeCustomHTML(FileWriter fileWriter, Object object, List<Change> changes, Database database) throws IOException {
writeColumns(fileWriter, ((Table) object), database);
}
private void writeColumns(FileWriter fileWriter, Table table, Database database) throws IOException {
List<List<String>> cells = new ArrayList<List<String>>();
for (Column column : table.getColumns()) {
cells.add(Arrays.asList(TypeConverterFactory.getInstance().findTypeConverter(database).convertToDatabaseTypeString(column, database),
"<A HREF=\"../columns/" + table.getName().toLowerCase() + "." + column.getName().toLowerCase() + ".html" + "\">" + column.getName() + "</A>"));
//todo: add foreign key info to columns?
}
writeTable("Current Columns", cells, fileWriter);
}
}