]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/Page.java
Briefly document "Page"
[gigi.git] / src / org / cacert / gigi / pages / Page.java
index 18eb2944083e858331d2fd375ddb6edd862ff450..04f1dc67292176643ad43848cee92635be030775 100644 (file)
 package org.cacert.gigi.pages;
 
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
 
 import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
+import org.cacert.gigi.Language;
+import org.cacert.gigi.output.Template;
+
+/**
+ * This class encapsulates a sub page of Gigi. A template residing nearby this
+ * class with name <className>.templ will be loaded automatically.
+ */
 public abstract class Page {
        private String title;
+       private Template defaultTemplate;
 
        public Page(String title) {
                this.title = title;
+               try {
+                       InputStream resource = getClass().getResourceAsStream(
+                                       getClass().getSimpleName() + ".templ");
+                       if (resource != null) {
+                               defaultTemplate = new Template(new InputStreamReader(resource,
+                                               "UTF-8"));
+                       }
+               } catch (UnsupportedEncodingException e) {
+                       e.printStackTrace();
+               }
        }
 
-       public void doGet(ServletRequest req, ServletResponse resp)
-                       throws IOException {
-               resp.setContentType("text/html");
+       /**
+        * Retrives the default template (<className>.templ) which has already
+        * been loaded.
+        * 
+        * @return the default template.
+        */
+       public Template getDefaultTemplate() {
+               return defaultTemplate;
+       }
+
+       /**
+        * This method can be overridden to execute code and do stuff before the
+        * default template is applied.
+        * 
+        * @param req
+        *            the request to handle.
+        * @param resp
+        *            the response to write to
+        * @return true, iff the request is consumed and the default template should
+        *         not be applied.
+        * @throws IOException
+        *             if output goes wrong.
+        */
+       public boolean beforeTemplate(HttpServletRequest req,
+                       HttpServletResponse resp) throws IOException {
+               return false;
        }
 
-       public void doPost(ServletRequest req, ServletResponse resp)
+       /**
+        * This method is called to generate the content inside the default
+        * template.
+        * 
+        * @param req
+        *            the request to handle.
+        * @param resp
+        *            the response to write to
+        * @throws IOException
+        *             if output goes wrong.
+        */
+       public abstract void doGet(HttpServletRequest req, HttpServletResponse resp)
+                       throws IOException;
+
+       /**
+        * Same as {@link #doGet(HttpServletRequest, HttpServletResponse)} but for
+        * POST requests. By default they are redirected to
+        * {@link #doGet(HttpServletRequest, HttpServletResponse)};
+        * 
+        * @param req
+        *            the request to handle.
+        * @param resp
+        *            the response to write to
+        * @throws IOException
+        *             if output goes wrong.
+        */
+       public void doPost(HttpServletRequest req, HttpServletResponse resp)
                        throws IOException {
                doGet(req, resp);
        }
 
+       /**
+        * Returns true, iff this page requires login. Default is <code>true</code>
+        * 
+        * @return iff the page needs login.
+        */
+       public boolean needsLogin() {
+               return true;
+       }
+
        public String getTitle() {
                return title;
        }
@@ -29,4 +109,13 @@ public abstract class Page {
        public void setTitle(String title) {
                this.title = title;
        }
+       public static Language getLanguage(ServletRequest req) {
+               return Language.getInstance("de");
+       }
+
+       public static String translate(ServletRequest req, String string) {
+               Language l = getLanguage(req);
+               return l.getTranslation(string);
+       }
+
 }