From 41d5925718ae2fc0824d52453621e398c9561f61 Mon Sep 17 00:00:00 2001
From: zapata
Date: Wed, 13 Aug 2003 02:43:56 +0000
Subject: [PATCH] working towards full bean support
---
dbscripts/populate_mediafolder.sql | 4 -
source/default.properties | 2 +-
source/mir/servlet/ServletModule.java | 999 +++++++++++----------
.../basic/MirBasicDataModelLocalizer.java | 37 +-
.../basic/MirBasicProducerAssistantLocalizer.java | 318 +++----
source/mircoders/media/MediaHandlerAudio.java | 5 +-
source/mircoders/servlet/ServletModuleAudio.java | 18 +-
source/mircoders/servlet/ServletModuleComment.java | 6 +-
source/mircoders/servlet/ServletModuleContent.java | 72 +-
source/mircoders/servlet/ServletModuleImages.java | 18 +-
.../mircoders/servlet/ServletModuleOtherMedia.java | 28 +-
.../servlet/ServletModuleUploadedMedia.java | 921 ++++++++++---------
source/mircoders/servlet/ServletModuleVideo.java | 18 +-
source/mircoders/storage/DatabaseContent.java | 6 +-
templates/admin/FUNCTIONS_media.template | 69 +-
templates/admin/audio.template | 171 +---
templates/admin/commentlist.template | 2 +-
templates/admin/confirm.template | 44 +-
templates/admin/contentlist.template | 2 +-
templates/admin/head_nonavi.template | 19 +-
templates/admin/image.template | 177 +---
templates/admin/imagelist.template | 86 +-
templates/admin/media.template | 143 ---
templates/admin/other.template | 39 +
templates/admin/start_admin.template | 2 +-
templates/admin/uploadedmedia.template | 100 +++
templates/admin/video.template | 175 +---
templates/admin/videolist.template | 27 +-
28 files changed, 1614 insertions(+), 1894 deletions(-)
delete mode 100755 templates/admin/media.template
create mode 100755 templates/admin/other.template
create mode 100755 templates/admin/uploadedmedia.template
diff --git a/dbscripts/populate_mediafolder.sql b/dbscripts/populate_mediafolder.sql
index d02e1093..64a6cc93 100755
--- a/dbscripts/populate_mediafolder.sql
+++ b/dbscripts/populate_mediafolder.sql
@@ -1,4 +1,3 @@
-
--
-- Selected TOC Entries:
--
@@ -10,8 +9,5 @@
-- Disable triggers
-UPDATE "pg_class" SET "reltriggers" = 0 WHERE "relname" = 'media_folder';
-
INSERT INTO "media_folder" VALUES (7,'openposting','20020329','','openposting','media anonymously uploaded','2002-03-29 14:45:53+01',NULL);
-- Enable triggers
-UPDATE pg_class SET reltriggers = (SELECT count(*) FROM pg_trigger where pg_class.oid = tgrelid) WHERE relname = 'media_folder';
diff --git a/source/default.properties b/source/default.properties
index 15f60b50..78faf9e9 100755
--- a/source/default.properties
+++ b/source/default.properties
@@ -463,7 +463,7 @@ ServletModule.Video.ObjektTemplate=video.template
ServletModule.Video.ListTemplate=videolist.template
ServletModule.OtherMedia.ConfirmTemplate=confirm.template
-ServletModule.OtherMedia.ObjektTemplate=media.template
+ServletModule.OtherMedia.ObjektTemplate=other.template
ServletModule.OtherMedia.ListTemplate=medialist.template
ServletModule.Content.ConfirmTemplate=confirm.template
diff --git a/source/mir/servlet/ServletModule.java b/source/mir/servlet/ServletModule.java
index 4a158d9c..c8f252ac 100755
--- a/source/mir/servlet/ServletModule.java
+++ b/source/mir/servlet/ServletModule.java
@@ -1,480 +1,521 @@
-/*
- * Copyright (C) 2001, 2002 The Mir-coders group
- *
- * This file is part of Mir.
- *
- * Mir is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * Mir is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Mir; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * In addition, as a special exception, The Mir-coders gives permission to link
- * the code of this program with any library licensed under the Apache Software License,
- * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
- * (or with modified versions of the above that use the same license as the above),
- * and distribute linked combinations including the two. You must obey the
- * GNU General Public License in all respects for all of the code used other than
- * the above mentioned libraries. If you modify this file, you may extend this
- * exception to your version of the file, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your version.
- */
-package mir.servlet;
-
-import java.io.PrintWriter;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-import mir.config.MirPropertiesConfiguration;
-import mir.config.MirPropertiesConfiguration.PropertiesConfigExc;
-import mir.entity.EntityList;
-import mir.log.LoggerWrapper;
-import mir.misc.HTMLTemplateProcessor;
-import mir.misc.LineFilterWriter;
-import mir.module.AbstractModule;
-import mir.storage.StorageObject;
-import mir.util.HTTPRequestParser;
-import freemarker.template.SimpleHash;
-import freemarker.template.TemplateModelRoot;
-
-
-
-
-/**
- * Abstract class ServletModule provides the base functionality for servlets.
- * Deriving a class from ServletModule enables class to insert/edit/update/delete
- * and list Entity from a Database via mainModule.
- *
- *
- * Abstrakte Klasse ServletModule stellt die Basisfunktionalitaet der
- * abgeleiteten ServletModule zur Verf?gung.
- *
- * @version 28.6.1999
- * @author RK
- */
-
-public abstract class ServletModule {
-
- public String defaultAction;
- protected LoggerWrapper logger;
- protected MirPropertiesConfiguration configuration;
- protected AbstractModule mainModule;
- protected Locale fallbackLocale;
- protected String templateListString;
- protected String templateObjektString;
- protected String templateConfirmString;
-
-
- public ServletModule(){
- try {
- configuration = MirPropertiesConfiguration.instance();
- }
- catch (PropertiesConfigExc e) {
- throw new RuntimeException("Can't get configuration: " + e.getMessage());
- }
-
- fallbackLocale = new Locale(configuration.getString("Mir.Admin.FallbackLanguage", "en"), "");
- }
-
-
- /**
- * Singelton - Methode muss in den abgeleiteten Klassen ueberschrieben werden.
- * @return ServletModule
- */
- public static ServletModule getInstance() {
- return null;
- }
-
- /**
- * get the module name to be used for generic operations like delete.
- */
- protected String getOperationModuleName() {
- return getClass().getName().substring((new String("mircoders.servlet.ServletModule")).length());
- }
-
- /**
- * 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;
- }
-
- /**
- * get the locale either from the session or the accept-language header ot the request
- * this supersedes getLanguage for the new i18n
- */
- public Locale getFallbackLocale(HttpServletRequest req) {
- return fallbackLocale;
- }
-
- public void redirect(HttpServletResponse aResponse, String aQuery) throws ServletModuleExc, ServletModuleFailure {
- try {
- aResponse.sendRedirect(aResponse.encodeRedirectURL(MirPropertiesConfiguration.instance().getString("RootUri") + "/Mir?"+aQuery));
- }
- catch (Throwable t) {
- throw new ServletModuleFailure("ServletModule.redirect: " +t.getMessage(), t);
- }
- }
-
- /**
- * 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 ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
- 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);
-
- HTMLTemplateProcessor.process(res, templateListString, theList, null, null, out, getLocale(req), getFallbackLocale(req));
- }
- catch (Throwable e) {
- throw new ServletModuleFailure(e);
- }
- }
-
- /**
- * 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 ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
-
- try {
- SimpleHash mergeData = new SimpleHash();
- mergeData.put("new", "1");
- deliver(req, res, mergeData, templateObjektString);
- }
- catch (Throwable e) {
- throw new ServletModuleFailure(e);
- }
- }
-
- /**
- * 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 ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
- try {
- Map withValues = getIntersectingValues(req, mainModule.getStorageObject());
- logger.debug("--trying to add...");
- String id = mainModule.add(withValues);
- logger.debug("--trying to deliver..." + id);
- list(req, res);
- }
- catch (Throwable e) {
- throw new ServletModuleFailure(e);
- }
- }
-
- /**
- * delete(req,res) - generic delete method. Can be overridden in subclasses.
- *
- */
-
- public void delete(HttpServletRequest req, HttpServletResponse res)
- throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
- try {
- String idParam = req.getParameter("id");
-
- if (idParam == null)
- throw new ServletModuleExc("Invalid call to delete: no id supplied");
-
- String confirmParam = req.getParameter("confirm");
- String cancelParam = req.getParameter("cancel");
- if (confirmParam == null && cancelParam == null) {
- SimpleHash mergeData = new SimpleHash();
-
- mergeData.put("module", getOperationModuleName());
- mergeData.put("infoString", getOperationModuleName() + ": " + idParam);
- mergeData.put("id", idParam);
- mergeData.put("where", req.getParameter("where"));
- mergeData.put("order", req.getParameter("order"));
- mergeData.put("offset", req.getParameter("offset"));
- // this stuff is to be compatible with the other more advanced
- // search method used for media and comments
- mergeData.put("query_media_folder", req.getParameter("query_media_folder"));
- mergeData.put("query_is_published", req.getParameter("query_is_published"));
- mergeData.put("query_text", req.getParameter("query_text"));
- mergeData.put("query_field", req.getParameter("query_field"));
-
- 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 (Throwable e) {
- throw new ServletModuleFailure(e);
- }
- }
-
- /**
- * 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 ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
- edit(req, res, req.getParameter("id"));
- }
-
- /**
- * 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 aRequest, HttpServletResponse aResponse, String anIdentifier)
- throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
- try {
- deliver(aRequest, aResponse, mainModule.getById(anIdentifier), templateObjektString);
- }
- catch (Throwable e) {
- throw new ServletModuleFailure(e);
- }
- }
-
- /**
- * 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 ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
- try {
- String idParam = req.getParameter("id");
- Map withValues = getIntersectingValues(req, mainModule.getStorageObject());
-
- String id = mainModule.set(withValues);
- String whereParam = req.getParameter("where");
- String orderParam = req.getParameter("order");
-
- if ((whereParam != null && !whereParam.equals("")) || (orderParam != null && !orderParam.equals(""))) {
- list(req, res);
- }
- else {
- edit(req, res);
- }
- }
- catch (Throwable e) {
- throw new ServletModuleFailure(e);
- }
- }
-
- /**
- * 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,
- TemplateModelRoot popups, String templateFilename) throws ServletModuleFailure {
- if (rtm == null)
- rtm = new SimpleHash();
-
- try {
- PrintWriter out = res.getWriter();
- HTMLTemplateProcessor.process(res, templateFilename, rtm, popups, out, getLocale(req), getFallbackLocale(req));
-
- // we default to admin bundles here, which is not exactly beautiful...
- // but this whole producer stuff is going to be rewritten soon.
- // ServletModuleOpenIndy overwrites deliver() to use open bundles
- // (br1)
- out.close();
- }
- catch (Throwable e) {
- throw new ServletModuleFailure(e);
- }
- }
-
-
- /**
- * 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 ServletModuleFailure {
- deliver(req, res, rtm, null, templateFilename);
- }
-
- /**
- * 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 ServletModuleFailure {
- if (rtm == null) rtm = new SimpleHash();
- try {
- PrintWriter out = new LineFilterWriter(res.getWriter());
- //PrintWriter out = res.getWriter();
- HTMLTemplateProcessor.process(res, templateFilename, rtm, null, out, getLocale(req), getFallbackLocale(req));
- out.close();
- }
- catch (Throwable e) {
- throw new ServletModuleFailure(e);
- }
- }
-
- /**
- * 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 ServletModuleFailure {
- try {
- HTMLTemplateProcessor.process(res, templateFilename, rtm, null, out, getLocale(req), getFallbackLocale(req));
- }
- catch (Throwable e) {
- throw new ServletModuleFailure(e);
- }
- }
-
- /**
- * 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;
- }
-
- /**
- * Gets the fields from a httprequest and matches them with the metadata from
- * the storage object. Returns the keys that match, with their values.
- *
- * @return Map with the values
- */
- public Map getIntersectingValues(HttpServletRequest req, StorageObject theStorage)
- throws ServletModuleExc, ServletModuleFailure {
-
- try {
- HTTPRequestParser parser;
- List theFieldList;
-
- parser = new HTTPRequestParser(req);
-
- theFieldList = theStorage.getFields();
-
- Map withValues = new HashMap();
- String aField, aValue;
-
- for (int i = 0; i < theFieldList.size(); i++) {
- aField = (String) theFieldList.get(i);
-
- aValue = parser.getParameter(aField);
- if (aValue != null)
- withValues.put(aField, aValue);
- }
- return withValues;
- }
- catch (Throwable e) {
- e.printStackTrace(logger.asPrintWriter(LoggerWrapper.DEBUG_MESSAGE));
-
- throw new ServletModuleFailure( "ServletModule.getIntersectingValues: " + e.getMessage(), e);
- }
- }
+/*
+ * Copyright (C) 2001, 2002 The Mir-coders group
+ *
+ * This file is part of Mir.
+ *
+ * Mir is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Mir is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Mir; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * In addition, as a special exception, The Mir-coders gives permission to link
+ * the code of this program with any library licensed under the Apache Software License,
+ * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
+ * (or with modified versions of the above that use the same license as the above),
+ * and distribute linked combinations including the two. You must obey the
+ * GNU General Public License in all respects for all of the code used other than
+ * the above mentioned libraries. If you modify this file, you may extend this
+ * exception to your version of the file, but you are not obligated to do so.
+ * If you do not wish to do so, delete this exception statement from your version.
+ */
+package mir.servlet;
+
+import java.io.PrintWriter;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import mir.config.MirPropertiesConfiguration;
+import mir.config.MirPropertiesConfiguration.PropertiesConfigExc;
+import mir.entity.EntityList;
+import mir.log.LoggerWrapper;
+import mir.misc.HTMLTemplateProcessor;
+import mir.misc.LineFilterWriter;
+import mir.module.AbstractModule;
+import mir.storage.StorageObject;
+import mir.util.HTTPRequestParser;
+import mircoders.servlet.*;
+import freemarker.template.SimpleHash;
+import freemarker.template.TemplateModelRoot;
+
+
+
+
+/**
+ * Abstract class ServletModule provides the base functionality for servlets.
+ * Deriving a class from ServletModule enables class to insert/edit/update/delete
+ * and list Entity from a Database via mainModule.
+ *
+ *
+ * Abstrakte Klasse ServletModule stellt die Basisfunktionalitaet der
+ * abgeleiteten ServletModule zur Verf?gung.
+ *
+ * @version 28.6.1999
+ * @author RK
+ */
+
+public abstract class ServletModule {
+
+ public String defaultAction;
+ protected LoggerWrapper logger;
+ protected MirPropertiesConfiguration configuration;
+ protected AbstractModule mainModule;
+ protected Locale fallbackLocale;
+ protected String templateListString;
+ protected String templateObjektString;
+ protected String templateConfirmString;
+
+
+ public ServletModule(){
+ try {
+ configuration = MirPropertiesConfiguration.instance();
+ }
+ catch (PropertiesConfigExc e) {
+ throw new RuntimeException("Can't get configuration: " + e.getMessage());
+ }
+
+ fallbackLocale = new Locale(configuration.getString("Mir.Admin.FallbackLanguage", "en"), "");
+ }
+
+
+ /**
+ * Singelton - Methode muss in den abgeleiteten Klassen ueberschrieben werden.
+ * @return ServletModule
+ */
+ public static ServletModule getInstance() {
+ return null;
+ }
+
+ /**
+ * get the module name to be used for generic operations like delete.
+ */
+ protected String getOperationModuleName() {
+ return getClass().getName().substring((new String("mircoders.servlet.ServletModule")).length());
+ }
+
+ /**
+ * 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;
+ }
+
+ /**
+ * get the locale either from the session or the accept-language header ot the request
+ * this supersedes getLanguage for the new i18n
+ */
+ public Locale getFallbackLocale(HttpServletRequest req) {
+ return fallbackLocale;
+ }
+
+ public void redirect(HttpServletResponse aResponse, String aQuery) throws ServletModuleExc, ServletModuleFailure {
+ try {
+ aResponse.sendRedirect(aResponse.encodeRedirectURL(MirPropertiesConfiguration.instance().getString("RootUri") + "/Mir?"+aQuery));
+ }
+ catch (Throwable t) {
+ throw new ServletModuleFailure("ServletModule.redirect: " +t.getMessage(), t);
+ }
+ }
+
+ /**
+ * 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 ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
+ 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);
+
+ HTMLTemplateProcessor.process(res, templateListString, theList, null, null, out, getLocale(req), getFallbackLocale(req));
+ }
+ catch (Throwable e) {
+ throw new ServletModuleFailure(e);
+ }
+ }
+
+ /**
+ * 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 ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
+
+ try {
+ SimpleHash mergeData = new SimpleHash();
+ mergeData.put("new", "1");
+ deliver(req, res, mergeData, templateObjektString);
+ }
+ catch (Throwable e) {
+ throw new ServletModuleFailure(e);
+ }
+ }
+
+ /**
+ * 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 ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
+ try {
+ Map withValues = getIntersectingValues(req, mainModule.getStorageObject());
+ logger.debug("--trying to add...");
+ String id = mainModule.add(withValues);
+ logger.debug("--trying to deliver..." + id);
+ list(req, res);
+ }
+ catch (Throwable e) {
+ throw new ServletModuleFailure(e);
+ }
+ }
+
+ /**
+ * delete(req,res) - generic delete method. Can be overridden in subclasses.
+ *
+ */
+/*
+ public void delete(HttpServletRequest req, HttpServletResponse res)
+ throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
+ try {
+ String idParam = req.getParameter("id");
+
+ if (idParam == null)
+ throw new ServletModuleExc("Invalid call to delete: no id supplied");
+
+ String confirmParam = req.getParameter("confirm");
+ String cancelParam = req.getParameter("cancel");
+ if (confirmParam == null && cancelParam == null) {
+ SimpleHash mergeData = new SimpleHash();
+
+ mergeData.put("module", getOperationModuleName());
+ mergeData.put("infoString", getOperationModuleName() + ": " + idParam);
+ mergeData.put("id", idParam);
+ mergeData.put("where", req.getParameter("where"));
+ mergeData.put("order", req.getParameter("order"));
+ mergeData.put("offset", req.getParameter("offset"));
+ // this stuff is to be compatible with the other more advanced
+ // search method used for media and comments
+ mergeData.put("query_media_folder", req.getParameter("query_media_folder"));
+ mergeData.put("query_is_published", req.getParameter("query_is_published"));
+ mergeData.put("query_text", req.getParameter("query_text"));
+ mergeData.put("query_field", req.getParameter("query_field"));
+
+ 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 (Throwable e) {
+ throw new ServletModuleFailure(e);
+ }
+ }
+*/
+ public void confirmdelete(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+ try {
+ String idParam = aRequest.getParameter("id");
+ String confirmParam = aRequest.getParameter("confirm");
+ String cancelParam = aRequest.getParameter("cancel");
+
+ if (confirmParam != null && !confirmParam.equals("")) {
+ mainModule.deleteById(idParam);
+ redirect(aResponse, aRequest.getParameter("okurl"));
+ }
+ else
+ redirect(aResponse, aRequest.getParameter("cancelurl"));
+ }
+ catch (Throwable t) {
+ throw new ServletModuleFailure(t);
+ }
+ }
+
+ public void delete(HttpServletRequest aRequest, HttpServletResponse aResponse)
+ throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
+ try {
+ String idParam = aRequest.getParameter("id");
+
+ if (idParam == null)
+ throw new ServletModuleExc("Invalid call to delete: no id supplied");
+
+ Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
+
+ responseData.put("module", getOperationModuleName());
+ responseData.put("id", idParam);
+ responseData.put("cancelurl", aRequest.getParameter("cancelurl"));
+ responseData.put("okurl", aRequest.getParameter("okurl"));
+
+ ServletHelper.generateResponse(aResponse.getWriter(), responseData, templateConfirmString);
+ }
+ catch (Throwable e) {
+ throw new ServletModuleFailure(e);
+ }
+ }
+
+ /**
+ * Method called when the user edits an object.
+ *
+ * @param req
+ * @param res
+ * @throws ServletModuleExc
+ * @throws ServletModuleUserExc
+ * @throws ServletModuleFailure
+ */
+ public void edit(HttpServletRequest req, HttpServletResponse res) throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
+ edit(req, res, req.getParameter("id"));
+ }
+
+ /**
+ * 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 aRequest, HttpServletResponse aResponse, String anIdentifier)
+ throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
+ try {
+ deliver(aRequest, aResponse, mainModule.getById(anIdentifier), templateObjektString);
+ }
+ catch (Throwable e) {
+ throw new ServletModuleFailure(e);
+ }
+ }
+
+ /**
+ * 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 ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
+ try {
+ String idParam = req.getParameter("id");
+ Map withValues = getIntersectingValues(req, mainModule.getStorageObject());
+
+ String id = mainModule.set(withValues);
+ String whereParam = req.getParameter("where");
+ String orderParam = req.getParameter("order");
+
+ if ((whereParam != null && !whereParam.equals("")) || (orderParam != null && !orderParam.equals(""))) {
+ list(req, res);
+ }
+ else {
+ edit(req, res);
+ }
+ }
+ catch (Throwable e) {
+ throw new ServletModuleFailure(e);
+ }
+ }
+
+ /**
+ * 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,
+ TemplateModelRoot popups, String templateFilename) throws ServletModuleFailure {
+ if (rtm == null)
+ rtm = new SimpleHash();
+
+ try {
+ PrintWriter out = res.getWriter();
+ HTMLTemplateProcessor.process(res, templateFilename, rtm, popups, out, getLocale(req), getFallbackLocale(req));
+
+ // we default to admin bundles here, which is not exactly beautiful...
+ // but this whole producer stuff is going to be rewritten soon.
+ // ServletModuleOpenIndy overwrites deliver() to use open bundles
+ // (br1)
+ out.close();
+ }
+ catch (Throwable e) {
+ throw new ServletModuleFailure(e);
+ }
+ }
+
+
+ /**
+ * 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 ServletModuleFailure {
+ deliver(req, res, rtm, null, templateFilename);
+ }
+
+ /**
+ * 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 ServletModuleFailure {
+ if (rtm == null) rtm = new SimpleHash();
+ try {
+ PrintWriter out = new LineFilterWriter(res.getWriter());
+ //PrintWriter out = res.getWriter();
+ HTMLTemplateProcessor.process(res, templateFilename, rtm, null, out, getLocale(req), getFallbackLocale(req));
+ out.close();
+ }
+ catch (Throwable e) {
+ throw new ServletModuleFailure(e);
+ }
+ }
+
+ /**
+ * 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 ServletModuleFailure {
+ try {
+ HTMLTemplateProcessor.process(res, templateFilename, rtm, null, out, getLocale(req), getFallbackLocale(req));
+ }
+ catch (Throwable e) {
+ throw new ServletModuleFailure(e);
+ }
+ }
+
+ /**
+ * 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;
+ }
+
+ /**
+ * Gets the fields from a httprequest and matches them with the metadata from
+ * the storage object. Returns the keys that match, with their values.
+ *
+ * @return Map with the values
+ */
+ public Map getIntersectingValues(HttpServletRequest req, StorageObject theStorage)
+ throws ServletModuleExc, ServletModuleFailure {
+
+ try {
+ HTTPRequestParser parser;
+ List theFieldList;
+
+ parser = new HTTPRequestParser(req);
+
+ theFieldList = theStorage.getFields();
+
+ Map withValues = new HashMap();
+ String aField, aValue;
+
+ for (int i = 0; i < theFieldList.size(); i++) {
+ aField = (String) theFieldList.get(i);
+
+ aValue = parser.getParameter(aField);
+ if (aValue != null)
+ withValues.put(aField, aValue);
+ }
+ return withValues;
+ }
+ catch (Throwable e) {
+ e.printStackTrace(logger.asPrintWriter(LoggerWrapper.DEBUG_MESSAGE));
+
+ throw new ServletModuleFailure( "ServletModule.getIntersectingValues: " + e.getMessage(), e);
+ }
+ }
}
\ No newline at end of file
diff --git a/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java b/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java
index 97ef36ab..fa8ce8d8 100755
--- a/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java
+++ b/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java
@@ -178,18 +178,31 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer {
definition.addDBDateField("creationdate", "webdb_create", configuration.getString("Mir.DefaultTimezone"));
result.addMapping( "breakingNews", DatabaseBreaking.getInstance(), definition);
+ definition = new EntityAdapterDefinition();
+ definition.addCalculatedField("mediafolder", new MediaToMediaFolderField());
+ result.addMapping( "uploadedMedia", DatabaseUploadedMedia.getInstance(), definition);
+ definition = new EntityAdapterDefinition();
+ definition.addCalculatedField("mediafolder", new MediaToMediaFolderField());
+ result.addMapping( "image", DatabaseImages.getInstance(), definition);
+ definition = new EntityAdapterDefinition();
+ definition.addCalculatedField("mediafolder", new MediaToMediaFolderField());
+ result.addMapping( "audio", DatabaseAudio.getInstance(), definition);
+ definition = new EntityAdapterDefinition();
+ definition.addCalculatedField("mediafolder", new MediaToMediaFolderField());
+ result.addMapping( "video", DatabaseVideo.getInstance(), definition);
+ definition = new EntityAdapterDefinition();
+ definition.addCalculatedField("mediafolder", new MediaToMediaFolderField());
+ result.addMapping( "otherMedia", DatabaseOther.getInstance(), definition);
+
+
+ result.addMapping( "mediaFolder", DatabaseMediafolder.getInstance(), new EntityAdapterDefinition());
result.addMapping( "imageType", DatabaseImageType.getInstance(), new EntityAdapterDefinition());
result.addMapping( "language", DatabaseLanguage.getInstance(), new EntityAdapterDefinition());
- result.addMapping( "mediaFolder", DatabaseMediafolder.getInstance(), new EntityAdapterDefinition());
result.addMapping( "mediaType", DatabaseMediaType.getInstance(), new EntityAdapterDefinition());
result.addMapping( "internalMessage", DatabaseMessages.getInstance(), new EntityAdapterDefinition());
result.addMapping( "topic", DatabaseTopics.getInstance(), new EntityAdapterDefinition());
result.addMapping( "user", DatabaseUsers.getInstance(), new EntityAdapterDefinition());
result.addMapping( "media", DatabaseMedia.getInstance(), new EntityAdapterDefinition());
- result.addMapping( "uploadedMedia", DatabaseUploadedMedia.getInstance(), new EntityAdapterDefinition());
- result.addMapping( "image", DatabaseImages.getInstance(), new EntityAdapterDefinition());
- result.addMapping( "audio", DatabaseAudio.getInstance(), new EntityAdapterDefinition());
- result.addMapping( "video", DatabaseVideo.getInstance(), new EntityAdapterDefinition());
result.addMapping( "otherMedia", DatabaseOther.getInstance(), new EntityAdapterDefinition());
result.addMapping( "content_x_topic", DatabaseContentToTopics.getInstance(), new EntityAdapterDefinition());
@@ -389,6 +402,20 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer {
}
}
+ protected class MediaToMediaFolderField implements EntityAdapterDefinition.CalculatedField {
+ public Object getValue(EntityAdapter anEntityAdapter) {
+ try {
+ return anEntityAdapter.getToOneRelation(
+ "id="+anEntityAdapter.get("to_media_folder"),
+ "id",
+ "mediaFolder" );
+ }
+ catch (Throwable t) {
+ throw new RuntimeException(t.getMessage());
+ }
+ }
+ }
+
protected class ContentToCommentsField implements EntityAdapterDefinition.CalculatedField {
private String extracondition;
private String order;
diff --git a/source/mircoders/localizer/basic/MirBasicProducerAssistantLocalizer.java b/source/mircoders/localizer/basic/MirBasicProducerAssistantLocalizer.java
index 2f16e089..f3a8eaa9 100755
--- a/source/mircoders/localizer/basic/MirBasicProducerAssistantLocalizer.java
+++ b/source/mircoders/localizer/basic/MirBasicProducerAssistantLocalizer.java
@@ -1,153 +1,165 @@
-/*
- * Copyright (C) 2001, 2002 The Mir-coders group
- *
- * This file is part of Mir.
- *
- * Mir is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * Mir is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Mir; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * In addition, as a special exception, The Mir-coders gives permission to link
- * the code of this program with any library licensed under the Apache Software License,
- * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
- * (or with modified versions of the above that use the same license as the above),
- * and distribute linked combinations including the two. You must obey the
- * GNU General Public License in all respects for all of the code used other than
- * the above mentioned libraries. If you modify this file, you may extend this
- * exception to your version of the file, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your version.
- */
-package mircoders.localizer.basic;
-
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import mir.config.MirPropertiesConfiguration;
-import mir.entity.adapter.EntityAdapter;
-import mir.entity.adapter.EntityIteratorAdapter;
-import mir.log.LoggerWrapper;
-import mir.misc.StringUtil;
-import mir.util.GeneratorDateTimeFunctions;
-import mir.util.GeneratorExpressionFunctions;
-import mir.util.GeneratorFormatAdapters;
-import mir.util.GeneratorHTMLFunctions;
-import mir.util.GeneratorIntegerFunctions;
-import mir.util.GeneratorListFunctions;
-import mir.util.GeneratorRegularExpressionFunctions;
-import mir.util.GeneratorStringFunctions;
-import mircoders.global.MirGlobal;
-import mircoders.localizer.MirLocalizerExc;
-import mircoders.localizer.MirLocalizerFailure;
-import mircoders.localizer.MirProducerAssistantLocalizer;
-
-public class MirBasicProducerAssistantLocalizer implements MirProducerAssistantLocalizer {
- protected LoggerWrapper logger;
-
- public void initializeGenerationValueSet(Map aValueSet) throws MirLocalizerExc, MirLocalizerFailure {
- try {
- Iterator i;
-
- Map configMap = new HashMap();
- Map utilityMap = new HashMap();
-
- logger = new LoggerWrapper("Localizer.ProducerAssistant");
-
-// obsolete:
- configMap.put("producerDocRoot", MirGlobal.config().getString("Producer.DocRoot"));
- configMap.put("storageRoot", MirGlobal.config().getString("Producer.StorageRoot"));
- configMap.put("productionHost", MirGlobal.config().getString("Producer.ProductionHost"));
- configMap.put("openAction", MirGlobal.config().getString("Producer.OpenAction"));
- configMap.put("docRoot", MirGlobal.config().getString("RootUri"));
- configMap.put("actionRoot", MirGlobal.config().getString("RootUri") + "/servlet/Mir");
- configMap.put("now", new GeneratorFormatAdapters.DateFormatAdapter(new GregorianCalendar().getTime(), MirGlobal.config().getString("Mir.DefaultTimezone")));
- configMap.put("videoHost", MirGlobal.config().getString("Producer.Video.Host"));
- configMap.put("audioHost", MirGlobal.config().getString("Producer.Audio.Host"));
- configMap.put("imageHost", MirGlobal.config().getString("Producer.Image.Host"));
- configMap.put("imagePath", MirGlobal.config().getString("Producer.Image.Path"));
- configMap.put("mirVersion", MirGlobal.config().getString("Mir.Version"));
- configMap.put("defEncoding", MirGlobal.config().getString("Mir.DefaultEncoding"));
-
-// "new":
- configMap.putAll(MirPropertiesConfiguration.instance().allSettings());
-
- utilityMap.put("compressWhitespace", new freemarker.template.utility.CompressWhitespace());
- utilityMap.put("encodeHTML", new GeneratorHTMLFunctions.encodeHTMLGeneratorFunction());
- utilityMap.put("encodeXML", new GeneratorHTMLFunctions.encodeXMLGeneratorFunction());
- utilityMap.put("encodeURI", new GeneratorHTMLFunctions.encodeURIGeneratorFunction());
- utilityMap.put("subString", new GeneratorStringFunctions.subStringFunction());
- utilityMap.put("subList", new GeneratorListFunctions.subListFunction());
- utilityMap.put("isOdd", new GeneratorIntegerFunctions.isOddFunction());
- utilityMap.put("increment", new GeneratorIntegerFunctions.incrementFunction());
- utilityMap.put("evaluate", new GeneratorExpressionFunctions.evaluateExpressionFunction());
- utilityMap.put("constructString", new GeneratorStringFunctions.constructStructuredStringFunction());
- utilityMap.put("escapeJDBCString", new GeneratorStringFunctions.jdbcStringEscapeFunction());
- utilityMap.put("regexpreplace", new GeneratorRegularExpressionFunctions.regularExpressionReplaceFunction());
- utilityMap.put("datetime", new GeneratorDateTimeFunctions.DateTimeFunctions(
- MirPropertiesConfiguration.instance().getString("Mir.DefaultTimezone")));
-
- aValueSet.put("config", configMap);
- aValueSet.put("utility", utilityMap);
-
- aValueSet.put("languages",
- new EntityIteratorAdapter("", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "language"));
-
- aValueSet.put("topics",
- new EntityIteratorAdapter("", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "topic"));
-
- Map articleTypeMap = new HashMap();
- articleTypeMap.put("openposting", "0");
- articleTypeMap.put("newswire", "1");
- articleTypeMap.put("feature", "2");
- articleTypeMap.put("topicspecial", "3");
- articleTypeMap.put("startspecial", "4");
-
- i = new EntityIteratorAdapter("", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "articleType");
- while (i.hasNext()) {
- EntityAdapter articleType = (EntityAdapter) i.next();
-
- articleTypeMap.put(articleType.get("name"), articleType.get("id"));
- }
- aValueSet.put("articletype", articleTypeMap);
-
- Map commentStatusMap = new HashMap();
- i = new EntityIteratorAdapter("", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "commentStatus");
- while (i.hasNext()) {
- EntityAdapter commentStatus = (EntityAdapter) i.next();
-
- commentStatusMap.put(commentStatus.get("name"), commentStatus.get("id"));
- }
- aValueSet.put("commentstatus", commentStatusMap);
- }
- catch (Throwable t) {
- logger.error("initializeGenerationValueSet: Exception while collecting comment statuses" + t.getMessage());
- throw new RuntimeException(t.getMessage());
- }
-
- };
-
- public String filterNonHTMLText(String aText) {
- return StringUtil.createHTML(
- StringUtil.removeHTMLTags(aText),
- MirGlobal.config().getString("Producer.ImageRoot"),
- MirGlobal.config().getString("Producer.MailLinkName"),
- MirGlobal.config().getString("Producer.ExtLinkName"),
- MirGlobal.config().getString("Producer.IntLinkName")
- );
- }
-
- public String filterHTMLText(String aText) {
- return StringUtil.deleteForbiddenTags(aText);
- }
-}
+/*
+ * Copyright (C) 2001, 2002 The Mir-coders group
+ *
+ * This file is part of Mir.
+ *
+ * Mir is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Mir is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Mir; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * In addition, as a special exception, The Mir-coders gives permission to link
+ * the code of this program with any library licensed under the Apache Software License,
+ * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
+ * (or with modified versions of the above that use the same license as the above),
+ * and distribute linked combinations including the two. You must obey the
+ * GNU General Public License in all respects for all of the code used other than
+ * the above mentioned libraries. If you modify this file, you may extend this
+ * exception to your version of the file, but you are not obligated to do so.
+ * If you do not wish to do so, delete this exception statement from your version.
+ */
+package mircoders.localizer.basic;
+
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import mir.config.MirPropertiesConfiguration;
+import mir.entity.adapter.EntityAdapter;
+import mir.entity.adapter.EntityIteratorAdapter;
+import mir.log.LoggerWrapper;
+import mir.misc.StringUtil;
+import mir.util.GeneratorDateTimeFunctions;
+import mir.util.GeneratorExpressionFunctions;
+import mir.util.GeneratorFormatAdapters;
+import mir.util.GeneratorHTMLFunctions;
+import mir.util.GeneratorIntegerFunctions;
+import mir.util.GeneratorListFunctions;
+import mir.util.GeneratorRegularExpressionFunctions;
+import mir.util.GeneratorStringFunctions;
+import mircoders.global.MirGlobal;
+import mircoders.localizer.MirLocalizerExc;
+import mircoders.localizer.MirLocalizerFailure;
+import mircoders.localizer.MirProducerAssistantLocalizer;
+
+public class MirBasicProducerAssistantLocalizer implements MirProducerAssistantLocalizer {
+ protected LoggerWrapper logger;
+
+ public void initializeGenerationValueSet(Map aValueSet) throws MirLocalizerExc, MirLocalizerFailure {
+ try {
+ Iterator i;
+
+ Map configMap = new HashMap();
+ Map utilityMap = new HashMap();
+
+ logger = new LoggerWrapper("Localizer.ProducerAssistant");
+
+// obsolete:
+ configMap.put("producerDocRoot", MirGlobal.config().getString("Producer.DocRoot"));
+ configMap.put("storageRoot", MirGlobal.config().getString("Producer.StorageRoot"));
+ configMap.put("productionHost", MirGlobal.config().getString("Producer.ProductionHost"));
+ configMap.put("openAction", MirGlobal.config().getString("Producer.OpenAction"));
+ configMap.put("docRoot", MirGlobal.config().getString("RootUri"));
+ configMap.put("actionRoot", MirGlobal.config().getString("RootUri") + "/servlet/Mir");
+ configMap.put("now", new GeneratorFormatAdapters.DateFormatAdapter(new GregorianCalendar().getTime(), MirGlobal.config().getString("Mir.DefaultTimezone")));
+ configMap.put("videoHost", MirGlobal.config().getString("Producer.Video.Host"));
+ configMap.put("audioHost", MirGlobal.config().getString("Producer.Audio.Host"));
+ configMap.put("imageHost", MirGlobal.config().getString("Producer.Image.Host"));
+ configMap.put("imagePath", MirGlobal.config().getString("Producer.Image.Path"));
+ configMap.put("mirVersion", MirGlobal.config().getString("Mir.Version"));
+ configMap.put("defEncoding", MirGlobal.config().getString("Mir.DefaultEncoding"));
+
+// "new":
+ configMap.putAll(MirPropertiesConfiguration.instance().allSettings());
+
+ utilityMap.put("compressWhitespace", new freemarker.template.utility.CompressWhitespace());
+ utilityMap.put("encodeHTML", new GeneratorHTMLFunctions.encodeHTMLGeneratorFunction());
+ utilityMap.put("encodeXML", new GeneratorHTMLFunctions.encodeXMLGeneratorFunction());
+ utilityMap.put("encodeURI", new GeneratorHTMLFunctions.encodeURIGeneratorFunction());
+ utilityMap.put("subString", new GeneratorStringFunctions.subStringFunction());
+ utilityMap.put("subList", new GeneratorListFunctions.subListFunction());
+ utilityMap.put("isOdd", new GeneratorIntegerFunctions.isOddFunction());
+ utilityMap.put("increment", new GeneratorIntegerFunctions.incrementFunction());
+ utilityMap.put("evaluate", new GeneratorExpressionFunctions.evaluateExpressionFunction());
+ utilityMap.put("constructString", new GeneratorStringFunctions.constructStructuredStringFunction());
+ utilityMap.put("escapeJDBCString", new GeneratorStringFunctions.jdbcStringEscapeFunction());
+ utilityMap.put("regexpreplace", new GeneratorRegularExpressionFunctions.regularExpressionReplaceFunction());
+ utilityMap.put("datetime", new GeneratorDateTimeFunctions.DateTimeFunctions(
+ MirPropertiesConfiguration.instance().getString("Mir.DefaultTimezone")));
+
+ aValueSet.put("config", configMap);
+ aValueSet.put("utility", utilityMap);
+
+ aValueSet.put("languages",
+ new EntityIteratorAdapter("", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "language"));
+
+ aValueSet.put("topics",
+ new EntityIteratorAdapter("", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "topic"));
+
+ Map articleTypeMap = new HashMap();
+ articleTypeMap.put("openposting", "0");
+ articleTypeMap.put("newswire", "1");
+ articleTypeMap.put("feature", "2");
+ articleTypeMap.put("topicspecial", "3");
+ articleTypeMap.put("startspecial", "4");
+
+ i = new EntityIteratorAdapter("", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "articleType");
+ while (i.hasNext()) {
+ EntityAdapter articleType = (EntityAdapter) i.next();
+
+ articleTypeMap.put(articleType.get("name"), articleType.get("id"));
+ }
+ aValueSet.put("articletype", articleTypeMap);
+
+ Map commentStatusMap = new HashMap();
+ i = new EntityIteratorAdapter("", "", 20, MirGlobal.localizer().dataModel().adapterModel(), "commentStatus");
+ while (i.hasNext()) {
+ EntityAdapter commentStatus = (EntityAdapter) i.next();
+
+ commentStatusMap.put(commentStatus.get("name"), commentStatus.get("id"));
+ }
+ aValueSet.put("commentstatus", commentStatusMap);
+ }
+ catch (Throwable t) {
+ logger.error("initializeGenerationValueSet: Exception while collecting comment statuses" + t.getMessage());
+ throw new RuntimeException(t.getMessage());
+ }
+
+ };
+
+ public String filterNonHTMLText(String aText) {
+
+ logger.debug("about to filter non HTML Text of length " + aText.length());
+ try {
+ String result =
+ StringUtil.createHTML(
+ StringUtil.removeHTMLTags(aText),
+ MirGlobal.config().getString("Producer.ImageRoot"),
+ MirGlobal.config().getString("Producer.MailLinkName"),
+ MirGlobal.config().getString("Producer.ExtLinkName"),
+ MirGlobal.config().getString("Producer.IntLinkName")
+ );
+ logger.debug("done filtering non-HTML text ");
+ return result;
+ }
+ catch (Throwable t) {
+ logger.error("error while filtering non-HTML text: " + t.toString());
+
+ throw new RuntimeException(t.toString());
+ }
+ }
+
+ public String filterHTMLText(String aText) {
+ return StringUtil.deleteForbiddenTags(aText);
+ }
+}
diff --git a/source/mircoders/media/MediaHandlerAudio.java b/source/mircoders/media/MediaHandlerAudio.java
index 05a9c8da..cc60e707 100755
--- a/source/mircoders/media/MediaHandlerAudio.java
+++ b/source/mircoders/media/MediaHandlerAudio.java
@@ -30,8 +30,7 @@
package mircoders.media;
-import mir.media.*;
-import mir.entity.*;
+import mir.media.MirMedia;
/**
* Handles audio media, like mp3 and maybe it could also handle some other.
@@ -40,7 +39,7 @@ import mir.entity.*;
* @see mir.media.MediaHandlerGeneric
* @see mir.media.MirMedia
* @author mh
- * @version $Id: MediaHandlerAudio.java,v 1.9 2003/04/29 02:36:50 zapata Exp $
+ * @version $Id: MediaHandlerAudio.java,v 1.9.2.1 2003/08/13 02:43:56 zapata Exp $
*/
public class MediaHandlerAudio extends MediaHandlerGeneric implements MirMedia
diff --git a/source/mircoders/servlet/ServletModuleAudio.java b/source/mircoders/servlet/ServletModuleAudio.java
index 91a46462..43262adf 100755
--- a/source/mircoders/servlet/ServletModuleAudio.java
+++ b/source/mircoders/servlet/ServletModuleAudio.java
@@ -18,13 +18,13 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* In addition, as a special exception, The Mir-coders gives permission to link
- * the code of this program with any library licensed under the Apache Software License,
- * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
- * (or with modified versions of the above that use the same license as the above),
- * and distribute linked combinations including the two. You must obey the
- * GNU General Public License in all respects for all of the code used other than
- * the above mentioned libraries. If you modify this file, you may extend this
- * exception to your version of the file, but you are not obligated to do so.
+ * the code of this program with any library licensed under the Apache Software License,
+ * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
+ * (or with modified versions of the above that use the same license as the above),
+ * and distribute linked combinations including the two. You must obey the
+ * GNU General Public License in all respects for all of the code used other than
+ * the above mentioned libraries. If you modify this file, you may extend this
+ * exception to your version of the file, but you are not obligated to do so.
* If you do not wish to do so, delete this exception statement from your version.
*/
package mircoders.servlet;
@@ -54,6 +54,10 @@ public class ServletModuleAudio extends ServletModuleUploadedMedia {
private ServletModuleAudio() {
logger = new LoggerWrapper("ServletModule.Audio");
+
+ entityName = "audio";
+ moduleName = "Audio";
+
try {
configuration = MirPropertiesConfiguration.instance();
templateListString = configuration.getString("ServletModule.Audio.ListTemplate");
diff --git a/source/mircoders/servlet/ServletModuleComment.java b/source/mircoders/servlet/ServletModuleComment.java
index ec830c5a..2c74318b 100755
--- a/source/mircoders/servlet/ServletModuleComment.java
+++ b/source/mircoders/servlet/ServletModuleComment.java
@@ -67,7 +67,7 @@ import mircoders.storage.DatabaseContent;
public class ServletModuleComment extends ServletModule
{
- private ModuleContent moduleContent;
+ private ModuleContent moduleContent;
private static ServletModuleComment instance = new ServletModuleComment();
public static ServletModule getInstance() { return instance; }
@@ -358,6 +358,4 @@ public class ServletModuleComment extends ServletModule
throw new ServletModuleFailure(e);
}
}
-
-}
-
+}
\ No newline at end of file
diff --git a/source/mircoders/servlet/ServletModuleContent.java b/source/mircoders/servlet/ServletModuleContent.java
index c363f435..4f423d4a 100755
--- a/source/mircoders/servlet/ServletModuleContent.java
+++ b/source/mircoders/servlet/ServletModuleContent.java
@@ -74,7 +74,7 @@ import mircoders.storage.DatabaseContentToTopics;
* ServletModuleContent -
* deliver html for the article admin form.
*
- * @version $Id: ServletModuleContent.java,v 1.52.2.4 2003/07/21 07:01:15 zapata Exp $
+ * @version $Id: ServletModuleContent.java,v 1.52.2.5 2003/08/13 02:43:56 zapata Exp $
* @author rk, mir-coders
*
*/
@@ -153,13 +153,13 @@ public class ServletModuleContent extends ServletModule
if (searchOrder.length()>0) {
if (searchOrder.equals("datedesc"))
- queryBuilder.appendAscendingOrder("webdb_create");
- else if (searchOrder.equals("dateasc"))
queryBuilder.appendDescendingOrder("webdb_create");
+ else if (searchOrder.equals("dateasc"))
+ queryBuilder.appendAscendingOrder("webdb_create");
else if (searchOrder.equals("title"))
- queryBuilder.appendDescendingOrder("title");
+ queryBuilder.appendAscendingOrder("title");
else if (searchOrder.equals("creator"))
- queryBuilder.appendDescendingOrder("creator");
+ queryBuilder.appendAscendingOrder("creator");
}
returnArticleList(aRequest, aResponse, queryBuilder.getWhereClause(), queryBuilder.getOrderByClause(), 0, selectArticleUrl);
@@ -206,65 +206,6 @@ public class ServletModuleContent extends ServletModule
}
}
- public void delete(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc, ServletModuleFailure
- {
- try {
- MirGlobal.accessControl().general().assertMayDeleteArticles(ServletHelper.getUser(aRequest));
-
- String idParam = aRequest.getParameter("id");
- if (idParam == null)
- throw new ServletModuleExc("Invalid call: id missing");
-
- String confirmParam = aRequest.getParameter("confirm");
- String cancelParam = aRequest.getParameter("cancel");
-
- logger.info("where = " + aRequest.getParameter("where"));
-
- if (confirmParam == null && cancelParam == null) {
-
- SimpleHash mergeData = new SimpleHash();
- mergeData.put("module", "Content");
- mergeData.put("infoString", "Content: " + idParam);
- mergeData.put("id", idParam);
- mergeData.put("where", aRequest.getParameter("where"));
- mergeData.put("order", aRequest.getParameter("order"));
- mergeData.put("offset", aRequest.getParameter("offset"));
- deliver(aRequest, aResponse, mergeData, templateConfirmString);
- }
- else {
- if (confirmParam != null && !confirmParam.equals("")) {
- try {
- mainModule.deleteById(idParam);
-
- /** @todo the following two should be implied in
- * DatabaseContent */
- DatabaseContentToTopics.getInstance().deleteByContentId(idParam);
- DatabaseComment.getInstance().deleteByContentId(idParam);
- DatabaseContentToMedia.getInstance().deleteByContentId(idParam);
-
- //delete from lucene index, if any
- String index = configuration.getString("IndexPath");
- if (IndexReader.indexExists(index)) {
- IndexUtil.unindexID(idParam, index);
- }
-
- }
- catch (Throwable e) {
- throw new ServletModuleFailure(e);
- }
- list(aRequest, aResponse);
- }
- else {
- // Datensatz anzeigen
- _showObject(idParam, aRequest, aResponse);
- }
- }
- }
- catch (Throwable t) {
- throw new ServletModuleFailure(t);
- }
- }
-
public void edit(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc
{
String idParam = aRequest.getParameter("id");
@@ -341,9 +282,6 @@ public class ServletModuleContent extends ServletModule
String id = mainModule.set(withValues);
DatabaseContentToTopics.getInstance().setTopics(aRequest.getParameter("id"), aRequest.getParameterValues("to_topic"));
- String whereParam = aRequest.getParameter("where");
- String orderParam = aRequest.getParameter("order");
-
if (returnUrl!=null){
redirect(aResponse, returnUrl);
}
diff --git a/source/mircoders/servlet/ServletModuleImages.java b/source/mircoders/servlet/ServletModuleImages.java
index 1e1c9ec9..70e5b84f 100755
--- a/source/mircoders/servlet/ServletModuleImages.java
+++ b/source/mircoders/servlet/ServletModuleImages.java
@@ -18,13 +18,13 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* In addition, as a special exception, The Mir-coders gives permission to link
- * the code of this program with any library licensed under the Apache Software License,
- * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
- * (or with modified versions of the above that use the same license as the above),
- * and distribute linked combinations including the two. You must obey the
- * GNU General Public License in all respects for all of the code used other than
- * the above mentioned libraries. If you modify this file, you may extend this
- * exception to your version of the file, but you are not obligated to do so.
+ * the code of this program with any library licensed under the Apache Software License,
+ * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
+ * (or with modified versions of the above that use the same license as the above),
+ * and distribute linked combinations including the two. You must obey the
+ * GNU General Public License in all respects for all of the code used other than
+ * the above mentioned libraries. If you modify this file, you may extend this
+ * exception to your version of the file, but you are not obligated to do so.
* If you do not wish to do so, delete this exception statement from your version.
*/
package mircoders.servlet;
@@ -38,7 +38,7 @@ import mircoders.storage.DatabaseImages;
/*
* ServletModuleImages -
*
- * @version $Id: ServletModuleImages.java,v 1.26 2003/04/21 12:42:51 idfx Exp $
+ * @version $Id: ServletModuleImages.java,v 1.26.2.1 2003/08/13 02:43:56 zapata Exp $
* @author RK, the mir-coders group
*/
@@ -52,6 +52,8 @@ public class ServletModuleImages extends ServletModuleUploadedMedia
private ServletModuleImages() {
super();
logger = new LoggerWrapper("ServletModule.Images");
+ entityName = "image";
+ moduleName = "Images";
templateListString = configuration.getString("ServletModule.Images.ListTemplate");
templateObjektString = configuration.getString("ServletModule.Images.ObjektTemplate");
templateConfirmString = configuration.getString("ServletModule.Images.ConfirmTemplate");
diff --git a/source/mircoders/servlet/ServletModuleOtherMedia.java b/source/mircoders/servlet/ServletModuleOtherMedia.java
index 23f71eae..d42d748c 100755
--- a/source/mircoders/servlet/ServletModuleOtherMedia.java
+++ b/source/mircoders/servlet/ServletModuleOtherMedia.java
@@ -18,13 +18,13 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* In addition, as a special exception, The Mir-coders gives permission to link
- * the code of this program with any library licensed under the Apache Software License,
- * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
- * (or with modified versions of the above that use the same license as the above),
- * and distribute linked combinations including the two. You must obey the
- * GNU General Public License in all respects for all of the code used other than
- * the above mentioned libraries. If you modify this file, you may extend this
- * exception to your version of the file, but you are not obligated to do so.
+ * the code of this program with any library licensed under the Apache Software License,
+ * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
+ * (or with modified versions of the above that use the same license as the above),
+ * and distribute linked combinations including the two. You must obey the
+ * GNU General Public License in all respects for all of the code used other than
+ * the above mentioned libraries. If you modify this file, you may extend this
+ * exception to your version of the file, but you are not obligated to do so.
* If you do not wish to do so, delete this exception statement from your version.
*/
@@ -36,14 +36,17 @@ import mir.storage.StorageObjectFailure;
import mircoders.module.ModuleUploadedMedia;
import mircoders.storage.DatabaseOther;
-/*
- *
+/**
*
- * @author br1
+ *
Title:
+ *
Description:
+ *
Copyright: Copyright (c) 2003
+ *
Company:
+ * @author the mir coders
+ * @version 1.0
*/
public class ServletModuleOtherMedia extends ServletModuleUploadedMedia {
- // Singelton / Contructor
private static ServletModuleOtherMedia instance = new ServletModuleOtherMedia();
public static ServletModule getInstance() {
@@ -53,13 +56,14 @@ public class ServletModuleOtherMedia extends ServletModuleUploadedMedia {
private ServletModuleOtherMedia() {
super();
logger = new LoggerWrapper("ServletModule.OtherMedia");
+ entityName = "otherMedia";
+ moduleName = "OtherMedia";
templateListString = configuration.getString("ServletModule.OtherMedia.ListTemplate");
templateObjektString = configuration.getString("ServletModule.OtherMedia.ObjektTemplate");
templateConfirmString = configuration.getString("ServletModule.OtherMedia.ConfirmTemplate");
try {
mainModule = new ModuleUploadedMedia(DatabaseOther.getInstance());
- //dbRights = DatabaseRights.getInstance();
}
catch (StorageObjectFailure e) {
logger.error("servletmodule otherMedia could not be initialized: " + e.getMessage());
diff --git a/source/mircoders/servlet/ServletModuleUploadedMedia.java b/source/mircoders/servlet/ServletModuleUploadedMedia.java
index 41920c67..556d18c1 100755
--- a/source/mircoders/servlet/ServletModuleUploadedMedia.java
+++ b/source/mircoders/servlet/ServletModuleUploadedMedia.java
@@ -1,419 +1,502 @@
-/*
- * Copyright (C) 2001, 2002 The Mir-coders group
- *
- * This file is part of Mir.
- *
- * Mir is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * Mir is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Mir; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * In addition, as a special exception, The Mir-coders gives permission to link
- * the code of this program with any library licensed under the Apache Software License,
- * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
- * (or with modified versions of the above that use the same license as the above),
- * and distribute linked combinations including the two. You must obey the
- * GNU General Public License in all respects for all of the code used other than
- * the above mentioned libraries. If you modify this file, you may extend this
- * exception to your version of the file, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your version.
- */
-
-package mircoders.servlet;
-
-import java.io.InputStream;
-import java.net.URLEncoder;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-
-import javax.servlet.ServletContext;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-import mir.config.MirPropertiesConfiguration;
-import mir.entity.Entity;
-import mir.entity.EntityList;
-import mir.log.LoggerWrapper;
-import mir.media.MediaHelper;
-import mir.media.MirMedia;
-import mir.servlet.ServletModule;
-import mir.servlet.ServletModuleExc;
-import mir.servlet.ServletModuleFailure;
-import mir.servlet.ServletModuleUserExc;
-import mir.session.UploadedFile;
-import mir.util.ExceptionFunctions;
-import mir.util.HTTPParsedRequest;
-import mircoders.entity.EntityComment;
-import mircoders.entity.EntityContent;
-import mircoders.entity.EntityUploadedMedia;
-import mircoders.entity.EntityUsers;
-import mircoders.media.MediaUploadProcessor;
-import mircoders.module.*;
-import mircoders.storage.DatabaseComment;
-import mircoders.storage.DatabaseContent;
-import mircoders.storage.DatabaseMediafolder;
-
-import org.apache.commons.fileupload.FileItem;
-
-import freemarker.template.SimpleHash;
-import freemarker.template.SimpleList;
-
-/*
- * ServletModuleBilder -
- * liefert HTML fuer Bilder
- *
- * @version $Id: ServletModuleUploadedMedia.java,v 1.28.2.2 2003/06/25 02:40:29 zapata Exp $
- * @author RK, the mir-coders group
- */
-
-public abstract class ServletModuleUploadedMedia
- extends mir.servlet.ServletModule {
-
- //private static DatabaseRights dbRights;
-
- public static ServletModule getInstance() {
- return null;
- }
-
- public ServletModuleUploadedMedia() {
- super();
- logger = new LoggerWrapper("ServletModule.UploadedMedia");
- }
-
- public void insert(HttpServletRequest aRequest, HttpServletResponse aResponse)
- throws ServletModuleExc, ServletModuleUserExc {
- try {
- HTTPParsedRequest parsedRequest = new HTTPParsedRequest(aRequest,
- configuration.getString("Mir.DefaultEncoding"),
- configuration.getInt("MaxMediaUploadSize")*1024,
- configuration.getString("TempDir"));
-
- Map mediaValues = new HashMap();
-
- mediaValues.put("to_publisher", ServletHelper.getUser(aRequest).getId());
-
- Iterator i = mainModule.getStorageObject().getFields().iterator();
- while (i.hasNext()) {
- String field = (String) i.next();
- String value = parsedRequest.getParameter(field);
- if (value!=null)
- mediaValues.put(field, value);
- }
-
- List mediaList = new Vector();
-
- i = parsedRequest.getFiles().iterator();
- while (i.hasNext()) {
- UploadedFile file = new mir.session.CommonsUploadedFileAdapter((FileItem) i.next());
-
- String suffix = file.getFieldName().substring(5);
- mediaValues.put("title", parsedRequest.getParameter("media_title" + suffix));
-
- mediaList.add(MediaUploadProcessor.processMediaUpload(file, mediaValues));
- }
-
- String articleid = parsedRequest.getParameter("articleid");
- String commentid = parsedRequest.getParameter("commentid");
-
- if (articleid!=null) {
- EntityContent entContent = (EntityContent) DatabaseContent.getInstance().selectById(articleid);
-
- i=mediaList.iterator();
-
- while (i.hasNext()) {
- entContent.attach(((EntityUploadedMedia) i.next()).getId());
- }
-
- ((ServletModuleContent) ServletModuleContent.getInstance())._showObject(articleid, aRequest, aResponse);
-
- return;
- }
-
- if (commentid!=null) {
- EntityComment comment = (EntityComment) DatabaseComment.getInstance().selectById(commentid);
-
- i=mediaList.iterator();
-
- while (i.hasNext()) {
- comment.attach( ( (EntityUploadedMedia) i.next()).getId());
- }
-
- ((ServletModuleComment) ServletModuleComment.getInstance()).showComment(commentid, aRequest, aResponse);
-
- return;
- }
-
- SimpleHash mergeData = new SimpleHash();
- SimpleHash popups = new SimpleHash();
- mergeData.put("contentlist", mir.generator.FreemarkerGenerator.makeAdapter(mediaList));
-
- mergeData.put("count", Integer.toString(mediaList.size()));
- mergeData.put("from", "1");
- mergeData.put("to", Integer.toString(mediaList.size()));
-
- //fetch the popups
- popups.put("mediafolderPopupData", DatabaseMediafolder.getInstance().getPopupData());
- // raus damit
- deliver(aRequest, aResponse, mergeData, popups, templateListString);
- }
- catch (Throwable t) {
- Throwable cause = ExceptionFunctions.traceCauseException(t);
-
- if (cause instanceof ModuleMediaType.UnsupportedMimeTypeExc) {
- throw new ServletModuleUserExc("media.error.unsupportedformat", new String[] {});
- }
- throw new ServletModuleFailure("ServletModuleUploadedMedia.insert: " + t.toString(), t);
- }
- }
-
- public void update(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
-
- try {
- HTTPParsedRequest parsedRequest = new HTTPParsedRequest(aRequest,
- configuration.getString("Mir.DefaultEncoding"),
- configuration.getInt("MaxMediaUploadSize")*1024,
- configuration.getString("TempDir"));
- Map mediaValues = new HashMap();
-
- Iterator i = mainModule.getStorageObject().getFields().iterator();
- while (i.hasNext()) {
- String field = (String) i.next();
- String value = parsedRequest.getParameter(field);
- if (value!=null)
- mediaValues.put(field, value);
- }
-
- mediaValues.put("to_publisher", ServletHelper.getUser(aRequest).getId());
- mediaValues.put("is_produced", "0");
- if (!mediaValues.containsKey("is_published"))
- mediaValues.put("is_published", "0");
-
- String id = mainModule.set(mediaValues);
- logger.debug("update: media ID = " + id);
- _edit(id, aRequest, aResponse);
- }
- catch (Throwable e) {
- throw new ServletModuleFailure("upload -- exception " + e.toString(), e);
- }
-
- }
-
-
- public void list(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
- // Parameter auswerten
- SimpleHash mergeData = new SimpleHash();
- SimpleHash popups = new SimpleHash();
-
- String query_text = aRequest.getParameter("query_text");
- mergeData.put("query_text", query_text);
- if (query_text != null) mergeData.put("query_text_encoded", URLEncoder.encode(query_text));
- String query_field = aRequest.getParameter("query_field");
- mergeData.put("query_field", query_field);
- String query_is_published = aRequest.getParameter("query_is_published");
- mergeData.put("query_is_published", query_is_published);
- String query_media_folder = aRequest.getParameter("query_media_folder");
- mergeData.put("query_media_folder", query_media_folder);
- String offset = aRequest.getParameter("offset");
- if (offset == null || offset.equals("")) offset = "0";
- mergeData.put("offset", offset);
-
- String order = aRequest.getParameter("order");
- if (order == null || order.equals("")) order = "webdb_lastchange desc";
-
- // if in connection mode to content
- mergeData.put("articleid", aRequest.getParameter("articleid"));
- mergeData.put("commentid", aRequest.getParameter("commentid"));
-
-
- // sql basteln
- String whereClause = "";
- boolean isFirst = true;
- if (query_text != null && !query_text.equalsIgnoreCase("")) {
- whereClause += "lower(" + query_field + ") like lower('%" + query_text + "%')";
- isFirst = false;
- }
- if (query_is_published != null && !query_is_published.equals("")) {
- if (isFirst == false) whereClause += " and ";
- whereClause += "is_published='" + query_is_published + "'";
- isFirst = false;
- }
- if (query_media_folder != null && !query_media_folder.equals("")) {
- if (isFirst == false) whereClause += " and ";
- whereClause += "to_media_folder='" + query_media_folder + "'";
- }
- //theLog.printDebugInfo("sql-whereclause: " + whereClause + " order: " + order + " offset: " + offset);
-
- // fetch and deliver
- try {
- if (query_text != null || query_is_published != null || query_media_folder != null) {
- EntityList theList = mainModule.getByWhereClause(whereClause, order, (new Integer(offset)).intValue(), 10);
- if (theList != null) {
- mergeData.put("contentlist", theList);
- if (theList.getOrder() != null) {
- mergeData.put("order", theList.getOrder());
- mergeData.put("order_encoded", URLEncoder.encode(theList.getOrder()));
- }
- mergeData.put("count", (new Integer(theList.getCount())).toString());
- mergeData.put("from", (new Integer(theList.getFrom())).toString());
- mergeData.put("to", (new Integer(theList.getTo())).toString());
- if (theList.hasNextBatch())
- mergeData.put("next", (new Integer(theList.getNextBatch())).toString());
- if (theList.hasPrevBatch())
- mergeData.put("prev", (new Integer(theList.getPrevBatch())).toString());
- }
- }
- popups.put("mediafolderPopupData", DatabaseMediafolder.getInstance().getPopupData());
-
- deliver(aRequest, aResponse, mergeData, popups, templateListString);
- }
- catch (Throwable e) {
- throw new ServletModuleFailure(e);
- }
- }
-
-
- public void add(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
- try {
- SimpleHash mergeData = new SimpleHash();
- SimpleHash popups = new SimpleHash();
- String maxMedia = MirPropertiesConfiguration.instance().getString("ServletModule.OpenIndy.MaxMediaUploadItems");
- String numOfMedia = aRequest.getParameter("medianum");
-
- mergeData.put("new", "1");
- mergeData.put("articleid", aRequest.getParameter("articleid"));
- mergeData.put("commentid", aRequest.getParameter("commentid"));
-
- popups.put("mediafolderPopupData", DatabaseMediafolder.getInstance().getPopupData());
-
- if (numOfMedia==null || numOfMedia.equals("")) {
- numOfMedia="1";
- }
- else if(Integer.parseInt(numOfMedia) > Integer.parseInt(maxMedia)) {
- numOfMedia = maxMedia;
- }
-
- int mediaNum = Integer.parseInt(numOfMedia);
- SimpleList mediaFields = new SimpleList();
- for(int i =0; iTitle: