X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Fservlet%2FServletModuleComment.java;h=510b98442153ae83820f00a877f2611de037aeb4;hb=86a7f9a337462ad82b23c77e91621929b2a741e3;hp=a94e49e62d73f40a85bb629812a69da17c946daf;hpb=0c4d79188ad0df9f35a0fb1131821d01af1418a7;p=mir.git diff --git a/source/mircoders/servlet/ServletModuleComment.java b/source/mircoders/servlet/ServletModuleComment.java index a94e49e6..510b9844 100755 --- a/source/mircoders/servlet/ServletModuleComment.java +++ b/source/mircoders/servlet/ServletModuleComment.java @@ -31,33 +31,32 @@ package mircoders.servlet; -import java.io.*; -import java.sql.*; -import java.util.*; -import java.net.*; - -import javax.servlet.*; -import javax.servlet.http.*; - -import org.apache.struts.util.MessageResources; - -import freemarker.template.*; - -import mir.servlet.*; -import mir.module.*; -import mir.misc.*; -import mir.entity.*; -import mir.storage.*; -import mir.generator.*; -import mir.entity.*; -import mir.entity.adapter.*; -import mir.util.*; -import mir.log.*; - -import mircoders.storage.*; -import mircoders.global.*; -import mircoders.localizer.*; -import mircoders.module.*; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import mir.config.MirPropertiesConfiguration; +import mir.entity.adapter.EntityAdapterModel; +import mir.entity.adapter.EntityIteratorAdapter; +import mir.log.LoggerWrapper; +import mir.servlet.ServletModule; +import mir.servlet.ServletModuleExc; +import mir.servlet.ServletModuleFailure; +import mir.util.CachingRewindableIterator; +import mir.util.HTTPRequestParser; +import mir.util.JDBCStringRoutines; +import mir.util.SQLQueryBuilder; +import mir.util.URLBuilder; +import mircoders.global.MirGlobal; +import mircoders.module.ModuleComment; +import mircoders.module.ModuleContent; +import mircoders.storage.DatabaseComment; +import mircoders.storage.DatabaseCommentStatus; +import mircoders.storage.DatabaseContent; +import mircoders.storage.DatabaseLanguage; +import freemarker.template.SimpleHash; +import freemarker.template.TemplateModelRoot; /* * ServletModuleComment - controls navigation for Comments @@ -78,87 +77,104 @@ public class ServletModuleComment extends ServletModule private ServletModuleComment() { logger = new LoggerWrapper("ServletModule.Comment"); - templateListString = MirConfig.getProp("ServletModule.Comment.ListTemplate"); - templateObjektString = MirConfig.getProp("ServletModule.Comment.ObjektTemplate"); - templateConfirmString = MirConfig.getProp("ServletModule.Comment.ConfirmTemplate"); try { + configuration = MirPropertiesConfiguration.instance(); + templateListString = configuration.getString("ServletModule.Comment.ListTemplate"); + templateObjektString = configuration.getString("ServletModule.Comment.ObjektTemplate"); + templateConfirmString = configuration.getString("ServletModule.Comment.ConfirmTemplate"); + mainModule = new ModuleComment(DatabaseComment.getInstance()); moduleContent = new ModuleContent(DatabaseContent.getInstance()); } - catch (StorageObjectException e) { + catch (Exception e) { logger.error("servletmodule comment could not be initialized:" + e.getMessage()); } } - public void list(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleException + public void edit(HttpServletRequest req, HttpServletResponse res) throws ServletModuleExc + { + String idParam = req.getParameter("id"); + + if (idParam == null) + throw new ServletModuleExc("Invalid call: id not supplied "); + + showComment(idParam, req, res); + } + + public void showComment(String anId, HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { + try { + SimpleHash extraInfo = new SimpleHash(); + TemplateModelRoot data; + + data = (TemplateModelRoot) mainModule.getById(anId); + + extraInfo.put("languages", DatabaseLanguage.getInstance().getPopupData()); + extraInfo.put("comment_status_values", DatabaseCommentStatus.getInstance().getPopupData()); + + deliver(aRequest, aResponse, data, extraInfo, templateObjektString); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } + + + public void list(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); String where = requestParser.getParameter("where"); - String order = requestParser.getParameter("order"); + String order = requestParser.getParameterWithDefault("order", "webdb_create desc"); int offset = requestParser.getIntegerWithDefault("offset", 0); returnCommentList(aRequest, aResponse, where, order, offset); } - public void search(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleException + public void search(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); + SQLQueryBuilder queryBuilder = new SQLQueryBuilder(); String queryField = ""; String searchField = requestParser.getParameter("searchfield"); String searchText = requestParser.getParameter("searchtext"); String searchIsPublished = requestParser.getParameter("searchispublished"); + String searchStatus = requestParser.getParameter("searchstatus"); String searchOrder = requestParser.getParameter("searchorder"); - String whereClause = " (1=1) "; - String orderClause = "webdb_create desc"; - if (searchIsPublished.equals("0")) { - whereClause=whereClause + "is_published='f'"; + queryBuilder.appendAndCondition("is_published='f'"); } else if (searchIsPublished.equals("1")) { - whereClause=whereClause + "is_published='t'"; + queryBuilder.appendAndCondition("is_published='t'"); } - if (!searchField.equals("") && !searchText.equals("")) { - queryField=""; - - if (searchField.equals("title")) - queryField = "title"; - else if (searchField.equals("creator")) - queryField = "creator"; - else if (searchField.equals("description")) - queryField = "description"; - else - queryField = ""; - - if (!queryField.equals("")) { - if (!whereClause.equals("")) - whereClause = whereClause + " and "; - - // ML: searchText must be properly escaped! - whereClause = whereClause + "lower(" + queryField + ") like '%" + searchText.toLowerCase() + "%'"; - } + if (searchText.length()>0) { + queryBuilder.appendAndCondition( + "lower("+ searchField + ") like " + + "'%" + JDBCStringRoutines.escapeStringLiteral(searchText.toLowerCase()) + "%'"); } - System.out.println("search order = " + searchOrder); - - if (searchOrder.equals("datedesc")) { - orderClause = "webdb_create desc"; - } - else if (searchOrder.equals("dateasc")) { - orderClause = "webdb_create asc"; + if (searchStatus.length()>0) { + queryBuilder.appendAndCondition("to_comment_status="+Integer.parseInt(searchStatus)); } - else if (searchOrder.equals("articletitle")) { - orderClause = "(select content.title from content where content.id = comment.to_media) asc"; + + 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("articletitle")) + queryBuilder.appendAscendingOrder("(select content.title from content where content.id = comment.to_media)"); + else if (searchOrder.equals("creator")) + queryBuilder.appendDescendingOrder("creator"); } - returnCommentList(aRequest, aResponse, whereClause, orderClause, 0); + returnCommentList(aRequest, aResponse, queryBuilder.getWhereClause(), queryBuilder.getOrderByClause(), 0); } - public void articlecomments(HttpServletRequest req, HttpServletResponse res) throws ServletModuleException + public void articlecomments(HttpServletRequest req, HttpServletResponse res) throws ServletModuleExc { String articleIdString = req.getParameter("articleid"); int articleId; @@ -168,16 +184,13 @@ public class ServletModuleComment extends ServletModule returnCommentList( req, res, "to_media="+articleId, "webdb_create desc", 0); } - catch (ServletModuleException e) { - throw e; - } catch (Throwable e) { - throw new ServletModuleException(e.getMessage()); + throw new ServletModuleFailure(e); } } public void returnCommentList(HttpServletRequest aRequest, HttpServletResponse aResponse, - String aWhereClause, String anOrderByClause, int anOffset) throws ServletModuleException { + String aWhereClause, String anOrderByClause, int anOffset) throws ServletModuleExc { // ML: experiment in using the producer's generation system instead of the // old one... @@ -210,14 +223,17 @@ public class ServletModuleComment extends ServletModule urlBuilder.setValue("searchfield", requestParser.getParameter("searchfield")); urlBuilder.setValue("searchtext", requestParser.getParameter("searchtext")); urlBuilder.setValue("searchispublished", requestParser.getParameter("searchispublished")); + urlBuilder.setValue("searchstatus", requestParser.getParameter("searchstatus")); urlBuilder.setValue("searchorder", requestParser.getParameter("searchorder")); responseData.put("searchfield", requestParser.getParameter("searchfield")); responseData.put("searchtext", requestParser.getParameter("searchtext")); responseData.put("searchispublished", requestParser.getParameter("searchispublished")); + responseData.put("searchstatus", requestParser.getParameter("searchstatus")); responseData.put("searchorder", requestParser.getParameter("searchorder")); urlBuilder.setValue("offset", anOffset); + responseData.put("offset" , new Integer(anOffset).toString()); responseData.put("thisurl" , urlBuilder.getQuery()); if (count>=anOffset+nrCommentsPerPage) { @@ -238,9 +254,7 @@ public class ServletModuleComment extends ServletModule ServletHelper.generateResponse(aResponse.getWriter(), responseData, "commentlist.template"); } catch (Throwable e) { - e.printStackTrace(new PrintWriter(new LoggerToWriterAdapter(logger, logger.ERROR_MESSAGE))); - - throw new ServletModuleException(e.getMessage()); + throw new ServletModuleFailure(e); } } }