-import java.io.*;
-import java.util.*;
-import java.net.*;
-import java.lang.reflect.*;
-import javax.servlet.*;
-import javax.servlet.http.*;
-import javax.servlet.UnavailableException;
-import java.sql.*;
-
-import freemarker.template.*;
-import mir.misc.*;
+import freemarker.template.SimpleHash;
+import freemarker.template.SimpleScalar;
+import mir.misc.HTMLParseException;
+import mir.misc.HTMLTemplateProcessor;
+import mir.misc.MirConfig;
+import mir.misc.StringUtil;
import mir.servlet.*;
-import mir.storage.StorageObjectException;
+import mircoders.entity.EntityUsers;
+import mircoders.module.ModuleMessage;
+import mircoders.module.ModuleUsers;
+import mircoders.storage.DatabaseMessages;
+import mircoders.storage.DatabaseUsers;
-import mircoders.servlet.*;
-import mircoders.module.*;
-import mircoders.entity.*;
-import mircoders.storage.*;
+import javax.servlet.ServletException;
+import javax.servlet.UnavailableException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.lang.reflect.Method;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Locale;
/**
* Mir.java - main servlet, that dispatches to servletmodules
public class Mir extends AbstractServlet {
- private static ModuleUsers usersModule=null;
- private static ModuleMessage messageModule=null;
- private final static HashMap servletModuleInstanceHash = new HashMap();
-
- public HttpSession session;
-
- public void doGet(HttpServletRequest req, HttpServletResponse res)
- throws ServletException, IOException {
- doPost(req,res);
- }
-
- public void doPost(HttpServletRequest req, HttpServletResponse res)
- throws ServletException, IOException, UnavailableException {
+ private static ModuleUsers usersModule = null;
+ private static ModuleMessage messageModule = null;
+ private final static HashMap servletModuleInstanceHash = new HashMap();
- long startTime = System.currentTimeMillis();
- long sessionConnectTime=0;
- String http="";
+ public HttpSession session;
- // get the configration
- if(getServletContext().getAttribute("mir.confed") == null) {
- getConfig(req);
+ public void doGet(HttpServletRequest req, HttpServletResponse res)
+ throws ServletException, IOException {
+ doPost(req, res);
}
- MirConfig.setServletName(getServletName());
- session = req.getSession(true);
+ public void doPost(HttpServletRequest req, HttpServletResponse res)
+ throws ServletException, IOException, UnavailableException {
- if (req.getServerPort() == 443) http="https"; else http="http";
- res.setContentType("text/html");
- String moduleName = req.getParameter("module");
+ long startTime = System.currentTimeMillis();
+ long sessionConnectTime = 0;
+ String http = "";
- if(session.getAttribute("Language")==null){
- setLanguage(session,getAcceptLanguage(req));
- }
+ // get the configration
+ if (getServletContext().getAttribute("mir.confed") == null) {
+ getConfig(req);
+ }
+ MirConfig.setServletName(getServletName());
+
+ session = req.getSession(true);
+
+ if (req.getServerPort() == 443) http = "https"; else http = "http";
+ res.setContentType("text/html");
+ String moduleName = req.getParameter("module");
+
+ checkLanguage(session, req);
+
+ /** @todo for cleanup and readability this should be moved to
+ * method loginIfNecessary() */
+
+ // Authentifizierung
+ if (moduleName != null && moduleName.equals("login")) {
+ String user = req.getParameter("login");
+ String passwd = req.getParameter("password");
+ theLog.printDebugInfo("--login: evaluating for user: " + user);
+ EntityUsers userEntity = allowedUser(user, passwd);
+ if (userEntity == null) {
+ // login failed: redirecting to login
+ theLog.printWarning("--login: failed!");
+ _sendLoginPage(res, req, res.getWriter());
+ return;
+ }
+ else {
+ // login successful
+
+ theLog.printInfo("--login: successful! setting uid: " + userEntity.getId());
+ session.setAttribute("login.uid", userEntity);
+ theLog.printDebugInfo("--login: trying to retrieve login.target");
+ String target = (String) session.getAttribute("login.target");
+
+ if (target != null) {
+ theLog.printDebugInfo("Redirect: " + target);
+ int serverPort = req.getServerPort();
+ String redirect = "";
+ String redirectString = "";
+
+
+ if (serverPort == 80) {
+ redirect = res.encodeURL(http + "://" + req.getServerName() + target);
+ redirectString = "<html><head><meta http-equiv=refresh content=\"1;URL="
+ + redirect
+ + "\"></head><body>going <a href=\"" + redirect + "\">Mir</a></body></html>";
+ }
+ else {
+ redirect = res.encodeURL(http + "://" + req.getServerName() + ":" + req.getServerPort() + target);
+ redirectString = "<html><head><meta http-equiv=refresh content=\"1;URL="
+ + redirect
+ + "\"></head><body>going <a href=\"" + redirect + "\">Mir</a></body></html>";
+ }
+ res.getWriter().println(redirectString);
+
+
+ //res.sendRedirect(redirect);
+
+ }
+ else {
+ // redirecting to default target
+ theLog.printDebugInfo("--login: no target - redirecting to default");
+ _sendStartPage(res, req, res.getWriter(), userEntity);
+ }
+ return;
+ } // if login succesful
+ } // if login
+
+ if (moduleName != null && moduleName.equals("logout")) {
+ theLog.printDebugInfo("--logout");
+ session.invalidate();
+
+ //session = req.getSession(true);
+ //checkLanguage(session, req);
+ _sendLoginPage(res, req, res.getWriter());
+ return;
+ }
- /** @todo for cleanup and readability this should be moved to
- * method loginIfNecessary() */
-
- // Authentifizierung
- if (moduleName!=null && moduleName.equals("login")) {
- String user=req.getParameter("login");
- String passwd= req.getParameter("password");
- String lang = req.getParameter("lang");
- theLog.printDebugInfo("--login: evaluating for user: "+user);
- EntityUsers userEntity = allowedUser(user,passwd);
- if (userEntity==null) {
- // login failed: redirecting to login
- theLog.printWarning("--login: failed!");
- _sendLoginPage(res,req,res.getWriter());
- return;
- } else {
- // login successful
-
- //if accept-language!=selected language change language
- if(!getLanguage(req,session).equals(lang)){
- setLanguage(session,lang);
+ // Check if authed!
+ EntityUsers userEntity = (EntityUsers) session.getAttribute("login.uid");
+ if (userEntity == null) {
+ // redirect to loginpage
+ String redirectString = req.getRequestURI();
+ String queryString = req.getQueryString();
+ if (queryString != null && !queryString.equals("")) {
+ redirectString += "?" + req.getQueryString();
+ theLog.printDebugInfo("STORING: " + redirectString);
+ session.setAttribute("login.target", redirectString);
+ }
+ _sendLoginPage(res, req, res.getWriter());
+ return;
}
- theLog.printInfo("--login: successful! setting uid: " + userEntity.getId());
- session.setAttribute("login.uid", userEntity);
- theLog.printDebugInfo("--login: trying to retrieve login.target");
- String target = (String)session.getAttribute("login.target");
-
- if (target != null) {
- theLog.printDebugInfo("Redirect: "+target);
- int serverPort = req.getServerPort();
- String redirect = "";
- String redirectString ="";
-
-
- if(serverPort==80){
- redirect=res.encodeURL(http + "://" + req.getServerName() + target);
- redirectString = "<html><head><meta http-equiv=refresh content=\"1;URL="
- + redirect
- + "\"></head><body>going <a href=\"" + redirect + "\">Mir</a></body></html>";
- } else {
- redirect=res.encodeURL(http + "://" + req.getServerName() + ":" +req.getServerPort() + target);
- redirectString = "<html><head><meta http-equiv=refresh content=\"1;URL="
- + redirect
- + "\"></head><body>going <a href=\"" + redirect + "\">Mir</a></body></html>";
- }
- res.getWriter().println(redirectString);
-
-
- //res.sendRedirect(redirect);
-
- } else {
- // redirecting to default target
- theLog.printDebugInfo("--login: no target - redirecting to default");
- _sendStartPage(res,req,res.getWriter(),userEntity);
+ // If no module is specified goto standard startpage
+ if (moduleName == null || moduleName.equals("")) {
+ theLog.printDebugInfo("no module: redirect to standardpage");
+ _sendStartPage(res, req, res.getWriter(), userEntity);
+ return;
}
- return;
- } // if login succesful
- } // if login
-
- if (moduleName!=null && moduleName.equals("logout")) {
- theLog.printDebugInfo("--logout");
- session.invalidate();
- _sendLoginPage(res,req,res.getWriter());
- return;
- }
+ // end of auth
- // Check if authed!
- EntityUsers userEntity = (EntityUsers)session.getAttribute("login.uid");
- if (userEntity == null) {
- // redirect to loginpage
- String redirectString = req.getRequestURI();
- String queryString = req.getQueryString();
- if (queryString!=null && !queryString.equals("")) {
- redirectString += "?" + req.getQueryString();
- theLog.printDebugInfo("STORING: " + redirectString);
- session.setAttribute("login.target", redirectString);
- }
- _sendLoginPage(res,req,res.getWriter());
- return;
- }
+ // From now on regular dispatching...
+ try {
+ // get servletmodule by parameter and continue with dispacher
+ ServletModule smod = getServletModuleForName(moduleName);
+ ServletModuleDispatch.dispatch(smod, req, res);
+ }
+ catch (ServletModuleException e) {
+ handleError(req, res, res.getWriter(),
+ "ServletException in Module " + moduleName + " -- " + e.toString());
+ }
+ catch (ServletModuleUserException e) {
+ handleUserError(req, res, res.getWriter(), "User error" + e.toString());
+ }
- // If no module is specified goto standard startpage
- if (moduleName == null || moduleName.equals("")) {
- theLog.printDebugInfo("no module: redirect to standardpage");
- _sendStartPage(res,req, res.getWriter(),userEntity);
- return;
+ // timing...
+ sessionConnectTime = System.currentTimeMillis() - startTime;
+ theLog.printInfo("EXECTIME (" + moduleName + "): " + sessionConnectTime + " ms");
}
- // end of auth
- // From now on regular dispatching...
- try {
- // get servletmodule by parameter and continue with dispacher
- ServletModule smod = getServletModuleForName(moduleName);
- ServletModuleDispatch.dispatch(smod,req,res);
- }
- catch (ServletModuleException e) {
- handleError(req, res, res.getWriter(),
- "ServletException in Module " + moduleName + " -- " + e.toString());
- }
- catch (ServletModuleUserException e) {
- handleUserError(req,res,res.getWriter(), "User error" + e.toString());
- }
- // timing...
- sessionConnectTime = System.currentTimeMillis() - startTime;
- theLog.printInfo("EXECTIME (" + moduleName + "): " + sessionConnectTime + " ms");
- }
-
-
- /**
- * Private method getServletModuleForName returns ServletModule
- * from Cache
- *
- * @return ServletModule
- *
- */
- private static ServletModule getServletModuleForName(String moduleName)
- throws ServletModuleException {
-
- // Instance in Map ?
- if (!servletModuleInstanceHash.containsKey(moduleName)) {
- // was not found in hash...
- try {
- Class theServletModuleClass=null;
- try {
- // first we try to get ServletModule from stern.che3.servlet
- theServletModuleClass = Class.forName("mircoders.servlet.ServletModule" + moduleName);
- } catch (ClassNotFoundException e) {
- // on failure, we try to get it from lib-layer
- theServletModuleClass = Class.forName("mir.servlet.ServletModule"+ moduleName);
+ /**
+ * Private method getServletModuleForName returns ServletModule
+ * from Cache
+ *
+ * @return ServletModule
+ *
+ */
+ private static ServletModule getServletModuleForName(String moduleName)
+ throws ServletModuleException {
+
+ // Instance in Map ?
+ if (!servletModuleInstanceHash.containsKey(moduleName)) {
+ // was not found in hash...
+ try {
+ Class theServletModuleClass = null;
+ try {
+ // first we try to get ServletModule from stern.che3.servlet
+ theServletModuleClass = Class.forName("mircoders.servlet.ServletModule" + moduleName);
+ }
+ catch (ClassNotFoundException e) {
+ // on failure, we try to get it from lib-layer
+ theServletModuleClass = Class.forName("mir.servlet.ServletModule" + moduleName);
+ }
+ Method m = theServletModuleClass.getMethod("getInstance", null);
+ ServletModule smod = (ServletModule) m.invoke(null, null);
+ // we put it into map for further reference
+ servletModuleInstanceHash.put(moduleName, smod);
+ return smod;
+ }
+ catch (Exception e) {
+ throw new ServletModuleException("*** error resolving classname for " +
+ moduleName + " -- " + e.toString());
+ }
}
- Method m = theServletModuleClass.getMethod("getInstance", null);
- ServletModule smod = (ServletModule)m.invoke(null, null);
- // we put it into map for further reference
- servletModuleInstanceHash.put(moduleName,smod);
- return smod;
- } catch (Exception e) {
- throw new ServletModuleException("*** error resolving classname for " +
- moduleName +" -- "+ e.toString());
- }
+ else
+ return (ServletModule) servletModuleInstanceHash.get(moduleName);
}
- else return (ServletModule)servletModuleInstanceHash.get(moduleName);
- }
- private void handleError(HttpServletRequest req, HttpServletResponse res,
- PrintWriter out, String errorString) {
+ private void handleError(HttpServletRequest req, HttpServletResponse res,
+ PrintWriter out, String errorString) {
- try {
- theLog.printError(errorString);
- SimpleHash modelRoot = new SimpleHash();
- modelRoot.put("errorstring", new SimpleScalar(errorString));
- modelRoot.put("date", new SimpleScalar(StringUtil.date2readableDateTime(new GregorianCalendar())));
- HTMLTemplateProcessor.process(res,MirConfig.getProp("Mir.ErrorTemplate"),
- modelRoot,out,req.getLocale());
- out.close();
- }
- catch (Exception e) {
- System.err.println("Error in ErrorTemplate");
- }
- }
-
- private void handleUserError(HttpServletRequest req, HttpServletResponse res,
- PrintWriter out, String errorString) {
- try {
- theLog.printError(errorString);
- SimpleHash modelRoot = new SimpleHash();
- modelRoot.put("errorstring", new SimpleScalar(errorString));
- modelRoot.put("date", new SimpleScalar(StringUtil.date2readableDateTime(new GregorianCalendar())));
- HTMLTemplateProcessor.process(res,MirConfig.getProp("Mir.UserErrorTemplate"),
- modelRoot,out, req.getLocale());
- out.close();
+ try {
+ theLog.printError(errorString);
+ SimpleHash modelRoot = new SimpleHash();
+ modelRoot.put("errorstring", new SimpleScalar(errorString));
+ modelRoot.put("date", new SimpleScalar(StringUtil.date2readableDateTime(new GregorianCalendar())));
+ HTMLTemplateProcessor.process(res, MirConfig.getProp("Mir.ErrorTemplate"), modelRoot, out, getLocale(req));
+ out.close();
+ }
+ catch (Exception e) {
+ System.err.println("Error in ErrorTemplate");
+ }
}
- catch (Exception e) {
- System.err.println("Fehler in UserErrorTemplate");
+
+ private void handleUserError(HttpServletRequest req, HttpServletResponse res,
+ PrintWriter out, String errorString) {
+ try {
+ theLog.printError(errorString);
+ SimpleHash modelRoot = new SimpleHash();
+ modelRoot.put("errorstring", new SimpleScalar(errorString));
+ modelRoot.put("date", new SimpleScalar(StringUtil.date2readableDateTime(new GregorianCalendar())));
+ HTMLTemplateProcessor.process(res, MirConfig.getProp("Mir.UserErrorTemplate"),
+ modelRoot, out, getLocale(req));
+ out.close();
+ }
+ catch (Exception e) {
+ System.err.println("Fehler in UserErrorTemplate");
+ }
+
}
- }
- /**
- * evaluate login for user / password
- */
- protected EntityUsers allowedUser(String user, String password) {
- try {
- if (usersModule == null) usersModule = new ModuleUsers(DatabaseUsers.getInstance());
- return usersModule.getUserForLogin(user, password);
- } catch(Exception e) {
- theLog.printDebugInfo(e.toString());
- e.printStackTrace();
- return null;
+ /**
+ * evaluate login for user / password
+ */
+ protected EntityUsers allowedUser(String user, String password) {
+ try {
+ if (usersModule == null) usersModule = new ModuleUsers(DatabaseUsers.getInstance());
+ return usersModule.getUserForLogin(user, password);
+ }
+ catch (Exception e) {
+ theLog.printDebugInfo(e.toString());
+ e.printStackTrace();
+ return null;
+ }
}
- }
-
- // Redirect-methods
- private void _sendLoginPage(HttpServletResponse res,HttpServletRequest req, PrintWriter out) {
- String loginTemplate = "login.template";
- String sessionUrl=res.encodeURL("");
- //session = req.getSession(true);
- try {
- theLog.printDebugInfo("login: "+lang);
- if(lang==null){
- lang=getAcceptLanguage(req);
- }
- SimpleHash mergeData = new SimpleHash();
- mergeData.put("session",sessionUrl);
- HTMLTemplateProcessor.process(res, lang+"/"+loginTemplate, mergeData,
- out, req.getLocale());
- } catch(HTMLParseException e) {
- handleError(req, res, out, "Error in logintemplate.");
+
+ // Redirect-methods
+ private void _sendLoginPage(HttpServletResponse res, HttpServletRequest req, PrintWriter out) {
+ String loginTemplate = MirConfig.getProp("Mir.LoginTemplate");//"login.template";
+ // theLog.printDebugInfo("login template: "+loginTemplate);
+ String sessionUrl = res.encodeURL("");
+ //session = req.getSession(true);
+ try {
+ //theLog.printDebugInfo("login: "+lang);
+ //if(lang==null){
+ // lang=getAcceptLanguage(req);
+ //}
+ SimpleHash mergeData = new SimpleHash();
+ mergeData.put("session", sessionUrl);
+ HTMLTemplateProcessor.process(res, loginTemplate, mergeData, out, getLocale(req));
+ }
+ catch (HTMLParseException e) {
+ handleError(req, res, out, "Error in logintemplate.");
+ }
}
- }
-
- private void _sendStartPage(HttpServletResponse res, HttpServletRequest req,PrintWriter out, EntityUsers userEntity) {
- String startTemplate = "start_admin.template";
- String sessionUrl=res.encodeURL("");
- try {
- // merge with logged in user and messages
- SimpleHash mergeData = new SimpleHash();
- mergeData.put("session",sessionUrl);
- mergeData.put("login_user", userEntity);
- if (messageModule == null) messageModule = new ModuleMessage(DatabaseMessages.getInstance());
- mergeData.put("messages", messageModule.getByWhereClause(null, "webdb_create desc",0,10));
- HTMLTemplateProcessor.process(res, getLanguage(req,session)+"/"+startTemplate,
- mergeData, out, req.getLocale());
+
+ private void _sendStartPage(HttpServletResponse res, HttpServletRequest req, PrintWriter out, EntityUsers userEntity) {
+ String startTemplate = "admin/start_admin.template";
+ String sessionUrl = res.encodeURL("");
+ try {
+ // merge with logged in user and messages
+ SimpleHash mergeData = new SimpleHash();
+ mergeData.put("session", sessionUrl);
+ mergeData.put("login_user", userEntity);
+ if (messageModule == null) messageModule = new ModuleMessage(DatabaseMessages.getInstance());
+ mergeData.put("messages", messageModule.getByWhereClause(null, "webdb_create desc", 0, 10));
+ HTMLTemplateProcessor.process(res, startTemplate, mergeData, out, getLocale(req));
+ }
+ catch (Exception e) {
+ handleError(req, res, out, "error while trying to send startpage. " + e.toString());
+ }
}
- catch(Exception e) {
- handleError(req, res, out, "error while trying to send startpage. " + e.toString());
+
+ public String getServletInfo() {
+ return "Mir 1.0 rev02 multilanguage";
}
- }
- public String getServletInfo(){ return "Mir 1.0 rev02 multilanguage"; }
+ private void checkLanguage(HttpSession session, HttpServletRequest req) {
+ // a lang parameter always sets the language
+ String lang = req.getParameter("lang");
+ if (lang != null) {
+ theLog.printInfo("selected language "+lang+" overrides accept-language");
+ setLanguage(session, lang);
+ setLocale(session, new Locale(lang, ""));
+ }
+ // otherwise store language from accept header in session
+ else if (session.getAttribute("Language") == null) {
+ theLog.printInfo("accept-language is "+req.getLocale().getLanguage());
+ setLanguage(session, req.getLocale().getLanguage());
+ setLocale(session, req.getLocale());
+ }
+ }
}
#
# Sample config for Mir
# by Matthias <mjordan@code-fu.de> 2001-09-12
-#
+#
# The Mir software realizes a semi-dynamic web service:
# The web server that is accessed by users has pure static
# pages. These pages are generated by the Mir software that
# Mir uses a database server to store the data that is needed to
# build the static site.
# So there are basically three parts in this config file:
-#
+#
# a) general setup
# b) static site config
# c) dynamic admin site
# d) database config
-#
+#
# edit this to suit your needs (here with sampleuser idfx)
# After you edited this file, build.sh has to be invoked.
# To be sure, also restart Tomcat.
-#
+#
# Note that for Mir to work, Tomcat has to be set up to handle all
# URLs that begin with /servlet. All other URLs are handled by Apache.
#
# GENERAL SETUP
#
+Mir.Version=pre-1.0
ClearXslCache=no
StandardLanguage=de
DirectOpenposting=yes
# the url of the static site
Producer.ProductionHost=http://indy.code-fu.de
-# The above URL points to the following directory, in which
+# The above URL points to the following directory, in which
# the generated HTML pages will be stored
Producer.StorageRoot=/pub/Dokumente/Indymedia/de-tech/Mir/produced
#
#
-# DYNAMIC SITE CONFIG
+# DYNAMIC SITE CONFIG
#
# the url of the openposting-servlet
# absolute directory, where the realmedia data files(ra and rm) are saved
# the ram files which point to the RealMedia.Host get saved in the regular Media dir
-# this should make rsyncing to a separate streaming server much easier
+# this should make rsyncing to a separate streaming server much easier
Producer.RealMedia.Path=/pub/Dokumente/rtsp
# relativ directory, where the thumbnails will be saved
ServletModule.Producer.Logfile=log/producer.log
Entity.Logfile=log/dbentity.log
-
#
# Servlet / Module configurations
#
Mir.Logfile=log/mir.log
-Mir.ErrorTemplate=fehler.template
+Mir.ErrorTemplate=error.template
Mir.UserErrorTemplate=usererror.template
+Mir.LoginTemplate=admin/login.template
-ServletModule.Schwerpunkt.ConfirmTemplate=confirm.template
-ServletModule.Schwerpunkt.ObjektTemplate=schwerpunkt.template
-ServletModule.Schwerpunkt.ListTemplate=schwerpunktlist.template
+ServletModule.Schwerpunkt.ConfirmTemplate=admin/confirm.template
+ServletModule.Schwerpunkt.ObjektTemplate=admin/feature.template
+ServletModule.Schwerpunkt.ListTemplate=admin/featurelist.template
ServletModule.Schwerpunkt.Logfile=log/mir.log
Module.Schwerpunkt.Logfile=log/mir.log
-ServletModule.Feature.ConfirmTemplate=confirm.template
-ServletModule.Feature.ObjektTemplate=schwerpunkt.template
-ServletModule.Feature.ListTemplate=schwerpunktlist.template
+ServletModule.Feature.ConfirmTemplate=admin/confirm.template
+ServletModule.Feature.ObjektTemplate=admin/schwerpunkt.template
+ServletModule.Feature.ListTemplate=admin/schwerpunktlist.template
ServletModule.Feature.Logfile=log/mir.log
Module.Feature.Logfile=log/mir.log
-ServletModule.Themen.ConfirmTemplate=confirm.template
-ServletModule.Themen.ObjektTemplate=themen.template
-ServletModule.Themen.ListTemplate=themenlist.template
+ServletModule.Themen.ConfirmTemplate=admin/confirm.template
+ServletModule.Themen.ObjektTemplate=admin/topic.template
+ServletModule.Themen.ListTemplate=admin/topiclist.template
ServletModule.Themen.Logfile=log/mir.log
Module.Themen.Logfile=log/mir.log
-ServletModule.LinksImcs.ConfirmTemplate=confirm.template
-ServletModule.LinksImcs.ObjektTemplate=linksimcs.template
-ServletModule.LinksImcs.ListTemplate=linksimcslist.template
+ServletModule.LinksImcs.ConfirmTemplate=admin/confirm.template
+ServletModule.LinksImcs.ObjektTemplate=admin/linksimcs.template
+ServletModule.LinksImcs.ListTemplate=admin/linksimcslist.template
ServletModule.LinksImcs.Logfile=log/mir.log
Module.LinksImcs.Logfile=log/mir.log
-ServletModule.Users.ConfirmTemplate=confirm.template
-ServletModule.Users.ObjektTemplate=users.template
-ServletModule.Users.ListTemplate=userslist.template
+ServletModule.Users.ConfirmTemplate=admin/confirm.template
+ServletModule.Users.ObjektTemplate=admin/user.template
+ServletModule.Users.ListTemplate=admin/userlist.template
ServletModule.Users.Logfile=log/mir.log
Module.Users.Logfile=log/mir.log
-ServletModule.Bilder.ConfirmTemplate=confirm.template
-ServletModule.Bilder.ObjektTemplate=bilder.template
-ServletModule.Bilder.ListTemplate=bilderlist.template
+ServletModule.Bilder.ConfirmTemplate=admin/confirm.template
+ServletModule.Bilder.ObjektTemplate=admin/image.template
+ServletModule.Bilder.ListTemplate=admin/imagelist.template
ServletModule.Bilder.Logfile=log/mir.log
Module.Bilder.Logfile=log/mir.log
-ServletModule.Content.ConfirmTemplate=confirm.template
-ServletModule.Content.ObjektTemplate=content.template
-ServletModule.Content.OpTemplate=oplist.template
-ServletModule.Content.ListTemplate=contentlist.template
+ServletModule.Content.ConfirmTemplate=admin/confirm.template
+ServletModule.Content.ObjektTemplate=admin/content.template
+# is the next line ever used??? dont thinks so [br1]
+#ServletModule.Content.OpTemplate=oplist.template
+ServletModule.Content.ListTemplate=admin/contentlist.template
ServletModule.Content.Logfile=log/mir.log
Module.Content.Logfile=log/mir.log
-ServletModule.Mediafolder.ConfirmTemplate=confirm.template
-ServletModule.Mediafolder.ObjektTemplate=mediafolder.template
-ServletModule.Mediafolder.ListTemplate=mediafolderlist.template
+ServletModule.Mediafolder.ConfirmTemplate=admin/confirm.template
+ServletModule.Mediafolder.ObjektTemplate=admin/mediafolder.template
+ServletModule.Mediafolder.ListTemplate=admin/mediafolderlist.template
ServletModule.Mediafolder.Logfile=log/mir.log
Module.Mediafolder.Logfile=log/mir.log
# config for ServletModuleComment - browsing/editing/deleting comments
Module.Comment.Logfile=log/comment.log
ServletModule.Comment.Logfile=log/comment.log
-ServletModule.Comment.ConfirmTemplate=confirm.template
-ServletModule.Comment.ObjektTemplate=comment.template
-ServletModule.Comment.ListTemplate=commentlist.template
+ServletModule.Comment.ConfirmTemplate=admin/confirm.template
+ServletModule.Comment.ObjektTemplate=admin/comment.template
+ServletModule.Comment.ListTemplate=admin/commentlist.template
#
# config for Breaking - browsing/editing/deleting breaking news
Module.Breaking.Logfile=log/breaking.log
ServletModule.Breaking.Logfile=log/comment.log
-ServletModule.Breaking.ConfirmTemplate=confirm.template
-ServletModule.Breaking.ObjektTemplate=breaking.template
-ServletModule.Breaking.ListTemplate=breakinglist.template
+ServletModule.Breaking.ConfirmTemplate=admin/confirm.template
+ServletModule.Breaking.ObjektTemplate=admin/breaking.template
+ServletModule.Breaking.ListTemplate=admin/breakinglist.template
#
# config for messages - browsing/editing/deleting internal messages
Module.Messages.Logfile=log/message.log
ServletModule.Messages.Logfile=log/comment.log
-ServletModule.Messages.ConfirmTemplate=confirm.template
-ServletModule.Messages.ObjektTemplate=message.template
-ServletModule.Messages.ListTemplate=messagelist.template
+ServletModule.Messages.ConfirmTemplate=admin/confirm.template
+ServletModule.Messages.ObjektTemplate=admin/message.template
+ServletModule.Messages.ListTemplate=admin/messagelist.template
#
-# config for languages - browsing/editing/deleting internal messages
+# config for languages - browsing/editing/deleting languages
Module.Language.Logfile=log/message.log
ServletModule.Language.Logfile=log/mir.log
-ServletModule.Language.ConfirmTemplate=confirm.template
-ServletModule.Language.ObjektTemplate=language.template
-ServletModule.Language.ListTemplate=languagelist.template
+ServletModule.Language.ConfirmTemplate=admin/confirm.template
+ServletModule.Language.ObjektTemplate=admin/language.template
+ServletModule.Language.ListTemplate=admin/languagelist.template
+
#
# producer-related configs below
configHash.put("videoHost", new SimpleScalar(videoHost));
configHash.put("audioHost", new SimpleScalar(audioHost));
configHash.put("imageHost", new SimpleScalar(imageHost));
+ configHash.put("mirVersion", new SimpleScalar(MirConfig.getProp("Mir.Version")));
// this conform to updated freemarker syntax
configHash.put("compressWhitespace", new freemarker.template.utility.CompressWhitespace() );
outPutHash.put("config", configHash);
MessageResources messages = MessageResources.getMessageResources("admin");
- outPutHash.put("message", new MessageMethodModel(locale, messages) );
+ outPutHash.put("lang", new MessageMethodModel(locale, messages) );
tmpl.process(outPutHash,out);
}
package mir.misc;
-import java.util.*;
-import freemarker.template.*;
-import org.apache.struts.util.*;
+import freemarker.template.SimpleScalar;
+import freemarker.template.TemplateMethodModel;
+import freemarker.template.TemplateModel;
+import org.apache.struts.util.MessageResources;
+
+import java.util.List;
+import java.util.Locale;
/**
* A FreeMarker <code>TemplateMethodModel</code> that provides access to a
* Struts <code>MessageResources</code>, for use in Interantionalized templates.
*
- * TODO: we probably want to be doing some memoizing or something with this class*
* @author Kellan <kellan@protest.net>
- *
*/
- public class MessageMethodModel implements TemplateMethodModel {
-
- /**
- * The perferred locale for this instance of MessageMethod.
- */
- private Locale locale;
-
- /**
- * The MessageResources to query, a single instances shared for
- * the lifetime of servlet.
- */
- private MessageResources messages;
-
-
- /**
- * Construct a MessageMethod that uses the JVM's default locale.
- *
- * @param message The MessageResources object to query
- */
- public MessageMethodModel(MessageResources messages) {
- this(null, messages);
- }
-
- /**
- * Construct a MessageMethod
- *
- * @param locale a Locale object, persumably initialized
- * from users Accept-Language header field
- *
- * @param message The MessageResources object to query
- */
- public MessageMethodModel(Locale locale, MessageResources messages) {
- this.locale = locale;
- this.messages = messages;
- }
-
-
- /**
- * Takes the first argument as a resource key, then looks up
- * a string in the MessagesResources, based on that key, and the Locale
- * TODO: this is an alpha implementation. We should then check if we have
- * any keys left over, and attempt to apply MessageFormat.format.
- * TODO: error messages should be i18n :)
- *
- * @param arguments List passed in by FM, first arguement is a string used as the key
- */
- public TemplateModel exec(List arguments) {
- if ( arguments != null ) {
- String key = (String)arguments.get(0);
- String mesg = messages.getMessage(locale, key);
- if ( mesg == null ) {
- return unknownTagScalar;
- }
- return new SimpleScalar(mesg);
- } else {
- return missingKeyScalar;
- }
- }
-
- // i'm not real clear on how this is used - kellan :)
- public boolean isEmpty() {
- if (messages == null)
- return true;
- else
- return false;
- }
-
- private static String errUnknownTag = "TAG NOT FOUND";
- private static String missingKey = "MESSAGE CALL WITHOUT KEY";
- private static SimpleScalar unknownTagScalar =
- new SimpleScalar(errUnknownTag);
- private static SimpleScalar missingKeyScalar =
- new SimpleScalar(missingKey);
+
+public class MessageMethodModel implements TemplateMethodModel {
+
+ /**
+ * The perferred locale for this instance of MessageMethod.
+ */
+ private Locale locale;
+
+ /**
+ * The MessageResources to query, a single instance shared for
+ * the lifetime of servlet.
+ */
+ private MessageResources messages;
+
+
+ /**
+ * Construct a MessageMethod that uses the JVM's default locale.
+ *
+ * @param message The MessageResources object to query
+ */
+ public MessageMethodModel(MessageResources messages) {
+ this(null, messages);
+ }
+
+ /**
+ * Construct a MessageMethod
+ *
+ * @param locale a Locale object, persumably initialized
+ * from users Accept-Language header field
+ *
+ * @param message The MessageResources object to query
+ */
+ public MessageMethodModel(Locale locale, MessageResources messages) {
+ this.locale = locale;
+ this.messages = messages;
+ }
+
+
+ /**
+ * Takes the first argument as a resource key, then looks up
+ * a string in the MessagesResources, based on that key, and the Locale
+ *
+ * TODO: error messages should be i18n :)
+ *
+ * @param arguments List passed in by FM, first arguement is a string used as the key
+ * all subsequent arguments are used as described in MessageResources
+ * (they are filled into the placehoders of the string being returned)
+ */
+ public TemplateModel exec(List arguments) {
+ if (arguments != null) {
+ String key = (String) arguments.get(0);
+ arguments.remove(0);
+ String mesg = messages.getMessage(locale, key, arguments.toArray());
+
+ if (mesg == null) {
+ return new SimpleScalar(errUnknownTag+key);
+ }
+ return new SimpleScalar(mesg);
+ }
+ else {
+ return missingKeyScalar;
+ }
+ }
+
+ // i'm not real clear on how this is used - kellan :)
+ public boolean isEmpty() {
+ if (messages == null)
+ return true;
+ else
+ return false;
+ }
+
+ private static String errUnknownTag = "MESSAGE NOT FOUND: ";
+ private static String missingKey = "MESSAGE CALL WITHOUT KEY";
+ private static SimpleScalar missingKeyScalar =
+ new SimpleScalar(missingKey);
}
package mir.servlet;
+import mir.misc.Logfile;
+import mir.misc.MirConfig;
+import mir.misc.StringUtil;
+import mir.storage.StorageObjectException;
+
+import javax.servlet.UnavailableException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
-import javax.servlet.UnavailableException;
-import java.io.File;
import java.util.Locale;
-import java.util.HashMap;
-
-import mir.misc.HTMLTemplateProcessor;
-import mir.misc.StringUtil;
-import mir.misc.MirConfig;
-import mir.misc.Logfile;
-import mir.storage.StorageObjectException;
/**
* Title: Mir
*/
public abstract class AbstractServlet extends HttpServlet {
- protected static String lang;
- protected static Logfile theLog;
+ protected static String lang;
+ protected static Logfile theLog;
+
+ /**
+ * the configration
+ */
+ protected boolean getConfig(HttpServletRequest req)
+ throws UnavailableException {
- /**
- * the configration
- */
- protected boolean getConfig(HttpServletRequest req)
- throws UnavailableException {
+ String RealPath = super.getServletContext().getRealPath("/");
+ String Uri = req.getRequestURI();
+ String Name = super.getServletName();
+ String RootUri = StringUtil.replace(Uri, "/servlet/" + Name, "");
- String RealPath = super.getServletContext().getRealPath("/");
- String Uri = req.getRequestURI();
- String Name = super.getServletName();
- String RootUri = StringUtil.replace(Uri, "/servlet/" + Name, "");
+ // init config
+ MirConfig.initConfig(RealPath, RootUri, Name, getInitParameter("Config"));
- // init config
- MirConfig.initConfig(RealPath, RootUri, Name, getInitParameter("Config"));
+ theLog = Logfile.getInstance(MirConfig.getPropWithHome(Name + ".Logfile"));
+ theLog.printInfo(Name + " started.");
+ theLog.printInfo("Path is: " + MirConfig.getProp("Home"));
+ theLog.printInfo("Root URI is: " + MirConfig.getProp("RootUri"));
+ theLog.printInfo("StandardLanguage is: " + MirConfig.getProp("StandardLanguage"));
+ try {
+ MirConfig.initDbPool();
+ }
+ catch (StorageObjectException e) {
+ throw new UnavailableException(
+ "Could not initialize database pool. -- "
+ + e.toString(), 0);
+ }
+ super.getServletContext().setAttribute("mir.confed", new Boolean(true));
+ return true;
+ }
+
+ /**
+ * Bind the language to the session
+ */
+ protected void setLanguage(HttpSession session, String language) {
+ session.setAttribute("Language", language);
+ }
- theLog = Logfile.getInstance(MirConfig.getPropWithHome(Name+".Logfile"));
- theLog.printInfo(Name + " started.");
- theLog.printInfo("Path is: " + MirConfig.getProp("Home"));
- theLog.printInfo("Root URI is: " + MirConfig.getProp("RootUri"));
- theLog.printInfo("Lang is: " + MirConfig.getProp("StandardLanguage"));
- try {
- MirConfig.initDbPool();
- } catch ( StorageObjectException e) {
- throw new UnavailableException(
- "Could not initialize database pool. -- "
- + e.toString(), 0);
+ protected void setLocale(HttpSession session, Locale loc) {
+ session.setAttribute("Locale", loc);
}
- super.getServletContext().setAttribute("mir.confed", new Boolean(true));
- return true;
- }
- /**
- * Bind the language to the session
- */
- protected void setLanguage(HttpSession session, String language){
- session.setAttribute("Language",language);
- }
+ /**
+ * Get the session-bound language
+ */
+ protected String getLanguage(HttpServletRequest req, HttpSession session) {
+ String lang = (String) session.getAttribute("Language");
+ if (lang == null || lang.equals("")) {
+ return getAcceptLanguage(req);
+ }
+ else {
+ return lang;
+ }
+ }
- /**
- * Get the session-bound language
- */
- protected String getLanguage(HttpServletRequest req, HttpSession session){
- String lang = (String)session.getAttribute("Language");
- if(lang==null || lang.equals("")){
- return getAcceptLanguage(req);
- } else {
- return lang;
+ /**
+ * get the locale either from the session or the accept-language header ot the request
+ * this supersedes getLanguage for the new i18n
+ */
+ public Locale getLocale(HttpServletRequest req) {
+ Locale loc=null;
+ HttpSession session = req.getSession(false);
+ if (session!=null) {
+ // session can be null in case of logout
+ loc = (Locale) session.getAttribute("Locale");
+ }
+ // if there is nothing in the session get it fron the accept-language
+ if (loc == null) {
+ loc = req.getLocale();
+ }
+ return loc;
}
- }
- /**
- * Checks the Accept-Language of the client browser.
- * If this language is available it returns its country-code,
- * else it returns the standard-language
- */
- protected String getAcceptLanguage(HttpServletRequest req){
- Locale loc = req.getLocale();
- lang = loc.getLanguage();
- File f = new File(HTMLTemplateProcessor.templateDir+"/"+lang);
- //is there an existing template-path?
- if(!f.isDirectory()){
- //no there isn't. we use standard-language
- lang = MirConfig.getProp("StandardLanguage");
- theLog.printDebugInfo("language not existing");
+ /**
+ * Checks the Accept-Language of the client browser.
+ * If this language is available it returns its country-code,
+ * else it returns the standard-language
+ */
+ protected String getAcceptLanguage(HttpServletRequest req) {
+ Locale loc = req.getLocale();
+ lang = loc.getLanguage();
+ /* not needed anymore due to new i18n
+ File f = new File(HTMLTemplateProcessor.templateDir+"/"+lang);
+ //is there an existing template-path?
+ if(!f.isDirectory()){
+ //no there isn't. we use standard-language
+ lang = MirConfig.getProp("StandardLanguage");
+ theLog.printDebugInfo("language not existing");
+ }
+ theLog.printDebugInfo("Language: " + lang);
+ */
+ return lang;
}
- theLog.printDebugInfo("Language: " + lang);
- return lang;
- }
}
-package mir.servlet;
+package mir.servlet;
-import java.io.*;
-import java.lang.*;
-import java.util.*;
-import javax.servlet.http.*;
-import freemarker.template.*;
-import mir.storage.*;
-import mir.servlet.ServletModuleException;
-import mir.misc.*;
-import mir.entity.*;
-import mir.module.*;
-import mir.misc.*;
+import freemarker.template.SimpleHash;
+import freemarker.template.TemplateModelRoot;
+import mir.entity.EntityList;
+import mir.misc.*;
+import mir.module.AbstractModule;
+import mir.module.ModuleException;
+import mir.storage.StorageObject;
+import mir.storage.StorageObjectException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Locale;
/**
public abstract class ServletModule {
- public String defaultAction;
- protected Logfile theLog;
- protected AbstractModule mainModule;
- protected String templateListString;
- protected String templateObjektString;
- protected String templateConfirmString;
+ public String defaultAction;
+ protected Logfile theLog;
+ protected AbstractModule mainModule;
+ protected String templateListString;
+ protected String templateObjektString;
+ protected String templateConfirmString;
- /**
- * Singelton - Methode muss in den abgeleiteten Klassen ueberschrieben werden.
- * @return ServletModule
- */
- public static ServletModule getInstance() { return null; }
+ /**
+ * Singelton - Methode muss in den abgeleiteten Klassen ueberschrieben werden.
+ * @return ServletModule
+ */
+ public static ServletModule getInstance() {
+ return null;
+ }
- /**
- * get the session binded language
- */
- public String getLanguage(HttpServletRequest req){
- HttpSession session = req.getSession(false);
- String language = (String)session.getAttribute("Language");
- if(language==null){
- language=MirConfig.getProp("StandardLanguage");
+ /**
+ * get the session binded language
+ */
+ public String getLanguage(HttpServletRequest req) {
+ HttpSession session = req.getSession(false);
+ String language = (String) session.getAttribute("Language");
+ if (language == null) {
+ language = MirConfig.getProp("StandardLanguage");
+ }
+ return language;
}
- return language;
- }
- // ACHTUNG DEPRECATED::::
- public void process(HttpServletRequest req, HttpServletResponse res) throws ServletModuleException {}
+ /**
+ * get the locale either from the session or the accept-language header ot the request
+ * this supersedes getLanguage for the new i18n
+ */
+ public Locale getLocale(HttpServletRequest req) {
+ Locale loc = null;
+ HttpSession session = req.getSession(false);
+ if (session != null) {
+ // session can be null in case of logout
+ loc = (Locale) session.getAttribute("Locale");
+ }
+ // if there is nothing in the session get it fron the accept-language
+ if (loc == null) {
+ loc = req.getLocale();
+ }
+ return loc;
+ }
+ // ACHTUNG DEPRECATED::::
+ public void process(HttpServletRequest req, HttpServletResponse res) throws ServletModuleException {
+ }
- /**
- * list(req,res) - generische Listmethode. Wennn die Funktionalitaet
- * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse
- * ueberschreiben werden.
- *
- * @param req Http-Request, das vom Dispatcher durchgereicht wird
- * @param res Http-Response, die vom Dispatcher durchgereicht wird
- */
- public void list(HttpServletRequest req, HttpServletResponse res)
- throws ServletModuleException {
- try {
- EntityList theList;
- String offsetParam = req.getParameter("offset");
- int offset=0;
- PrintWriter out = res.getWriter();
+ /**
+ * list(req,res) - generische Listmethode. Wennn die Funktionalitaet
+ * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse
+ * ueberschreiben werden.
+ *
+ * @param req Http-Request, das vom Dispatcher durchgereicht wird
+ * @param res Http-Response, die vom Dispatcher durchgereicht wird
+ */
+ public void list(HttpServletRequest req, HttpServletResponse res)
+ throws ServletModuleException {
+ try {
+ EntityList theList;
+ String offsetParam = req.getParameter("offset");
+ int offset = 0;
+ PrintWriter out = res.getWriter();
- // hier offsetcode bearbeiten
- if (offsetParam != null && !offsetParam.equals("")){
- offset = Integer.parseInt(offsetParam);
- }
- if (req.getParameter("next") != null){
- offset=Integer.parseInt(req.getParameter("nextoffset"));
- } else {
- if (req.getParameter("prev") != null){
- offset = Integer.parseInt(req.getParameter("prevoffset"));
- }
- }
- theList = mainModule.getByWhereClause(null, offset);
- //theList = mainModule.getByWhereClause((String)null, offset);
- if (theList == null || theList.getCount() == 0 || theList.getCount()>1){
- HTMLTemplateProcessor.process(res,getLanguage(req)+"/"+templateListString, theList, out,req.getLocale());
- } else {
- deliver(req, res, theList.elementAt(0), templateObjektString);
- }
- } catch (Exception e) {
- throw new ServletModuleException(e.toString());
+ // hier offsetcode bearbeiten
+ if (offsetParam != null && !offsetParam.equals("")) {
+ offset = Integer.parseInt(offsetParam);
+ }
+ if (req.getParameter("next") != null) {
+ offset = Integer.parseInt(req.getParameter("nextoffset"));
+ }
+ else {
+ if (req.getParameter("prev") != null) {
+ offset = Integer.parseInt(req.getParameter("prevoffset"));
+ }
+ }
+ theList = mainModule.getByWhereClause(null, offset);
+ //theList = mainModule.getByWhereClause((String)null, offset);
+ if (theList == null || theList.getCount() == 0 || theList.getCount() > 1) {
+ HTMLTemplateProcessor.process(res, templateListString, theList, out, getLocale(req));
+ }
+ else {
+ deliver(req, res, theList.elementAt(0), templateObjektString);
+ }
+ }
+ catch (Exception e) {
+ throw new ServletModuleException(e.toString());
+ }
}
- }
- /**
- * add(req,res) - generische Addmethode. Wennn die Funktionalitaet
- * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse
- * ueberschreiben werden.
- * @param req Http-Request, das vom Dispatcher durchgereicht wird
- * @param res Http-Response, die vom Dispatcher durchgereicht wird
- */
- public void add(HttpServletRequest req, HttpServletResponse res)
- throws ServletModuleException {
+ /**
+ * add(req,res) - generische Addmethode. Wennn die Funktionalitaet
+ * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse
+ * ueberschreiben werden.
+ * @param req Http-Request, das vom Dispatcher durchgereicht wird
+ * @param res Http-Response, die vom Dispatcher durchgereicht wird
+ */
+ public void add(HttpServletRequest req, HttpServletResponse res)
+ throws ServletModuleException {
- try {
- SimpleHash mergeData = new SimpleHash();
- mergeData.put("new", "1");
- deliver(req, res, mergeData, templateObjektString);
- } catch (Exception e) {
- throw new ServletModuleException(e.toString());
+ try {
+ SimpleHash mergeData = new SimpleHash();
+ mergeData.put("new", "1");
+ deliver(req, res, mergeData, templateObjektString);
+ }
+ catch (Exception e) {
+ throw new ServletModuleException(e.toString());
+ }
}
- }
- /**
- * insert(req,res) - generische Insertmethode, folgt auf add.
- * Wennn die Funktionalitaet
- * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse
- * ueberschreiben werden.
- *
- * @param req Http-Request, das vom Dispatcher durchgereicht wird
- * @param res Http-Response, die vom Dispatcher durchgereicht wird
- */
- public void insert(HttpServletRequest req, HttpServletResponse res)
- throws ServletModuleException, ServletModuleUserException {
- try {
- HashMap withValues = getIntersectingValues(req, mainModule.getStorageObject());
- theLog.printDebugInfo("--trying to add...");
- String id = mainModule.add(withValues);
- theLog.printDebugInfo("--trying to deliver..."+id);
- list(req,res);
- } catch (Exception e) {
- throw new ServletModuleException(e.toString());
+ /**
+ * insert(req,res) - generische Insertmethode, folgt auf add.
+ * Wennn die Funktionalitaet
+ * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse
+ * ueberschreiben werden.
+ *
+ * @param req Http-Request, das vom Dispatcher durchgereicht wird
+ * @param res Http-Response, die vom Dispatcher durchgereicht wird
+ */
+ public void insert(HttpServletRequest req, HttpServletResponse res)
+ throws ServletModuleException, ServletModuleUserException {
+ try {
+ HashMap withValues = getIntersectingValues(req, mainModule.getStorageObject());
+ theLog.printDebugInfo("--trying to add...");
+ String id = mainModule.add(withValues);
+ theLog.printDebugInfo("--trying to deliver..." + id);
+ list(req, res);
+ }
+ catch (Exception e) {
+ throw new ServletModuleException(e.toString());
+ }
}
- }
-/**
- * delete(req,res) - generische Deletemethode. Wennn die Funktionalitaet
- * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse
- * ueberschreiben werden.
- *
- * @param req Http-Request, das vom Dispatcher durchgereicht wird
- * @param res Http-Response, die vom Dispatcher durchgereicht wird
- */
+ /**
+ * delete(req,res) - generische Deletemethode. Wennn die Funktionalitaet
+ * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse
+ * ueberschreiben werden.
+ *
+ * @param req Http-Request, das vom Dispatcher durchgereicht wird
+ * @param res Http-Response, die vom Dispatcher durchgereicht wird
+ */
- public void delete(HttpServletRequest req, HttpServletResponse res)
- throws ServletModuleException
- {
- try {
- String idParam = req.getParameter("id");
- if (idParam == null) throw new ServletModuleException("Falscher Aufruf: (id) nicht angegeben");
- // Hier code zum Loeschen
- String confirmParam = req.getParameter("confirm");
- String cancelParam = req.getParameter("cancel");
- if (confirmParam == null && cancelParam == null) {
- // HTML Ausgabe zum Confirmen!
- SimpleHash mergeData = new SimpleHash();
- String moduleClassName = mainModule.getClass().getName();
- int i = moduleClassName.indexOf(".Module");
- String moduleName = moduleClassName.substring(i+7);
- mergeData.put("module", moduleName);
- mergeData.put("infoString", moduleName + ": " + idParam);
- mergeData.put("id", idParam);
- mergeData.put("where", req.getParameter("where"));
- mergeData.put("order", req.getParameter("order"));
- mergeData.put("offset", req.getParameter("offset"));
- deliver(req, res, mergeData,templateConfirmString);
- } else {
- if (confirmParam!= null && !confirmParam.equals("")) {
- //theLog.printInfo("delete confirmed!");
- mainModule.deleteById(idParam);
- list(req,res); // back to list
- } else {
- if (req.getParameter("where") != null)
- list(req,res);
- else
- edit(req,res);
+ public void delete(HttpServletRequest req, HttpServletResponse res)
+ throws ServletModuleException {
+ try {
+ String idParam = req.getParameter("id");
+ if (idParam == null) throw new ServletModuleException("Falscher Aufruf: (id) nicht angegeben");
+ // Hier code zum Loeschen
+ String confirmParam = req.getParameter("confirm");
+ String cancelParam = req.getParameter("cancel");
+ if (confirmParam == null && cancelParam == null) {
+ // HTML Ausgabe zum Confirmen!
+ SimpleHash mergeData = new SimpleHash();
+ String moduleClassName = mainModule.getClass().getName();
+ int i = moduleClassName.indexOf(".Module");
+ String moduleName = moduleClassName.substring(i + 7);
+ mergeData.put("module", moduleName);
+ mergeData.put("infoString", moduleName + ": " + idParam);
+ mergeData.put("id", idParam);
+ mergeData.put("where", req.getParameter("where"));
+ mergeData.put("order", req.getParameter("order"));
+ mergeData.put("offset", req.getParameter("offset"));
+ deliver(req, res, mergeData, templateConfirmString);
+ }
+ else {
+ if (confirmParam != null && !confirmParam.equals("")) {
+ //theLog.printInfo("delete confirmed!");
+ mainModule.deleteById(idParam);
+ list(req, res); // back to list
+ }
+ else {
+ if (req.getParameter("where") != null)
+ list(req, res);
+ else
+ edit(req, res);
+ }
+ }
+ }
+ catch (Exception e) {
+ throw new ServletModuleException(e.toString());
}
- }
- } catch (Exception e) {
- throw new ServletModuleException(e.toString());
}
- }
- /**
- * edit(req,res) - generische Editmethode. Wennn die Funktionalitaet
- * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse
- * ueberschreiben werden.
- *
- * @param req Http-Request, das vom Dispatcher durchgereicht wird
- * @param res Http-Response, die vom Dispatcher durchgereicht wird
- */
- public void edit(HttpServletRequest req, HttpServletResponse res)
- throws ServletModuleException {
- try {
- String idParam = req.getParameter("id");
- deliver(req, res, mainModule.getById(idParam), templateObjektString);
- } catch(ModuleException e) {
- throw new ServletModuleException(e.toString());
+ /**
+ * edit(req,res) - generische Editmethode. Wennn die Funktionalitaet
+ * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse
+ * ueberschreiben werden.
+ *
+ * @param req Http-Request, das vom Dispatcher durchgereicht wird
+ * @param res Http-Response, die vom Dispatcher durchgereicht wird
+ */
+ public void edit(HttpServletRequest req, HttpServletResponse res)
+ throws ServletModuleException {
+ try {
+ String idParam = req.getParameter("id");
+ deliver(req, res, mainModule.getById(idParam), templateObjektString);
+ }
+ catch (ModuleException e) {
+ throw new ServletModuleException(e.toString());
+ }
}
- }
-/**
- * update(req,res) - generische Updatemethode. Wennn die Funktionalitaet
- * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse
- * ueberschreiben werden.
- *
- * @param req Http-Request, das vom Dispatcher durchgereicht wird
- * @param res Http-Response, die vom Dispatcher durchgereicht wird
- */
+ /**
+ * update(req,res) - generische Updatemethode. Wennn die Funktionalitaet
+ * nicht reicht, muss sie in der abgeleiteten ServletModule-Klasse
+ * ueberschreiben werden.
+ *
+ * @param req Http-Request, das vom Dispatcher durchgereicht wird
+ * @param res Http-Response, die vom Dispatcher durchgereicht wird
+ */
- public void update(HttpServletRequest req, HttpServletResponse res)
- throws ServletModuleException {
- try {
- String idParam = req.getParameter("id");
- HashMap withValues = getIntersectingValues(req, mainModule.getStorageObject());
- String id = mainModule.set(withValues);
- //theLog.printInfo("Showing Entity with id: " + id);
- //edit(req,res);
- String whereParam = req.getParameter("where");
- String orderParam = req.getParameter("order");
- if ((whereParam!=null && !whereParam.equals("")) || (orderParam!=null && !orderParam.equals(""))){
- //theLog.printDebugInfo("update to list");
- list(req,res);
- } else {
- edit(req, res);
- }
- //list(req,res);
- } catch (Exception e) {
- throw new ServletModuleException(e.toString());
+ public void update(HttpServletRequest req, HttpServletResponse res)
+ throws ServletModuleException {
+ try {
+ String idParam = req.getParameter("id");
+ HashMap withValues = getIntersectingValues(req, mainModule.getStorageObject());
+ String id = mainModule.set(withValues);
+ //theLog.printInfo("Showing Entity with id: " + id);
+ //edit(req,res);
+ String whereParam = req.getParameter("where");
+ String orderParam = req.getParameter("order");
+ if ((whereParam != null && !whereParam.equals("")) || (orderParam != null && !orderParam.equals(""))) {
+ //theLog.printDebugInfo("update to list");
+ list(req, res);
+ }
+ else {
+ edit(req, res);
+ }
+ //list(req,res);
+ }
+ catch (Exception e) {
+ throw new ServletModuleException(e.toString());
+ }
}
- }
- // Hilfsprozeduren
- /**
- public void predeliver(HttpServletResponse res, TemplateModelRoot rtm, String tmpl)
- throws ServletModuleException {
- try {
- PrintWriter out = new LineFilterWriter(res.getWriter());
- StringWriter a = new StringWriter();
- deliver(new PrintWriter(a),rtm,tmpl);
- out.write(a.toString());
- out.flush();
- } catch (Exception e) {
- e.printStackTrace();System.err.println(e.toString());
- }
- }
- */
+ // Hilfsprozeduren
+ /**
+ public void predeliver(HttpServletResponse res, TemplateModelRoot rtm, String tmpl)
+ throws ServletModuleException {
+ try {
+ PrintWriter out = new LineFilterWriter(res.getWriter());
+ StringWriter a = new StringWriter();
+ deliver(new PrintWriter(a),rtm,tmpl);
+ out.write(a.toString());
+ out.flush();
+ } catch (Exception e) {
+ e.printStackTrace();System.err.println(e.toString());
+ }
+ }
+ */
- /**
- * deliver liefert das Template mit dem Filenamen templateFilename
- * an den HttpServletResponse res aus, nachdem es mit den Daten aus
- * TemplateModelRoot rtm gemischt wurde
- *
- * @param res Http-Response, die vom Dispatcher durchgereicht wird
- * @param rtm beinahalten das freemarker.template.TempalteModelRoot mit den
- * Daten, die ins Template gemerged werden sollen.
- * @param tmpl Name des Templates
- * @exception ServletModuleException
- */
- public void deliver(HttpServletRequest req, HttpServletResponse res, TemplateModelRoot rtm, String templateFilename)
- throws ServletModuleException {
- if (rtm == null) rtm = new SimpleHash();
- try {
- //PrintWriter out = new LineFilterWriter(res.getWriter());
- PrintWriter out = res.getWriter();
- HTMLTemplateProcessor.process(res,getLanguage(req)+"/"+templateFilename, rtm , out, req.getLocale());
- out.close();
- } catch (HTMLParseException e) {
- throw new ServletModuleException(e.toString());
- } catch (IOException e) {
- throw new ServletModuleException(e.toString());
- }
- }
- /**
- * deliver liefert das Template mit dem Filenamen templateFilename
- * an den HttpServletResponse res aus, nachdem es mit den Daten aus
- * TemplateModelRoot rtm gemischt wurde
- *
- * @param res Http-Response, die vom Dispatcher durchgereicht wird
- * @param rtm beinahalten das freemarker.template.TempalteModelRoot mit den
- * Daten, die ins Template gemerged werden sollen.
- * @param tmpl Name des Templates
- * @exception ServletModuleException
- */
- public void deliver_compressed(HttpServletRequest req, HttpServletResponse res, TemplateModelRoot rtm, String templateFilename)
- throws ServletModuleException {
- if (rtm == null) rtm = new SimpleHash();
- try {
- PrintWriter out = new LineFilterWriter(res.getWriter());
- //PrintWriter out = res.getWriter();
- HTMLTemplateProcessor.process(res,getLanguage(req)+"/"+templateFilename, rtm , out, req.getLocale());
- out.close();
- } catch (HTMLParseException e) {
- throw new ServletModuleException(e.toString());
- } catch (IOException e) {
- throw new ServletModuleException(e.toString());
+ /**
+ * deliver liefert das Template mit dem Filenamen templateFilename
+ * an den HttpServletResponse res aus, nachdem es mit den Daten aus
+ * TemplateModelRoot rtm gemischt wurde
+ *
+ * @param res Http-Response, die vom Dispatcher durchgereicht wird
+ * @param rtm beinahalten das freemarker.template.TempalteModelRoot mit den
+ * Daten, die ins Template gemerged werden sollen.
+ * @param tmpl Name des Templates
+ * @exception ServletModuleException
+ */
+ public void deliver(HttpServletRequest req, HttpServletResponse res, TemplateModelRoot rtm, String templateFilename)
+ throws ServletModuleException {
+ if (rtm == null) rtm = new SimpleHash();
+ try {
+ //PrintWriter out = new LineFilterWriter(res.getWriter());
+ PrintWriter out = res.getWriter();
+ HTMLTemplateProcessor.process(res, templateFilename, rtm, out, getLocale(req));
+ out.close();
+ }
+ catch (HTMLParseException e) {
+ throw new ServletModuleException(e.toString());
+ }
+ catch (IOException e) {
+ throw new ServletModuleException(e.toString());
+ }
}
- }
- /**
- * deliver liefert das Template mit dem Filenamen templateFilename
- * an den HttpServletResponse res aus, nachdem es mit den Daten aus
- * TemplateModelRoot rtm gemischt wurde
- *
- * @param out ist der OutputStream, in den die gergten Daten geschickt werden sollen.
- * @param rtm beinahalten das freemarker.template.TempalteModelRoot mit den
- * Daten, die ins Template gemerged werden sollen.
- * @param tmpl Name des Templates
- * @exception ServletModuleException
- */
- private void deliver(HttpServletResponse res,HttpServletRequest req, PrintWriter out, TemplateModelRoot rtm, String templateFilename)
- throws HTMLParseException {
- HTMLTemplateProcessor.process(res,getLanguage(req)+"/"+templateFilename, rtm , out, req.getLocale());
- }
+ /**
+ * deliver liefert das Template mit dem Filenamen templateFilename
+ * an den HttpServletResponse res aus, nachdem es mit den Daten aus
+ * TemplateModelRoot rtm gemischt wurde
+ *
+ * @param res Http-Response, die vom Dispatcher durchgereicht wird
+ * @param rtm beinahalten das freemarker.template.TempalteModelRoot mit den
+ * Daten, die ins Template gemerged werden sollen.
+ * @param tmpl Name des Templates
+ * @exception ServletModuleException
+ */
+ public void deliver_compressed(HttpServletRequest req, HttpServletResponse res, TemplateModelRoot rtm, String templateFilename)
+ throws ServletModuleException {
+ if (rtm == null) rtm = new SimpleHash();
+ try {
+ PrintWriter out = new LineFilterWriter(res.getWriter());
+ //PrintWriter out = res.getWriter();
+ HTMLTemplateProcessor.process(res, templateFilename, rtm, out, getLocale(req));
+ out.close();
+ }
+ catch (HTMLParseException e) {
+ throw new ServletModuleException(e.toString());
+ }
+ catch (IOException e) {
+ throw new ServletModuleException(e.toString());
+ }
+ }
- /**
- * Wenn die abgeleitete Klasse diese Methode ueberschreibt und einen String mit einem
- * Methodennamen zurueckliefert, dann wird diese Methode bei fehlender Angabe des
- * doParameters ausgefuehrt.
- *
- * @return Name der Default-Action
- */
- public String defaultAction() { return defaultAction; }
+ /**
+ * deliver liefert das Template mit dem Filenamen templateFilename
+ * an den HttpServletResponse res aus, nachdem es mit den Daten aus
+ * TemplateModelRoot rtm gemischt wurde
+ *
+ * @param out ist der OutputStream, in den die gergten Daten geschickt werden sollen.
+ * @param rtm beinahalten das freemarker.template.TempalteModelRoot mit den
+ * Daten, die ins Template gemerged werden sollen.
+ * @param tmpl Name des Templates
+ * @exception ServletModuleException
+ */
+ private void deliver(HttpServletResponse res, HttpServletRequest req, PrintWriter out, TemplateModelRoot rtm, String templateFilename)
+ throws HTMLParseException {
+ HTMLTemplateProcessor.process(res, templateFilename, rtm, out, getLocale(req));
+ }
/**
- * Hier kann vor der Datenaufbereitung schon mal ein response geschickt
- * werden (um das subjektive Antwortverhalten bei langsamen Verbindungen
- * zu verbessern).
- */
- public void predeliver(HttpServletRequest req, HttpServletResponse res) { ; }
+ * Wenn die abgeleitete Klasse diese Methode ueberschreibt und einen String mit einem
+ * Methodennamen zurueckliefert, dann wird diese Methode bei fehlender Angabe des
+ * doParameters ausgefuehrt.
+ *
+ * @return Name der Default-Action
+ */
+ public String defaultAction() {
+ return defaultAction;
+ }
- /**
- * Holt die Felder aus der Metadatenfelderliste des StorageObjects, die
- * im HttpRequest vorkommen und liefert sie als HashMap zurueck
- *
- * @return HashMap mit den Werten
- */
- public HashMap getIntersectingValues(HttpServletRequest req, StorageObject theStorage)
- throws ServletModuleException {
- ArrayList theFieldList;
- try {
- theFieldList = theStorage.getFields();
- } catch (StorageObjectException e) {
- throw new ServletModuleException("ServletModule.getIntersectingValues: " + e.toString());
+ /**
+ * Hier kann vor der Datenaufbereitung schon mal ein response geschickt
+ * werden (um das subjektive Antwortverhalten bei langsamen Verbindungen
+ * zu verbessern).
+ */
+ public void predeliver(HttpServletRequest req, HttpServletResponse res) {
+ ;
}
- HashMap withValues = new HashMap();
- String aField, aValue;
+ /**
+ * Holt die Felder aus der Metadatenfelderliste des StorageObjects, die
+ * im HttpRequest vorkommen und liefert sie als HashMap zurueck
+ *
+ * @return HashMap mit den Werten
+ */
+ public HashMap getIntersectingValues(HttpServletRequest req, StorageObject theStorage)
+ throws ServletModuleException {
+ ArrayList theFieldList;
+ try {
+ theFieldList = theStorage.getFields();
+ }
+ catch (StorageObjectException e) {
+ throw new ServletModuleException("ServletModule.getIntersectingValues: " + e.toString());
+ }
+
+ HashMap withValues = new HashMap();
+ String aField, aValue;
- for(int i=0; i<theFieldList.size();i++) {
- aField = (String)theFieldList.get(i);
- aValue = req.getParameter(aField);
- if (aValue!=null) withValues.put(aField,aValue);
+ for (int i = 0; i < theFieldList.size(); i++) {
+ aField = (String) theFieldList.get(i);
+ aValue = req.getParameter(aField);
+ if (aValue != null) withValues.put(aField, aValue);
+ }
+ return withValues;
}
- return withValues;
- }
}
mergeData.put("prev", (new Integer(theList.getPrevBatch())).toString());
// raus damit
- HTMLTemplateProcessor.process(res,getLanguage(req)+"/"+templateListString, mergeData, res.getWriter(), req.getLocale());
+ HTMLTemplateProcessor.process(res, templateListString, mergeData, res.getWriter(), getLocale(req));
}
catch (ModuleException e) {throw new ServletModuleException(e.toString());}
catch (IOException e) {throw new ServletModuleException(e.toString());}
}
}
// raus damit
- HTMLTemplateProcessor.process(res,getLanguage(req)+"/"+templateListString,
- mergeData, res.getWriter(), req.getLocale());
+ HTMLTemplateProcessor.process(res, templateListString, mergeData, res.getWriter(), getLocale(req));
}
catch (ModuleException e) {throw new ServletModuleException(e.toString());}
catch (IOException e) {throw new ServletModuleException(e.toString());}
try {
theLog = Logfile.getInstance(MirConfig.getProp("Home") + MirConfig.getProp("ServletModule.Content.Logfile"));
templateListString = MirConfig.getProp("ServletModule.Content.ListTemplate");
- templateOpString = MirConfig.getProp("ServletModule.Content.OpTemplate");
+ //templateOpString = MirConfig.getProp("ServletModule.Content.OpTemplate");
templateObjektString = MirConfig.getProp("ServletModule.Content.ObjektTemplate");
templateConfirmString = MirConfig.getProp("ServletModule.Content.ConfirmTemplate");
mainModule = new ModuleContent(DatabaseContent.getInstance());
}
}
// raus damit
- HTMLTemplateProcessor.process(res,getLanguage(req)+"/"+templateListString,
- mergeData, res.getWriter(),req.getLocale());
+ HTMLTemplateProcessor.process(res, templateListString, mergeData, res.getWriter(), getLocale(req));
}
catch (ModuleException e) {throw new ServletModuleException(e.toString());}
catch (IOException e) {throw new ServletModuleException(e.toString());}
modelRoot.put("languagelist",theLanguageList);
if (theParentList == null || theParentList.getCount() == 0 || theParentList.getCount()>1){
- HTMLTemplateProcessor.process(res,getLanguage(req)+"/"+templateObjektString,
- modelRoot, res.getWriter(), req.getLocale());
+ HTMLTemplateProcessor.process(res, templateObjektString, modelRoot, res.getWriter(), getLocale(req));
} else {
deliver(req, res, modelRoot, templateObjektString);
}
if (theImcsList.hasPrevBatch())
modelRoot.put("prev", (new Integer(theImcsList.getPrevBatch())).toString());
- HTMLTemplateProcessor.process(res,getLanguage(req)+"/"+templateListString,
- modelRoot, res.getWriter(), req.getLocale());
+ HTMLTemplateProcessor.process(res, templateListString, modelRoot, res.getWriter(), getLocale(req));
} catch (Exception e) {
throw new ServletModuleException(e.toString());
mergeData.put("prev", (new Integer(theList.getPrevBatch())).toString());
// raus damit
- HTMLTemplateProcessor.process(res,getLanguage(req)+"/"+templateListString,
- mergeData, res.getWriter(), req.getLocale());
+ HTMLTemplateProcessor.process(res, templateListString, mergeData, res.getWriter(), getLocale(req));
}
catch (ModuleException e) {throw new ServletModuleException(e.toString());}