Ajout des transactions dans ConferenceManagerBean
Ajout des conferenceCreationToken
Corrections diverses
This commit is contained in:
2008-02-15 10:08:51 +00:00
parent 46f144e03e
commit 21ee0e7096
7 changed files with 415 additions and 128 deletions

View File

@@ -229,8 +229,8 @@ public class ArticleManagerBean implements IArticleManager, Serializable {
.setParameter("article", article) .setParameter("article", article)
.setParameter("referee", referee) .setParameter("referee", referee)
.setParameter("pcMember", PCMember); .setParameter("pcMember", PCMember);
@SuppressWarnings("unused")
int affectedRows = query.executeUpdate(); int affectedRows = query.executeUpdate();
System.out.println("Affected Rows :"+affectedRows);
ut.commit(); ut.commit();
} catch (Exception e) { } catch (Exception e) {
try{ try{

View File

@@ -10,13 +10,16 @@ import javax.persistence.Entity;
import javax.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType; import javax.persistence.GenerationType;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany; import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Temporal; import javax.persistence.Temporal;
import javax.persistence.TemporalType; import javax.persistence.TemporalType;
import org.yacos.core.article.Article; import org.yacos.core.article.Article;
import org.yacos.core.evaluation.Criterion; import org.yacos.core.evaluation.Criterion;
import org.yacos.core.users.Role; import org.yacos.core.users.Role;
import org.yacos.core.users.User;
@Entity @Entity
@@ -44,40 +47,37 @@ public class Conference implements Serializable{
/** /**
* Roles of users for this conference * Roles of users for this conference
*/ */
@OneToMany(targetEntity=Role.class,mappedBy="conference") @OneToMany(targetEntity=Role.class,mappedBy="conference",cascade={CascadeType.ALL})
private List<Role> roles; private List<Role> roles;
/* @OneToOne(targetEntity=User.class,optional=true) @OneToOne(targetEntity=User.class,optional=false)
@JoinColumn(name="chairman_id",nullable=true) @JoinColumn(name="chairman_id",nullable=false)
private User chairman; private User chairman;
*/
@OneToMany(targetEntity=Article.class,mappedBy="conference") @OneToMany(targetEntity=Article.class,mappedBy="conference")
private List<Article> articles; private List<Article> articles;
@OneToMany(targetEntity=Criterion.class,mappedBy="conference",cascade=CascadeType.ALL) @OneToMany(targetEntity=Criterion.class,mappedBy="conference",cascade=CascadeType.ALL)
private List<Criterion> criterions; private List<Criterion> criterions;
/*
/** /**
* @return the chairman * @return the chairman
*/ */
/*
@OneToOne(targetEntity=User.class,optional=true) @OneToOne(targetEntity=User.class,optional=true)
@JoinColumn(name="chairman_id",nullable=true) @JoinColumn(name="chairman_id",nullable=true)
public User getChairman() { public User getChairman() {
return chairman; return chairman;
} }
*/
/** /**
* @param chairman the chairman to set * @param chairman the chairman to set
*/ */
/*
@OneToOne(targetEntity=User.class,optional=true) @OneToOne(targetEntity=User.class,optional=true)
@JoinColumn(name="chairman_id",nullable=true) @JoinColumn(name="chairman_id",nullable=true)
public void setChairman(User chairman) { public void setChairman(User chairman) {
this.chairman = chairman; this.chairman = chairman;
} }
*/
@Temporal(TemporalType.DATE) @Temporal(TemporalType.DATE)
public Date getDateAbstract() { public Date getDateAbstract() {
return dateAbstract; return dateAbstract;
@@ -179,12 +179,12 @@ public class Conference implements Serializable{
/* /*
* roles * roles
*/ */
@OneToMany(targetEntity=Role.class,mappedBy="conference") @OneToMany(targetEntity=Role.class,mappedBy="conference",cascade={CascadeType.ALL})
public List<Role> getRoles() { public List<Role> getRoles() {
return roles; return roles;
} }
@OneToMany(targetEntity=Role.class,mappedBy="conference") @OneToMany(targetEntity=Role.class,mappedBy="conference",cascade={CascadeType.ALL})
public void setRoles(List<Role> roles) { public void setRoles(List<Role> roles) {
this.roles = roles; this.roles = roles;
} }

View File

@@ -3,14 +3,17 @@ package org.yacos.core.conferences;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import javax.annotation.Resource;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.Query; import javax.persistence.Query;
import javax.transaction.UserTransaction;
import org.yacos.core.evaluation.Criterion; import org.yacos.core.evaluation.Criterion;
import org.yacos.core.exceptions.ConferenceDoesntExistException; import org.yacos.core.exceptions.ConferenceDoesntExistException;
import org.yacos.core.exceptions.NoConferenceCreationTokenLeftException;
import org.yacos.core.system.InvitationToken; import org.yacos.core.system.InvitationToken;
import org.yacos.core.system.InvitationTokenPK; import org.yacos.core.system.InvitationTokenPK;
import org.yacos.core.users.Role; import org.yacos.core.users.Role;
@@ -20,14 +23,42 @@ import org.yacos.core.users.Role.RoleType;
@Stateless @Stateless
@TransactionManagement(TransactionManagementType.BEAN)
public class ConferenceManagerBean implements IConferenceManager { public class ConferenceManagerBean implements IConferenceManager {
@PersistenceContext @PersistenceContext
EntityManager em; EntityManager em;
@Resource
UserTransaction ut;
public Conference addConference(String titre, String descirption, String infoComplementray, Date dataAbstract, Date dateArticle, Date dateEvaluation, Date dateStart, Date dateEnd) { public Conference addConference(
Conference conf = new Conference(titre, descirption, infoComplementray, dataAbstract, dateArticle, dateEvaluation, dateStart, dateEnd); String titre,
em.persist(conf); String chairmanLogin,
em.flush(); 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; return conf;
} }
@@ -36,14 +67,40 @@ public class ConferenceManagerBean implements IConferenceManager {
} }
public void remove(Integer conferenceId) { public void remove(Integer conferenceId) {
Conference persistedConf = em.find(Conference.class, conferenceId); try {
em.remove(persistedConf); ut.begin();
em.flush(); 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) { public void update(Conference conf) {
em.merge(conf); try {
em.flush(); 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") @SuppressWarnings("unchecked")
@@ -73,30 +130,80 @@ public class ConferenceManagerBean implements IConferenceManager {
* */ * */
public Role addRole(Role.RoleType roleType, String login, Integer confId) { public Role addRole(Role.RoleType roleType, String login, Integer confId) {
User user = em.find(User.class, login); try {
Conference conf = em.find(Conference.class, confId); ut.begin();
Role role = new Role(roleType, user, conf); User user = em.find(User.class, login);
em.persist(role); Conference conf = em.find(Conference.class, confId);
em.flush(); Role role = new Role(roleType, user, conf);
return role; 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) { public void removeRole(Role role) {
em.remove(role); try {
em.flush(); 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) { public void removePCMemberForConf(Integer confId) {
Conference conf = em.find(Conference.class, confId); try {
Query query = em.createQuery("delete from Role where conference=? and type=?"); ut.begin();
query.setParameter(1, conf); Conference conf = em.find(Conference.class, confId);
query.setParameter(2, RoleType.PCMEMBER); Query query = em.createQuery("delete from Role where conference=? and type=?");
query.executeUpdate(); 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){ public void updateRole(Role role){
em.merge(role); try {
em.flush(); 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") @SuppressWarnings("unchecked")
@@ -108,8 +215,8 @@ public class ConferenceManagerBean implements IConferenceManager {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public List<Role> getRoles(User user) { public List<Role> getRoles(User user) {
Query query = em.createQuery("from Role role where user = ?"); Query query = em.createQuery("from Role role where user = ?");
query.setParameter(1, user); query.setParameter(1, user);
return query.getResultList(); return query.getResultList();
} }
@@ -117,9 +224,9 @@ public class ConferenceManagerBean implements IConferenceManager {
public List<Role> getRoles(String userLogin, Integer confId) { public List<Role> getRoles(String userLogin, Integer confId) {
User user = em.find(User.class, userLogin); User user = em.find(User.class, userLogin);
Conference conf = em.find(Conference.class, confId); Conference conf = em.find(Conference.class, confId);
Query query = em.createQuery("from Role role where conference = ? and user = ?"); Query query = em.createQuery("from Role role where conference = ? and user = ?");
query.setParameter(1, conf); query.setParameter(1, conf);
query.setParameter(2, user); query.setParameter(2, user);
return query.getResultList(); return query.getResultList();
} }
@@ -148,20 +255,40 @@ public class ConferenceManagerBean implements IConferenceManager {
InvitationToken newToken = em.find(InvitationToken.class, tokenPK); InvitationToken newToken = em.find(InvitationToken.class, tokenPK);
if(newToken == null){ if(newToken == null){
newToken = new InvitationToken(); try {
newToken.setEmail(email); ut.begin();
newToken.setRole(role); newToken = new InvitationToken();
newToken.setConference(conf); newToken.setEmail(email);
newToken.setRole(role);
em.persist(newToken); newToken.setConference(conf);
em.persist(newToken);
ut.commit();
} catch (Exception e) {
try {
ut.rollback();
} catch (Exception e1) {
e1.printStackTrace();
}
}
} }
return newToken; return newToken;
} }
public void removeInvitationToken(InvitationToken token) { public void removeInvitationToken(InvitationToken token) {
token = em.find(InvitationToken.class, token.getId()); try {
em.remove(token); 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) { public InvitationToken getInvitationToken(InvitationTokenPK tokenId) {
@@ -178,37 +305,135 @@ public class ConferenceManagerBean implements IConferenceManager {
public void addCriterionToConference(Integer conferenceId, String name, public void addCriterionToConference(Integer conferenceId, String name,
Integer minRating, Integer maxRating) { Integer minRating, Integer maxRating) {
Conference conf = getConference(conferenceId); try {
Criterion criterion = new Criterion(name,minRating,maxRating,conf); ut.begin();
em.persist(criterion); 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) { public void removeCriterionToConference(Integer conferenceId) {
Conference conf = em.find(Conference.class, conferenceId); try {
Query query = em.createQuery("delete from Criterion where conference=?"); ut.begin();
query.setParameter(1, conf); Conference conf = em.find(Conference.class, conferenceId);
query.executeUpdate(); 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) { public void removeOneCriterionToConference(Criterion criterion) {
em.remove(criterion); try {
em.flush(); 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) { public void addPCMemberToConference(Integer conferenceId, String userLogin) {
Conference conf = getConference(conferenceId); try {
User member = em.find(User.class, userLogin); ut.begin();
Conference conf = em.find(Conference.class,conferenceId);
// First checks if the role already exists, if not create it User member = em.find(User.class, userLogin);
RolePK memberRolePK = new RolePK(member,RoleType.PCMEMBER,conf);
if(em.find(Role.class, memberRolePK)==null){ // First checks if the role already exists, if not create it
Role memberRole = new Role(); RolePK memberRolePK = new RolePK(member,RoleType.PCMEMBER,conf);
memberRole.setType(RoleType.PCMEMBER); if(em.find(Role.class, memberRolePK)==null){
memberRole.setUser(member); Role memberRole = new Role();
memberRole.setConference(conf); memberRole.setType(RoleType.PCMEMBER);
em.persist(memberRole); 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();
}
}
}
} }

View File

@@ -7,6 +7,7 @@ import javax.ejb.Remote;
import org.yacos.core.evaluation.Criterion; import org.yacos.core.evaluation.Criterion;
import org.yacos.core.exceptions.ConferenceDoesntExistException; import org.yacos.core.exceptions.ConferenceDoesntExistException;
import org.yacos.core.exceptions.NoConferenceCreationTokenLeftException;
import org.yacos.core.system.InvitationToken; import org.yacos.core.system.InvitationToken;
import org.yacos.core.system.InvitationTokenPK; import org.yacos.core.system.InvitationTokenPK;
import org.yacos.core.users.Role; import org.yacos.core.users.Role;
@@ -17,7 +18,16 @@ import org.yacos.core.users.Role.RoleType;
public interface IConferenceManager { public interface IConferenceManager {
// CRUD methods // 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 Conference getConference(Integer id);
public void addCriterionToConference(Integer conferenceId,String name,Integer minRating, Integer maxRating); public void addCriterionToConference(Integer conferenceId,String name,Integer minRating, Integer maxRating);
public void removeCriterionToConference(Integer conferenceId); public void removeCriterionToConference(Integer conferenceId);
@@ -52,4 +62,26 @@ public interface IConferenceManager {
public List<InvitationToken> getInvitationTokensForConference(Integer conferenceId); public List<InvitationToken> getInvitationTokensForConference(Integer conferenceId);
public InvitationToken addInvitationToken(String email, RoleType role, Integer conferenceId) throws ConferenceDoesntExistException; public InvitationToken addInvitationToken(String email, RoleType role, Integer conferenceId) throws ConferenceDoesntExistException;
public void removeInvitationToken(InvitationToken tokenId); 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);
} }

View File

@@ -3,6 +3,8 @@ package org.yacos.core.users;
import java.util.List; import java.util.List;
import javax.ejb.Remote; import javax.ejb.Remote;
import org.yacos.core.exceptions.NoConferenceCreationTokenLeftException;
import org.yacos.core.exceptions.PKAlreadyUsedException; import org.yacos.core.exceptions.PKAlreadyUsedException;
import org.yacos.core.exceptions.UserEMailAlreadyExistsException; import org.yacos.core.exceptions.UserEMailAlreadyExistsException;
import org.yacos.core.system.InvitationToken; import org.yacos.core.system.InvitationToken;

View File

@@ -79,6 +79,12 @@ public class User implements Serializable{
@OneToMany(cascade=CascadeType.ALL, targetEntity=Role.class,mappedBy="user") @OneToMany(cascade=CascadeType.ALL, targetEntity=Role.class,mappedBy="user")
private List<Role> roles; private List<Role> roles;
/**
* How many conference can this user create ?
*/
@Column(nullable=false)
private Integer conferenceCreationTokens;
/*@OneToMany(cascade=CascadeType.ALL, targetEntity=Delegation.class, mappedBy="user") /*@OneToMany(cascade=CascadeType.ALL, targetEntity=Delegation.class, mappedBy="user")
private List<Delegation> delegation; private List<Delegation> delegation;
*/ */
@@ -91,10 +97,12 @@ public class User implements Serializable{
this.lastName = lastName; this.lastName = lastName;
this.organization = organization; this.organization = organization;
this.email = email; this.email = email;
this.conferenceCreationTokens = 0;
} }
public User() { public User() {
this.roles = new ArrayList<Role>(); this.roles = new ArrayList<Role>();
this.conferenceCreationTokens = 0;
} }
@Id @Id
@@ -234,6 +242,23 @@ public class User implements Serializable{
this.specialities = specialities; 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") @OneToMany(cascade=CascadeType.ALL, targetEntity=Delegation.class, mappedBy="user")
public List<Delegation> getDelegation() { public List<Delegation> getDelegation() {

View File

@@ -5,7 +5,6 @@ package org.yacos.core.users;
import java.util.List; import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.ejb.TransactionManagement; import javax.ejb.TransactionManagement;
@@ -34,13 +33,13 @@ public class UserManagerBean implements IUserManager{
EntityManager em; EntityManager em;
@Resource @Resource
private UserTransaction ut; private UserTransaction ut;
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public List<User> getUsers(){ public List<User> getUsers(){
Query query = em.createQuery("from User"); Query query = em.createQuery("from User");
return query.getResultList(); return query.getResultList();
} }
/** /**
* Adds a user into the system * Adds a user into the system
* throw PKAlreadyUsedException if login exist in the DB * 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, public User addUser(String login, String password, String firstName,
String lastName, String organization, String email) String lastName, String organization, String email)
throws PKAlreadyUsedException,UserEMailAlreadyExistsException{ throws PKAlreadyUsedException,UserEMailAlreadyExistsException{
if (!this.exists(login)){ if (!this.exists(login)){
if(this.getByEmail(email) != null){ if(this.getByEmail(email) != null){
throw new UserEMailAlreadyExistsException(email); throw new UserEMailAlreadyExistsException(email);
} }
User user = null;
try{ try{
ut.begin(); ut.begin();
User user = new User(login, password, firstName, lastName, organization, email); user = new User(login, password, firstName, lastName, organization, email);
em.persist(user); em.persist(user);
ut.commit(); ut.commit();
// Existing InvitationToken handling
List<InvitationToken> tokens = getInvitationTokensForEmail(user.getEmail());
for(InvitationToken token : tokens){
useInvitationTokenOnUser(login, token.getId());
}
return user;
} catch (Exception e) { } catch (Exception e) {
try { try {
ut.rollback(); ut.rollback();
@@ -75,12 +67,19 @@ public class UserManagerBean implements IUserManager{
e1.printStackTrace(); e1.printStackTrace();
} }
} }
// Existing InvitationToken handling
List<InvitationToken> tokens = getInvitationTokensForEmail(email);
for(InvitationToken token : tokens){
useInvitationTokenOnUser(login, token.getId());
}
return user;
} }
else{ throw new PKAlreadyUsedException(); } else{ throw new PKAlreadyUsedException(); }
return null;
} }
/** /**
* Removes a user and his article from the system * Removes a user and his article from the system
* @param user * @param user
@@ -88,19 +87,19 @@ public class UserManagerBean implements IUserManager{
@SuppressWarnings(value="unchecked") @SuppressWarnings(value="unchecked")
public void removeUser(String login){ public void removeUser(String login){
try { try {
ut.begin(); ut.begin();
User persistedUser = em.find(User.class, login); User persistedUser = em.find(User.class, login);
// Delete the articles for this user // Delete the articles for this user
Query articlesQuery = em.createQuery("from Article where mainauthor=?"); Query articlesQuery = em.createQuery("from Article where mainauthor=?");
articlesQuery.setParameter(1, persistedUser); articlesQuery.setParameter(1, persistedUser);
List<Article> articles = articlesQuery.getResultList(); List<Article> articles = articlesQuery.getResultList();
for(Article article : articles){ for(Article article : articles){
em.remove(article); em.remove(article);
} }
em.remove(persistedUser); em.remove(persistedUser);
ut.commit(); ut.commit();
} catch (Exception e) { } catch (Exception e) {
try { try {
ut.rollback(); ut.rollback();
@@ -114,7 +113,7 @@ public class UserManagerBean implements IUserManager{
public User getUser(String login) { public User getUser(String login) {
return em.find(User.class, login); return em.find(User.class, login);
} }
public User getByEmail(String email){ public User getByEmail(String email){
try { try {
Query query = em.createQuery("from User where email=?"); Query query = em.createQuery("from User where email=?");
@@ -124,7 +123,7 @@ public class UserManagerBean implements IUserManager{
return null; return null;
} }
} }
public void UpdateUser(User user){ public void UpdateUser(User user){
try { try {
ut.begin(); ut.begin();
@@ -134,6 +133,7 @@ public class UserManagerBean implements IUserManager{
updatedUser.setLastName(user.getLastName()); updatedUser.setLastName(user.getLastName());
updatedUser.setOrganization(user.getOrganization()); updatedUser.setOrganization(user.getOrganization());
updatedUser.setPassword(user.getPassword()); updatedUser.setPassword(user.getPassword());
updatedUser.setConferenceCreationTokens(user.getConferenceCreationTokens());
ut.commit(); ut.commit();
} catch (Exception e) { } catch (Exception e) {
try { try {
@@ -144,11 +144,11 @@ public class UserManagerBean implements IUserManager{
} }
} }
} }
public Boolean exists(String login){ public Boolean exists(String login){
return (this.getUser(login)!= null); return (this.getUser(login)!= null);
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public List<User> getUsers(int conf_id) { public List<User> getUsers(int conf_id) {
Query query = em.createQuery("select user from Role role where role.conference = ?"); 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); query.setParameter(2, conference);
return query.getResultList(); return query.getResultList();
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public List<User> getPCMemberForArticle(Integer articleId){ public List<User> getPCMemberForArticle(Integer articleId){
Query query = em.createQuery("select a.pcMembers from Article a where a.id=?"); 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); query.setParameter(2, pcMember);
return query.getResultList(); return query.getResultList();
} }
public Speciality getSpeciality(int SpecialityId){ public Speciality getSpeciality(int SpecialityId){
Speciality spe = em.find(Speciality.class, SpecialityId); Speciality spe = em.find(Speciality.class, SpecialityId);
return spe; return spe;
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public List<Speciality> getSpecialities(){ public List<Speciality> getSpecialities(){
Query query = em.createQuery("from Speciality"); Query query = em.createQuery("from Speciality");
return query.getResultList(); return query.getResultList();
} }
public void addSpeciality(String name){ public void addSpeciality(String name){
try{ try{
ut.begin(); ut.begin();
@@ -230,7 +230,7 @@ public class UserManagerBean implements IUserManager{
} }
} }
} }
public void addSpecialityToUser(int specialityId,String login){ public void addSpecialityToUser(int specialityId,String login){
try { try {
ut.begin(); ut.begin();
@@ -265,14 +265,14 @@ public class UserManagerBean implements IUserManager{
} }
} }
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public List<Speciality> getSpecialitiesFromUser(String login){ public List<Speciality> getSpecialitiesFromUser(String login){
Query query = em.createQuery("select user.specialities from User user WHERE user.login=?"); Query query = em.createQuery("select user.specialities from User user WHERE user.login=?");
query.setParameter(1, login); query.setParameter(1, login);
return query.getResultList(); return query.getResultList();
} }
public boolean specialityExists(Speciality spe){ public boolean specialityExists(Speciality spe){
List<Speciality> list = this.getSpecialities(); List<Speciality> list = this.getSpecialities();
for (Speciality spe2 : list) { for (Speciality spe2 : list) {
@@ -282,12 +282,12 @@ public class UserManagerBean implements IUserManager{
} }
return false; return false;
} }
/* /*
* *
* methodes de Roles * methodes de Roles
*/ */
public List<Role> getRoles() { public List<Role> getRoles() {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return null; return null;
@@ -297,15 +297,15 @@ public class UserManagerBean implements IUserManager{
try { try {
User user = em.find(User.class, login); User user = em.find(User.class, login);
Conference conference = em.find(Conference.class, conferenceId); Conference conference = em.find(Conference.class, conferenceId);
ut.begin(); ut.begin();
Role newRole = new Role(); Role newRole = new Role();
newRole.setUser(user); newRole.setUser(user);
newRole.setConference(conference); newRole.setConference(conference);
newRole.setType(role); newRole.setType(role);
em.persist(newRole); em.persist(newRole);
ut.commit(); ut.commit();
} catch (Exception e) { } catch (Exception e) {
try { try {
@@ -334,7 +334,7 @@ public class UserManagerBean implements IUserManager{
} }
} }
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public List<InvitationToken> getInvitationTokensForEmail(String email) { public List<InvitationToken> getInvitationTokensForEmail(String email) {
Query query = em.createQuery("from InvitationToken where email=?"); Query query = em.createQuery("from InvitationToken where email=?");
@@ -344,12 +344,16 @@ public class UserManagerBean implements IUserManager{
public void useInvitationTokenOnUser(String userLogin, public void useInvitationTokenOnUser(String userLogin,
InvitationTokenPK tokenId) { InvitationTokenPK tokenId) {
InvitationToken token = em.find(InvitationToken.class,tokenId); User user = getUserByEmail(tokenId.email);
addRoleForConference(userLogin, token.getRole(), token.getConference().getId()); if(user==null){
return;
}
try { try {
ut.begin(); ut.begin();
InvitationToken token = em.find(InvitationToken.class,tokenId);
Role role = new Role(token.getRole(),user,token.getConference());
em.remove(token); em.remove(token);
em.persist(role);
ut.commit(); ut.commit();
} catch (Exception e) { } catch (Exception e) {
try { try {
@@ -379,6 +383,7 @@ public class UserManagerBean implements IUserManager{
} }
public User getUserByEmail(String email) { public User getUserByEmail(String email) {
email = email.toLowerCase();
Query query = em.createQuery("from User where email=?"); Query query = em.createQuery("from User where email=?");
query.setParameter(1, email); query.setParameter(1, email);
try{ try{
@@ -388,6 +393,4 @@ public class UserManagerBean implements IUserManager{
return null; return null;
} }
} }
} }