diff --git a/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java b/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java index 9cfc46e..b710180 100644 --- a/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java +++ b/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java @@ -3,8 +3,6 @@ package org.yacos.core.article; import java.io.Serializable; import java.util.List; -import javax.annotation.Resource; -import javax.ejb.SessionContext; import javax.ejb.Stateless; import javax.ejb.TransactionManagement; import javax.ejb.TransactionManagementType; @@ -12,13 +10,12 @@ import javax.persistence.EntityManager; import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; import javax.persistence.Query; + import org.yacos.core.article.Article.State; +import org.yacos.core.article.Preference.PreferenceType; 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) @@ -31,9 +28,6 @@ public class ArticleManagerBean implements IArticleManager, Serializable { @PersistenceContext private EntityManager em; - - @Resource - private SessionContext sc; public ArticleManagerBean() { @@ -51,7 +45,6 @@ public class ArticleManagerBean implements IArticleManager, Serializable { a.setState(state); Conference conference = em.find(Conference.class, conferenceId); a.setConference(conference); - em.persist(a); return a; } @@ -108,6 +101,12 @@ public class ArticleManagerBean implements IArticleManager, Serializable { this.updateArticle(article); } + public void unassignArticleToPCMember(Integer articleId,String memberId){ + Article article = this.getArticle(articleId); + User PCMember = em.find(User.class, memberId); + article.removePCMember(PCMember); + this.updateArticle(article); + } public List getArticlePCMembers(Integer articleId) { Article article = this.getArticle(articleId); @@ -122,13 +121,38 @@ public class ArticleManagerBean implements IArticleManager, Serializable { article.delegateTo(referee,PCMember); } - public List getArticleReferees(Integer articleId) { - Article article = this.getArticle(articleId); - return (List) article.getReferees(); + + + + /* + * gestion des preferences + */ + + + public Preference addPreference(Integer article_id, String userLogin,PreferenceType preferenceType){ + Preference preference = new Preference(); + Article article = getArticle(article_id); + preference.setArticle(article); + User pcMember = em.find(User.class, userLogin); + preference.setPcMember(pcMember); + preference.setPreferenceType(preferenceType); + em.persist(preference); + em.flush(); + return preference; + } + + + public void removePreference(Integer article_id, String userLogin){ + Preference pref = this.getPreferenceForUserAndArticle(article_id, userLogin); + em.remove(pref); + } + + public void updatePreference(Preference preference){ + em.merge(preference); + em.flush(); } - public Preference getArticlePreferenceForUser(Integer article_id, - String pcMemberLogin) { + public Preference getPreferenceForUserAndArticle(Integer article_id, String pcMemberLogin){ PreferencePK preferenceid = new PreferencePK(); preferenceid.article = em.find(Article.class, article_id); preferenceid.pcMember = em.find(User.class, pcMemberLogin); @@ -138,49 +162,15 @@ public class ArticleManagerBean implements IArticleManager, Serializable { return null; } } - - public void setArticlePreferences(Article article, - List preferences) { - article.setPreferences(preferences); - } - - public void addArticlePreference(Preference preference) { - if(! em.contains(preference)){ - em.persist(preference); - } - } - - public void addArticlePreference(Integer article_id, String userLogin, String preferenceValue) { - Preference preference = new Preference(); - Article article = getArticle(article_id); - preference.setArticle(article); - User pcMember = em.find(User.class, userLogin); - preference.setPcMember(pcMember); - preference.setPreference(preferenceValue); - em.persist(preference); - em.flush(); + + @SuppressWarnings("unchecked") + public List getPreferencesForArticle(Integer article_id){ + Query query = em.createQuery("from Preference p WHERE article_id = ?"); + query.setParameter(1, article_id); + return query.getResultList(); } - public void updateArticlePreference(Integer article_id, String userLogin, String preferenceValue) { - Preference preference = getArticlePreferenceForUser(article_id, userLogin); - preference.setPreference(preferenceValue); - em.merge(preference); - } - public void addOrUpdatePreference(Integer article_id, String userLogin, String preferenceValue){ - Preference preference = getArticlePreferenceForUser(article_id, userLogin); - if(preference != null){ - preference.setPreference(preferenceValue); - em.merge(preference); - } else { - addArticlePreference(article_id,userLogin,preferenceValue); - } - } - - public void updatePreference(Preference preference){ - em.merge(preference); - } - public boolean existsArticle(Integer articleId) { return em.find(Article.class, articleId)!=null; } @@ -192,4 +182,6 @@ public class ArticleManagerBean implements IArticleManager, Serializable { public EntityManager getEntityManager() { return em; } + + } diff --git a/YACOSCore/ejbModule/org/yacos/core/article/IArticleManager.java b/YACOSCore/ejbModule/org/yacos/core/article/IArticleManager.java index e62c3af..c619bff 100644 --- a/YACOSCore/ejbModule/org/yacos/core/article/IArticleManager.java +++ b/YACOSCore/ejbModule/org/yacos/core/article/IArticleManager.java @@ -5,6 +5,7 @@ import java.util.List; import javax.ejb.Remote; import org.yacos.core.article.Article.State; +import org.yacos.core.article.Preference.PreferenceType; import org.yacos.core.exceptions.ConferenceDoesntExistException; import org.yacos.core.users.User; @@ -28,15 +29,13 @@ public interface IArticleManager { public List
getArticlesOfMember(Integer confId, String memberId); //public List
getAllArticles(); - //FIXME a d�placer dans user?? - public List getArticlePCMembers(Integer articleId); - public List getArticleReferees(Integer articleId); - - public Preference getArticlePreferenceForUser(Integer article_id, String pcMemberLogin); - public void setArticlePreferences(Article article, List preferences); - public void addArticlePreference(Integer article_id, String userLogin, String preferenceValue); - public void addOrUpdatePreference(Integer article_id, String userLogin, String preferenceValue); + //gestion des preferences + public Preference addPreference(Integer articleId, String userLogin, PreferenceType preferenceType); + public void updatePreference(Preference preference); + public void removePreference(Integer articleId, String userLogin); + public Preference getPreferenceForUserAndArticle(Integer articleId, String pcMemberLogin); + public List getPreferencesForArticle(Integer articleId); //delegation public void assignArticleToPCMember(Integer articleId,String memberId); diff --git a/YACOSCore/ejbModule/org/yacos/core/article/Preference.java b/YACOSCore/ejbModule/org/yacos/core/article/Preference.java index 076418e..64df7d8 100644 --- a/YACOSCore/ejbModule/org/yacos/core/article/Preference.java +++ b/YACOSCore/ejbModule/org/yacos/core/article/Preference.java @@ -37,7 +37,11 @@ public class Preference implements Serializable { @JoinColumn(name="article_id",nullable=false) private Article article; - private String preference; + public enum PreferenceType { + LIKE,INDIFFERENT,DISLIKE,CONFLICT + } + + private PreferenceType preferenceType; /** * @return the pcMember @@ -71,11 +75,11 @@ public class Preference implements Serializable { public void setArticle(Article article) { this.article = article; } - public String getPreference() { - return preference; + public PreferenceType getPreference() { + return preferenceType; } - public void setPreference(String preference) { - this.preference = preference; + public void setPreferenceType(PreferenceType preferenceType) { + this.preferenceType = preferenceType; } public PreferencePK getId(){