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 - - - - - - - - - - - - - - - - -
namepreferencenb of articles for this conference
${m.firstName} ${m.lastName}${m.preference}${m.nbArticles}
+ + + +
+

+
- - - - - - - - - - - - -
namepreference
${am.firstName} ${am.lastName}${m.preference}
- - +
+ + + + +

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

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