Merge avec mes modifications locales

Ajout d'un Bean SessionService pour factoriser les méthodes de session
Utilisation de WebUtils pour les classes ou ce n'est pas encore integré
This commit is contained in:
2008-01-26 12:18:47 +00:00
parent 5f95af28b9
commit c3098754d2
11 changed files with 171 additions and 67 deletions

View File

@@ -24,10 +24,12 @@ form.register.user.firstName=First Name
form.register.user.lastName=Last Name form.register.user.lastName=Last Name
form.register.user.organization=Organization form.register.user.organization=Organization
form.register.error.loginTooShort=Login must be at least 3 characters long 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.passwordsDontMatches=The password doesn't match the confirmation
form.register.error.firstNameEmpty=First name is required form.register.error.firstNameEmpty=First name is required
form.register.error.lastNameEmpty=Last 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.add=Add
button.browse=Browse button.browse=Browse

View File

@@ -205,6 +205,7 @@
<!-- Get chosen conference in session context --> <!-- Get chosen conference in session context -->
<bean id="ChooseConferenceController" <bean id="ChooseConferenceController"
class="org.yacos.web.system.controller.ChooseConferenceController"> class="org.yacos.web.system.controller.ChooseConferenceController">
<property name="sessionService" ref="sessionService" />
</bean> </bean>
@@ -260,17 +261,21 @@
<property name="suffix" value=".jsp"></property> <property name="suffix" value=".jsp"></property>
</bean> </bean>
<bean id="multipartResolver" <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10000000" /> <property name="maxUploadSize" value="10000000" />
</bean> </bean>
<bean id="messageSource" <bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource"> class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages" /> <property name="basename" value="messages" />
</bean> </bean>
<bean id="sessionService" class="org.yacos.web.system.controller.SessionService">
<property name="conferenceManager" ref="conferenceManager"/>
<property name="userManager" ref="usersManager"/>
</bean>
<!-- EJB Services Linking --> <!-- EJB Services Linking -->
<jee:jndi-lookup id="articleManager" <jee:jndi-lookup id="articleManager"
jndi-name="ArticleManagerBean/remote" cache="true" /> jndi-name="ArticleManagerBean/remote" cache="true" />
@@ -278,5 +283,4 @@
jndi-name="UserManagerBean/remote" cache="true" /> jndi-name="UserManagerBean/remote" cache="true" />
<jee:jndi-lookup id="conferenceManager" <jee:jndi-lookup id="conferenceManager"
jndi-name="ConferenceManagerBean/remote" cache="true" /> jndi-name="ConferenceManagerBean/remote" cache="true" />
</beans> </beans>

View File

@@ -12,13 +12,14 @@ import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController; import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.servlet.view.RedirectView; import org.springframework.web.servlet.view.RedirectView;
import org.springframework.web.util.WebUtils;
import org.yacos.core.article.*; 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.IUserManager;
import org.yacos.core.users.User; import org.yacos.core.users.User;
//import org.yacos.web.author.form.*;
import org.yacos.web.PCmember.form.FormPreference; 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 { public class ChoosePreferenceController extends SimpleFormController {
@@ -27,12 +28,18 @@ public class ChoosePreferenceController extends SimpleFormController {
private IArticleManager articleManager; private IArticleManager articleManager;
private IUserManager userManager; private IUserManager userManager;
private IConferenceManager conferenceManager;
@Override @Override
protected Object formBackingObject(HttpServletRequest request) protected Object formBackingObject(HttpServletRequest request)
throws Exception { throws Exception {
Conference conf=new Conference(); Integer currentConferenceId = (Integer) WebUtils.getSessionAttribute(request, "currentConferenceId");
List<Article> articleList=articleManager.getArticles(conf.getId()); if(currentConferenceId == null){
throw new NoConferenceSelectedException();
}
List<Article> articleList=articleManager.getArticles(currentConferenceId);
getServletContext().setAttribute("articleList", articleList); getServletContext().setAttribute("articleList", articleList);
@@ -97,4 +104,12 @@ public class ChoosePreferenceController extends SimpleFormController {
public void setUsersManager(IUserManager usersManager) { public void setUsersManager(IUserManager usersManager) {
this.userManager = usersManager; this.userManager = usersManager;
} }
public IConferenceManager getConferenceManager() {
return conferenceManager;
}
public void setConferenceManager(IConferenceManager conferenceManager) {
this.conferenceManager = conferenceManager;
}
} }

View File

@@ -10,11 +10,10 @@ import org.apache.commons.logging.LogFactory;
import org.springframework.validation.BindException; import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController; import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.util.WebUtils;
import org.yacos.core.article.Article; import org.yacos.core.article.Article;
import org.yacos.core.article.IArticleManager; import org.yacos.core.article.IArticleManager;
import org.yacos.core.conferences.Conference;
import org.yacos.core.exceptions.ConferenceDoesntExistException; import org.yacos.core.exceptions.ConferenceDoesntExistException;
import org.yacos.core.users.Role;
import org.yacos.core.users.User; import org.yacos.core.users.User;
import org.yacos.web.PCmember.form.FormDispatcher; import org.yacos.web.PCmember.form.FormDispatcher;
@@ -23,6 +22,7 @@ public class DispatchArticleController extends SimpleFormController{
protected final Log logger = LogFactory.getLog(getClass()); protected final Log logger = LogFactory.getLog(getClass());
private IArticleManager articleManager; private IArticleManager articleManager;
public IArticleManager getArticleManager() { public IArticleManager getArticleManager() {
return articleManager; return articleManager;
} }
@@ -31,21 +31,20 @@ public class DispatchArticleController extends SimpleFormController{
} }
protected Object formBackingObject(HttpServletRequest request) throws ConferenceDoesntExistException { protected Object formBackingObject(HttpServletRequest request) throws ConferenceDoesntExistException {
logger.info("Returning dispatcher view"); 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 m = new User("max","max","maxime","dagnicourt","ipint","m@truc.fr");
User m2 = new User("bob","bob","bob","dupont","lifl","b@bb.fr"); User m2 = new User("bob","bob","bob","dupont","lifl","b@bb.fr");
Collection<User> members = new ArrayList<User>(); Collection<User> members = new ArrayList<User>();
members.add(m); members.add(m);
members.add(m2); members.add(m2);
// TODO : use the formBackingObject to store these
request.getSession().setAttribute("members",members); request.getSession().setAttribute("members",members);
Integer currentConferenceId = (Integer) WebUtils.getSessionAttribute(request, "currentConferenceId");
request.getSession().setAttribute("articles",articleManager.getArticles(conf.getId())); // 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(); return new FormDispatcher();
} }
@@ -53,9 +52,6 @@ public class DispatchArticleController extends SimpleFormController{
HttpServletResponse response, HttpServletResponse response,
Object formDispatcher, BindException errors) throws Exception { Object formDispatcher, BindException errors) throws Exception {
//on recupère l'id de conference
Conference conf = (Conference)request.getSession().getAttribute("conference");
FormDispatcher fd = (FormDispatcher)formDispatcher; FormDispatcher fd = (FormDispatcher)formDispatcher;
Article article = articleManager.getArticle(fd.getIdArticle()); Article article = articleManager.getArticle(fd.getIdArticle());
User m = new User("bob","bob","maurice","dupont","lifl","b@bb.fr"); User m = new User("bob","bob","maurice","dupont","lifl","b@bb.fr");
@@ -67,7 +63,8 @@ public class DispatchArticleController extends SimpleFormController{
request.getSession().setAttribute("members",members); request.getSession().setAttribute("members",members);
return new ModelAndView("dispatchArticle", "articles", articleManager.getArticles(conf.getId())); Integer currentConferenceId = (Integer) WebUtils.getSessionAttribute(request, "currentConferenceId");
return new ModelAndView("dispatchArticle", "articles", articleManager.getArticles(currentConferenceId) );
} }

View File

@@ -1,19 +1,20 @@
package org.yacos.web.PCmember.controller; package org.yacos.web.PCmember.controller;
import java.io.IOException; import org.springframework.web.servlet.mvc.SimpleFormController;
import java.util.List; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.util.WebUtils;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView; import java.io.IOException;
import org.springframework.web.servlet.mvc.SimpleFormController; 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.Article;
import org.yacos.core.article.IArticleManager; import org.yacos.core.article.IArticleManager;
import org.yacos.core.conferences.Conference;
import org.yacos.core.exceptions.ConferenceDoesntExistException; import org.yacos.core.exceptions.ConferenceDoesntExistException;
public class ListArticleController extends SimpleFormController { public class ListArticleController extends SimpleFormController {
@@ -22,23 +23,21 @@ public class ListArticleController extends SimpleFormController {
private IArticleManager articleManager; private IArticleManager articleManager;
private SessionService sessionService;
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { throws ServletException, IOException, NoConferenceSelectedException {
logger.info("Returning listArticle view"); logger.info("Returning listArticle view");
//FIXME verif l'existance de la conf en session
Conference conf = (Conference)request.getSession().getAttribute("conference");
List<Article> listArticle; List<Article> listArticle;
try { try {
listArticle = articleManager.getArticles(conf.getId()); listArticle = articleManager.getArticles((Integer) WebUtils.getSessionAttribute(request, "currentConferenceId"));
getServletContext().setAttribute("listArticle", listArticle); getServletContext().setAttribute("listArticle", listArticle);
} catch (ConferenceDoesntExistException e) { } catch (ConferenceDoesntExistException e) {
logger.error(e.getMessage()); logger.error(e.getMessage());
} }
return new ModelAndView("listArticle"); return new ModelAndView("listArticle");
} }
@@ -50,4 +49,10 @@ public class ListArticleController extends SimpleFormController {
this.articleManager = articleManager; this.articleManager = articleManager;
} }
public SessionService getSessionService() {
return sessionService;
}
public void setSessionService(SessionService sessionService) {
this.sessionService = sessionService;
}
} }

View File

@@ -18,6 +18,10 @@ import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController; import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.servlet.view.RedirectView; 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.Article;
import org.yacos.core.article.IArticleManager; import org.yacos.core.article.IArticleManager;
import org.yacos.core.conferences.Conference; import org.yacos.core.conferences.Conference;
@@ -35,15 +39,15 @@ public class SArticleController extends SimpleFormController {
HttpServletResponse response, Object command, BindException errors) HttpServletResponse response, Object command, BindException errors)
throws ServletException, IllegalStateException { throws ServletException, IllegalStateException {
//on recupère l'id de conference // Fetching conference id
Conference conf = (Conference)request.getSession().getAttribute("conference"); 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"); User user = (User)request.getSession().getAttribute("user");
String title = ((FormSubmission) command).getTitle(); String title = ((FormSubmission) command).getTitle();
String theme = ((FormSubmission) command).getTheme(); String theme = ((FormSubmission) command).getTheme();
String mainauthor = ((FormSubmission) command).getMainauthor();
//String secondaryauthor = ((FormSubmission) command).getSecondaryauthor(); //String secondaryauthor = ((FormSubmission) command).getSecondaryauthor();
//TODO : get secondary author working
List<String> liste = ((FormSubmission) command).getListe(); List<String> liste = ((FormSubmission) command).getListe();
String nomFile=""; String nomFile="";
@@ -95,5 +99,4 @@ public class SArticleController extends SimpleFormController {
public void setArticleManager(IArticleManager articleManager) { public void setArticleManager(IArticleManager articleManager) {
this.articleManager = articleManager; this.articleManager = articleManager;
} }
} }

View File

@@ -5,9 +5,18 @@ import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.util.WebUtils;
public class ChooseConferenceController implements Controller { 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, public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception { HttpServletResponse response) throws Exception {
@@ -16,8 +25,7 @@ public class ChooseConferenceController implements Controller {
int idConf = Integer.parseInt(request.getParameter("idConf")); int idConf = Integer.parseInt(request.getParameter("idConf"));
// Set idConf in session context // Set idConf in session context
request.getSession().setAttribute("idCurrentConference", idConf); sessionService.setCurrentConferenceId(request, idConf);
return new ModelAndView("main"); return new ModelAndView("main");
} }

View File

@@ -0,0 +1,6 @@
package org.yacos.web.system.controller;
public class NoConferenceSelectedException extends Exception {
private static final long serialVersionUID = 1L;
}

View File

@@ -10,10 +10,8 @@ import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController; import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.servlet.view.RedirectView; import org.springframework.web.servlet.view.RedirectView;
import org.yacos.core.article.IArticleManager;
import org.yacos.core.users.IUserManager; import org.yacos.core.users.IUserManager;
import org.yacos.core.users.User; import org.yacos.core.users.User;
import org.yacos.core.users.UserManagerBean;
import org.yacos.web.system.form.FormUser; import org.yacos.web.system.form.FormUser;
/** /**
@@ -35,17 +33,23 @@ public class SUserRegistrationController extends SimpleFormController {
HttpServletResponse response, Object command, BindException errors) HttpServletResponse response, Object command, BindException errors)
throws Exception { throws Exception {
FormUser userCommand = (FormUser) command; FormUser userCommand = (FormUser) command;
// Tries to retrieve the current user : case of user modification
User user = (User) request.getSession().getAttribute("currentUser"); User user = (User) request.getSession().getAttribute("currentUser");
if((user == null) && (usersManager.getUser(userCommand.getLogin()) != null)){ 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){ if(user == null){
user = new User(); user = new User();
} }
// We should never be able to change the login of an existing user
if(user.getLogin() == null){
user.setLogin(userCommand.getLogin()); user.setLogin(userCommand.getLogin());
}
user.setEmail(userCommand.getEmail()); user.setEmail(userCommand.getEmail());
user.setFirstName(userCommand.getFirstName()); user.setFirstName(userCommand.getFirstName());
user.setLastName(userCommand.getLastName()); user.setLastName(userCommand.getLastName());
@@ -55,7 +59,14 @@ public class SUserRegistrationController extends SimpleFormController {
user.setPassword(userCommand.getPassword()); 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())); return new ModelAndView(new RedirectView(getSuccessView()));
} }

View File

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