1 package org.cacert.gigi;
3 import java.awt.Desktop;
5 import java.io.FileInputStream;
6 import java.io.IOException;
7 import java.io.InputStreamReader;
8 import java.io.PrintWriter;
10 import java.util.LinkedList;
11 import java.util.Properties;
12 import java.util.TreeSet;
14 import org.cacert.gigi.database.DatabaseConnection;
15 import org.cacert.gigi.dbObjects.CertificateProfile;
16 import org.cacert.gigi.dbObjects.CertificateProfile.PropertyTemplate;
18 public class GenerateProfileOverview {
20 public static void main(String[] args) throws IOException {
21 Properties pr = new Properties();
22 try (Reader reader = new InputStreamReader(new FileInputStream("config/gigi.properties"), "UTF-8")) {
25 DatabaseConnection.init(pr);
27 TreeSet<String> pt = new TreeSet<>();
28 TreeSet<String> req = new TreeSet<>();
29 LinkedList<CertificateProfile> cps = new LinkedList<>();
30 for (CertificateProfile cp : CertificateProfile.getAll()) {
32 for (PropertyTemplate p : cp.getTemplates().values()) {
35 req.addAll(cp.getReqireds());
37 try (PrintWriter pw = new PrintWriter("profiles.html", "UTF-8")) {
38 pw.println("<!DOCTYPE html><html><head><title>Profiles</title>");
39 pw.println("<style>.split{background-color:#000;margin:0;cell-spacing:0}td{text-align:center}</style>");
40 pw.println("</head>");
41 pw.println("<body><table border='1'>");
42 pw.println("<tr><td>id</td><td> </td>");
44 pw.println("<th>" + p + "</th>");
46 pw.println("<th class='split'></th>");
47 for (String p : req) {
48 pw.println("<th class='req'>" + p + "</th>");
51 for (CertificateProfile certificateProfile : cps) {
53 pw.println("<td>" + certificateProfile.getId() + "</td>");
54 pw.println("<td>" + certificateProfile.getKeyName() + "</td>");
57 for (PropertyTemplate t : certificateProfile.getTemplates().values()) {
58 if (t.getBase().equals(p)) {
59 pw.println("<td>" + (t.isRequired() ? (t.isMultiple() ? "+" : "y") : (t.isMultiple() ? "*" : "?")) + "</td>");
63 pw.println("<td></td>");
65 pw.println("<td class='split'></td>");
67 for (String p : req) {
68 for (String t : certificateProfile.getReqireds()) {
70 pw.println("<td class='req'>y</td>");
74 pw.println("<td></td>");
78 pw.println("</table></body></html>");
79 Desktop.getDesktop().browse(new File("profiles.html").toURI());