From 8c3877461a07d495cfdeda98c132e8f9669e41ed Mon Sep 17 00:00:00 2001 From: Maxime Dagnicourt Date: Tue, 12 Feb 2008 10:56:51 +0000 Subject: [PATCH] Policy failures: Code warning - failed on resource ArticleManagerBean.java. Reason: The import javax.transaction.HeuristicMixedException is never used, line 15 - failed on resource ArticleManagerBean.java. Reason: The import javax.transaction.HeuristicRollbackException is never used, line 16 - failed on resource ArticleManagerBean.java. Reason: The import javax.transaction.NotSupportedException is never used, line 17 - failed on resource ArticleManagerBean.java. Reason: The import javax.transaction.RollbackException is never used, line 18 - failed on resource ArticleManagerBean.java. Reason: The import javax.transaction.SystemException is never used, line 19 ... and more. Override reason: x --- .../org/yacos/core/article/Article.java | 8 +- .../core/article/ArticleManagerBean.java | 4 +- .../org/yacos/core/users/IUserManager.java | 10 ++- .../org/yacos/core/users/Speciality.java | 78 +++++++++++++++++++ .../ejbModule/org/yacos/core/users/User.java | 57 +++++++++++++- .../org/yacos/core/users/UserManagerBean.java | 65 +++++++++++++++- 6 files changed, 214 insertions(+), 8 deletions(-) create mode 100644 YACOSCore/ejbModule/org/yacos/core/users/Speciality.java diff --git a/YACOSCore/ejbModule/org/yacos/core/article/Article.java b/YACOSCore/ejbModule/org/yacos/core/article/Article.java index b04bdd7..8478e4e 100644 --- a/YACOSCore/ejbModule/org/yacos/core/article/Article.java +++ b/YACOSCore/ejbModule/org/yacos/core/article/Article.java @@ -249,5 +249,11 @@ public class Article implements Serializable { this.delegation = delegation; } - + //FIXME a tester + public boolean equals(Object obj){ + if (this.getClass() == obj.getClass()) + return this.id == ((Article)obj).getId(); + else return false; + + } } diff --git a/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java b/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java index ed8ce5a..c2a1584 100644 --- a/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java +++ b/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java @@ -162,7 +162,9 @@ public class ArticleManagerBean implements IArticleManager, Serializable { ut.begin(); Article article = this.getArticle(articleId); User PCMember = em.find(User.class, memberId); - article.getPcMembers().add(PCMember); + if(!article.getPcMembers().contains(PCMember)){ + article.getPcMembers().add(PCMember); + } ut.commit(); this.updateArticle(article); diff --git a/YACOSCore/ejbModule/org/yacos/core/users/IUserManager.java b/YACOSCore/ejbModule/org/yacos/core/users/IUserManager.java index 8548a17..f12eebc 100644 --- a/YACOSCore/ejbModule/org/yacos/core/users/IUserManager.java +++ b/YACOSCore/ejbModule/org/yacos/core/users/IUserManager.java @@ -34,7 +34,15 @@ public interface IUserManager { public List getRefereesOFPCMemberForArticle(String PCMemberLogin, Integer articleId); public List getPCMemberForArticle(Integer articleId); - + //speciality methodes + public Speciality getSpeciality(int SpecialityId); + public List getSpecialities(); + public void addSpeciality(String name); + public void removeSpeciality(int specialityId); + public void addSpecialityToUser(int specialityId,String login); + public void removeSpecialityToUser(int specialityId, String login); + public List getSpecialitiesFromUser(String login); + public boolean existe(Speciality spe); //roles methods /** * Create and adds a role to a user diff --git a/YACOSCore/ejbModule/org/yacos/core/users/Speciality.java b/YACOSCore/ejbModule/org/yacos/core/users/Speciality.java new file mode 100644 index 0000000..928c24d --- /dev/null +++ b/YACOSCore/ejbModule/org/yacos/core/users/Speciality.java @@ -0,0 +1,78 @@ +package org.yacos.core.users; + +import java.io.Serializable; +import java.util.List; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; + +@Entity +public class Speciality implements Serializable{ + + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + private int id; + private String name; + + @ManyToMany(targetEntity=User.class) + @JoinTable( + name="speciality_user_map", + joinColumns=@JoinColumn(name="userId"), + inverseJoinColumns=@JoinColumn(name="specialityId") + ) + private List users; + + + public Speciality(String name) { + super(); + this.name = name; + } + + public Speciality() { + super(); + } + + public int getId() { + return id; + } + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @ManyToMany(targetEntity=User.class) + @JoinTable( + name="speciality_user_map", + joinColumns=@JoinColumn(name="userId"), + inverseJoinColumns=@JoinColumn(name="specialityId") + ) + public List getUsers() { + return users; + } + + @ManyToMany(targetEntity=User.class) + @JoinTable( + name="speciality_user_map", + joinColumns=@JoinColumn(name="userId"), + inverseJoinColumns=@JoinColumn(name="specialityId") + ) + public void setUsers(List users) { + this.users = users; + } + + +} diff --git a/YACOSCore/ejbModule/org/yacos/core/users/User.java b/YACOSCore/ejbModule/org/yacos/core/users/User.java index ed02029..7bc71e7 100644 --- a/YACOSCore/ejbModule/org/yacos/core/users/User.java +++ b/YACOSCore/ejbModule/org/yacos/core/users/User.java @@ -9,11 +9,14 @@ import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; + +import javax.persistence.ManyToMany; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.UniqueConstraint; - /** * A unique User of the system. * The user is registered globally in the application and would be able to get different roles for @@ -61,6 +64,14 @@ public class User implements Serializable{ */ private String email; + @ManyToMany(targetEntity=Speciality.class) + @JoinTable( + name="speciality_user_map", + joinColumns=@JoinColumn(name="specialityId"), + inverseJoinColumns=@JoinColumn(name="userId") + ) + private List specialities; + /** * Roles for this user */ @@ -68,6 +79,9 @@ public class User implements Serializable{ @OneToMany(cascade=CascadeType.ALL, targetEntity=Role.class,mappedBy="user") private List roles; + /*@OneToMany(cascade=CascadeType.ALL, targetEntity=Delegation.class, mappedBy="user") + private List delegation; + */ public User(String login, String password, String firstName, String lastName, String organization, String email) { this(); @@ -125,6 +139,15 @@ public class User implements Serializable{ this.email = email; } + public void addSpeciality(Speciality spe){ + this.specialities.add(spe); + } + + + public void removeSpeciality(Speciality spe){ + this.specialities.remove(spe); + } + public void addRole(Role role){ roles.add(role); } @@ -190,4 +213,36 @@ public class User implements Serializable{ } return null; } + + @ManyToMany(targetEntity=Speciality.class) + @JoinTable( + name="speciality_user_map", + joinColumns=@JoinColumn(name="specialityId"), + inverseJoinColumns=@JoinColumn(name="userId") + ) + public List getSpecialities() { + return specialities; + } + + @ManyToMany(targetEntity=Speciality.class) + @JoinTable( + name="speciality_user_map", + joinColumns=@JoinColumn(name="specialityId"), + inverseJoinColumns=@JoinColumn(name="userId") + ) + public void setSpecialities(List specialities) { + this.specialities = specialities; + } + +/* + @OneToMany(cascade=CascadeType.ALL, targetEntity=Delegation.class, mappedBy="user") + public List getDelegation() { + return delegation; + } + + @OneToMany(cascade=CascadeType.ALL, targetEntity=Delegation.class, mappedBy="user") + public void setDelegation(List delegation) { + this.delegation = delegation; + } + */ } diff --git a/YACOSCore/ejbModule/org/yacos/core/users/UserManagerBean.java b/YACOSCore/ejbModule/org/yacos/core/users/UserManagerBean.java index 7208112..d18b527 100644 --- a/YACOSCore/ejbModule/org/yacos/core/users/UserManagerBean.java +++ b/YACOSCore/ejbModule/org/yacos/core/users/UserManagerBean.java @@ -7,12 +7,13 @@ package org.yacos.core.users; 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.article.Article; + import org.yacos.core.conferences.Conference; import org.yacos.core.exceptions.PKAlreadyUsedException; import org.yacos.core.exceptions.UserEMailAlreadyExistsException; @@ -94,7 +95,7 @@ public class UserManagerBean implements IUserManager{ public Boolean exists(String login){ return (this.getUser(login)!= null); } - + @SuppressWarnings("unchecked") public List getUsers(int conf_id) { Query query = em.createQuery("select user from Role role where role.conference = ?"); @@ -113,8 +114,7 @@ public class UserManagerBean implements IUserManager{ } @SuppressWarnings("unchecked") - public List getPCMemberForArticle(Integer articleId){ - //select p from Paper p join p.referees r where r.login=:aLogin and p.conference=:aConf + public List getPCMemberForArticle(Integer articleId){ Query query = em.createQuery("select a.pcMembers from Article a where a.id=?"); query.setParameter(1, articleId); return query.getResultList(); @@ -128,6 +128,63 @@ public class UserManagerBean implements IUserManager{ return query.getResultList(); } + public Speciality getSpeciality(int SpecialityId){ + Speciality spe = em.find(Speciality.class, SpecialityId); + return spe; + } + + @SuppressWarnings("unchecked") + public List getSpecialities(){ + Query query = em.createQuery("from Speciality"); + return query.getResultList(); + } + + + public void addSpeciality(String name){ + Speciality spe = new Speciality(name); + if(!existe(spe)){ + em.persist(spe); + em.flush(); + } + } + + public void removeSpeciality(int specialityId){ + Speciality spe = em.find(Speciality.class, specialityId); + em.remove(spe); + em.flush(); + } + + public void addSpecialityToUser(int specialityId,String login){ + User user = this.getUser(login); + Speciality spe = this.getSpeciality(specialityId); + user.addSpeciality(spe); + this.UpdateUser(user); + } + + public void removeSpecialityToUser(int specialityId, String login){ + Query query = em.createQuery("delete from User u, u.specialities s WHERE s = ? and u = ?"); + query.setParameter(1, this.getSpeciality(specialityId)); + query.setParameter(2, this.getUser(login)); + query.executeUpdate(); + } + + @SuppressWarnings("unchecked") + public List getSpecialitiesFromUser(String login){ + Query query = em.createQuery("select user.specialities from User user WHERE user.login=?"); + query.setParameter(1, login); + return query.getResultList(); + } + + public boolean existe(Speciality spe){ + List list = this.getSpecialities(); + for (Speciality spe2 : list) { + if(spe2.getName().equalsIgnoreCase(spe.getName())){ + return true; + } + } + return false; + } + /* * * methodes de Roles