X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2FPage.java;h=04f1dc67292176643ad43848cee92635be030775;hb=005ed4d2e8fa57b7ede403a310771c9fdf4a9578;hp=cfc58d7a4f4ebde46d74b61e4751d3d0dcafb56c;hpb=06c5d96d7dc2df71a1658e1c7c9e34ad065d10d7;p=gigi.git diff --git a/src/org/cacert/gigi/pages/Page.java b/src/org/cacert/gigi/pages/Page.java index cfc58d7a..04f1dc67 100644 --- a/src/org/cacert/gigi/pages/Page.java +++ b/src/org/cacert/gigi/pages/Page.java @@ -1,28 +1,107 @@ 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 abstract void doGet(HttpServletRequest req, ServletResponse resp) + /** + * 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; + } + + /** + * 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; - public void doPost(HttpServletRequest req, ServletResponse resp) + /** + * 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 true + * + * @return iff the page needs login. + */ + public boolean needsLogin() { + return true; + } + public String getTitle() { return title; } @@ -39,5 +118,4 @@ public abstract class Page { return l.getTranslation(string); } - }