package liquibase.dbdoc;
import liquibase.configuration.GlobalConfiguration;
import liquibase.configuration.LiquibaseConfiguration;
import liquibase.structure.DatabaseObject;
import liquibase.util.StringUtils;
import java.io.*;
import java.util.SortedSet;
public class HTMLListWriter {
private File outputDir;
private String directory;
private String filename;
private String title;
public HTMLListWriter(String title, String filename, String subdir, File outputDir) {
this.title = title;
this.outputDir = outputDir;
this.filename = filename;
if (!outputDir.exists()) {
outputDir.mkdir();
}
this.directory = subdir;
}
public void writeHTML(SortedSet objects) throws IOException {
Writer fileWriter = new OutputStreamWriter(new FileOutputStream(new File(outputDir, filename)), LiquibaseConfiguration.getInstance().getConfiguration(GlobalConfiguration.class).getOutputEncoding());
try {
fileWriter.append("<HTML>\n" + "<HEAD>\n" + "<TITLE>\n");
fileWriter.append(title);
fileWriter.append("\n" + "</TITLE>\n" + "<LINK REL =\"stylesheet\" TYPE=\"text/css\" HREF=\"stylesheet.css\" TITLE=\"Style\">\n" + "</HEAD>\n" + "<BODY BGCOLOR=\"white\">\n" + "<FONT size=\"+1\" CLASS=\"FrameHeadingFont\">\n" + "<B>");
fileWriter.append(title);
fileWriter.append("</B></FONT>\n" + "<BR>\n" + "<TABLE BORDER=\"0\" WIDTH=\"100%\" SUMMARY=\"\">" + "<TR>\n" + "<TD NOWRAP><FONT CLASS=\"FrameItemFont\">");
for (Object object : objects) {
fileWriter.append("<A HREF=\"");
fileWriter.append(directory);
fileWriter.append("/");
fileWriter.append(DBDocUtil.toFileName(object.toString().endsWith(".xml") ? object.toString() : object.toString().toLowerCase()));
fileWriter.append(getTargetExtension());
fileWriter.append("\" target=\"objectFrame\">");
fileWriter.append(StringUtils.escapeHtml(object.toString()));
fileWriter.append("</A><BR>\n");
}
fileWriter.append("</FONT></TD>\n" +
"</TR>\n" +
"</TABLE>\n" +
"\n" +
"</BODY>\n" +
"</HTML>");
} finally {
fileWriter.close();
}
}
public String getTargetExtension() {
return ".html";
}
}