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.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

View File

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

View File

@@ -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<Article> articleList=articleManager.getArticles(conf.getId());
Integer currentConferenceId = (Integer) WebUtils.getSessionAttribute(request, "currentConferenceId");
if(currentConferenceId == null){
throw new NoConferenceSelectedException();
}
List<Article> 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;
}
}

View File

@@ -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;
@@ -23,6 +22,7 @@ public class DispatchArticleController extends SimpleFormController{
protected final Log logger = LogFactory.getLog(getClass());
private IArticleManager articleManager;
public IArticleManager getArticleManager() {
return articleManager;
}
@@ -31,21 +31,20 @@ public class DispatchArticleController extends SimpleFormController{
}
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<User> members = new ArrayList<User>();
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");
@@ -67,7 +63,8 @@ public class DispatchArticleController extends SimpleFormController{
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;
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,23 +23,21 @@ public class ListArticleController extends SimpleFormController {
private IArticleManager articleManager;
private SessionService sessionService;
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
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<Article> 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");
}
@@ -50,4 +49,10 @@ public class ListArticleController extends SimpleFormController {
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.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<String> liste = ((FormSubmission) command).getListe();
String nomFile="";
@@ -95,5 +99,4 @@ public class SArticleController extends SimpleFormController {
public void setArticleManager(IArticleManager 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.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");
}

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.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();
}
// 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()));
}

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