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));
+ }
+}