1 package liquibase.dbdoc;
2
3 import liquibase.change.Change;
4 import liquibase.database.Database;
5 import liquibase.database.structure.Column;
6 import liquibase.database.structure.Table;
7 import liquibase.database.typeconversion.TypeConverterFactory;
8
9 import java.io.File;
10 import java.io.FileWriter;
11 import java.io.IOException;
12 import java.util.ArrayList;
13 import java.util.Arrays;
14 import java.util.List;
15
16 public class TableWriter extends HTMLWriter {
17
18 public TableWriter(File rootOutputDir, Database database) {
19 super(new File(rootOutputDir, "tables"), database);
20 }
21
22 @Override
23 protected String createTitle(Object object) {
24 return "Changes affecting table \"" + object.toString() + "\"";
25 }
26
27 @Override
28 protected void writeCustomHTML(FileWriter fileWriter, Object object, List<Change> changes, Database database)
29 throws IOException {
30 writeColumns(fileWriter, ((Table) object), database);
31 }
32
33 private void writeColumns(FileWriter fileWriter, Table table, Database database) throws IOException {
34 List<List<String>> cells = new ArrayList<List<String>>();
35
36 for (Column column : table.getColumns()) {
37 cells.add(Arrays.asList(TypeConverterFactory.getInstance().findTypeConverter(database)
38 .convertToDatabaseTypeString(column, database),
39 "<A HREF=\"../columns/" + table.getName().toLowerCase() + "." + column.getName().toLowerCase()
40 + ".html" + "\">" + column.getName() + "</A>"));
41
42 }
43
44 writeTable("Current Columns", cells, fileWriter);
45
46 }
47 }