From a4fe4842dfa9f150a95d96e5982747bbe80d0908 Mon Sep 17 00:00:00 2001 From: Frederic Debuire Date: Sat, 23 Feb 2008 16:42:03 +0000 Subject: [PATCH] Modification de trop de choses pr tt dire ici... --- .../WEB-INF/classes/messages.properties | 2 +- .../WEB-INF/decorators/usermenu.jsp | 4 +- .../WebContent/WEB-INF/jsp/createReport.jsp | 72 ++-- .../WebContent/WEB-INF/jsp/evaluation.jsp | 2 +- .../WebContent/WEB-INF/jsp/listEvaluation.jsp | 2 +- .../WebContent/WEB-INF/jsp/listReport.jsp | 72 ++-- .../WEB-INF/jsp/validateArticle.jsp | 9 +- YACOSWeb/WebContent/WEB-INF/yacos-servlet.xml | 1 + .../controller/CreateReportController.java | 20 +- .../controller/EvaluationController.java | 325 ++++++++++++------ .../controller/ListEvaluationController.java | 74 ++-- .../controller/ListReportController.java | 57 +-- .../ValidateOrRejectController.java | 1 + .../web/PCmember/form/SimpleCriterion.java | 18 +- 14 files changed, 408 insertions(+), 251 deletions(-) diff --git a/YACOSWeb/WebContent/WEB-INF/classes/messages.properties b/YACOSWeb/WebContent/WEB-INF/classes/messages.properties index f7a101f..7a50df0 100644 --- a/YACOSWeb/WebContent/WEB-INF/classes/messages.properties +++ b/YACOSWeb/WebContent/WEB-INF/classes/messages.properties @@ -242,7 +242,7 @@ conference.error.noTokenLeft=You have no conference creation token left !\nPleas evaluation.title=You are evaluating evaluation.commentPCMember=Comment of PC Member evaluation.commentAuthor=Comment of author -evaluation.headPage=Here is a report of the evaluation +evaluation.headPage=Report of the evaluation evaluation.titleArticle=The title of article is evaluation.note=The note for the criterion evaluation.thisArticle=evaluate this article diff --git a/YACOSWeb/WebContent/WEB-INF/decorators/usermenu.jsp b/YACOSWeb/WebContent/WEB-INF/decorators/usermenu.jsp index be41143..3f1fa13 100644 --- a/YACOSWeb/WebContent/WEB-INF/decorators/usermenu.jsp +++ b/YACOSWeb/WebContent/WEB-INF/decorators/usermenu.jsp @@ -36,7 +36,7 @@ @@ -49,7 +49,7 @@ diff --git a/YACOSWeb/WebContent/WEB-INF/yacos-servlet.xml b/YACOSWeb/WebContent/WEB-INF/yacos-servlet.xml index bd7d02e..4007d33 100644 --- a/YACOSWeb/WebContent/WEB-INF/yacos-servlet.xml +++ b/YACOSWeb/WebContent/WEB-INF/yacos-servlet.xml @@ -257,6 +257,7 @@ + criterionList = evaluationManager.getCriterions(conf.getId()); - - String id=request.getParameter("id"); - Article art=articleManager.getArticle(Integer.parseInt(id)); - String title=art.getTitle(); - - FormEvaluation fe=new FormEvaluation(); - - List liste=new ArrayList(); - for (Criterion c : criterionList) - - { - - SimpleCriterion sc=new SimpleCriterion(c.getName(),c.getMin_rating(),c.getMax_rating(),c.getId()); - - liste.add(sc); - - } - fe.setSimpleRatings(liste); - fe.setCommentAuthor("no comment by author"); - fe.setCommentPCMember("no comment by pc member"); - fe.setTitle(title); - return fe; - } - - @Override - protected ModelAndView onSubmit(HttpServletRequest request, - HttpServletResponse response, Object command, BindException errors) - throws Exception { - String id=request.getParameter("id"); - logger.info("my article's id is "+id); - - - FormEvaluation fe=(FormEvaluation)command; - - List liste=fe.getSimpleRatings(); - String commentAuthor=fe.getCommentAuthor(); - String commentPCMember=fe.getCommentPCMember(); - List listeRating=new ArrayList(); - - for(SimpleCriterion sc : liste){ - - Rating rt=new Rating(); - Criterion cn=new Criterion(); - - cn.setMax_rating(sc.getMax_rating()); - cn.setMin_rating(sc.getMin_rating()); - cn.setName(sc.getName()); - cn.setId(sc.getId()); - - rt.setCriterion(cn); - rt.setValue(sc.getValue()); - listeRating.add(rt); - } - - - - - // Article article=articleManager.getArticle(new Integer(1)); - Article article =articleManager.getArticle(Integer.parseInt(id)); - - System.out.println("le title est: "+article.getTitle()); - User current = SessionService.getInstance().getCurrentUser(); - if(current == null){ - current = userManager.addUser("toto",User.hashPassword("toto"), "Toto", "Toto", "Toto corp.", "toto@totocorp.com"); - } - - int idd=Integer.parseInt(id); - - Report rpt= evaluationManager.addReport(idd, commentPCMember, commentAuthor, listeRating, current.getLogin()); - //request.getSession().setAttribute("report", rpt); - //persister ratings dans la base apres avoir le id report. - System.out.println("lengthe is :"+listeRating.size()); - for (Rating rt : listeRating) - - { - - if (rpt!=null){System.out.println("report is not null");} - evaluationManager.addRating(rt.getValue(), rt.getCriterion().getId(), rpt.getId()); - } - - - return new ModelAndView(new RedirectView("createReport.htm"), "report", rpt); - } - public IArticleManager getArticleManager() { return articleManager; } @@ -163,4 +58,220 @@ public class EvaluationController extends SimpleFormController { public void setConferenceManager(IConferenceManager conferenceManager) { this.conferenceManager = conferenceManager; } + + public IEvaluationManager getEvaluationManager() { + return evaluationManager; + } + + public void setEvaluationManager(IEvaluationManager evaluationManager) { + this.evaluationManager = evaluationManager; + } + + + @Override + protected Object formBackingObject(HttpServletRequest request) + throws Exception { + + Conference conf = SessionService.getInstance().getCurrentConference(); + List criterionList = evaluationManager.getCriterions(conf.getId()); + String articleId = request.getParameter("id"); + String action = request.getParameter("action"); + + // TODO : vérifier que le gars a le droit d'évaluer cette article + // TODO : s'il existe déjà une éval, mais que l'action est pas modify, virer le gars + + if (action == null || action.equals("")) { + + try { + Integer id = new Integer(articleId); + Article a = articleManager.getArticle(id); + + if (a == null) + throw new ModelAndViewDefiningException(new ModelAndView("404error")); + + String title = a.getTitle(); + + FormEvaluation fe = new FormEvaluation(); + + List liste = new ArrayList(); + for (Criterion c : criterionList) { + SimpleCriterion sc = new SimpleCriterion(c.getName(), c.getMin_rating(), c.getMax_rating(), c.getMin_rating(), c.getId()); + liste.add(sc); + } + + fe.setSimpleRatings(liste); + fe.setTitle(title); + + return fe; + } + catch (NumberFormatException e) { + throw new ModelAndViewDefiningException(new ModelAndView("404error")); + } + } + else if (action.equals("modify")) { + + try { + Integer id = new Integer(articleId); + Article a = articleManager.getArticle(id); + + if (a == null) + throw new ModelAndViewDefiningException(new ModelAndView("404error")); + + String title = a.getTitle(); + + Report rpt = evaluationManager.getReportforArticleAndReferee(a.getId(), SessionService.getInstance().getCurrentUserLogin()); + if (rpt == null) + throw new ModelAndViewDefiningException(new ModelAndView("404error")); + + List ratings = evaluationManager.getRatingForReport(rpt.getId()); + + FormEvaluation fe = new FormEvaluation(); + + List liste = new ArrayList(); + for (Rating r : ratings) { + SimpleCriterion sc = new SimpleCriterion(r.getCriterion().getName(), r.getCriterion().getMin_rating(), r.getCriterion().getMax_rating(), r.getValue(), r.getCriterion().getId()); + liste.add(sc); + } + + fe.setSimpleRatings(liste); + fe.setCommentAuthor(rpt.getCommentAuthor()); + fe.setCommentPCMember(rpt.getCommentPCMember()); + fe.setTitle(title); + + return fe; + } + catch (NumberFormatException e) { + throw new ModelAndViewDefiningException(new ModelAndView("404error")); + } + } + else { + throw new ModelAndViewDefiningException(new ModelAndView("404error")); + } + } + + @Override + protected ModelAndView onSubmit(HttpServletRequest request, + HttpServletResponse response, Object command, BindException errors) + throws Exception { + + String articleId = request.getParameter("id"); + String action = request.getParameter("action"); + + logger.info("Article id: " + articleId); + + if (action == null || action.equals("")) { + + try { + + FormEvaluation fe = (FormEvaluation)command; + + List liste = fe.getSimpleRatings(); + String commentAuthor = fe.getCommentAuthor(); + String commentPCMember = fe.getCommentPCMember(); + List listeRating = new ArrayList(); + + for(SimpleCriterion sc : liste){ + Rating rt = new Rating(); + Criterion cn = new Criterion(); + + cn.setMax_rating(sc.getMax_rating()); + cn.setMin_rating(sc.getMin_rating()); + cn.setName(sc.getName()); + cn.setId(sc.getId()); + + rt.setCriterion(cn); + rt.setValue(sc.getValue()); + listeRating.add(rt); + } + + Integer id = new Integer(articleId); + + Article article = articleManager.getArticle(id); + + if (article == null) + throw new ModelAndViewDefiningException(new ModelAndView("404error")); + + User current = SessionService.getInstance().getCurrentUser(); + + Report rpt = evaluationManager.addReport(id, commentPCMember, commentAuthor, listeRating, current.getLogin()); + + for (Rating rt : listeRating) { + evaluationManager.addRating(rt.getValue(), rt.getCriterion().getId(), rpt.getId()); + } + + article.setState(State.EVALUATED); + articleManager.updateArticle(article); + + return new ModelAndView("createReport", "report", rpt); + + } + catch (NumberFormatException e) { + throw new ModelAndViewDefiningException(new ModelAndView("404error")); + } + } + else if (action.equals("modify")) { + try { + + Integer id = new Integer(articleId); + + Article article = articleManager.getArticle(id); + + if (article == null) + throw new ModelAndViewDefiningException(new ModelAndView("404error")); + + User current = SessionService.getInstance().getCurrentUser(); + + Report rpt = evaluationManager.getReportforArticleAndReferee(article.getId(), current.getLogin()); + if (rpt == null) + throw new ModelAndViewDefiningException(new ModelAndView("404error")); + + List ratings = evaluationManager.getRatingForReport(rpt.getId()); + + FormEvaluation fe = (FormEvaluation)command; + + List liste = fe.getSimpleRatings(); + String commentAuthor = fe.getCommentAuthor(); + String commentPCMember = fe.getCommentPCMember(); + + + for(SimpleCriterion sc : liste) { + Rating rt = new Rating(); + for (Rating r : ratings) { + if (r.getCriterion().getId() == sc.getId()) { + rt = r; + } + } + + Criterion cn = rt.getCriterion(); + + cn.setMax_rating(sc.getMax_rating()); + cn.setMin_rating(sc.getMin_rating()); + cn.setName(sc.getName()); + cn.setId(sc.getId()); + + rt.setCriterion(cn); + rt.setValue(sc.getValue()); + } + + rpt.setCommentAuthor(commentAuthor); + rpt.setCommentPCMember(commentPCMember); + rpt.setRatings(ratings); + + evaluationManager.updateReport(rpt); + + for (Rating rt : ratings) { + evaluationManager.updateRating(rt); + } + + return new ModelAndView("createReport", "report", rpt); + + } + catch (NumberFormatException e) { + throw new ModelAndViewDefiningException(new ModelAndView("404error")); + } + } + else { + throw new ModelAndViewDefiningException(new ModelAndView("404error")); + } + } } \ No newline at end of file diff --git a/YACOSWeb/src/org/yacos/web/PCmember/controller/ListEvaluationController.java b/YACOSWeb/src/org/yacos/web/PCmember/controller/ListEvaluationController.java index 20a8cc5..4be202d 100644 --- a/YACOSWeb/src/org/yacos/web/PCmember/controller/ListEvaluationController.java +++ b/YACOSWeb/src/org/yacos/web/PCmember/controller/ListEvaluationController.java @@ -1,49 +1,79 @@ package org.yacos.web.PCmember.controller; import java.io.IOException; +import java.util.ArrayList; import java.util.List; - import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.ModelAndViewDefiningException; import org.springframework.web.servlet.mvc.SimpleFormController; import org.yacos.core.article.Article; import org.yacos.core.article.IArticleManager; -import org.yacos.core.exceptions.ConferenceDoesntExistException; +import org.yacos.core.conferences.Conference; +import org.yacos.core.users.IUserManager; +import org.yacos.core.users.Role.RoleType; import org.yacos.web.system.controller.NoConferenceSelectedException; import org.yacos.web.system.session.SessionService; public class ListEvaluationController extends SimpleFormController { - protected final Log logger = LogFactory.getLog(getClass()); - - private IArticleManager articleManager; + protected final Log logger = LogFactory.getLog(getClass()); - public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException, NoConferenceSelectedException { - - logger.info("Returning listArticle view"); - - List
listArticle; - try { - listArticle = articleManager.getArticles(SessionService.getInstance().getCurrentConferenceId()); - request.getSession().setAttribute("listArticle", listArticle); - } catch (ConferenceDoesntExistException e) { - logger.error(e.getMessage()); - } + private IArticleManager articleManager; + private IUserManager userManager; - return new ModelAndView("listEvaluation"); - } - public IArticleManager getArticleManager() { return articleManager; } - + public void setArticleManager(IArticleManager articleManager) { this.articleManager = articleManager; } + + public IUserManager getUserManager() { + return userManager; + } + + public void setUserManager(IUserManager userManager) { + this.userManager = userManager; + } + + public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException, NoConferenceSelectedException { + + logger.info("Returning the article's list to evaluate view"); + + Conference conf = SessionService.getInstance().getCurrentConference(); + List
listArticle = new ArrayList
(); + + String person = request.getParameter("role"); + + if (person.equals("pcmember")) { + if (userManager.hasRoleForConference(SessionService.getInstance().getCurrentUserLogin(), RoleType.PCMEMBER, conf.getId())) { + listArticle = articleManager.getArticlesOfMember(conf.getId(), SessionService.getInstance().getCurrentUserLogin()); + } + } + else if (person.equals("referee")) { + if (userManager.hasRoleForConference(SessionService.getInstance().getCurrentUserLogin(), RoleType.REFEREE, conf.getId())) { + List
listArticleTmp; + listArticleTmp = articleManager.getArticlesOfReferee(SessionService.getInstance().getCurrentUserLogin()); + if (listArticleTmp != null) { + for (Article a : listArticleTmp) { + Conference confTmp = articleManager.getConferenceForArticle(a.getId()); + if (confTmp.getId() == conf.getId()) + listArticle.add(a); + } + } + } + } + else + throw new ModelAndViewDefiningException(new ModelAndView("404error")); + + + return new ModelAndView("listEvaluation", "listArticle", listArticle); + } } \ No newline at end of file diff --git a/YACOSWeb/src/org/yacos/web/PCmember/controller/ListReportController.java b/YACOSWeb/src/org/yacos/web/PCmember/controller/ListReportController.java index eb66d2a..1159ebb 100644 --- a/YACOSWeb/src/org/yacos/web/PCmember/controller/ListReportController.java +++ b/YACOSWeb/src/org/yacos/web/PCmember/controller/ListReportController.java @@ -12,6 +12,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.ModelAndViewDefiningException; import org.springframework.web.servlet.mvc.SimpleFormController; import org.yacos.core.evaluation.IEvaluationManager; import org.yacos.core.evaluation.Rating; @@ -21,31 +22,43 @@ import org.yacos.web.system.controller.NoConferenceSelectedException; public class ListReportController extends SimpleFormController { - protected final Log logger = LogFactory.getLog(getClass()); - - private IEvaluationManager evaluationManager; + protected final Log logger = LogFactory.getLog(getClass()); + + private IEvaluationManager evaluationManager; public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException, NoConferenceSelectedException { + throws ServletException, IOException, NoConferenceSelectedException { + + logger.info("Returning listReport view"); + + List listReport; + String reportId = request.getParameter("id"); + + try { + + Integer id = new Integer(reportId); + + Map model = new HashMap(); + + listReport = evaluationManager.getReportsForArticle(id); + + if (listReport.isEmpty()) + return new ModelAndView("listReport", "listReport", null); + + model.put("listReport", listReport); + + List ratings = evaluationManager.getRatingForReport(listReport.get(listReport.size() - 1).getId()); + model.put("rtgs", ratings); + + return new ModelAndView("listReport", model); + } - logger.info("Returning listReport view"); - - List listReport; - String id=request.getParameter("id"); - int idd=Integer.parseInt(id); - - Map model = new HashMap(); - - listReport = evaluationManager.getReportsForArticle(idd); - model.put("listReport", listReport); - - List ratings=evaluationManager.getRatingForReport(listReport.get(listReport.size()-1).getId()); - model.put("rtgs", ratings); - - return new ModelAndView("listReport", model); - } - - public IEvaluationManager getEvaluationManager() { + catch (NumberFormatException e) { + throw new ModelAndViewDefiningException(new ModelAndView("404error")); + } + } + + public IEvaluationManager getEvaluationManager() { return evaluationManager; } diff --git a/YACOSWeb/src/org/yacos/web/PCmember/controller/ValidateOrRejectController.java b/YACOSWeb/src/org/yacos/web/PCmember/controller/ValidateOrRejectController.java index 596022f..38d6d73 100644 --- a/YACOSWeb/src/org/yacos/web/PCmember/controller/ValidateOrRejectController.java +++ b/YACOSWeb/src/org/yacos/web/PCmember/controller/ValidateOrRejectController.java @@ -56,6 +56,7 @@ public class ValidateOrRejectController extends SimpleFormController { catch (NumberFormatException e) { throw new ModelAndViewDefiningException(new ModelAndView("404error")); } + return new ModelAndView(new RedirectView("validateArticle.htm")); } diff --git a/YACOSWeb/src/org/yacos/web/PCmember/form/SimpleCriterion.java b/YACOSWeb/src/org/yacos/web/PCmember/form/SimpleCriterion.java index 90c4033..19d9f60 100644 --- a/YACOSWeb/src/org/yacos/web/PCmember/form/SimpleCriterion.java +++ b/YACOSWeb/src/org/yacos/web/PCmember/form/SimpleCriterion.java @@ -8,34 +8,37 @@ public class SimpleCriterion { private Integer value; private Integer id; - public SimpleCriterion(String name, Integer min_rating, Integer max_rating,Integer id) { + public SimpleCriterion(String name, Integer min_rating, Integer max_rating, Integer value, Integer id) { super(); this.name = name; this.min_rating = min_rating; this.max_rating = max_rating; - this.value=(this.max_rating+this.min_rating)/2; - this.id=id; + this.value = value; + this.id = id; } public String getName() { return name; } + public void setName(String name) { this.name = name; } + public Integer getMin_rating() { return min_rating; } + public void setMin_rating(Integer min_rating) { this.min_rating = min_rating; } + public Integer getMax_rating() { return max_rating; } + public void setMax_rating(Integer max_rating) { this.max_rating = max_rating; - - } public Integer getValue() { @@ -50,9 +53,8 @@ public class SimpleCriterion { return id; } - public void setId(Integer id) - - { this.id=id; + public void setId(Integer id) { + this.id=id; } }