import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.util.LinkedList;
import java.util.Map;
import org.cacert.gigi.Language;
+import org.cacert.gigi.output.DataTable.Cell;
+import org.cacert.gigi.output.DataTable.EmptyCell;
public class CertificateTable implements Outputable {
String resultSet;
public CertificateTable(String resultSet) {
this.resultSet = resultSet;
}
- private static final String[] columnNames = new String[]{
- "Renew/Revoke/Delete", "Status", "Email Address", "SerialNumber",
- "Revoked", "Expires", "Login"};
@Override
public void output(PrintWriter out, Language l, Map<String, Object> vars) {
ResultSet rs = (ResultSet) vars.get(resultSet);
try {
out.println("<form method=\"post\" action=\"account.php\">");
- out.println("<table align=\"center\" valign=\"middle\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"wrapper\">");
- out.println("<tr>");
- for (String column : columnNames) {
- out.print("<td class=\"DataTD\">");
- out.print(l.getTranslation(column));
- out.println("</td>");
- }
- out.print("<td colspan=\"2\" class=\"DataTD\">");
- out.print(l.getTranslation("Comment *"));
- out.println("</td></tr>");
-
+ final LinkedList<Cell> cells = new LinkedList<>();
rs.beforeFirst();
while (rs.next()) {
// out.println(rs.getString("id"));
- out.print("<tr><td class=\"DataTD\"> </td><td class=\"DataTD\">State</td><td class=\"DataTD\">");
- out.println(rs.getString("CN"));
- out.print("</td><td class=\"DataTD\">");
- out.println(rs.getString("serial"));
- out.print("</td><td class=\"DataTD\">");
+ cells.add(new EmptyCell());
+ cells.add(new Cell("State", false));
+ cells.add(new Cell(rs.getString("CN"), false));
+ cells.add(new Cell(rs.getString("serial"), false));
if (rs.getString("revoked") == null) {
- out.println("N/A");
+ cells.add(new Cell("N/A", false));
} else {
- out.println(rs.getString("revoked"));
+ cells.add(new Cell(rs.getString("revoked"), false));
}
- out.print("</td><td class=\"DataTD\">");
- out.println(rs.getString("expire"));
- out.println("</td><td class=\"DataTD\">a</td><td class=\"DataTD\">a</td></tr>");
+ cells.add(new Cell(rs.getString("expire"), false));
+ cells.add(new Cell(rs.getString("a"), false));
+ cells.add(new Cell(rs.getString("a"), false));
}
- out.println("</table>");
+ DataTable t = new DataTable() {
+
+ @Override
+ protected LinkedList<Cell> getTableContent() {
+ return cells;
+ }
+
+ @Override
+ protected String[] getColumns() {
+ return new String[] { "Renew/Revoke/Delete", "Status",
+ "Email Address", "SerialNumber", "Revoked",
+ "Expires", "Login", "Comment*" };
+ }
+ };
+ t.output(out, l, vars);
+ out.println("</form>");
} catch (SQLException e) {
e.printStackTrace();
}
--- /dev/null
+package org.cacert.gigi.output;
+
+import java.io.PrintWriter;
+import java.util.LinkedList;
+import java.util.Map;
+
+import org.cacert.gigi.Language;
+
+public abstract class DataTable implements Outputable {
+ protected abstract String[] getColumns();
+
+ protected abstract LinkedList<Cell> getTableContent();
+
+ @Override
+ public void output(PrintWriter out, Language l, Map<String, Object> vars) {
+ out.println("<table align=\"center\" valign=\"middle\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"wrapper\">");
+ out.println("<tr>");
+ for (String column : getColumns()) {
+ out.print("<td class=\"DataTD\">");
+ out.print(l.getTranslation(column));
+ out.println("</td>");
+ }
+ out.println("</tr>");
+ LinkedList<Cell> tableContnet = getTableContent();
+ for (int i = 0; i < tableContnet.size() / getColumns().length; i++) {
+ out.println("<tr>");
+ for (int j = 0; j < getColumns().length; j++) {
+ out.println("<td class=\"DataTD\">");
+ Cell current = tableContnet.get((i * getColumns().length) + j);
+ out.print(current.shouldTranslate() ? l.getTranslation(current
+ .getText()) : current.getText());
+ out.print("</td>");
+ }
+ out.println("</tr>");
+ }
+ out.println("</table>");
+ }
+
+ public static class Cell {
+ private String text;
+ private boolean translate;
+
+ public Cell(String text, boolean translate) {
+ this.text = text;
+ this.translate = translate;
+ }
+
+ public boolean shouldTranslate() {
+ return translate;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ }
+
+ public static class EmptyCell extends Cell {
+
+ public EmptyCell() {
+ super(" ", false);
+ }
+
+ }
+
+}