diff --git a/YACOSWeb/WebContent/WEB-INF/dwr.xml b/YACOSWeb/WebContent/WEB-INF/dwr.xml
new file mode 100644
index 0000000..0952348
--- /dev/null
+++ b/YACOSWeb/WebContent/WEB-INF/dwr.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/YACOSWeb/WebContent/WEB-INF/jsp/dispatchArticle.jsp b/YACOSWeb/WebContent/WEB-INF/jsp/dispatchArticle.jsp
index 14c9f52..d3484ce 100644
--- a/YACOSWeb/WebContent/WEB-INF/jsp/dispatchArticle.jsp
+++ b/YACOSWeb/WebContent/WEB-INF/jsp/dispatchArticle.jsp
@@ -7,74 +7,140 @@
+
-
+
+
+
NO NAME
-
-
-
- Article's description :
-
title : ${article.title}
-
theme: ${article.topic}
-
main author: ${article.mainAuthor.firstName}{article.mainAuthor.lastName}
-
download the article
-
-
-
- members of the conference
-
-
+
+
+
+
diff --git a/YACOSWeb/WebContent/WEB-INF/jsp/dispatchArticleList.jsp b/YACOSWeb/WebContent/WEB-INF/jsp/dispatchArticleList.jsp
index 0d245bb..2dfd19b 100644
--- a/YACOSWeb/WebContent/WEB-INF/jsp/dispatchArticleList.jsp
+++ b/YACOSWeb/WebContent/WEB-INF/jsp/dispatchArticleList.jsp
@@ -1,23 +1,182 @@
<%@ include file="/WEB-INF/decorators/include.jsp"%>
-
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+ title : ${article.title}
+ theme: ${article.topic}
+ main author: ${article.mainAuthor.firstName}{article.mainAuthor.lastName}
+ | download the article |
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/YACOSWeb/WebContent/WEB-INF/web.xml b/YACOSWeb/WebContent/WEB-INF/web.xml
index 070ff58..d938c2b 100644
--- a/YACOSWeb/WebContent/WEB-INF/web.xml
+++ b/YACOSWeb/WebContent/WEB-INF/web.xml
@@ -13,6 +13,15 @@
1
+
+ dwr
+ org.directwebremoting.servlet.DwrServlet
+
+ debug
+ true
+
+
+
yacos
*.htm
diff --git a/YACOSWeb/WebContent/WEB-INF/yacos-servlet.xml b/YACOSWeb/WebContent/WEB-INF/yacos-servlet.xml
index 920eb15..80225d1 100644
--- a/YACOSWeb/WebContent/WEB-INF/yacos-servlet.xml
+++ b/YACOSWeb/WebContent/WEB-INF/yacos-servlet.xml
@@ -172,7 +172,7 @@
-
+
@@ -181,6 +181,7 @@
+
@@ -294,6 +295,10 @@
class="org.yacos.web.chairman.controller.PersonBean">
+
+
+
diff --git a/YACOSWeb/src/org/yacos/web/chairman/controller/DispatchArticleController.java b/YACOSWeb/src/org/yacos/web/chairman/controller/DispatchArticleController.java
index ab64e97..b490941 100644
--- a/YACOSWeb/src/org/yacos/web/chairman/controller/DispatchArticleController.java
+++ b/YACOSWeb/src/org/yacos/web/chairman/controller/DispatchArticleController.java
@@ -18,6 +18,7 @@ import org.yacos.core.article.Preference;
import org.yacos.core.conferences.Conference;
import org.yacos.core.conferences.IConferenceManager;
import org.yacos.core.users.IUserManager;
+import org.yacos.core.users.Speciality;
import org.yacos.core.users.User;
import org.yacos.core.users.Role.RoleType;
import org.yacos.web.system.session.SessionService;
@@ -55,26 +56,31 @@ public class DispatchArticleController implements Controller{
HttpServletResponse arg1) throws Exception {
logger.info("Returning dispatcher view");
+ PCMemberBean member;
Conference conf = SessionService.getInstance().getCurrentConference();
//description of the article
Article article = articleManager.getArticle(Integer.parseInt(req.getParameter("articleId")));
+
+ //List de pcmemberbean qui seront retourné
+ List members = new ArrayList();
+ List articleMembers = new ArrayList();
+
+
//list of the member who have this article
- List articleMembers = userManager.getPCMemberForArticle(article.getId());
- logger.debug("nombre de memebre prour l'article = "+articleMembers.size());
+ List articleMembersTmp = userManager.getPCMemberForArticle(article.getId());
- //List members for webpage
- List membersWeb = new ArrayList();
+ //list of all pcmembers of the conference
+ List membersTmp = userManager.getUsers(conf.getId(),RoleType.PCMEMBER);
- //list of member who have'nt this article
- List members = userManager.getUsers(conf.getId(),RoleType.PCMEMBER);
-
- for (User user : members) {
- PCMemberBean member = new PCMemberBean();
+ for (User user : membersTmp) {
+ member = new PCMemberBean();
member.setFirstName(user.getFirstName());
member.setLastName(user.getLastName());
member.setLogin(user.getLogin());
+
+ //recuperation des preferences
Preference pref = articleManager.getPreferenceForUserAndArticle(article.getId(), user.getLogin());
if (pref != null){
String prefType = pref.getPreferenceType().toString();
@@ -82,36 +88,156 @@ public class DispatchArticleController implements Controller{
}else {
member.setPreference(Preference.PreferenceType.INDIFFERENT.toString());
}
+
+ //recuperation des specialitées
+ List spectialities = new ArrayList();
+ List listSpe = userManager.getSpecialitiesFromUser(member.getLogin());
+ for (Speciality speciality : listSpe) {
+ spectialities.add(speciality.getName());
+ }
+ member.setSpecialities(spectialities);
+
+ //recuperatiojn du nombre d'article
int nb = 0;
List articles = articleManager.getArticlesOfMember(conf.getId(), user.getLogin());
if(articles != null){
nb = articles.size();
}
- member.setNbArticles(nb);
- membersWeb.add(member);
+ member.setNbArticles(nb);
+
+ //on place le memebre dans une des listes
+ if (articleMembersTmp.contains(user)){
+ articleMembers.add(member);
+ }else {
+ members.add(member);
+ }
}
Map model = new HashMap();
model.put("articleMembers",articleMembers);
- model.put("members", membersWeb);
+ model.put("members", members);
model.put("article", article);
return new ModelAndView("dispatchArticle", model);
}
- public List addMember(String memberId,int articleId){
- articleManager.assignArticleToPCMember(articleId, memberId);
+ public List getMembersWithTheArticle(int articleId ){
+
+ PCMemberBean member;
+ Conference conf = SessionService.getInstance().getCurrentConference();
+
+ //List de pcmemberbean qui sera retourné
+ List articleMembers = new ArrayList();
+
+ //list of the member who have this article
+ List articleMembersTmp = userManager.getPCMemberForArticle(articleId);
+
+ for (User user : articleMembersTmp) {
+ member = new PCMemberBean();
+ member.setFirstName(user.getFirstName());
+ member.setLastName(user.getLastName());
+ member.setLogin(user.getLogin());
+
+ //recuperation des preferences
+ Preference pref = articleManager.getPreferenceForUserAndArticle(articleId, user.getLogin());
+ if (pref != null){
+ String prefType = pref.getPreferenceType().toString();
+ member.setPreference(prefType);
+ }else {
+ member.setPreference(Preference.PreferenceType.INDIFFERENT.toString());
+ }
+
+ //recuperation des specialitées
+ List spectialities = new ArrayList();
+ List listSpe = userManager.getSpecialitiesFromUser(member.getLogin());
+ for (Speciality speciality : listSpe) {
+ spectialities.add(speciality.getName());
+ }
+ member.setSpecialities(spectialities);
+
+ //recuperatiojn du nombre d'article
+ int nb = 0;
+ List articles = articleManager.getArticlesOfMember(conf.getId(), user.getLogin());
+ if(articles != null){
+ nb = articles.size();
+ }
+ member.setNbArticles(nb);
+
+ //add the member to the return list
+ articleMembers.add(member);
+ }
+
+ return articleMembers;
+ }
+
+ public List getMembersWithoutTheArticle(int articleId ){
+
+ PCMemberBean member;
+ Conference conf = SessionService.getInstance().getCurrentConference();
+
+ //List de pcmemberbean qui sera retourné
+ List members = new ArrayList();
+
+ //list of the member who have this article
+ List articleMembersTmp = userManager.getPCMemberForArticle(articleId);
+
+ //list of all pcmembers of the conference
+ List membersTmp = userManager.getUsers(conf.getId(),RoleType.PCMEMBER);
+
+ for (User user : membersTmp) {
+ member = new PCMemberBean();
+ member.setFirstName(user.getFirstName());
+ member.setLastName(user.getLastName());
+ member.setLogin(user.getLogin());
+
+ //recuperation des preferences
+ Preference pref = articleManager.getPreferenceForUserAndArticle(articleId, user.getLogin());
+ if (pref != null){
+ String prefType = pref.getPreferenceType().toString();
+ member.setPreference(prefType);
+ }else {
+ member.setPreference(Preference.PreferenceType.INDIFFERENT.toString());
+ }
+
+ //recuperation des specialitées
+ List spectialities = new ArrayList();
+ List listSpe = userManager.getSpecialitiesFromUser(member.getLogin());
+ for (Speciality speciality : listSpe) {
+ spectialities.add(speciality.getName());
+ }
+ member.setSpecialities(spectialities);
+
+ //recuperatiojn du nombre d'article
+ int nb = 0;
+ List articles = articleManager.getArticlesOfMember(conf.getId(), user.getLogin());
+ if(articles != null){
+ nb = articles.size();
+ }
+ member.setNbArticles(nb);
+
+ //on place le memebre dans une des listes
+ if (!articleMembersTmp.contains(user) && member.getPreference()!= "CONFLICT" ){
+ members.add(member);
+ }
+ }
+ return members;
+ }
+
+
+ public List addMembers(List membersId,int articleId){
+ for (String memberId : membersId) {
+ articleManager.assignArticleToPCMember(articleId, memberId);
+ }
+ logger.debug("add members to article");
return userManager.getPCMemberForArticle(articleId);
}
- public List removeMember(String memberId,int articleId){
- articleManager.unassignArticleToPCMember(articleId, memberId);
- logger.debug("remove article");
+ public List removeMembers(List membersId,int articleId){
+ for (String memberId : membersId) {
+ articleManager.unassignArticleToPCMember(articleId, memberId);
+ }
+ logger.debug("remove members to article");
return userManager.getPCMemberForArticle(articleId);
}
- public String sayHello(String name){
- return "hello"+ name;
- }
-
}
diff --git a/YACOSWeb/src/org/yacos/web/chairman/controller/DispatchArticleListController.java b/YACOSWeb/src/org/yacos/web/chairman/controller/DispatchArticleListController.java
index b682f93..c88cf4b 100644
--- a/YACOSWeb/src/org/yacos/web/chairman/controller/DispatchArticleListController.java
+++ b/YACOSWeb/src/org/yacos/web/chairman/controller/DispatchArticleListController.java
@@ -1,5 +1,6 @@
package org.yacos.web.chairman.controller;
+import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
@@ -11,9 +12,13 @@ import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import org.yacos.core.article.Article;
import org.yacos.core.article.IArticleManager;
+import org.yacos.core.article.Preference;
import org.yacos.core.conferences.Conference;
import org.yacos.core.conferences.IConferenceManager;
import org.yacos.core.users.IUserManager;
+import org.yacos.core.users.Speciality;
+import org.yacos.core.users.User;
+import org.yacos.core.users.Role.RoleType;
import org.yacos.web.system.session.SessionService;
public class DispatchArticleListController implements Controller{
@@ -53,6 +58,127 @@ public class DispatchArticleListController implements Controller{
return new ModelAndView("dispatchArticleList","articles", listArticles);
}
+public List getMembersWithTheArticle(int articleId ){
+
+ PCMemberBean member;
+ Conference conf = SessionService.getInstance().getCurrentConference();
+
+ //List de pcmemberbean qui sera retourné
+ List articleMembers = new ArrayList();
+
+ //list of the member who have this article
+ List articleMembersTmp = userManager.getPCMemberForArticle(articleId);
+
+ for (User user : articleMembersTmp) {
+ member = new PCMemberBean();
+ member.setFirstName(user.getFirstName());
+ member.setLastName(user.getLastName());
+ member.setLogin(user.getLogin());
+
+ //recuperation des preferences
+ Preference pref = articleManager.getPreferenceForUserAndArticle(articleId, user.getLogin());
+ if (pref != null){
+ String prefType = pref.getPreferenceType().toString();
+ member.setPreference(prefType);
+ }else {
+ member.setPreference(Preference.PreferenceType.INDIFFERENT.toString());
+ }
+
+ //recuperation des specialitées
+ List spectialities = new ArrayList();
+ List listSpe = userManager.getSpecialitiesFromUser(member.getLogin());
+ for (Speciality speciality : listSpe) {
+ spectialities.add(speciality.getName());
+ }
+ member.setSpecialities(spectialities);
+
+ //recuperatiojn du nombre d'article
+ int nb = 0;
+ List articles = articleManager.getArticlesOfMember(conf.getId(), user.getLogin());
+ if(articles != null){
+ nb = articles.size();
+ }
+ member.setNbArticles(nb);
+
+ //add the member to the return list
+ articleMembers.add(member);
+ }
+
+ return articleMembers;
+ }
+
+ public List getMembersWithoutTheArticle(int articleId ){
+
+ PCMemberBean member;
+ Conference conf = SessionService.getInstance().getCurrentConference();
+
+ //List de pcmemberbean qui sera retourné
+ List members = new ArrayList();
+
+ //list of the member who have this article
+ List articleMembersTmp = userManager.getPCMemberForArticle(articleId);
+
+ //list of all pcmembers of the conference
+ List membersTmp = userManager.getUsers(conf.getId(),RoleType.PCMEMBER);
+
+ for (User user : membersTmp) {
+ member = new PCMemberBean();
+ member.setFirstName(user.getFirstName());
+ member.setLastName(user.getLastName());
+ member.setLogin(user.getLogin());
+
+ //recuperation des preferences
+ Preference pref = articleManager.getPreferenceForUserAndArticle(articleId, user.getLogin());
+ if (pref != null){
+ String prefType = pref.getPreferenceType().toString();
+ member.setPreference(prefType);
+ }else {
+ member.setPreference(Preference.PreferenceType.INDIFFERENT.toString());
+ }
+
+ //recuperation des specialitées
+ List spectialities = new ArrayList();
+ List listSpe = userManager.getSpecialitiesFromUser(member.getLogin());
+ for (Speciality speciality : listSpe) {
+ spectialities.add(speciality.getName());
+ }
+ member.setSpecialities(spectialities);
+
+ //recuperatiojn du nombre d'article
+ int nb = 0;
+ List articles = articleManager.getArticlesOfMember(conf.getId(), user.getLogin());
+ if(articles != null){
+ nb = articles.size();
+ }
+ member.setNbArticles(nb);
+
+ //on place le memebre dans une des listes
+ if (!articleMembersTmp.contains(user) && member.getPreference()!= "CONFLICT" ){
+ members.add(member);
+ }
+ }
+ logger.debug("return"+ members.size() +"members");
+ return members;
+ }
+ public List addMembers(List membersId,int articleId){
+ for (String memberId : membersId) {
+ articleManager.assignArticleToPCMember(articleId, memberId);
+ }
+ logger.debug("add members to article");
+ return userManager.getPCMemberForArticle(articleId);
+ }
+
+ public List removeMembers(List membersId,int articleId){
+ for (String memberId : membersId) {
+ articleManager.unassignArticleToPCMember(articleId, memberId);
+ }
+ logger.debug("remove members to article");
+ return userManager.getPCMemberForArticle(articleId);
+ }
+
+ public String sayHello(String name){
+ return "hello"+name;
+ }
}
diff --git a/YACOSWeb/src/org/yacos/web/chairman/controller/PCMemberBean.java b/YACOSWeb/src/org/yacos/web/chairman/controller/PCMemberBean.java
index ca365cc..abe79f0 100644
--- a/YACOSWeb/src/org/yacos/web/chairman/controller/PCMemberBean.java
+++ b/YACOSWeb/src/org/yacos/web/chairman/controller/PCMemberBean.java
@@ -1,13 +1,18 @@
package org.yacos.web.chairman.controller;
+import java.util.List;
+
public class PCMemberBean {
private String login;
private String firstName;
private String lastName;
+ private ListSpecialities;
private String Preference;
private int nbArticles;
+
+
public PCMemberBean() {
super();
}
@@ -30,7 +35,14 @@ public class PCMemberBean {
public void setLastName(String lastName) {
this.lastName = lastName;
}
-
+
+ public List getSpecialities() {
+ return Specialities;
+ }
+
+ public void setSpecialities(List specialities) {
+ Specialities = specialities;
+ }
public String getPreference() {
return Preference;
}