From 321d7dc907fde1b004b8ab5b65923e78494d1e4f Mon Sep 17 00:00:00 2001 From: Christian Corsano Date: Tue, 18 Dec 2007 22:08:25 +0000 Subject: [PATCH] =?UTF-8?q?YACOSCore=20:=20Correction=20pour=20faire=20fon?= =?UTF-8?q?ctionner=20l'enregistrement=20des=20preferences=20=20=20=20=20-?= =?UTF-8?q?=20Article=20=20=20=20=20-=20IArticleManager=20:=20ajout=20d'un?= =?UTF-8?q?e=20m=C3=A9thode=20pour=20ajouter=20une=20pr=C3=A9ference=20(AT?= =?UTF-8?q?TENTION=20:=20les=20objets=20modeles=20ne=20passent=20pas=20tou?= =?UTF-8?q?s=20dans=20les=20tuyaux=20des=20managers=20Stateless,=20on=20va?= =?UTF-8?q?=20devoir=20revoir=20tout=20=C3=A7a)=20=20=20=20=20-=20Preferen?= =?UTF-8?q?ce=20:=20Corrig=C3=A9=20l'auto-generation=20de=20l'ID=20*****?= =?UTF-8?q?=20REGENERATION=20DE=20LA=20TABLE=20PREFERENCE=20NECESSAIRE=20*?= =?UTF-8?q?****?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/yacos/core/article/Article.java | 23 +++++++++++- .../core/article/ArticleManagerBean.java | 35 +++++++++++++++++++ .../yacos/core/article/IArticleManager.java | 3 ++ .../org/yacos/core/article/Preference.java | 10 +++++- 4 files changed, 69 insertions(+), 2 deletions(-) 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; }