(Core)
Ajout des transactions dans ConferenceManagerBean Ajout des conferenceCreationToken Corrections diverses
This commit is contained in:
@@ -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{
|
||||
|
||||
@@ -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<Role> 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<Article> articles;
|
||||
|
||||
@OneToMany(targetEntity=Criterion.class,mappedBy="conference",cascade=CascadeType.ALL)
|
||||
private List<Criterion> 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<Role> getRoles() {
|
||||
return roles;
|
||||
}
|
||||
|
||||
@OneToMany(targetEntity=Role.class,mappedBy="conference")
|
||||
@OneToMany(targetEntity=Role.class,mappedBy="conference",cascade={CascadeType.ALL})
|
||||
public void setRoles(List<Role> roles) {
|
||||
this.roles = roles;
|
||||
}
|
||||
|
||||
@@ -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<Role> 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<Role> 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<InvitationToken> 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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -79,6 +79,12 @@ public class User implements Serializable{
|
||||
@OneToMany(cascade=CascadeType.ALL, targetEntity=Role.class,mappedBy="user")
|
||||
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")
|
||||
private List<Delegation> 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<Role>();
|
||||
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<Delegation> getDelegation() {
|
||||
|
||||
@@ -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<User> 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<InvitationToken> 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<InvitationToken> 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<Article> 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<Article> 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<User> 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<User> 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<Speciality> 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<Speciality> 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<Speciality> list = this.getSpecialities();
|
||||
for (Speciality spe2 : list) {
|
||||
@@ -282,12 +282,12 @@ public class UserManagerBean implements IUserManager{
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* methodes de Roles
|
||||
*/
|
||||
|
||||
|
||||
public List<Role> 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<InvitationToken> 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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user