From c3098754d2957098ccb958dd3d1e4cf23f373249 Mon Sep 17 00:00:00 2001 From: Christian Corsano Date: Sat, 26 Jan 2008 12:18:47 +0000 Subject: [PATCH] =?UTF-8?q?Merge=20avec=20mes=20modifications=20locales=20?= =?UTF-8?q?Ajout=20d'un=20Bean=20SessionService=20pour=20factoriser=20les?= =?UTF-8?q?=20m=C3=A9thodes=20de=20session=20Utilisation=20de=20WebUtils?= =?UTF-8?q?=20pour=20les=20classes=20ou=20ce=20n'est=20pas=20encore=20inte?= =?UTF-8?q?gr=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WEB-INF/classes/messages.properties | 4 +- YACOSWeb/WebContent/WEB-INF/web.xml | 2 +- YACOSWeb/WebContent/WEB-INF/yacos-servlet.xml | 40 +++++++------- .../ChoosePreferenceController.java | 25 +++++++-- .../controller/DispatchArticleController.java | 29 +++++----- .../controller/ListArticleController.java | 33 +++++++----- .../author/controller/SArticleController.java | 11 ++-- .../ChooseConferenceController.java | 14 +++-- .../NoConferenceSelectedException.java | 6 +++ .../SUserRegistrationController.java | 21 ++++++-- .../web/system/controller/SessionService.java | 53 +++++++++++++++++++ 11 files changed, 171 insertions(+), 67 deletions(-) create mode 100644 YACOSWeb/src/org/yacos/web/system/controller/NoConferenceSelectedException.java create mode 100644 YACOSWeb/src/org/yacos/web/system/controller/SessionService.java diff --git a/YACOSWeb/WebContent/WEB-INF/classes/messages.properties b/YACOSWeb/WebContent/WEB-INF/classes/messages.properties index 6addd85..ab24680 100644 --- a/YACOSWeb/WebContent/WEB-INF/classes/messages.properties +++ b/YACOSWeb/WebContent/WEB-INF/classes/messages.properties @@ -24,10 +24,12 @@ form.register.user.firstName=First Name form.register.user.lastName=Last Name form.register.user.organization=Organization form.register.error.loginTooShort=Login must be at least 3 characters long -form.register.error.loginInvalid= +form.register.error.loginInvalid=The login can only contain characters, dot, underscore and must start with a character form.register.error.passwordsDontMatches=The password doesn't match the confirmation form.register.error.firstNameEmpty=First name is required form.register.error.lastNameEmpty=Last name is required +form.register.error.passwordEmpty=The password can't be empty +form.register.error.alreadyExists=A user with this login already exists. Please check you haven't already registered or change your login. button.add=Add button.browse=Browse diff --git a/YACOSWeb/WebContent/WEB-INF/web.xml b/YACOSWeb/WebContent/WEB-INF/web.xml index f3a07b9..3775937 100644 --- a/YACOSWeb/WebContent/WEB-INF/web.xml +++ b/YACOSWeb/WebContent/WEB-INF/web.xml @@ -47,7 +47,7 @@ sitemesh - /* + /* diff --git a/YACOSWeb/WebContent/WEB-INF/yacos-servlet.xml b/YACOSWeb/WebContent/WEB-INF/yacos-servlet.xml index ca06a65..a42491b 100644 --- a/YACOSWeb/WebContent/WEB-INF/yacos-servlet.xml +++ b/YACOSWeb/WebContent/WEB-INF/yacos-servlet.xml @@ -204,7 +204,8 @@ + class="org.yacos.web.system.controller.ChooseConferenceController"> + @@ -258,25 +259,28 @@ - - - - - - - + + + + + + - - - - - - + + + + + + + + + + + - \ No newline at end of file diff --git a/YACOSWeb/src/org/yacos/web/PCmember/controller/ChoosePreferenceController.java b/YACOSWeb/src/org/yacos/web/PCmember/controller/ChoosePreferenceController.java index d28fdee..1a5ea81 100644 --- a/YACOSWeb/src/org/yacos/web/PCmember/controller/ChoosePreferenceController.java +++ b/YACOSWeb/src/org/yacos/web/PCmember/controller/ChoosePreferenceController.java @@ -12,13 +12,14 @@ import org.springframework.validation.BindException; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.SimpleFormController; import org.springframework.web.servlet.view.RedirectView; - +import org.springframework.web.util.WebUtils; import org.yacos.core.article.*; -import org.yacos.core.conferences.Conference; +import org.yacos.core.conferences.IConferenceManager; import org.yacos.core.users.IUserManager; import org.yacos.core.users.User; -//import org.yacos.web.author.form.*; import org.yacos.web.PCmember.form.FormPreference; +import org.yacos.web.system.controller.NoConferenceSelectedException; +import org.yacos.web.system.controller.SessionService; public class ChoosePreferenceController extends SimpleFormController { @@ -27,12 +28,18 @@ public class ChoosePreferenceController extends SimpleFormController { private IArticleManager articleManager; private IUserManager userManager; + private IConferenceManager conferenceManager; + @Override protected Object formBackingObject(HttpServletRequest request) throws Exception { - Conference conf=new Conference(); - List
articleList=articleManager.getArticles(conf.getId()); + Integer currentConferenceId = (Integer) WebUtils.getSessionAttribute(request, "currentConferenceId"); + if(currentConferenceId == null){ + throw new NoConferenceSelectedException(); + } + + List
articleList=articleManager.getArticles(currentConferenceId); getServletContext().setAttribute("articleList", articleList); @@ -97,4 +104,12 @@ public class ChoosePreferenceController extends SimpleFormController { public void setUsersManager(IUserManager usersManager) { this.userManager = usersManager; } + + public IConferenceManager getConferenceManager() { + return conferenceManager; + } + + public void setConferenceManager(IConferenceManager conferenceManager) { + this.conferenceManager = conferenceManager; + } } \ No newline at end of file diff --git a/YACOSWeb/src/org/yacos/web/PCmember/controller/DispatchArticleController.java b/YACOSWeb/src/org/yacos/web/PCmember/controller/DispatchArticleController.java index 1a713bd..9c204a2 100644 --- a/YACOSWeb/src/org/yacos/web/PCmember/controller/DispatchArticleController.java +++ b/YACOSWeb/src/org/yacos/web/PCmember/controller/DispatchArticleController.java @@ -10,11 +10,10 @@ import org.apache.commons.logging.LogFactory; import org.springframework.validation.BindException; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.SimpleFormController; +import org.springframework.web.util.WebUtils; import org.yacos.core.article.Article; import org.yacos.core.article.IArticleManager; -import org.yacos.core.conferences.Conference; import org.yacos.core.exceptions.ConferenceDoesntExistException; -import org.yacos.core.users.Role; import org.yacos.core.users.User; import org.yacos.web.PCmember.form.FormDispatcher; @@ -22,30 +21,30 @@ public class DispatchArticleController extends SimpleFormController{ protected final Log logger = LogFactory.getLog(getClass()); - private IArticleManager articleManager; + private IArticleManager articleManager; + public IArticleManager getArticleManager() { return articleManager; } public void setArticleManager(IArticleManager articleManager) { this.articleManager = articleManager; } - protected Object formBackingObject(HttpServletRequest request) throws ConferenceDoesntExistException { logger.info("Returning dispatcher view"); - - //on recupère l'id de conference - Conference conf = (Conference)request.getSession().getAttribute("conference"); - + User m = new User("max","max","maxime","dagnicourt","ipint","m@truc.fr"); User m2 = new User("bob","bob","bob","dupont","lifl","b@bb.fr"); Collection members = new ArrayList(); members.add(m); members.add(m2); + // TODO : use the formBackingObject to store these request.getSession().setAttribute("members",members); - - request.getSession().setAttribute("articles",articleManager.getArticles(conf.getId())); + Integer currentConferenceId = (Integer) WebUtils.getSessionAttribute(request, "currentConferenceId"); + // TODO : Fix that, we should use the form backing object instead of the session to store the articles + request.getSession().setAttribute("articles",articleManager.getArticles(currentConferenceId)); + logger.info(articleManager.getArticles(currentConferenceId)); return new FormDispatcher(); } @@ -53,9 +52,6 @@ public class DispatchArticleController extends SimpleFormController{ HttpServletResponse response, Object formDispatcher, BindException errors) throws Exception { - //on recupère l'id de conference - Conference conf = (Conference)request.getSession().getAttribute("conference"); - FormDispatcher fd = (FormDispatcher)formDispatcher; Article article = articleManager.getArticle(fd.getIdArticle()); User m = new User("bob","bob","maurice","dupont","lifl","b@bb.fr"); @@ -65,9 +61,10 @@ public class DispatchArticleController extends SimpleFormController{ members.add(m); members.add(m2); - request.getSession().setAttribute("members",members); - - return new ModelAndView("dispatchArticle", "articles", articleManager.getArticles(conf.getId())); + request.getSession().setAttribute("members",members); + + Integer currentConferenceId = (Integer) WebUtils.getSessionAttribute(request, "currentConferenceId"); + return new ModelAndView("dispatchArticle", "articles", articleManager.getArticles(currentConferenceId) ); } diff --git a/YACOSWeb/src/org/yacos/web/PCmember/controller/ListArticleController.java b/YACOSWeb/src/org/yacos/web/PCmember/controller/ListArticleController.java index 5cda8ba..cb7362b 100644 --- a/YACOSWeb/src/org/yacos/web/PCmember/controller/ListArticleController.java +++ b/YACOSWeb/src/org/yacos/web/PCmember/controller/ListArticleController.java @@ -1,19 +1,20 @@ package org.yacos.web.PCmember.controller; -import java.io.IOException; -import java.util.List; +import org.springframework.web.servlet.mvc.SimpleFormController; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.util.WebUtils; 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.mvc.SimpleFormController; +import java.io.IOException; +import java.util.List; +import org.yacos.web.system.controller.NoConferenceSelectedException; +import org.yacos.web.system.controller.SessionService; import org.yacos.core.article.Article; import org.yacos.core.article.IArticleManager; -import org.yacos.core.conferences.Conference; import org.yacos.core.exceptions.ConferenceDoesntExistException; public class ListArticleController extends SimpleFormController { @@ -22,22 +23,20 @@ public class ListArticleController extends SimpleFormController { private IArticleManager articleManager; - public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { + private SessionService sessionService; + public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException, NoConferenceSelectedException { + logger.info("Returning listArticle view"); - //FIXME verif l'existance de la conf en session - Conference conf = (Conference)request.getSession().getAttribute("conference"); - List
listArticle; try { - listArticle = articleManager.getArticles(conf.getId()); + listArticle = articleManager.getArticles((Integer) WebUtils.getSessionAttribute(request, "currentConferenceId")); getServletContext().setAttribute("listArticle", listArticle); } catch (ConferenceDoesntExistException e) { logger.error(e.getMessage()); } - return new ModelAndView("listArticle"); } @@ -45,9 +44,15 @@ public class ListArticleController extends SimpleFormController { public IArticleManager getArticleManager() { return articleManager; } - + public void setArticleManager(IArticleManager articleManager) { this.articleManager = articleManager; } + public SessionService getSessionService() { + return sessionService; + } + public void setSessionService(SessionService sessionService) { + this.sessionService = sessionService; + } } \ No newline at end of file diff --git a/YACOSWeb/src/org/yacos/web/author/controller/SArticleController.java b/YACOSWeb/src/org/yacos/web/author/controller/SArticleController.java index 33164d8..f2ce371 100644 --- a/YACOSWeb/src/org/yacos/web/author/controller/SArticleController.java +++ b/YACOSWeb/src/org/yacos/web/author/controller/SArticleController.java @@ -18,6 +18,10 @@ import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.SimpleFormController; import org.springframework.web.servlet.view.RedirectView; +import org.springframework.web.util.WebUtils; +import org.yacos.core.article.*; +import org.yacos.web.author.form.*; +import org.yacos.web.system.controller.SessionService; import org.yacos.core.article.Article; import org.yacos.core.article.IArticleManager; import org.yacos.core.conferences.Conference; @@ -35,15 +39,15 @@ public class SArticleController extends SimpleFormController { HttpServletResponse response, Object command, BindException errors) throws ServletException, IllegalStateException { - //on recupère l'id de conference + // Fetching conference id Conference conf = (Conference)request.getSession().getAttribute("conference"); - //on recupère le login de l'utilisateur + // Fetching user login User user = (User)request.getSession().getAttribute("user"); String title = ((FormSubmission) command).getTitle(); String theme = ((FormSubmission) command).getTheme(); + String mainauthor = ((FormSubmission) command).getMainauthor(); //String secondaryauthor = ((FormSubmission) command).getSecondaryauthor(); - //TODO : get secondary author working List liste = ((FormSubmission) command).getListe(); String nomFile=""; @@ -95,5 +99,4 @@ public class SArticleController extends SimpleFormController { public void setArticleManager(IArticleManager articleManager) { this.articleManager = articleManager; } - } \ No newline at end of file diff --git a/YACOSWeb/src/org/yacos/web/system/controller/ChooseConferenceController.java b/YACOSWeb/src/org/yacos/web/system/controller/ChooseConferenceController.java index 0b26427..ec7e329 100644 --- a/YACOSWeb/src/org/yacos/web/system/controller/ChooseConferenceController.java +++ b/YACOSWeb/src/org/yacos/web/system/controller/ChooseConferenceController.java @@ -5,9 +5,18 @@ import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; +import org.springframework.web.util.WebUtils; public class ChooseConferenceController implements Controller { - + private SessionService sessionService; + + public SessionService getSessionService() { + return sessionService; + } + + public void setSessionService(SessionService sessionService) { + this.sessionService = sessionService; + } public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { @@ -16,8 +25,7 @@ public class ChooseConferenceController implements Controller { int idConf = Integer.parseInt(request.getParameter("idConf")); // Set idConf in session context - request.getSession().setAttribute("idCurrentConference", idConf); - + sessionService.setCurrentConferenceId(request, idConf); return new ModelAndView("main"); } diff --git a/YACOSWeb/src/org/yacos/web/system/controller/NoConferenceSelectedException.java b/YACOSWeb/src/org/yacos/web/system/controller/NoConferenceSelectedException.java new file mode 100644 index 0000000..b47345a --- /dev/null +++ b/YACOSWeb/src/org/yacos/web/system/controller/NoConferenceSelectedException.java @@ -0,0 +1,6 @@ +package org.yacos.web.system.controller; + +public class NoConferenceSelectedException extends Exception { + private static final long serialVersionUID = 1L; + +} diff --git a/YACOSWeb/src/org/yacos/web/system/controller/SUserRegistrationController.java b/YACOSWeb/src/org/yacos/web/system/controller/SUserRegistrationController.java index b7a6951..2955e8f 100644 --- a/YACOSWeb/src/org/yacos/web/system/controller/SUserRegistrationController.java +++ b/YACOSWeb/src/org/yacos/web/system/controller/SUserRegistrationController.java @@ -10,10 +10,8 @@ import org.springframework.validation.BindException; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.SimpleFormController; import org.springframework.web.servlet.view.RedirectView; -import org.yacos.core.article.IArticleManager; import org.yacos.core.users.IUserManager; import org.yacos.core.users.User; -import org.yacos.core.users.UserManagerBean; import org.yacos.web.system.form.FormUser; /** @@ -35,17 +33,23 @@ public class SUserRegistrationController extends SimpleFormController { HttpServletResponse response, Object command, BindException errors) throws Exception { FormUser userCommand = (FormUser) command; + + // Tries to retrieve the current user : case of user modification User user = (User) request.getSession().getAttribute("currentUser"); if((user == null) && (usersManager.getUser(userCommand.getLogin()) != null)){ - // TODO : we have an "already registered" error here, handle it + errors.rejectValue("login", "form.register.error.alreadyExists"); + return new ModelAndView(new RedirectView(getFormView())); } if(user == null){ user = new User(); } - user.setLogin(userCommand.getLogin()); + // We should never be able to change the login of an existing user + if(user.getLogin() == null){ + user.setLogin(userCommand.getLogin()); + } user.setEmail(userCommand.getEmail()); user.setFirstName(userCommand.getFirstName()); user.setLastName(userCommand.getLastName()); @@ -55,7 +59,14 @@ public class SUserRegistrationController extends SimpleFormController { user.setPassword(userCommand.getPassword()); } - // TODO Auto-generated method stub + usersManager.addUser( + userCommand.getLogin(), + userCommand.getPassword(), + userCommand.getFirstName(), + userCommand.getLastName(), + userCommand.getOrganization(), + userCommand.getEmail()); + return new ModelAndView(new RedirectView(getSuccessView())); } diff --git a/YACOSWeb/src/org/yacos/web/system/controller/SessionService.java b/YACOSWeb/src/org/yacos/web/system/controller/SessionService.java new file mode 100644 index 0000000..67deffb --- /dev/null +++ b/YACOSWeb/src/org/yacos/web/system/controller/SessionService.java @@ -0,0 +1,53 @@ +package org.yacos.web.system.controller; + +import javax.servlet.http.HttpServletRequest; +import org.springframework.web.util.WebUtils; +import org.yacos.core.conferences.Conference; +import org.yacos.core.conferences.IConferenceManager; +import org.yacos.core.users.IUserManager; + +/** + * Provides Session related Services + * @author christiancorsano + * + */ +public class SessionService { + private IConferenceManager conferenceManager; + private IUserManager userManager; + + public SessionService(){ + + } + + public void setConferenceManager(IConferenceManager conferenceManager) { + this.conferenceManager = conferenceManager; + } + + public IConferenceManager getConferenceManager() { + return conferenceManager; + } + + public void setUserManager(IUserManager userManager) { + this.userManager = userManager; + } + + public IUserManager getUserManager() { + return userManager; + } + + public Integer getCurrentConferenceId(HttpServletRequest request) { + return (Integer) WebUtils.getSessionAttribute(request, "currentConferenceId"); + } + + public void setCurrentConferenceId(HttpServletRequest request,Integer currentConferenceId) { + WebUtils.setSessionAttribute(request, "currentConferenceId", currentConferenceId); + } + + public void setCurrentConference(HttpServletRequest request, Conference c){ + setCurrentConferenceId(request, c.getId() ); + } + + public Conference getCurrentConference(HttpServletRequest request){ + return conferenceManager.getConference(getCurrentConferenceId(request)); + } +}