package jeql.command.io; import jeql.api.table.Table; import jeql.engine.Scope; import jeql.util.SystemUtil; public class HtmlWriterCommand extends TableFileWriterCmd { private boolean isFragment = false; int border = 1; int cellSpacing = 2; int cellPadding = 2; String width = null; public HtmlWriterCommand() { } public void setFragment(boolean isFragment) { this.isFragment = isFragment; } public void setBorder(int border) { this.border = border; } public void setCellSpacing(int cellSpacing) { this.cellSpacing = cellSpacing; } public void setCellPadding(int cellPadding) { this.cellPadding = cellPadding; } public void setWidth(String width) { this.width = width; } public void execute(Scope scope) throws Exception { writeObj(tbl); } private void writeObj(Object obj) throws Exception { if (obj instanceof Table) write((Table) obj); else { writer = getWriter(); writer.write(obj.toString()); writer.write(SystemUtil.LINE_TERM); writer.close(); } } protected void write(Table tbl) throws Exception { HtmlTableTextWriter ttwriter = new HtmlTableTextWriter(); ttwriter.write(getWriter(), (Table) tbl); } class HtmlTableTextWriter extends TableTextWriter { public HtmlTableTextWriter() { if (isFragment) { tableStart = "<table>"; tableEnd = "</table>"; } else { tableStart = "<html>\n<body>\n<table " + tableAttr() + ">"; tableEnd = "</table>\n</body>\n</html>\n"; } rowStart = "<tr>\n"; rowEnd = "</tr>\n"; colStart = " <td>"; colEnd = "</td>\n"; colSep = null; } private String tableAttr() { StringBuilder sb = new StringBuilder(); if (border > 0) sb.append("border='" + border + "' "); sb.append("cellSpacing='" + cellSpacing + "' "); sb.append("cellPadding='" + cellPadding + "' "); if (width != null) sb.append("width='" + width + "' "); return sb.toString(); } } }