]> WPIA git - gigi.git/commitdiff
Add: Abstracted table markup.
authorJanis Streib <janis@dogcraft.de>
Thu, 26 Jun 2014 23:17:49 +0000 (01:17 +0200)
committerJanis Streib <janis@dogcraft.de>
Thu, 26 Jun 2014 23:17:49 +0000 (01:17 +0200)
src/org/cacert/gigi/output/CertificateTable.java
src/org/cacert/gigi/output/DataTable.java [new file with mode: 0644]

index 413de877b9235bb0988f33fe0ee99b1dfe076cbe..a5c43d853cc708d2942c0a5c71f4dd22357c6715 100644 (file)
@@ -3,53 +3,57 @@ package org.cacert.gigi.output;
 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\">&nbsp;</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();
                }
diff --git a/src/org/cacert/gigi/output/DataTable.java b/src/org/cacert/gigi/output/DataTable.java
new file mode 100644 (file)
index 0000000..8c8b06e
--- /dev/null
@@ -0,0 +1,66 @@
+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("&nbsp;", false);
+               }
+
+       }
+
+}