]> WPIA git - gigi.git/blob - src/org/cacert/gigi/pages/Page.java
UPD: moved getUser up
[gigi.git] / src / org / cacert / gigi / pages / Page.java
1 package org.cacert.gigi.pages;
2
3 import java.io.IOException;
4 import java.net.URL;
5
6 import javax.servlet.ServletRequest;
7 import javax.servlet.http.HttpServletRequest;
8 import javax.servlet.http.HttpServletResponse;
9
10 import org.cacert.gigi.Language;
11 import org.cacert.gigi.User;
12 import org.cacert.gigi.output.template.Template;
13
14 /**
15  * This class encapsulates a sub page of Gigi. A template residing nearby this
16  * class with name <className>.templ will be loaded automatically.
17  */
18 public abstract class Page {
19
20     private String title;
21
22     private Template defaultTemplate;
23
24     public Page(String title) {
25         this.title = title;
26         URL resource = getClass().getResource(getClass().getSimpleName() + ".templ");
27         if (resource != null) {
28             defaultTemplate = new Template(resource);
29         }
30     }
31
32     /**
33      * Retrieves the default template (<className>.templ) which has
34      * already been loaded.
35      * 
36      * @return the default template.
37      */
38     public Template getDefaultTemplate() {
39         return defaultTemplate;
40     }
41
42     /**
43      * This method can be overridden to execute code and do stuff before the
44      * default template is applied.
45      * 
46      * @param req
47      *            the request to handle.
48      * @param resp
49      *            the response to write to
50      * @return true, if the request is consumed and the default template should
51      *         not be applied.
52      * @throws IOException
53      *             if output goes wrong.
54      */
55     public boolean beforeTemplate(HttpServletRequest req, HttpServletResponse resp) throws IOException {
56         return false;
57     }
58
59     /**
60      * This method is called to generate the content inside the default
61      * template.
62      * 
63      * @param req
64      *            the request to handle.
65      * @param resp
66      *            the response to write to
67      * @throws IOException
68      *             if output goes wrong.
69      */
70     public abstract void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException;
71
72     /**
73      * Same as {@link #doGet(HttpServletRequest, HttpServletResponse)} but for
74      * POST requests. By default they are redirected to
75      * {@link #doGet(HttpServletRequest, HttpServletResponse)};
76      * 
77      * @param req
78      *            the request to handle.
79      * @param resp
80      *            the response to write to
81      * @throws IOException
82      *             if output goes wrong.
83      */
84     public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
85         doGet(req, resp);
86     }
87
88     /**
89      * Returns true, if this page requires login. Default is <code>true</code>
90      * 
91      * @return if the page needs login.
92      */
93     public boolean needsLogin() {
94         return true;
95     }
96
97     public String getTitle() {
98         return title;
99     }
100
101     public void setTitle(String title) {
102         this.title = title;
103     }
104
105     public static Language getLanguage(ServletRequest req) {
106         return Language.getInstance("de");
107     }
108
109     public static String translate(ServletRequest req, String string) {
110         Language l = getLanguage(req);
111         return l.getTranslation(string);
112     }
113
114     public static User getUser(HttpServletRequest req) {
115         return LoginPage.getUser(req);
116     }
117
118 }