X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Fservlet%2FServletModuleLocalizer.java;h=aa973b34f34e8edd95c7871ff4c0940678dee381;hb=87809334c4eaf3955a1cfe609425ad2f07a26351;hp=c1b7d697f6b357273efce4ce0e72dae6e5b1604a;hpb=f387144862ac9672530f6c99033fcce9ec04533e;p=mir.git diff --git a/source/mircoders/servlet/ServletModuleLocalizer.java b/source/mircoders/servlet/ServletModuleLocalizer.java index c1b7d697..aa973b34 100755 --- a/source/mircoders/servlet/ServletModuleLocalizer.java +++ b/source/mircoders/servlet/ServletModuleLocalizer.java @@ -31,20 +31,27 @@ package mircoders.servlet; -import java.util.*; - -import javax.servlet.*; -import javax.servlet.http.*; - -import mir.servlet.*; -import mir.entity.adapter.*; -import mir.log.*; - -import mircoders.global.*; -import mircoders.localizer.*; -import mircoders.storage.*; -import mircoders.entity.*; -import mircoders.module.*; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import mir.entity.adapter.EntityAdapter; +import mir.log.LoggerWrapper; +import mir.servlet.ServletModule; +import mir.servlet.ServletModuleExc; +import mir.servlet.ServletModuleFailure; +import mir.util.StringRoutines; +import mircoders.entity.EntityComment; +import mircoders.entity.EntityContent; +import mircoders.entity.EntityUsers; +import mircoders.global.MirGlobal; +import mircoders.localizer.MirAdminInterfaceLocalizer; +import mircoders.module.ModuleComment; +import mircoders.module.ModuleContent; +import mircoders.storage.DatabaseComment; +import mircoders.storage.DatabaseContent; public class ServletModuleLocalizer extends ServletModule { private static ServletModuleLocalizer instance = new ServletModuleLocalizer(); @@ -65,82 +72,127 @@ public class ServletModuleLocalizer extends ServletModule { } } - public void commentoperation(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleException { - String idString = aRequest.getParameter("id"); - String operationString = aRequest.getParameter("operation"); - String returnUrlString = aRequest.getParameter("returnurl"); + private EntityAdapter getActiveUser(HttpServletRequest aRequest) throws ServletModuleExc { + try { + HttpSession session = aRequest.getSession(false); + return MirGlobal.localizer().dataModel().adapterModel().makeEntityAdapter + ("user", (EntityUsers) session.getAttribute("login.uid")); + } + catch (Throwable e) { + throw new ServletModuleFailure("ServletModuleLocalizer.getActiveUser: " + e.getMessage(), e); + } + } + public void performCommentOperation(EntityAdapter aUser, String anId, String anOperation) { MirAdminInterfaceLocalizer.MirSimpleEntityOperation operation; EntityAdapter comment; EntityComment entity; try { - entity = (EntityComment) commentModule.getById(idString); + entity = (EntityComment) commentModule.getById(anId); - if (entity!=null) { + if (entity != null) { comment = MirGlobal.localizer().dataModel().adapterModel().makeEntityAdapter("comment", entity); - operation = MirGlobal.localizer().adminInterface().simpleCommentOperationForName(operationString); - operation.perform(comment); + operation = MirGlobal.localizer().adminInterface().simpleCommentOperationForName(anOperation); + operation.perform(aUser, comment); + logger.info("Operation " + anOperation + " successfully performed on comment " + anId); } - - redirect(aResponse, returnUrlString); + logger.error("Error while performing " + anOperation + " on comment " + anId + ": comment is null"); } catch (Throwable e) { - e.printStackTrace(System.out); - throw new ServletModuleException(e.getMessage()); + logger.error("Error while performing " + anOperation + " on comment " + anId + ": " + e.getMessage()); } } - public void articleoperation(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleException { - String articleIdString = aRequest.getParameter("articleid"); + public void commentoperation(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { + String commentIdString = aRequest.getParameter("id"); String operationString = aRequest.getParameter("operation"); String returnUrlString = aRequest.getParameter("returnurl"); + performCommentOperation(getActiveUser(aRequest), commentIdString, operationString); + + redirect(aResponse, returnUrlString); + } + + public void commentoperationbatch(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { + String returnUrlString = aRequest.getParameter("returnurl"); + + String[] operations = aRequest.getParameterValues("operation"); + + for (int i=0; i0) { + List parts = StringRoutines.splitString(operations[i], ";"); + + if (parts.size() != 2) { + logger.error("commentoperationbatch: operation string invalid: " + + operations[i]); + } + else { + String commentIdString = (String) parts.get(0); + String operationString = (String) parts.get(1); + + performCommentOperation(getActiveUser(aRequest), commentIdString, operationString); + } + } + } + + redirect(aResponse, returnUrlString); + } + + public void performArticleOperation(EntityAdapter aUser, String anId, String anOperation) { MirAdminInterfaceLocalizer.MirSimpleEntityOperation operation; EntityAdapter article; EntityContent entity; try { - entity = (EntityContent) contentModule.getById(articleIdString); - - if (entity!=null) { - article = MirGlobal.localizer().dataModel().adapterModel().makeEntityAdapter("content", entity); - operation = MirGlobal.localizer().adminInterface().simpleArticleOperationForName(operationString); - operation.perform(article); + entity = (EntityContent) contentModule.getById(anId); + + if (entity != null) { + article = MirGlobal.localizer().dataModel().adapterModel(). + makeEntityAdapter("content", entity); + operation = MirGlobal.localizer().adminInterface(). + simpleArticleOperationForName(anOperation); + operation.perform(aUser, article); + logger.info("Operation " + anOperation + " successfully performed on article " + anId); } - - redirect(aResponse, returnUrlString); + logger.error("Error while performing " + anOperation + " on article " + anId + ": article is null"); } catch (Throwable e) { - e.printStackTrace(System.out); - throw new ServletModuleException(e.getMessage()); + logger.error("Error while performing " + anOperation + " on article " + anId + ": " + e.getMessage()); } } - public void batchedarticleoperation(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleException { + public void articleoperation(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { String articleIdString = aRequest.getParameter("articleid"); String operationString = aRequest.getParameter("operation"); String returnUrlString = aRequest.getParameter("returnurl"); - MirAdminInterfaceLocalizer.MirSimpleEntityOperation operation; - EntityAdapter article; - EntityContent entity; + performArticleOperation(getActiveUser(aRequest), articleIdString, operationString); + redirect(aResponse, returnUrlString); + } - try { - entity = (EntityContent) contentModule.getById(articleIdString); + public void articleoperationbatch(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { + String returnUrlString = aRequest.getParameter("returnurl"); - if (entity!=null) { - article = MirGlobal.localizer().dataModel().adapterModel().makeEntityAdapter("content", entity); - operation = MirGlobal.localizer().adminInterface().simpleArticleOperationForName(operationString); - operation.perform(article); - } + String[] operations = aRequest.getParameterValues("operation"); - redirect(aResponse, returnUrlString); - } - catch (Throwable e) { - e.printStackTrace(System.out); - throw new ServletModuleException(e.getMessage()); + for (int i=0; i0) { + List parts = StringRoutines.splitString(operations[i], ";"); + + if (parts.size() != 2) { + logger.error("articleoperationbatch: operation string invalid: " + operations[i]); + } + else { + String articleIdString = (String) parts.get(0); + String operationString = (String) parts.get(1); + + performArticleOperation(getActiveUser(aRequest), articleIdString, operationString); + } + } } + + redirect(aResponse, returnUrlString); } } \ No newline at end of file