Création conf STATEFUL (pas fini) côté web

This commit is contained in:
Frederic Debuire
2008-03-10 15:45:17 +00:00
parent e83589da38
commit fa862c014d
5 changed files with 138 additions and 312 deletions

View File

@@ -238,8 +238,7 @@
<bean id="AddConferenceController" <bean id="AddConferenceController"
class="org.yacos.web.chairman.controller.AddConferenceController" class="org.yacos.web.chairman.controller.AddConferenceController">
scope="session">
<dwr:remote javascript="AddCriteriaJS" /> <dwr:remote javascript="AddCriteriaJS" />
<property name="sessionForm" value="true" /> <property name="sessionForm" value="true" />
<property name="commandName" value="formConference" /> <property name="commandName" value="formConference" />
@@ -248,7 +247,9 @@
<property name="conferenceManager" ref="conferenceManager" /> <property name="conferenceManager" ref="conferenceManager" />
<property name="userManager" ref="userManager" /> <property name="userManager" ref="userManager" />
<property name="evaluationManager" ref="evaluationManager" /> <property name="evaluationManager" ref="evaluationManager" />
<property name="conferenceSession" ref="conferenceSession" />
<property name="validator" ref="ConferenceValidator" /> <property name="validator" ref="ConferenceValidator" />
</bean> </bean>
<bean id="ReportConfCreateController" <bean id="ReportConfCreateController"
@@ -348,11 +349,11 @@
</dwr:convert> </dwr:convert>
<dwr:convert type="bean" <dwr:convert type="bean"
class="org.yacos.web.chairman.controller.CriterionBean"> class="org.yacos.core.conferences.CriterionBean">
</dwr:convert> </dwr:convert>
<dwr:convert type="bean" <dwr:convert type="bean"
class="org.yacos.web.chairman.controller.PersonBean"> class="org.yacos.core.conferences.PersonBean">
</dwr:convert> </dwr:convert>
<dwr:convert type="bean" <dwr:convert type="bean"
@@ -424,6 +425,8 @@
jndi-name="EvaluationManagerBean/remote" cache="true" /> jndi-name="EvaluationManagerBean/remote" cache="true" />
<jee:jndi-lookup id="messageManager" <jee:jndi-lookup id="messageManager"
jndi-name="MessageManagerBean/remote" cache="true" /> jndi-name="MessageManagerBean/remote" cache="true" />
<jee:jndi-lookup id="conferenceSession"
jndi-name="ConferenceSession/remote" cache="true" />
<!-- Configuration Properties--> <!-- Configuration Properties-->
<bean id="configproperties" <bean id="configproperties"

View File

@@ -6,8 +6,6 @@ import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
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;
@@ -20,7 +18,10 @@ import org.springframework.web.servlet.ModelAndViewDefiningException;
import org.springframework.web.servlet.mvc.AbstractWizardFormController; import org.springframework.web.servlet.mvc.AbstractWizardFormController;
import org.springframework.web.servlet.view.RedirectView; import org.springframework.web.servlet.view.RedirectView;
import org.yacos.core.conferences.Conference; import org.yacos.core.conferences.Conference;
import org.yacos.core.conferences.CriterionBean;
import org.yacos.core.conferences.IConferenceManager; import org.yacos.core.conferences.IConferenceManager;
import org.yacos.core.conferences.IConferenceSession;
import org.yacos.core.conferences.PersonBean;
import org.yacos.core.conferences.Conference.Phase; import org.yacos.core.conferences.Conference.Phase;
import org.yacos.core.evaluation.Criterion; import org.yacos.core.evaluation.Criterion;
import org.yacos.core.evaluation.IEvaluationManager; import org.yacos.core.evaluation.IEvaluationManager;
@@ -41,6 +42,8 @@ public class AddConferenceController extends AbstractWizardFormController {
private IConferenceManager conferenceManager; private IConferenceManager conferenceManager;
private IConferenceSession conferenceSession;
private IUserManager userManager; private IUserManager userManager;
private IEvaluationManager evaluationManager; private IEvaluationManager evaluationManager;
@@ -64,178 +67,63 @@ public class AddConferenceController extends AbstractWizardFormController {
this.conferenceManager = conferenceManager; this.conferenceManager = conferenceManager;
} }
// ###########################################################
private static int nextPerson = 1;
private List<PersonBean> listPersonBean;
private List<PersonBean> listPersonFiltered;
private List<PersonBean> listPersonAdded;
private List<String> listInvitations;
public void fillUser(String text) { public void fillUser(String text) {
if (text.equals("")) conferenceSession.fillUser(text);
listPersonFiltered = listPersonBean;
else {
listPersonFiltered = new ArrayList<PersonBean>();
for (PersonBean b : listPersonBean) {
if (b.getFirstName().toLowerCase().startsWith(text.toLowerCase()) || b.getLastName().toLowerCase().startsWith(text.toLowerCase())){
listPersonFiltered.add(b);
}
}
}
} }
public void setPerson(PersonBean b){ public void setPerson(PersonBean b){
if (b.getId() == -1) { conferenceSession.setPerson(b);
b.setId(getNextPerson());
}
PersonBean truePerson = getTruePerson(b.getLogin());
listPersonAdded.remove(truePerson);
listPersonAdded.add(truePerson);
listPersonBean.remove(truePerson);
listPersonFiltered.remove(truePerson);
} }
public void deletePerson(PersonBean b){ public void deletePerson(PersonBean b){
conferenceSession.deletePerson(b);
PersonBean truePerson = getTruePerson(b.getLogin());
listPersonAdded.remove(truePerson);
listPersonBean.add(truePerson);
}
public PersonBean getTruePerson(String login) {
for (PersonBean b : listPersonBean) {
if (b.getLogin().equals(login)){
return b;
}
}
for (PersonBean b : listPersonAdded) {
if (b.getLogin().equals(login)){
return b;
}
}
return null;
}
private static synchronized int getNextPerson()
{
return nextPerson++;
} }
public List<PersonBean> getUsersFiltered(){ public List<PersonBean> getUsersFiltered(){
return listPersonFiltered; return conferenceSession.getUsersFiltered();
} }
public List<PersonBean> getUsers(){ public List<PersonBean> getUsers(){
return listPersonBean; return conferenceSession.getUsers();
} }
public List<PersonBean> getUsersAdded(){ public List<PersonBean> getUsersAdded(){
return listPersonAdded; return conferenceSession.getUsersAdded();
} }
public List<String> getInvitation(){ public List<String> getInvitation(){
return listInvitations; return conferenceSession.getInvitation();
} }
public boolean addInvitation(String email){ public boolean addInvitation(String email){
email = email.toLowerCase(); return conferenceSession.addInvitation(email);
Pattern emailPattern = Pattern.compile("^[a-z0-9._-]+@[a-z0-9._-]{2,}[.][a-z]{2,4}$"); // Regex
Matcher emailMatcher = emailPattern.matcher(email);
if(!emailMatcher.matches()){
return false;
}
listInvitations.add(email);
return true;
} }
public void removeInvitations(List<String> emailList){ public void removeInvitations(List<String> emailList){
for(String email : emailList){ conferenceSession.removeInvitations(emailList);
listInvitations.remove(email);
} }
}
// ###########################################################
private static int nextId = 1;
private Set<CriterionBean> criteria;
private Set<CriterionBean> criteriaAll;
public Set<CriterionBean> getCriteriaAll(){ public Set<CriterionBean> getCriteriaAll(){
return criteriaAll; return conferenceSession.getCriteriaAll();
} }
public Set<CriterionBean> getCriteriaAdded(){ public Set<CriterionBean> getCriteriaAdded(){
return criteria; return conferenceSession.getCriteriaAdded();
}
public CriterionBean getTrueCriteria(int id) {
for (CriterionBean cb : criteriaAll) {
if (cb.getId() == id){
return cb;
}
}
for (CriterionBean cb : criteria) {
if (cb.getId() == id){
return cb;
}
}
return null;
} }
public void setCriterionClick(CriterionBean c){ public void setCriterionClick(CriterionBean c){
if (c.getId() == -1) { conferenceSession.setCriterionClick(c);
c.setId(getNextId());
}
criteria.remove(c);
criteria.add(c);
} }
public void setCriterion(CriterionBean c){ public void setCriterion(CriterionBean c){
if (c.getId() == -1) { conferenceSession.setCriterion(c);
c.setId(getNextId());
}
CriterionBean trueCriteria = getTrueCriteria(c.getId());
criteria.remove(trueCriteria);
criteria.add(trueCriteria);
criteriaAll.remove(trueCriteria);
} }
public void deleteCriterion(CriterionBean c){ public void deleteCriterion(CriterionBean c){
conferenceSession.deleteCriterion(c);
CriterionBean trueCriteria = getTrueCriteria(c.getId());
criteria.remove(trueCriteria);
criteriaAll.add(trueCriteria);
} }
private static synchronized int getNextId()
{
return nextId++;
}
// ###########################################################
public AddConferenceController() { public AddConferenceController() {
setCommandName("formConference"); setCommandName("formConference");
@@ -255,8 +143,13 @@ public class AddConferenceController extends AbstractWizardFormController {
throw new ModelAndViewDefiningException(new ModelAndView("denied")); throw new ModelAndViewDefiningException(new ModelAndView("denied"));
} }
criteria = new HashSet<CriterionBean>(); SessionService.getInstance().resetCurrentConference();
criteriaAll = new HashSet<CriterionBean>();
int nextId;
conferenceSession.setCriteria(new HashSet<CriterionBean>());
conferenceSession.setCriteriaAll(new HashSet<CriterionBean>());
List<Criterion> listCriterion = evaluationManager.getCriterions(); List<Criterion> listCriterion = evaluationManager.getCriterions();
@@ -266,7 +159,11 @@ public class AddConferenceController extends AbstractWizardFormController {
maxNext = crit.getId(); maxNext = crit.getId();
} }
nextId = conferenceSession.getNextId2();
nextId = maxNext + 1; nextId = maxNext + 1;
conferenceSession.setNextId2(nextId);
Set<CriterionBean> criteriaAll = new HashSet<CriterionBean>();
for (Criterion crit : listCriterion) { for (Criterion crit : listCriterion) {
CriterionBean cb = new CriterionBean(); CriterionBean cb = new CriterionBean();
@@ -275,17 +172,22 @@ public class AddConferenceController extends AbstractWizardFormController {
cb.setMax(crit.getMax_rating()); cb.setMax(crit.getMax_rating());
cb.setMin(crit.getMin_rating()); cb.setMin(crit.getMin_rating());
criteriaAll.add(cb); criteriaAll.add(cb);
getNextId(); conferenceSession.setNextId2(conferenceSession.getNextId2() + 1);
} }
conferenceSession.setCriteriaAll(criteriaAll);
conferenceSession.setListPersonBean(new ArrayList<PersonBean>());
conferenceSession.setListPersonAdded(new ArrayList<PersonBean>());
conferenceSession.setListInvitations(new ArrayList<String>());
conferenceSession.setListPersonFiltered(conferenceSession.getUsersFiltered());
List<PersonBean> listPersonBean = conferenceSession.getUsers();
listPersonBean = new ArrayList<PersonBean>();
listPersonAdded = new ArrayList<PersonBean>();
listInvitations = new ArrayList<String>();
listPersonFiltered = listPersonBean;
List<User> listUsers = userManager.getUsers(); List<User> listUsers = userManager.getUsers();
for (User user : listUsers) { for (User user : listUsers) {
PersonBean pb = new PersonBean(); PersonBean pb = new PersonBean();
pb.setId(getNextPerson()); conferenceSession.setNextPerson2(conferenceSession.getNextPerson2() + 1);
pb.setId(conferenceSession.getNextPerson2());
pb.setFirstName(user.getFirstName()); pb.setFirstName(user.getFirstName());
pb.setLastName(user.getLastName()); pb.setLastName(user.getLastName());
pb.setLogin(user.getLogin()); pb.setLogin(user.getLogin());
@@ -295,26 +197,33 @@ public class AddConferenceController extends AbstractWizardFormController {
listPersonBean.add(pb); listPersonBean.add(pb);
} }
} }
conferenceSession.setListPersonBean(listPersonBean);
return conference; return conference;
} }
else if (action.equals("modify")) { else if (action.equals("modify")) {
Conference conf = SessionService.getInstance().getCurrentConference(); Conference conf = SessionService.getInstance().getCurrentConference();
criteria = new HashSet<CriterionBean>(); conferenceSession.setCriteria(new HashSet<CriterionBean>());
criteriaAll = new HashSet<CriterionBean>(); conferenceSession.setCriteriaAll(new HashSet<CriterionBean>());
List<Criterion> listCriterionForConf = evaluationManager.getCriterions(conf.getId()); List<Criterion> listCriterionForConf = evaluationManager.getCriterions(conf.getId());
List<Criterion> listCriterion = evaluationManager.getCriterions(); List<Criterion> listCriterion = evaluationManager.getCriterions();
int nextId;
int maxNext = 0; int maxNext = 0;
for (Criterion crit : listCriterion) { for (Criterion crit : listCriterion) {
if (maxNext <= crit.getId()) if (maxNext <= crit.getId())
maxNext = crit.getId(); maxNext = crit.getId();
} }
nextId = conferenceSession.getNextId2();
nextId = maxNext + 1; nextId = maxNext + 1;
conferenceSession.setNextId2(nextId);
Set<CriterionBean> criteria = new HashSet<CriterionBean>();
for (Criterion crit : listCriterionForConf) { for (Criterion crit : listCriterionForConf) {
CriterionBean cb = new CriterionBean(); CriterionBean cb = new CriterionBean();
cb.setId(crit.getId()); cb.setId(crit.getId());
@@ -322,9 +231,11 @@ public class AddConferenceController extends AbstractWizardFormController {
cb.setMax(crit.getMax_rating()); cb.setMax(crit.getMax_rating());
cb.setMin(crit.getMin_rating()); cb.setMin(crit.getMin_rating());
criteria.add(cb); criteria.add(cb);
getNextId(); conferenceSession.setNextId2(conferenceSession.getNextId2() + 1);
} }
conferenceSession.setCriteria(criteria);
Set<CriterionBean> criteriaAll = new HashSet<CriterionBean>();
for (Criterion crit : listCriterion) { for (Criterion crit : listCriterion) {
CriterionBean cb = new CriterionBean(); CriterionBean cb = new CriterionBean();
cb.setId(crit.getId()); cb.setId(crit.getId());
@@ -332,52 +243,61 @@ public class AddConferenceController extends AbstractWizardFormController {
cb.setMax(crit.getMax_rating()); cb.setMax(crit.getMax_rating());
cb.setMin(crit.getMin_rating()); cb.setMin(crit.getMin_rating());
criteriaAll.add(cb); criteriaAll.add(cb);
getNextId(); conferenceSession.setNextId2(conferenceSession.getNextId2() + 1);
} }
// remove of the criteria already added // remove of the criteria already added
Set<CriterionBean> criteriaAllIter = new HashSet<CriterionBean>(criteriaAll); Set<CriterionBean> criteriaAllIter = new HashSet<CriterionBean>(criteriaAll);
for (CriterionBean crit : criteriaAllIter) for (CriterionBean crit : criteriaAllIter) {
for (CriterionBean crit2 : criteria) Set<CriterionBean> criteriatmp = conferenceSession.getCriteriaAdded();
for (CriterionBean crit2 : criteriatmp)
if (crit.getId() == crit2.getId()) if (crit.getId() == crit2.getId())
criteriaAll.remove(crit); criteriaAll.remove(crit);
}
conferenceSession.setCriteriaAll(criteriaAll);
conferenceSession.setListPersonBean(new ArrayList<PersonBean>());
listPersonBean = new ArrayList<PersonBean>(); conferenceSession.setListPersonAdded(new ArrayList<PersonBean>());
listPersonAdded = new ArrayList<PersonBean>(); conferenceSession.setListInvitations(new ArrayList<String>());
// Should get the invitation tokens and allow them to be removed conferenceSession.setListPersonFiltered(conferenceSession.getUsersFiltered());
listInvitations = new ArrayList<String>();
listPersonFiltered = listPersonBean;
List<User> listUsers = userManager.getUsers(); List<User> listUsers = userManager.getUsers();
List<PersonBean> listPersonBean = conferenceSession.getUsers();
for (User user : listUsers) { for (User user : listUsers) {
PersonBean pb = new PersonBean(); PersonBean pb = new PersonBean();
pb.setId(getNextPerson()); conferenceSession.setNextPerson2(conferenceSession.getNextPerson2() + 1);
pb.setId(conferenceSession.getNextPerson2());
pb.setFirstName(user.getFirstName()); pb.setFirstName(user.getFirstName());
pb.setLastName(user.getLastName()); pb.setLastName(user.getLastName());
pb.setLogin(user.getLogin()); pb.setLogin(user.getLogin());
if(! SessionService.getInstance().getCurrentUserLogin().equals(user.getLogin())){ if(! SessionService.getInstance().getCurrentUserLogin().equals(user.getLogin())){
listPersonBean.add(pb); listPersonBean.add(pb);
} }
} }
List<User> listUsersForConf = userManager.getUsers(conf.getId(), RoleType.PCMEMBER); List<User> listUsersForConf = userManager.getUsers(conf.getId(), RoleType.PCMEMBER);
List<PersonBean> listPersonAddedTmp = new ArrayList<PersonBean>();
for (User user : listUsersForConf) { for (User user : listUsersForConf) {
PersonBean pb = new PersonBean(); PersonBean pb = new PersonBean();
pb.setId(getNextPerson()); conferenceSession.setNextPerson2(conferenceSession.getNextPerson2() + 1);
pb.setId(conferenceSession.getNextPerson2());
pb.setFirstName(user.getFirstName()); pb.setFirstName(user.getFirstName());
pb.setLastName(user.getLastName()); pb.setLastName(user.getLastName());
pb.setLogin(user.getLogin()); pb.setLogin(user.getLogin());
listPersonAdded.add(pb); listPersonAddedTmp.add(pb);
} }
// remove of the person already added // remove of the person already added
List<PersonBean> listPersonIter = new ArrayList<PersonBean>(listPersonBean); List<PersonBean> listPersonIter = new ArrayList<PersonBean>(listPersonBean);
for (PersonBean person : listPersonIter) for (PersonBean person : listPersonIter) {
for (PersonBean person2 : listPersonAdded) for (PersonBean person2 : listPersonAddedTmp)
if (person.getLogin().equals(person2.getLogin())) if (person.getLogin().equals(person2.getLogin()))
listPersonBean.remove(person); listPersonBean.remove(person);
}
conferenceSession.setListPersonBean(listPersonBean);
DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
@@ -460,7 +380,8 @@ public class AddConferenceController extends AbstractWizardFormController {
conference.setConferenceId(conf.getId()); conference.setConferenceId(conf.getId());
SessionService.getInstance().setCurrentConference(conf); SessionService.getInstance().setCurrentConference(conf);
for(CriterionBean criterion : criteria){ Set<CriterionBean> criteriaTmp = conferenceSession.getCriteriaAdded();
for(CriterionBean criterion : criteriaTmp){
conferenceManager.addCriterionToConference( conferenceManager.addCriterionToConference(
conf.getId(), conf.getId(),
criterion.getLabel(), criterion.getLabel(),
@@ -468,7 +389,8 @@ public class AddConferenceController extends AbstractWizardFormController {
criterion.getMax()); criterion.getMax());
} }
for(PersonBean personBean : listPersonAdded){ List<PersonBean> listPersonAddedTmp = conferenceSession.getUsersAdded();
for(PersonBean personBean : listPersonAddedTmp){
conferenceManager.addPCMemberToConference( conferenceManager.addPCMemberToConference(
conf.getId(), conf.getId(),
personBean.getLogin()); personBean.getLogin());
@@ -490,7 +412,9 @@ public class AddConferenceController extends AbstractWizardFormController {
mailBody += YACOSUtils.fullURL("registerUser.htm")+" \n"; mailBody += YACOSUtils.fullURL("registerUser.htm")+" \n";
mailBody += "Please note that you MUST use this eMail address in the registration form in order to get the appropriate credentials."; mailBody += "Please note that you MUST use this eMail address in the registration form in order to get the appropriate credentials.";
// TODO : use a template // TODO : use a template
for(String invitationEmail : listInvitations){
List<String> listInvitationsTmp = conferenceSession.getInvitation();
for(String invitationEmail : listInvitationsTmp){
try { try {
conferenceManager.addInvitationToken(invitationEmail, RoleType.PCMEMBER, conf.getId()); conferenceManager.addInvitationToken(invitationEmail, RoleType.PCMEMBER, conf.getId());
MailSenderService.getInstance().sendEMail(invitationEmail, mailSubject , mailBody); MailSenderService.getInstance().sendEMail(invitationEmail, mailSubject , mailBody);
@@ -529,7 +453,8 @@ public class AddConferenceController extends AbstractWizardFormController {
conferenceManager.removeCriterionToConference(conf.getId()); conferenceManager.removeCriterionToConference(conf.getId());
for(CriterionBean criterion : criteria){ Set<CriterionBean> criteriaTmp = conferenceSession.getCriteriaAdded();
for(CriterionBean criterion : criteriaTmp){
conferenceManager.addCriterionToConference( conferenceManager.addCriterionToConference(
conf.getId(), conf.getId(),
criterion.getLabel(), criterion.getLabel(),
@@ -539,7 +464,8 @@ public class AddConferenceController extends AbstractWizardFormController {
conferenceManager.removePCMemberForConf(conf.getId()); conferenceManager.removePCMemberForConf(conf.getId());
for(PersonBean personBean : listPersonAdded){ List<PersonBean> listPersonAddedTmp = conferenceSession.getUsersAdded();
for(PersonBean personBean : listPersonAddedTmp){
conferenceManager.addPCMemberToConference( conferenceManager.addPCMemberToConference(
conf.getId(), conf.getId(),
personBean.getLogin()); personBean.getLogin());
@@ -549,5 +475,11 @@ public class AddConferenceController extends AbstractWizardFormController {
return new ModelAndView(new RedirectView("reportConfCreate.htm")); return new ModelAndView(new RedirectView("reportConfCreate.htm"));
} }
public IConferenceSession getConferenceSession() {
return conferenceSession;
}
public void setConferenceSession(IConferenceSession conferenceSession) {
this.conferenceSession = conferenceSession;
}
} }

View File

@@ -1,67 +0,0 @@
package org.yacos.web.chairman.controller;
public class CriterionBean {
private int id;
private String label;
private int min;
private int max;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public int getMin() {
return min;
}
public void setMin(int min) {
this.min = min;
}
public int getMax() {
return max;
}
public void setMax(int max) {
this.max = max;
}
public int hashCode()
{
return 5924 + id;
}
public boolean equals(Object obj)
{
if (obj == null)
{
return false;
}
if (obj == this)
{
return true;
}
if (!this.getClass().equals(obj.getClass()))
{
return false;
}
CriterionBean that = (CriterionBean) obj;
if (this.id != that.id)
{
return false;
}
return true;
}
}

View File

@@ -1,44 +0,0 @@
package org.yacos.web.chairman.controller;
public class PersonBean {
private int id;
private String firstName;
private String lastName;
private String login;
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public PersonBean() {}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}

View File

@@ -2,6 +2,7 @@ package org.yacos.web.chairman.form;
import java.util.Date; import java.util.Date;
public class FormConference { public class FormConference {
private Integer id; private Integer id;
@@ -223,4 +224,5 @@ public class FormConference {
public void setPageNumberChecked(Integer pageNumberChecked) { public void setPageNumberChecked(Integer pageNumberChecked) {
this.pageNumberChecked = pageNumberChecked; this.pageNumberChecked = pageNumberChecked;
} }
} }