From 9f58a3c856ee774a0e6a157a63298926b553523f Mon Sep 17 00:00:00 2001 From: Janis Streib Date: Sat, 23 Aug 2014 13:57:41 +0200 Subject: [PATCH] ADD: reverese page mapping --- src/org/cacert/gigi/Gigi.java | 46 +++++++++++++------ .../{MenuItem.java => SimpleMenuItem.java} | 4 +- 2 files changed, 33 insertions(+), 17 deletions(-) rename src/org/cacert/gigi/output/{MenuItem.java => SimpleMenuItem.java} (83%) diff --git a/src/org/cacert/gigi/Gigi.java b/src/org/cacert/gigi/Gigi.java index 0fead124..b8f216de 100644 --- a/src/org/cacert/gigi/Gigi.java +++ b/src/org/cacert/gigi/Gigi.java @@ -17,8 +17,8 @@ import org.cacert.gigi.database.DatabaseConnection; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.Form.CSRFException; import org.cacert.gigi.output.Menu; -import org.cacert.gigi.output.MenuItem; import org.cacert.gigi.output.Outputable; +import org.cacert.gigi.output.SimpleMenuItem; import org.cacert.gigi.output.template.Template; import org.cacert.gigi.pages.LoginPage; import org.cacert.gigi.pages.MainPage; @@ -47,32 +47,43 @@ public class Gigi extends HttpServlet { private Template baseTemplate; private HashMap pages = new HashMap(); + + private HashMap reveresePages = new HashMap(); private Menu m; + private static Gigi instance; + public Gigi(Properties conf) { + if (instance != null) { + new IllegalStateException("Multiple Gigi instances!"); + } DatabaseConnection.init(conf); } @Override public void init() throws ServletException { - pages.put("/error", new PageNotFound()); - pages.put("/login", new LoginPage("CACert - Login")); - pages.put("/", new MainPage("CACert - Home")); - pages.put("/secure", new TestSecure()); - pages.put(Verify.PATH, new Verify()); - pages.put(AssurePage.PATH + "/*", new AssurePage()); - pages.put(Certificates.PATH + "/*", new Certificates()); - pages.put(MyDetails.PATH, new MyDetails()); - pages.put(ChangePasswordPage.PATH, new ChangePasswordPage()); - pages.put(RegisterPage.PATH, new RegisterPage()); - pages.put(CertificateAdd.PATH, new CertificateAdd()); - pages.put(MailOverview.DEFAULT_PATH, new MailOverview("My email addresses")); - pages.put(DomainOverview.PATH, new DomainOverview("Domains")); + putPage("/error", new PageNotFound()); + putPage("/login", new LoginPage("CACert - Login")); + putPage("/", new MainPage("CACert - Home")); + putPage("/secure", new TestSecure()); + putPage(Verify.PATH, new Verify()); + putPage(AssurePage.PATH + "/*", new AssurePage()); + putPage(Certificates.PATH + "/*", new Certificates()); + putPage(MyDetails.PATH, new MyDetails()); + putPage(ChangePasswordPage.PATH, new ChangePasswordPage()); + putPage(RegisterPage.PATH, new RegisterPage()); + putPage(CertificateAdd.PATH, new CertificateAdd()); + putPage(MailOverview.DEFAULT_PATH, new MailOverview("My email addresses")); + putPage(DomainOverview.PATH, new DomainOverview("Domains")); baseTemplate = new Template(Gigi.class.getResource("Gigi.templ")); - m = new Menu("Certificates", "cert", new MenuItem(MailOverview.DEFAULT_PATH, "Emails"), new MenuItem("", "Client Certificates"), new MenuItem("", "Domains"), new MenuItem("", "Server Certificates")); + m = new Menu("Certificates", "cert", new SimpleMenuItem(MailOverview.DEFAULT_PATH, "Emails"), new SimpleMenuItem("", "Client Certificates"), new SimpleMenuItem("", "Domains"), new SimpleMenuItem("", "Server Certificates")); super.init(); + } + private void putPage(String path, Page p) { + pages.put(path, p); + reveresePages.put(p, path); } @Override @@ -194,4 +205,9 @@ public class Gigi extends HttpServlet { } return defaultCSP; } + + public static String getPathByPage(Page p) { + return instance.reveresePages.get(p); + } + } diff --git a/src/org/cacert/gigi/output/MenuItem.java b/src/org/cacert/gigi/output/SimpleMenuItem.java similarity index 83% rename from src/org/cacert/gigi/output/MenuItem.java rename to src/org/cacert/gigi/output/SimpleMenuItem.java index fc6be150..95b78c86 100644 --- a/src/org/cacert/gigi/output/MenuItem.java +++ b/src/org/cacert/gigi/output/SimpleMenuItem.java @@ -5,13 +5,13 @@ import java.util.Map; import org.cacert.gigi.localisation.Language; -public class MenuItem implements Outputable, IMenuItem { +public class SimpleMenuItem implements IMenuItem { private final String href; private final String name; - public MenuItem(String href, String name) { + public SimpleMenuItem(String href, String name) { this.href = href; this.name = name; } -- 2.39.2