From 4e2ec038e9b986781d1f9e334c36b96110b00bd1 Mon Sep 17 00:00:00 2001 From: Christian Corsano Date: Mon, 4 Feb 2008 14:45:39 +0000 Subject: [PATCH] Correction de assignToPCMembers --- .../org/yacos/core/article/Article.java | 19 ++++++++++--------- .../core/article/ArticleManagerBean.java | 18 ++++++++++++++++-- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/YACOSCore/ejbModule/org/yacos/core/article/Article.java b/YACOSCore/ejbModule/org/yacos/core/article/Article.java index fc0b8cb..5192c27 100644 --- a/YACOSCore/ejbModule/org/yacos/core/article/Article.java +++ b/YACOSCore/ejbModule/org/yacos/core/article/Article.java @@ -204,15 +204,16 @@ public class Article implements Serializable { this.pcMembers = pcMembers; } - public void assignToPCMember(User pcMember){ - // TODO : Checking if the User is a pcMember for this conference (not implemented yet) - //if(pcMember.hasRoleForConference(RoleType.PCmember, this.conference)){ - if(! pcMembers.contains(pcMember)){ - pcMembers.add(pcMember); - } else { - //throw new DuplicateAssignationException(); - } - //} + public void addPCMember(User pcMember){ + if(! pcMembers.contains(pcMember)){ + pcMembers.add(pcMember); + } + } + + public void removePCMember(User pcMember){ + if(pcMembers.contains(pcMember)){ + pcMembers.remove(pcMember); + } } public void delegateTo(User referee, User pcMember) { diff --git a/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java b/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java index cc1f22a..62ab492 100644 --- a/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java +++ b/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java @@ -18,7 +18,10 @@ import javax.persistence.Query; import org.yacos.core.article.Article.State; import org.yacos.core.conferences.Conference; import org.yacos.core.exceptions.ConferenceDoesntExistException; +import org.yacos.core.users.Role; +import org.yacos.core.users.RolePK; import org.yacos.core.users.User; +import org.yacos.core.users.Role.RoleType; @Stateless @TransactionManagement(TransactionManagementType.CONTAINER) @@ -105,7 +108,18 @@ public class ArticleManagerBean implements IArticleManager, Serializable { public void assignArticleToPCMember(Integer articleId,String memberId){ Article article = this.getArticle(articleId); User PCMember = em.find(User.class, memberId); - article.assignToPCMember(PCMember); + + article.addPCMember(PCMember); + RolePK rolePK = new RolePK(PCMember,RoleType.PCMEMBER,article.getConference()); + if(em.find(Role.class, rolePK)==null){ + // Add the role : this should be the responsibility of ConferenceManager ... + Role pcMemberRole = new Role(); + pcMemberRole.setType(RoleType.PCMEMBER); + pcMemberRole.setUser(PCMember); + pcMemberRole.setConference(article.getConference()); + em.persist(pcMemberRole); + } + this.updateArticle(article); } @@ -178,7 +192,7 @@ public class ArticleManagerBean implements IArticleManager, Serializable { preference.setPreference(preferenceValue); em.merge(preference); } else { - addArticlePreference(preference); + addArticlePreference(article_id,userLogin,preferenceValue); } }