Add method to parse an identity from an arbitrary parameter.
[WoTNS.git] / src / main / java / net / pterodactylus / wotns / ui / web / BasicPage.java
index ff5ffd2..2921c7e 100644 (file)
 
 package net.pterodactylus.wotns.ui.web;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
+import java.util.Arrays;
+import java.util.Collection;
 
 import net.pterodactylus.util.template.Template;
 import net.pterodactylus.util.template.TemplateContext;
+import net.pterodactylus.util.web.Method;
 import net.pterodactylus.wotns.freenet.wot.IdentityManager;
 import net.pterodactylus.wotns.freenet.wot.OwnIdentity;
 import net.pterodactylus.wotns.web.FreenetRequest;
@@ -37,35 +36,66 @@ import net.pterodactylus.wotns.web.FreenetTemplatePage;
 public class BasicPage extends FreenetTemplatePage {
 
        protected final WebInterface webInterface;
+
        protected final IdentityManager identityManager;
 
-       public BasicPage(WebInterface webInterface, String path, Template template) {
+       private final String title;
+
+       public BasicPage(WebInterface webInterface, String path, String title, Template template) {
                super(path, webInterface.getTemplateContextFactory(), template, "noPermission.html");
                this.webInterface = webInterface;
                this.identityManager = webInterface.getWoTNSPlugin().getIdentityManager();
+               this.title = title;
        }
 
        //
        // PROTECTED METHODS
        //
 
+       protected OwnIdentity getOwnIdentity(FreenetRequest request) {
+               return getOwnIdentity(request, "ownIdentity");
+       }
+
+       protected OwnIdentity getOwnIdentity(FreenetRequest request, String parameterName) {
+               if (request.getMethod() == Method.POST) {
+                       String ownIdentityId = request.getHttpRequest().getPartAsStringFailsafe(parameterName, 43);
+                       return identityManager.getOwnIdentity(ownIdentityId);
+               } else if (request.getMethod() == Method.GET) {
+                       String ownIdentityId = request.getHttpRequest().getParam(parameterName);
+                       return identityManager.getOwnIdentity(ownIdentityId);
+               }
+               return null;
+       }
+
+       //
+       // FREENETTEMPLATEPAGE METHODS
+       //
+
        /**
         * {@inheritDoc}
         */
        @Override
-       protected void processTemplate(FreenetRequest request, TemplateContext templateContext) throws RedirectException {
-               super.processTemplate(request, templateContext);
-
-               List<OwnIdentity> ownIdentities = new ArrayList<OwnIdentity>(webInterface.getWoTNSPlugin().getIdentityManager().getAllOwnIdentities());
-               Collections.sort(ownIdentities, new Comparator<OwnIdentity>() {
+       protected String getPageTitle(FreenetRequest request) {
+               return title;
+       }
 
-                       @Override
-                       public int compare(OwnIdentity leftOwnIdentity, OwnIdentity rightOwnIdentity) {
-                               return leftOwnIdentity.getNickname().compareTo(rightOwnIdentity.getNickname());
-                       }
-               });
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       protected Collection<String> getStyleSheets() {
+               return Arrays.asList("css/main.css");
+       }
 
-               templateContext.set("ownIdentities", ownIdentities);
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       protected void processTemplate(FreenetRequest request, TemplateContext templateContext) throws RedirectException {
+               super.processTemplate(request, templateContext);
+               templateContext.set("request", request.getHttpRequest());
+               templateContext.set("ownIdentities", identityManager.getAllOwnIdentities());
                templateContext.set("formPassword", webInterface.getWoTNSPlugin().getToadletContainer().getFormPassword());
        }
+
 }