(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("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{
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
|
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);
|
em.persist(conf);
|
||||||
em.flush();
|
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) {
|
||||||
|
try {
|
||||||
|
ut.begin();
|
||||||
Conference persistedConf = em.find(Conference.class, conferenceId);
|
Conference persistedConf = em.find(Conference.class, conferenceId);
|
||||||
em.remove(persistedConf);
|
em.remove(persistedConf);
|
||||||
em.flush();
|
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) {
|
||||||
|
try {
|
||||||
|
ut.begin();
|
||||||
User user = em.find(User.class, login);
|
User user = em.find(User.class, login);
|
||||||
Conference conf = em.find(Conference.class, confId);
|
Conference conf = em.find(Conference.class, confId);
|
||||||
Role role = new Role(roleType, user, conf);
|
Role role = new Role(roleType, user, conf);
|
||||||
em.persist(role);
|
em.persist(role);
|
||||||
em.flush();
|
ut.commit();
|
||||||
return role;
|
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) {
|
||||||
|
try {
|
||||||
|
ut.begin();
|
||||||
Conference conf = em.find(Conference.class, confId);
|
Conference conf = em.find(Conference.class, confId);
|
||||||
Query query = em.createQuery("delete from Role where conference=? and type=?");
|
Query query = em.createQuery("delete from Role where conference=? and type=?");
|
||||||
query.setParameter(1, conf);
|
query.setParameter(1, conf);
|
||||||
query.setParameter(2, RoleType.PCMEMBER);
|
query.setParameter(2, RoleType.PCMEMBER);
|
||||||
query.executeUpdate();
|
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")
|
||||||
@@ -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){
|
||||||
|
try {
|
||||||
|
ut.begin();
|
||||||
newToken = new InvitationToken();
|
newToken = new InvitationToken();
|
||||||
newToken.setEmail(email);
|
newToken.setEmail(email);
|
||||||
newToken.setRole(role);
|
newToken.setRole(role);
|
||||||
newToken.setConference(conf);
|
newToken.setConference(conf);
|
||||||
|
|
||||||
em.persist(newToken);
|
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) {
|
||||||
|
try {
|
||||||
|
ut.begin();
|
||||||
token = em.find(InvitationToken.class, token.getId());
|
token = em.find(InvitationToken.class, token.getId());
|
||||||
em.remove(token);
|
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,26 +305,57 @@ 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 {
|
||||||
|
ut.begin();
|
||||||
|
Conference conf = em.find(Conference.class, conferenceId);
|
||||||
Criterion criterion = new Criterion(name,minRating,maxRating,conf);
|
Criterion criterion = new Criterion(name,minRating,maxRating,conf);
|
||||||
em.persist(criterion);
|
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) {
|
||||||
|
try {
|
||||||
|
ut.begin();
|
||||||
Conference conf = em.find(Conference.class, conferenceId);
|
Conference conf = em.find(Conference.class, conferenceId);
|
||||||
Query query = em.createQuery("delete from Criterion where conference=?");
|
Query query = em.createQuery("delete from Criterion where conference=?");
|
||||||
query.setParameter(1, conf);
|
query.setParameter(1, conf);
|
||||||
query.executeUpdate();
|
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) {
|
||||||
|
try {
|
||||||
|
ut.begin();
|
||||||
em.remove(criterion);
|
em.remove(criterion);
|
||||||
em.flush();
|
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 {
|
||||||
|
ut.begin();
|
||||||
|
Conference conf = em.find(Conference.class,conferenceId);
|
||||||
User member = em.find(User.class, userLogin);
|
User member = em.find(User.class, userLogin);
|
||||||
|
|
||||||
// First checks if the role already exists, if not create it
|
// First checks if the role already exists, if not create it
|
||||||
@@ -209,6 +367,73 @@ public class ConferenceManagerBean implements IConferenceManager {
|
|||||||
memberRole.setConference(conf);
|
memberRole.setConference(conf);
|
||||||
em.persist(memberRole);
|
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.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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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;
|
||||||
@@ -54,19 +53,12 @@ public class UserManagerBean implements IUserManager{
|
|||||||
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();
|
||||||
@@ -76,9 +68,16 @@ public class UserManagerBean implements IUserManager{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -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 {
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user