From 21ee0e709634448bf59e027accd51f303a491d9d Mon Sep 17 00:00:00 2001 From: Christian Corsano Date: Fri, 15 Feb 2008 10:08:51 +0000 Subject: [PATCH] (Core) Ajout des transactions dans ConferenceManagerBean Ajout des conferenceCreationToken Corrections diverses --- .../core/article/ArticleManagerBean.java | 2 +- .../yacos/core/conferences/Conference.java | 22 +- .../conferences/ConferenceManagerBean.java | 343 +++++++++++++++--- .../core/conferences/IConferenceManager.java | 34 +- .../org/yacos/core/users/IUserManager.java | 2 + .../ejbModule/org/yacos/core/users/User.java | 25 ++ .../org/yacos/core/users/UserManagerBean.java | 115 +++--- 7 files changed, 415 insertions(+), 128 deletions(-) diff --git a/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java b/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java index 35dbff1..1779b74 100644 --- a/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java +++ b/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java @@ -229,8 +229,8 @@ public class ArticleManagerBean implements IArticleManager, Serializable { .setParameter("article", article) .setParameter("referee", referee) .setParameter("pcMember", PCMember); + @SuppressWarnings("unused") int affectedRows = query.executeUpdate(); - System.out.println("Affected Rows :"+affectedRows); ut.commit(); } catch (Exception e) { try{ diff --git a/YACOSCore/ejbModule/org/yacos/core/conferences/Conference.java b/YACOSCore/ejbModule/org/yacos/core/conferences/Conference.java index cf8b257..523e091 100644 --- a/YACOSCore/ejbModule/org/yacos/core/conferences/Conference.java +++ b/YACOSCore/ejbModule/org/yacos/core/conferences/Conference.java @@ -10,13 +10,16 @@ import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +import javax.persistence.JoinColumn; import javax.persistence.OneToMany; +import javax.persistence.OneToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; import org.yacos.core.article.Article; import org.yacos.core.evaluation.Criterion; import org.yacos.core.users.Role; +import org.yacos.core.users.User; @Entity @@ -44,40 +47,37 @@ public class Conference implements Serializable{ /** * Roles of users for this conference */ - @OneToMany(targetEntity=Role.class,mappedBy="conference") + @OneToMany(targetEntity=Role.class,mappedBy="conference",cascade={CascadeType.ALL}) private List roles; -/* @OneToOne(targetEntity=User.class,optional=true) - @JoinColumn(name="chairman_id",nullable=true) + @OneToOne(targetEntity=User.class,optional=false) + @JoinColumn(name="chairman_id",nullable=false) private User chairman; -*/ + @OneToMany(targetEntity=Article.class,mappedBy="conference") private List
articles; @OneToMany(targetEntity=Criterion.class,mappedBy="conference",cascade=CascadeType.ALL) private List criterions; - /* /** * @return the chairman */ - /* @OneToOne(targetEntity=User.class,optional=true) @JoinColumn(name="chairman_id",nullable=true) public User getChairman() { return chairman; } -*/ + /** * @param chairman the chairman to set */ -/* @OneToOne(targetEntity=User.class,optional=true) @JoinColumn(name="chairman_id",nullable=true) public void setChairman(User chairman) { this.chairman = chairman; } -*/ + @Temporal(TemporalType.DATE) public Date getDateAbstract() { return dateAbstract; @@ -179,12 +179,12 @@ public class Conference implements Serializable{ /* * roles */ - @OneToMany(targetEntity=Role.class,mappedBy="conference") + @OneToMany(targetEntity=Role.class,mappedBy="conference",cascade={CascadeType.ALL}) public List getRoles() { return roles; } - @OneToMany(targetEntity=Role.class,mappedBy="conference") + @OneToMany(targetEntity=Role.class,mappedBy="conference",cascade={CascadeType.ALL}) public void setRoles(List roles) { this.roles = roles; } diff --git a/YACOSCore/ejbModule/org/yacos/core/conferences/ConferenceManagerBean.java b/YACOSCore/ejbModule/org/yacos/core/conferences/ConferenceManagerBean.java index 9daa907..bfb5748 100644 --- a/YACOSCore/ejbModule/org/yacos/core/conferences/ConferenceManagerBean.java +++ b/YACOSCore/ejbModule/org/yacos/core/conferences/ConferenceManagerBean.java @@ -3,14 +3,17 @@ package org.yacos.core.conferences; import java.util.ArrayList; import java.util.Date; 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.PersistenceContext; import javax.persistence.Query; - +import javax.transaction.UserTransaction; import org.yacos.core.evaluation.Criterion; import org.yacos.core.exceptions.ConferenceDoesntExistException; +import org.yacos.core.exceptions.NoConferenceCreationTokenLeftException; import org.yacos.core.system.InvitationToken; import org.yacos.core.system.InvitationTokenPK; import org.yacos.core.users.Role; @@ -20,14 +23,42 @@ import org.yacos.core.users.Role.RoleType; @Stateless +@TransactionManagement(TransactionManagementType.BEAN) public class ConferenceManagerBean implements IConferenceManager { @PersistenceContext EntityManager em; + @Resource + UserTransaction ut; - public Conference addConference(String titre, String descirption, String infoComplementray, Date dataAbstract, Date dateArticle, Date dateEvaluation, Date dateStart, Date dateEnd) { - Conference conf = new Conference(titre, descirption, infoComplementray, dataAbstract, dateArticle, dateEvaluation, dateStart, dateEnd); - em.persist(conf); - em.flush(); + public Conference addConference( + String titre, + String chairmanLogin, + String description, + String complementaryInfo, + Date dataAbstract, + Date dateArticle, + Date dateEvaluation, + Date dateStart, + Date dateEnd) throws NoConferenceCreationTokenLeftException { + Conference conf = new Conference(titre, description, complementaryInfo, dataAbstract, dateArticle, dateEvaluation, dateStart, dateEnd); + if( ! canCreateConference(chairmanLogin)){ + throw new NoConferenceCreationTokenLeftException(); + } + try { + ut.begin(); + User chairman = em.find(User.class, chairmanLogin); + em.persist(conf); + conf.setChairman(chairman); + chairman.setConferenceCreationTokens(chairman.getConferenceCreationTokens()-1); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + + } return conf; } @@ -36,14 +67,40 @@ public class ConferenceManagerBean implements IConferenceManager { } public void remove(Integer conferenceId) { - Conference persistedConf = em.find(Conference.class, conferenceId); - em.remove(persistedConf); - em.flush(); + try { + ut.begin(); + Conference persistedConf = em.find(Conference.class, conferenceId); + em.remove(persistedConf); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + + } } public void update(Conference conf) { - em.merge(conf); - em.flush(); + try { + ut.begin(); + Conference persistedConf = em.find(Conference.class, conf.getId()); + persistedConf.setDateAbstract(conf.getDateAbstract()); + persistedConf.setDateArticle(conf.getDateArticle()); + persistedConf.setDateEnd(conf.getDateEnd()); + persistedConf.setDateEvaluation(conf.getDateEvaluation()); + persistedConf.setDateStart(conf.getDateStart()); + persistedConf.setOtherInformations(conf.getOtherInformations()); + persistedConf.setTitle(conf.getTitle()); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } @SuppressWarnings("unchecked") @@ -73,30 +130,80 @@ public class ConferenceManagerBean implements IConferenceManager { * */ public Role addRole(Role.RoleType roleType, String login, Integer confId) { - User user = em.find(User.class, login); - Conference conf = em.find(Conference.class, confId); - Role role = new Role(roleType, user, conf); - em.persist(role); - em.flush(); - return role; + try { + ut.begin(); + User user = em.find(User.class, login); + Conference conf = em.find(Conference.class, confId); + Role role = new Role(roleType, user, conf); + em.persist(role); + ut.commit(); + return role; + } catch (Exception e) { + try { + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + return null; } public void removeRole(Role role) { - em.remove(role); - em.flush(); + try { + ut.begin(); + RolePK rolePk = new RolePK( + role.getUser(), + role.getType(), + role.getConference()); + Role rolePersisted = em.find(Role.class, rolePk); + em.remove(rolePersisted); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } public void removePCMemberForConf(Integer confId) { - Conference conf = em.find(Conference.class, confId); - Query query = em.createQuery("delete from Role where conference=? and type=?"); - query.setParameter(1, conf); - query.setParameter(2, RoleType.PCMEMBER); - query.executeUpdate(); + try { + ut.begin(); + Conference conf = em.find(Conference.class, confId); + Query query = em.createQuery("delete from Role where conference=? and type=?"); + query.setParameter(1, conf); + query.setParameter(2, RoleType.PCMEMBER); + query.executeUpdate(); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } public void updateRole(Role role){ - em.merge(role); - em.flush(); + try { + ut.begin(); + RolePK rolePk = new RolePK( + role.getUser(), + role.getType(), + role.getConference()); + Role rolePersisted = em.find(Role.class, rolePk); + rolePersisted.setUser(role.getUser()); + rolePersisted.setType(role.getType()); + rolePersisted.setConference(role.getConference()); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } @SuppressWarnings("unchecked") @@ -108,8 +215,8 @@ public class ConferenceManagerBean implements IConferenceManager { @SuppressWarnings("unchecked") public List getRoles(User user) { - Query query = em.createQuery("from Role role where user = ?"); - query.setParameter(1, user); + Query query = em.createQuery("from Role role where user = ?"); + query.setParameter(1, user); return query.getResultList(); } @@ -117,9 +224,9 @@ public class ConferenceManagerBean implements IConferenceManager { public List getRoles(String userLogin, Integer confId) { User user = em.find(User.class, userLogin); Conference conf = em.find(Conference.class, confId); - Query query = em.createQuery("from Role role where conference = ? and user = ?"); - query.setParameter(1, conf); - query.setParameter(2, user); + Query query = em.createQuery("from Role role where conference = ? and user = ?"); + query.setParameter(1, conf); + query.setParameter(2, user); return query.getResultList(); } @@ -148,20 +255,40 @@ public class ConferenceManagerBean implements IConferenceManager { InvitationToken newToken = em.find(InvitationToken.class, tokenPK); if(newToken == null){ - newToken = new InvitationToken(); - newToken.setEmail(email); - newToken.setRole(role); - newToken.setConference(conf); - - em.persist(newToken); + try { + ut.begin(); + newToken = new InvitationToken(); + newToken.setEmail(email); + newToken.setRole(role); + newToken.setConference(conf); + + em.persist(newToken); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } return newToken; } public void removeInvitationToken(InvitationToken token) { - token = em.find(InvitationToken.class, token.getId()); - em.remove(token); + try { + ut.begin(); + token = em.find(InvitationToken.class, token.getId()); + em.remove(token); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } public InvitationToken getInvitationToken(InvitationTokenPK tokenId) { @@ -178,37 +305,135 @@ public class ConferenceManagerBean implements IConferenceManager { public void addCriterionToConference(Integer conferenceId, String name, Integer minRating, Integer maxRating) { - Conference conf = getConference(conferenceId); - Criterion criterion = new Criterion(name,minRating,maxRating,conf); - em.persist(criterion); + try { + ut.begin(); + Conference conf = em.find(Conference.class, conferenceId); + Criterion criterion = new Criterion(name,minRating,maxRating,conf); + em.persist(criterion); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } public void removeCriterionToConference(Integer conferenceId) { - Conference conf = em.find(Conference.class, conferenceId); - Query query = em.createQuery("delete from Criterion where conference=?"); - query.setParameter(1, conf); - query.executeUpdate(); + try { + ut.begin(); + Conference conf = em.find(Conference.class, conferenceId); + Query query = em.createQuery("delete from Criterion where conference=?"); + query.setParameter(1, conf); + query.executeUpdate(); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } public void removeOneCriterionToConference(Criterion criterion) { - em.remove(criterion); - em.flush(); + try { + ut.begin(); + em.remove(criterion); + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } public void addPCMemberToConference(Integer conferenceId, String userLogin) { - Conference conf = getConference(conferenceId); - User member = em.find(User.class, userLogin); - - // First checks if the role already exists, if not create it - RolePK memberRolePK = new RolePK(member,RoleType.PCMEMBER,conf); - if(em.find(Role.class, memberRolePK)==null){ - Role memberRole = new Role(); - memberRole.setType(RoleType.PCMEMBER); - memberRole.setUser(member); - memberRole.setConference(conf); - em.persist(memberRole); + try { + ut.begin(); + Conference conf = em.find(Conference.class,conferenceId); + User member = em.find(User.class, userLogin); + + // First checks if the role already exists, if not create it + RolePK memberRolePK = new RolePK(member,RoleType.PCMEMBER,conf); + if(em.find(Role.class, memberRolePK)==null){ + Role memberRole = new Role(); + memberRole.setType(RoleType.PCMEMBER); + memberRole.setUser(member); + memberRole.setConference(conf); + em.persist(memberRole); + } + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } } } + + public void addConferenceCreationToken(String userLogin) { + try { + ut.begin(); + User user = em.find(User.class,userLogin); + if(user != null){ + user.setConferenceCreationTokens( + user.getConferenceCreationTokens()+1); + } + ut.commit(); + } catch (Exception e) { + try { + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + } + + public boolean canCreateConference(String userLogin) { + return conferenceCreationTokens(userLogin)>0; + } + + public Integer conferenceCreationTokens(String userLogin) { + User user = em.find(User.class,userLogin); + if(user == null){ + return 0; + } + return user.getConferenceCreationTokens(); + } + + public void useConferenceCreationToken(String userLogin) throws NoConferenceCreationTokenLeftException { + try { + ut.begin(); + User user = em.find(User.class,userLogin); + if(user != null){ + Integer tokensLeft = user.getConferenceCreationTokens(); + if(tokensLeft>0){ + user.setConferenceCreationTokens(tokensLeft-1); + } else { + throw new NoConferenceCreationTokenLeftException(); + } + } + ut.commit(); + } catch (NoConferenceCreationTokenLeftException e) { + try { + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + throw e; + } catch (Exception e) { + try { + ut.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + } } diff --git a/YACOSCore/ejbModule/org/yacos/core/conferences/IConferenceManager.java b/YACOSCore/ejbModule/org/yacos/core/conferences/IConferenceManager.java index 22a76dc..70344e9 100644 --- a/YACOSCore/ejbModule/org/yacos/core/conferences/IConferenceManager.java +++ b/YACOSCore/ejbModule/org/yacos/core/conferences/IConferenceManager.java @@ -7,6 +7,7 @@ import javax.ejb.Remote; import org.yacos.core.evaluation.Criterion; import org.yacos.core.exceptions.ConferenceDoesntExistException; +import org.yacos.core.exceptions.NoConferenceCreationTokenLeftException; import org.yacos.core.system.InvitationToken; import org.yacos.core.system.InvitationTokenPK; import org.yacos.core.users.Role; @@ -17,7 +18,16 @@ import org.yacos.core.users.Role.RoleType; public interface IConferenceManager { // CRUD methods - public Conference addConference(String titre, String descirption, String infoComplementray, Date dataAbstract, Date dateArticle, Date dateEvaluation, Date dateStart, Date dateEnd); + public Conference addConference( + String titre, + String chairmanLogin, + String description, + String complementaryInfo, + Date dataAbstract, + Date dateArticle, + Date dateEvaluation, + Date dateStart, + Date dateEnd) throws NoConferenceCreationTokenLeftException; public Conference getConference(Integer id); public void addCriterionToConference(Integer conferenceId,String name,Integer minRating, Integer maxRating); public void removeCriterionToConference(Integer conferenceId); @@ -52,4 +62,26 @@ public interface IConferenceManager { public List getInvitationTokensForConference(Integer conferenceId); public InvitationToken addInvitationToken(String email, RoleType role, Integer conferenceId) throws ConferenceDoesntExistException; public void removeInvitationToken(InvitationToken tokenId); + + // Conference creation tokens handling methods + /** + * @return True if the given user has a conference creation token left, false otherwise + */ + public boolean canCreateConference(String userLogin); + /** + * Use (remove) a conference creation token for the given user + * @param userLogin The user from which to remove a token + */ + public void useConferenceCreationToken(String userLogin) throws NoConferenceCreationTokenLeftException; + /** + * Gets the number of conference creation token left for a given user + * @param userLogin The user + * @return The number of token the user has left + */ + public Integer conferenceCreationTokens(String userLogin); + /** + * Adds a conference creation token to the given user + * @param userLogin The user to which we grant the token + */ + public void addConferenceCreationToken(String userLogin); } diff --git a/YACOSCore/ejbModule/org/yacos/core/users/IUserManager.java b/YACOSCore/ejbModule/org/yacos/core/users/IUserManager.java index cbfbdbf..154aa15 100644 --- a/YACOSCore/ejbModule/org/yacos/core/users/IUserManager.java +++ b/YACOSCore/ejbModule/org/yacos/core/users/IUserManager.java @@ -3,6 +3,8 @@ package org.yacos.core.users; import java.util.List; import javax.ejb.Remote; + +import org.yacos.core.exceptions.NoConferenceCreationTokenLeftException; import org.yacos.core.exceptions.PKAlreadyUsedException; import org.yacos.core.exceptions.UserEMailAlreadyExistsException; import org.yacos.core.system.InvitationToken; diff --git a/YACOSCore/ejbModule/org/yacos/core/users/User.java b/YACOSCore/ejbModule/org/yacos/core/users/User.java index b293ac7..f83cf83 100644 --- a/YACOSCore/ejbModule/org/yacos/core/users/User.java +++ b/YACOSCore/ejbModule/org/yacos/core/users/User.java @@ -79,6 +79,12 @@ public class User implements Serializable{ @OneToMany(cascade=CascadeType.ALL, targetEntity=Role.class,mappedBy="user") private List roles; + /** + * How many conference can this user create ? + */ + @Column(nullable=false) + private Integer conferenceCreationTokens; + /*@OneToMany(cascade=CascadeType.ALL, targetEntity=Delegation.class, mappedBy="user") private List delegation; */ @@ -91,10 +97,12 @@ public class User implements Serializable{ this.lastName = lastName; this.organization = organization; this.email = email; + this.conferenceCreationTokens = 0; } public User() { this.roles = new ArrayList(); + this.conferenceCreationTokens = 0; } @Id @@ -234,6 +242,23 @@ public class User implements Serializable{ this.specialities = specialities; } + /** + * How many conferences can this user create ? + * @return The number of conferences this user can create + */ + @Column(nullable=false) + public Integer getConferenceCreationTokens() { + return conferenceCreationTokens; + } + + /** + * Sets the number of conferences this user can create + * @param conferenceCreationTokens The number of conferences this user can create + */ + @Column(nullable=false) + public void setConferenceCreationTokens(Integer conferenceCreationTokens) { + this.conferenceCreationTokens = conferenceCreationTokens; + } /* @OneToMany(cascade=CascadeType.ALL, targetEntity=Delegation.class, mappedBy="user") public List getDelegation() { diff --git a/YACOSCore/ejbModule/org/yacos/core/users/UserManagerBean.java b/YACOSCore/ejbModule/org/yacos/core/users/UserManagerBean.java index fd9c096..79e38c2 100644 --- a/YACOSCore/ejbModule/org/yacos/core/users/UserManagerBean.java +++ b/YACOSCore/ejbModule/org/yacos/core/users/UserManagerBean.java @@ -5,7 +5,6 @@ package org.yacos.core.users; import java.util.List; - import javax.annotation.Resource; import javax.ejb.Stateless; import javax.ejb.TransactionManagement; @@ -34,13 +33,13 @@ public class UserManagerBean implements IUserManager{ EntityManager em; @Resource private UserTransaction ut; - + @SuppressWarnings("unchecked") public List getUsers(){ Query query = em.createQuery("from User"); return query.getResultList(); } - + /** * Adds a user into the system * throw PKAlreadyUsedException if login exist in the DB @@ -48,25 +47,18 @@ public class UserManagerBean implements IUserManager{ */ public User addUser(String login, String password, String firstName, String lastName, String organization, String email) - throws PKAlreadyUsedException,UserEMailAlreadyExistsException{ - + throws PKAlreadyUsedException,UserEMailAlreadyExistsException{ + if (!this.exists(login)){ if(this.getByEmail(email) != null){ throw new UserEMailAlreadyExistsException(email); } + User user = null; try{ - ut.begin(); - User user = new User(login, password, firstName, lastName, organization, email); - em.persist(user); - ut.commit(); - - // Existing InvitationToken handling - List tokens = getInvitationTokensForEmail(user.getEmail()); - for(InvitationToken token : tokens){ - useInvitationTokenOnUser(login, token.getId()); - } - - return user; + ut.begin(); + user = new User(login, password, firstName, lastName, organization, email); + em.persist(user); + ut.commit(); } catch (Exception e) { try { ut.rollback(); @@ -75,12 +67,19 @@ public class UserManagerBean implements IUserManager{ e1.printStackTrace(); } } - + + // Existing InvitationToken handling + List tokens = getInvitationTokensForEmail(email); + for(InvitationToken token : tokens){ + useInvitationTokenOnUser(login, token.getId()); + } + + return user; + } else{ throw new PKAlreadyUsedException(); } - return null; } - + /** * Removes a user and his article from the system * @param user @@ -88,19 +87,19 @@ public class UserManagerBean implements IUserManager{ @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(); + 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(); @@ -114,7 +113,7 @@ public class UserManagerBean implements IUserManager{ public User getUser(String login) { return em.find(User.class, login); } - + public User getByEmail(String email){ try { Query query = em.createQuery("from User where email=?"); @@ -124,7 +123,7 @@ public class UserManagerBean implements IUserManager{ return null; } } - + public void UpdateUser(User user){ try { ut.begin(); @@ -134,6 +133,7 @@ public class UserManagerBean implements IUserManager{ updatedUser.setLastName(user.getLastName()); updatedUser.setOrganization(user.getOrganization()); updatedUser.setPassword(user.getPassword()); + updatedUser.setConferenceCreationTokens(user.getConferenceCreationTokens()); ut.commit(); } catch (Exception e) { try { @@ -144,11 +144,11 @@ 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 = ?"); @@ -165,7 +165,7 @@ public class UserManagerBean implements IUserManager{ query.setParameter(2, conference); return query.getResultList(); } - + @SuppressWarnings("unchecked") public List getPCMemberForArticle(Integer articleId){ Query query = em.createQuery("select a.pcMembers from Article a where a.id=?"); @@ -182,19 +182,19 @@ public class UserManagerBean implements IUserManager{ query.setParameter(2, pcMember); 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){ try{ ut.begin(); @@ -230,7 +230,7 @@ public class UserManagerBean implements IUserManager{ } } } - + public void addSpecialityToUser(int specialityId,String login){ try { ut.begin(); @@ -265,14 +265,14 @@ public class UserManagerBean implements IUserManager{ } } } - + @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 specialityExists(Speciality spe){ List list = this.getSpecialities(); for (Speciality spe2 : list) { @@ -282,12 +282,12 @@ public class UserManagerBean implements IUserManager{ } return false; } - + /* * * methodes de Roles */ - + public List getRoles() { // TODO Auto-generated method stub return null; @@ -297,15 +297,15 @@ public class UserManagerBean implements IUserManager{ 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 { @@ -334,7 +334,7 @@ public class UserManagerBean implements IUserManager{ } } } - + @SuppressWarnings("unchecked") public List getInvitationTokensForEmail(String email) { Query query = em.createQuery("from InvitationToken where email=?"); @@ -344,12 +344,16 @@ public class UserManagerBean implements IUserManager{ public void useInvitationTokenOnUser(String userLogin, InvitationTokenPK tokenId) { - InvitationToken token = em.find(InvitationToken.class,tokenId); - addRoleForConference(userLogin, token.getRole(), token.getConference().getId()); - + User user = getUserByEmail(tokenId.email); + if(user==null){ + return; + } try { ut.begin(); + InvitationToken token = em.find(InvitationToken.class,tokenId); + Role role = new Role(token.getRole(),user,token.getConference()); em.remove(token); + em.persist(role); ut.commit(); } catch (Exception e) { try { @@ -379,6 +383,7 @@ public class UserManagerBean implements IUserManager{ } public User getUserByEmail(String email) { + email = email.toLowerCase(); Query query = em.createQuery("from User where email=?"); query.setParameter(1, email); try{ @@ -388,6 +393,4 @@ public class UserManagerBean implements IUserManager{ return null; } } - - }