1 package org.cacert.gigi.pages;
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.io.InputStreamReader;
6 import java.io.UnsupportedEncodingException;
8 import javax.servlet.ServletRequest;
9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
12 import org.cacert.gigi.Language;
13 import org.cacert.gigi.output.Template;
16 * This class encapsulates a sub page of Gigi. A template residing nearby this
17 * class with name <className>.templ will be loaded automatically.
19 public abstract class Page {
21 private Template defaultTemplate;
23 public Page(String title) {
26 InputStream resource = getClass().getResourceAsStream(getClass().getSimpleName() + ".templ");
27 if (resource != null) {
28 defaultTemplate = new Template(new InputStreamReader(resource, "UTF-8"));
30 } catch (UnsupportedEncodingException e) {
36 * Retrives the default template (<className>.templ) which has already
39 * @return the default template.
41 public Template getDefaultTemplate() {
42 return defaultTemplate;
46 * This method can be overridden to execute code and do stuff before the
47 * default template is applied.
50 * the request to handle.
52 * the response to write to
53 * @return true, iff the request is consumed and the default template should
56 * if output goes wrong.
58 public boolean beforeTemplate(HttpServletRequest req, HttpServletResponse resp) throws IOException {
63 * This method is called to generate the content inside the default
67 * the request to handle.
69 * the response to write to
71 * if output goes wrong.
73 public abstract void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException;
76 * Same as {@link #doGet(HttpServletRequest, HttpServletResponse)} but for
77 * POST requests. By default they are redirected to
78 * {@link #doGet(HttpServletRequest, HttpServletResponse)};
81 * the request to handle.
83 * the response to write to
85 * if output goes wrong.
87 public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
92 * Returns true, iff this page requires login. Default is <code>true</code>
94 * @return iff the page needs login.
96 public boolean needsLogin() {
100 public String getTitle() {
104 public void setTitle(String title) {
108 public static Language getLanguage(ServletRequest req) {
109 return Language.getInstance("de");
112 public static String translate(ServletRequest req, String string) {
113 Language l = getLanguage(req);
114 return l.getTranslation(string);