package ca.sqlpower.sql;
import java.io.PrintWriter;
import java.sql.SQLException;
/**
* WebResultFormFormatter exists in order to format WebResultSets into
* a set of HTML form elements. You may call formatToStream on the
* same instance as many times as you like; the output settings will
* remain in effect until you change them.
*
* @author Jonathan Fuerth
* @version $Id$
*/
public class WebResultFormFormatter extends WebResultFormatter {
private int numHTMLCols;
public WebResultFormFormatter() {
super();
numHTMLCols=3;
moneyFormatter=new ca.sqlpower.util.NaanSafeNumberFormat("#0.00");
numberFormatter=new ca.sqlpower.util.NaanSafeNumberFormat("#.#");
}
public void setNumHTMLCols(int numCols) {
numHTMLCols=numCols;
}
public int getNumHTMLCols() {
return numHTMLCols;
}
public void formatToStream(WebResultSet wrs, PrintWriter out)
throws SQLException, NoRowidException {
int numCols=wrs.getColumnCount();
int cell=0, col=0;
StringBuffer contents=new StringBuffer(60);
StringBuffer align=new StringBuffer(10);
StringBuffer label=new StringBuffer(20);
if(!wrs.next()) {
return;
}
out.println("<table>");
out.println(" <tr>");
do {
contents.setLength(0);
align.setLength(0);
label.setLength(0);
try {
getColumnFormatted(wrs, cell+1, contents, align);
label.append(wrs.getColumnLabel(cell+1));
} catch(ColumnNotDisplayableException e) {
cell++;
continue;
}
out.println(" <td align=\"right\" class=\"searchForm\">");
out.println(beautifyHeading(label.toString()));
out.println(" </td>");
out.println(" <td>");
switch(wrs.getColumnType(cell+1)) {
case FieldTypes.PASSWORD:
out.print(" <input type=\"password\" length=\"30\" name=\"");
out.print(label);
out.print("\" />");
break;
case FieldTypes.BOOLEAN:
out.print(" <input type=\"checkbox\" name=\"");
out.print(label);
out.print("\" ");
if(contents.toString().equals("True")) {
out.print("checked=\"checked\"");
}
out.print(" />");
break;
default:
out.print(" <input type=\"text\" length=\"30\" name=\"");
out.print(label);
out.print("\" value=\"");
out.print(contents.toString());
out.println("\" />");
break;
}
out.println(" </td>");
if(col==numHTMLCols-1) {
col=0;
out.println(" </tr>");
out.println(" <tr>");
} else {
col++;
}
cell++;
} while(cell<numCols);
out.println(" </tr>");
out.println("</table>");
out.flush();
}
}