From 9527149161dfaa010dcd71a2ab490f07d9f18b47 Mon Sep 17 00:00:00 2001 From: Christian Corsano Date: Thu, 14 Feb 2008 12:16:02 +0000 Subject: [PATCH] Correction UserManager Corrections mineures ArticleManager --- .../core/article/ArticleManagerBean.java | 52 +++- .../org/yacos/core/users/IUserManager.java | 6 +- .../ejbModule/org/yacos/core/users/User.java | 2 +- .../org/yacos/core/users/UserManagerBean.java | 223 +++++++++++++++--- 4 files changed, 230 insertions(+), 53 deletions(-) diff --git a/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java b/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java index e78657f..35dbff1 100644 --- a/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java +++ b/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java @@ -13,7 +13,6 @@ import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; import javax.persistence.Query; import javax.transaction.UserTransaction; - import org.yacos.core.article.Article.State; import org.yacos.core.article.Preference.PreferenceType; import org.yacos.core.conferences.Conference; @@ -87,12 +86,11 @@ public class ArticleManagerBean implements IArticleManager, Serializable { persistentArticle.setSecondaryAuthors(article.getSecondaryAuthors()); ut.commit(); } catch (Exception e) { + e.printStackTrace(); try { ut.rollback(); - e.printStackTrace(); } catch (Exception e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); + e.printStackTrace(); } } } @@ -184,12 +182,11 @@ public class ArticleManagerBean implements IArticleManager, Serializable { ut.commit(); this.updateArticle(article); } catch (Exception e) { - try { + try{ ut.rollback(); } catch (Exception e1) { e1.printStackTrace(); } - e.printStackTrace(); } } @@ -201,14 +198,47 @@ public class ArticleManagerBean implements IArticleManager, Serializable { } public void delegateArticleToReferee(Integer articleId, String refereeId, String memberId){ - Article article = this.getArticle(articleId); - User PCMember = em.find(User.class, memberId); - User referee = em.find(User.class, refereeId); - article.delegateTo(referee,PCMember); + try{ + ut.begin(); + Article article = this.getArticle(articleId); + User PCMember = em.find(User.class, memberId); + User referee = em.find(User.class, refereeId); + Delegation delegation = new Delegation(); + delegation.setArticle(article); + delegation.setPcMember(PCMember); + delegation.setReferee(referee); + em.persist(delegation); + ut.commit(); + } catch (Exception e) { + try{ + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } public void undelegateArticleToReferee(Integer articleId, String refereeId, String memberId){ - //TODO + try{ + ut.begin(); + Article article = this.getArticle(articleId); + User PCMember = em.find(User.class, memberId); + User referee = em.find(User.class, refereeId); + Query query = em.createQuery( + "delete from Delegation where article=:article and referee=:referee and pcMember=:pcMember") + .setParameter("article", article) + .setParameter("referee", referee) + .setParameter("pcMember", PCMember); + int affectedRows = query.executeUpdate(); + System.out.println("Affected Rows :"+affectedRows); + ut.commit(); + } catch (Exception e) { + try{ + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } diff --git a/YACOSCore/ejbModule/org/yacos/core/users/IUserManager.java b/YACOSCore/ejbModule/org/yacos/core/users/IUserManager.java index 2357cf9..cbfbdbf 100644 --- a/YACOSCore/ejbModule/org/yacos/core/users/IUserManager.java +++ b/YACOSCore/ejbModule/org/yacos/core/users/IUserManager.java @@ -3,7 +3,6 @@ package org.yacos.core.users; import java.util.List; import javax.ejb.Remote; - import org.yacos.core.exceptions.PKAlreadyUsedException; import org.yacos.core.exceptions.UserEMailAlreadyExistsException; import org.yacos.core.system.InvitationToken; @@ -23,6 +22,7 @@ public interface IUserManager { throws PKAlreadyUsedException, UserEMailAlreadyExistsException; public void removeUser(String login); public User getUser(String login); + public User getUserByEmail(String email); public void UpdateUser(User user); public Boolean exists(String login); @@ -30,7 +30,7 @@ public interface IUserManager { public List getUsers(); public List getUsers(int conf_id); public List getUsers(int conf_id, Role.RoleType type); - public List getRefereesOFPCMemberForArticle(String PCMemberLogin, Integer articleId); + public List getRefereesOfPcMemberForArticle(String PCMemberLogin, Integer articleId); public List getPCMemberForArticle(Integer articleId); //speciality methodes @@ -41,7 +41,7 @@ public interface IUserManager { public void addSpecialityToUser(int specialityId,String login); public void removeSpecialityFromUser(int specialityId, String login); public List getSpecialitiesFromUser(String login); - public boolean existe(Speciality spe); + public boolean specialityExists(Speciality spe); //roles methods /** * Create and adds a role to a user diff --git a/YACOSCore/ejbModule/org/yacos/core/users/User.java b/YACOSCore/ejbModule/org/yacos/core/users/User.java index 900a5d2..b293ac7 100644 --- a/YACOSCore/ejbModule/org/yacos/core/users/User.java +++ b/YACOSCore/ejbModule/org/yacos/core/users/User.java @@ -136,7 +136,7 @@ public class User implements Serializable{ } public void setEmail(String email) { - this.email = email; + this.email = email.toLowerCase(); } public void addSpeciality(Speciality spe){ diff --git a/YACOSCore/ejbModule/org/yacos/core/users/UserManagerBean.java b/YACOSCore/ejbModule/org/yacos/core/users/UserManagerBean.java index d879e9e..fd9c096 100644 --- a/YACOSCore/ejbModule/org/yacos/core/users/UserManagerBean.java +++ b/YACOSCore/ejbModule/org/yacos/core/users/UserManagerBean.java @@ -6,12 +6,16 @@ package org.yacos.core.users; import java.util.List; +import javax.annotation.Resource; import javax.ejb.Stateless; +import javax.ejb.TransactionManagement; +import javax.ejb.TransactionManagementType; import javax.persistence.EntityManager; import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; import javax.persistence.Query; - +import javax.transaction.UserTransaction; +import org.yacos.core.article.Article; import org.yacos.core.conferences.Conference; import org.yacos.core.exceptions.PKAlreadyUsedException; import org.yacos.core.exceptions.UserEMailAlreadyExistsException; @@ -24,9 +28,12 @@ import org.yacos.core.users.Role.RoleType; * */ @Stateless +@TransactionManagement(TransactionManagementType.BEAN) public class UserManagerBean implements IUserManager{ @PersistenceContext EntityManager em; + @Resource + private UserTransaction ut; @SuppressWarnings("unchecked") public List getUsers(){ @@ -47,10 +54,11 @@ public class UserManagerBean implements IUserManager{ if(this.getByEmail(email) != null){ throw new UserEMailAlreadyExistsException(email); } - + try{ + ut.begin(); User user = new User(login, password, firstName, lastName, organization, email); em.persist(user); - em.flush(); + ut.commit(); // Existing InvitationToken handling List tokens = getInvitationTokensForEmail(user.getEmail()); @@ -59,17 +67,48 @@ public class UserManagerBean implements IUserManager{ } return user; + } catch (Exception e) { + try { + ut.rollback(); + e.printStackTrace(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + } else{ throw new PKAlreadyUsedException(); } + return null; } /** - * Removes a user from the system + * Removes a user and his article from the system * @param user */ + @SuppressWarnings(value="unchecked") public void removeUser(String login){ + try { + ut.begin(); User persistedUser = em.find(User.class, login); + + // Delete the articles for this user + Query articlesQuery = em.createQuery("from Article where mainauthor=?"); + articlesQuery.setParameter(1, persistedUser); + List
articles = articlesQuery.getResultList(); + for(Article article : articles){ + em.remove(article); + } + em.remove(persistedUser); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + e.printStackTrace(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } public User getUser(String login) { @@ -87,7 +126,23 @@ public class UserManagerBean implements IUserManager{ } public void UpdateUser(User user){ - em.merge(user); + try { + ut.begin(); + User updatedUser = em.find(User.class, user.getLogin()); + updatedUser.setEmail(user.getEmail()); + updatedUser.setFirstName(user.getFirstName()); + updatedUser.setLastName(user.getLastName()); + updatedUser.setOrganization(user.getOrganization()); + updatedUser.setPassword(user.getPassword()); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + e.printStackTrace(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } public Boolean exists(String login){ @@ -119,10 +174,12 @@ public class UserManagerBean implements IUserManager{ } @SuppressWarnings("unchecked") - public List getRefereesOFPCMemberForArticle(String PCMemberLogin, Integer articleId){ - Query query = em.createQuery("select user from User user, Articles_referees_map a WHERE a.user_id = user.login and a.article_id = ?"); - query.setParameter(1, articleId); - query.setParameter(2, PCMemberLogin); + public List getRefereesOfPcMemberForArticle(String PCMemberLogin, Integer articleId){ + Query query = em.createQuery("select delegation.referee from Delegation delegation WHERE delegation.article=? and delegation.pcMember=?"); + Article article = em.find(Article.class, articleId); + User pcMember = em.find(User.class, PCMemberLogin); + query.setParameter(1, article); + query.setParameter(2, pcMember); return query.getResultList(); } @@ -139,31 +196,74 @@ public class UserManagerBean implements IUserManager{ public void addSpeciality(String name){ - Speciality spe = new Speciality(name); - if(!existe(spe)){ - em.persist(spe); - em.flush(); + try{ + ut.begin(); + Speciality spe = new Speciality(name); + if(!specialityExists(spe)){ + em.persist(spe); + em.flush(); + } + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + e.printStackTrace(); + } catch (Exception e1) { + e1.printStackTrace(); + } } } public void removeSpeciality(int specialityId){ - Speciality spe = em.find(Speciality.class, specialityId); - em.remove(spe); - em.flush(); + try { + ut.begin(); + Speciality spe = em.find(Speciality.class, specialityId); + em.remove(spe); + em.flush(); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + e.printStackTrace(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } public void addSpecialityToUser(int specialityId,String login){ - User user = this.getUser(login); - Speciality spe = this.getSpeciality(specialityId); - user.addSpeciality(spe); - this.UpdateUser(user); + try { + ut.begin(); + User user = em.find(User.class, login); + Speciality spe = em.find(Speciality.class, specialityId); + user.addSpeciality(spe); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + e.printStackTrace(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } public void removeSpecialityFromUser(int specialityId, String login){ - User user = this.getUser(login); - Speciality spe = this.getSpeciality(specialityId); - user.getSpecialities().remove(spe); - this.UpdateUser(user); + try { + ut.begin(); + User user = em.find(User.class, login); + Speciality spe = em.find(Speciality.class, specialityId); + user.getSpecialities().remove(spe); + em.remove(spe); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + e.printStackTrace(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } @SuppressWarnings("unchecked") @@ -173,7 +273,7 @@ public class UserManagerBean implements IUserManager{ return query.getResultList(); } - public boolean existe(Speciality spe){ + public boolean specialityExists(Speciality spe){ List list = this.getSpecialities(); for (Speciality spe2 : list) { if(spe2.getName().equalsIgnoreCase(spe.getName())){ @@ -194,21 +294,45 @@ public class UserManagerBean implements IUserManager{ } public void addRoleForConference(String login, RoleType role, Integer conferenceId) { - User user = em.find(User.class, login); - Conference conference = em.find(Conference.class, conferenceId); - - Role newRole = new Role(); - newRole.setUser(user); - newRole.setConference(conference); - newRole.setType(role); - em.persist(newRole); + try { + User user = em.find(User.class, login); + Conference conference = em.find(Conference.class, conferenceId); + + ut.begin(); + + Role newRole = new Role(); + newRole.setUser(user); + newRole.setConference(conference); + newRole.setType(role); + em.persist(newRole); + + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + e.printStackTrace(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } public void removeRole(String userLogin, RoleType roleType, int conferenceId) { - User user = em.find(User.class, userLogin); - Conference conference = em.find(Conference.class, conferenceId); - Role role = em.find(Role.class, new RolePK(user,roleType,conference)); - em.remove(role); + try { + ut.begin(); + User user = em.find(User.class, userLogin); + Conference conference = em.find(Conference.class, conferenceId); + Role role = em.find(Role.class, new RolePK(user,roleType,conference)); + em.remove(role); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + e.printStackTrace(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } @SuppressWarnings("unchecked") @@ -222,7 +346,19 @@ public class UserManagerBean implements IUserManager{ InvitationTokenPK tokenId) { InvitationToken token = em.find(InvitationToken.class,tokenId); addRoleForConference(userLogin, token.getRole(), token.getConference().getId()); - em.remove(token); + + try { + ut.begin(); + em.remove(token); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + e.printStackTrace(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } public boolean hasRoleForConference(String userLogin, RoleType roleType, @@ -241,6 +377,17 @@ public class UserManagerBean implements IUserManager{ aQuery.setParameter(1, user); return aQuery.getResultList(); } + + public User getUserByEmail(String email) { + Query query = em.createQuery("from User where email=?"); + query.setParameter(1, email); + try{ + User user = (User) query.getSingleResult(); + return user; + } catch (NoResultException e) { + return null; + } + } }