diff --git a/YACOSCore/ejbModule/org/yacos/core/article/Article.java b/YACOSCore/ejbModule/org/yacos/core/article/Article.java index 372f02c..40152f0 100644 --- a/YACOSCore/ejbModule/org/yacos/core/article/Article.java +++ b/YACOSCore/ejbModule/org/yacos/core/article/Article.java @@ -11,6 +11,8 @@ import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; + import org.yacos.core.conferences.Conference; import org.yacos.core.users.User; @@ -60,6 +62,9 @@ public class Article implements Serializable { ) private Collection pcMembers; + @OneToMany(targetEntity=Preference.class,mappedBy="article") + private Collection preferences; + private int state; public enum state { @@ -214,7 +219,23 @@ public class Article implements Serializable { this.conference = conference; } - public boolean asMember(){ + /** + * @return the preferences + */ + @OneToMany(targetEntity=Preference.class,mappedBy="article") + public Collection getPreferences() { + return preferences; + } + + /** + * @param preferences the preferences to set + */ + @OneToMany(targetEntity=Preference.class,mappedBy="article") + public void setPreferences(Collection preferences) { + this.preferences = preferences; + } + + public boolean hasMember(){ return false; } } diff --git a/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java b/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java index ac2f0e2..292e22d 100644 --- a/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java +++ b/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java @@ -5,7 +5,9 @@ import java.util.List; import javax.ejb.Stateless; import javax.persistence.EntityManager; +import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; +import javax.persistence.Query; import org.yacos.core.users.User; @@ -65,4 +67,37 @@ public class ArticleManagerBean implements IArticleManager, Serializable { public List getArticleReferees(Article article) { return (List) article.getReferees(); } + + public Preference getArticlePreferenceForUser(Article article, + String pcMemberLogin) { + Query query = em.createQuery("SELECT p FROM Preference p WHERE p.article.id = :articleid AND p.pcMember.id = :pcmemberlogin"); + query.setParameter("articleid",article.getId()); + query.setParameter("pcmemberlogin", pcMemberLogin); + try { + return (Preference) query.getSingleResult(); + } catch (NoResultException e) { + 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); + } } diff --git a/YACOSCore/ejbModule/org/yacos/core/article/IArticleManager.java b/YACOSCore/ejbModule/org/yacos/core/article/IArticleManager.java index 6ace501..bdc76c5 100644 --- a/YACOSCore/ejbModule/org/yacos/core/article/IArticleManager.java +++ b/YACOSCore/ejbModule/org/yacos/core/article/IArticleManager.java @@ -12,6 +12,9 @@ public interface IArticleManager { public List getArticlePCMembers(Article article); public List getArticleReferees(Article article); + public Preference getArticlePreferenceForUser(Article article, String pcMemberLogin); + public void setArticlePreferences(Article article, List preferences); + public void addArticlePreference(Integer article_id, String userLogin, String preferenceValue); public List
getArticles(); } diff --git a/YACOSCore/ejbModule/org/yacos/core/article/Preference.java b/YACOSCore/ejbModule/org/yacos/core/article/Preference.java index e194c14..10d206e 100644 --- a/YACOSCore/ejbModule/org/yacos/core/article/Preference.java +++ b/YACOSCore/ejbModule/org/yacos/core/article/Preference.java @@ -3,6 +3,8 @@ */ package org.yacos.core.article; +import java.io.Serializable; + import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @@ -17,7 +19,11 @@ import org.yacos.core.users.User; * */ @Entity -public class Preference { +public class Preference implements Serializable { + /** + * + */ + private static final long serialVersionUID = 1L; /** * Id mandatory in every entity. */ @@ -38,6 +44,7 @@ public class Preference { * @return the id */ @Id + @GeneratedValue(strategy=GenerationType.AUTO) public Integer getId() { return id; } @@ -45,6 +52,7 @@ public class Preference { * @param id the id to set */ @Id + @GeneratedValue(strategy=GenerationType.AUTO) public void setId(Integer id) { this.id = id; }