Correction de updateArticle :

Passage de tout article en transactions
This commit is contained in:
2008-02-07 18:03:06 +00:00
parent 1740c0275b
commit 6b17649c08
2 changed files with 570 additions and 443 deletions

View File

@@ -1,256 +1,253 @@
package org.yacos.core.article; package org.yacos.core.article;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.CascadeType; import javax.persistence.Entity;
import javax.persistence.Entity; import javax.persistence.EnumType;
import javax.persistence.EnumType; import javax.persistence.Enumerated;
import javax.persistence.Enumerated; 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.JoinColumn; import javax.persistence.JoinTable;
import javax.persistence.JoinTable; import javax.persistence.ManyToMany;
import javax.persistence.ManyToMany; import javax.persistence.ManyToOne;
import javax.persistence.ManyToOne; import javax.persistence.OneToMany;
import javax.persistence.OneToMany; import org.yacos.core.conferences.Conference;
import org.yacos.core.evaluation.Report;
import org.yacos.core.conferences.Conference; import org.yacos.core.users.User;
import org.yacos.core.evaluation.Report;
import org.yacos.core.users.Role; @Entity
import org.yacos.core.users.User; public class Article implements Serializable {
@Entity /**
public class Article implements Serializable { *
*/
/** private static final long serialVersionUID = 1L;
*
*/ @Id
private static final long serialVersionUID = 1L; @GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@Id private String title;
@GeneratedValue(strategy=GenerationType.AUTO) private String topic;
private int id; private String URL_article;
private String title;
private String topic; @ManyToOne(targetEntity=Conference.class)
private String URL_article; @JoinColumn(name="mainAuthor",nullable=false)
private User mainAuthor;
@ManyToOne(targetEntity=Conference.class)
@JoinColumn(name="mainAuthor",nullable=false) private ArrayList<String> secondaryAuthors;
private User mainAuthor;
/**
private ArrayList<String> secondaryAuthors; * The conference this article has been submitted for
*/
/** @ManyToOne(targetEntity=Conference.class)
* The conference this article has been submitted for @JoinColumn(name="conference_id",nullable=false)
*/ private Conference conference;
@ManyToOne(targetEntity=Conference.class)
@JoinColumn(name="conference_id",nullable=false) @OneToMany(cascade=CascadeType.ALL, targetEntity=Delegation.class, mappedBy="article")
private Conference conference; private List<Delegation> delegation;
@OneToMany(cascade=CascadeType.ALL, targetEntity=Delegation.class, mappedBy="article") /**
private List<Delegation> delegation; * The PC Members responsible for this article evaluation
*/
/** @ManyToMany(targetEntity=User.class)
* The PC Members responsible for this article evaluation @JoinTable(
*/ name="articles_pcmembers_map",
@ManyToMany(targetEntity=User.class) joinColumns=@JoinColumn(name="user_id"),
@JoinTable( inverseJoinColumns=@JoinColumn(name="article_id")
name="articles_pcmembers_map", )
joinColumns=@JoinColumn(name="user_id"), private List<User> pcMembers;
inverseJoinColumns=@JoinColumn(name="article_id")
) @OneToMany(targetEntity=Preference.class,mappedBy="article", cascade=CascadeType.ALL)
private List<User> pcMembers; private List<Preference> preferences;
@OneToMany(targetEntity=Preference.class,mappedBy="article", cascade=CascadeType.ALL) @OneToMany(targetEntity=Report.class, mappedBy="article", cascade=CascadeType.ALL)
private List<Preference> preferences; private List<Report> report;
@OneToMany(targetEntity=Report.class, mappedBy="article", cascade=CascadeType.ALL)
private List<Report> report; public enum State {
SUMMARY, FINAL , REJECTED, ACCEPTED
};
public enum State { @Enumerated(EnumType.ORDINAL)
SUMMARY, FINAL , REJECTED, ACCEPTED private State state;
};
@Enumerated(EnumType.ORDINAL)
private State state;
public Article() {
secondaryAuthors = new ArrayList<String>();
}
public Article() {
secondaryAuthors = new ArrayList<String>(); public Article(String title, String topic,
} String url_article, User mainAuthor,
List<String> secondaryAuthor, State state, Conference conference) {
public Article(String title, String topic, //this.id = reference;
String url_article, User mainAuthor, this.title = title;
List<String> secondaryAuthor, State state, Conference conference) { this.topic = topic;
//this.id = reference; this.URL_article = url_article;
this.title = title; this.mainAuthor = mainAuthor;
this.topic = topic; if(secondaryAuthor != null){
this.URL_article = url_article; this.secondaryAuthors = new ArrayList<String>(secondaryAuthor);
this.mainAuthor = mainAuthor; } else {
if(secondaryAuthor != null){ this.secondaryAuthors = new ArrayList<String>();
this.secondaryAuthors = new ArrayList<String>(secondaryAuthor); }
} else { this.state = state;
this.secondaryAuthors = new ArrayList<String>(); pcMembers = new ArrayList<User>();
} this.conference = conference;
this.state = state; }
pcMembers = new ArrayList<User>();
this.conference = conference; @Id
} @GeneratedValue(strategy=GenerationType.AUTO)
public int getId() {
@Id return id;
@GeneratedValue(strategy=GenerationType.AUTO) }
public int getId() {
return id; public void setId(int id) {
} this.id = id;
}
public void setId(int id) {
this.id = id; public String getTitle() {
} return title;
}
public String getTitle() {
return title; public void setTitle(String title) {
} this.title = title;
}
public void setTitle(String title) {
this.title = title; public String getTopic() {
} return topic;
}
public String getTopic() {
return topic; public void setTopic(String topic) {
} this.topic = topic;
}
public void setTopic(String topic) {
this.topic = topic; public String getURL_article() {
} return URL_article;
}
public String getURL_article() {
return URL_article; public void setURL_article(String url_article) {
} URL_article = url_article;
}
public void setURL_article(String url_article) {
URL_article = url_article; @ManyToOne(targetEntity=User.class)
} @JoinColumn(name="mainAuthor",nullable=false)
public User getMainAuthor() {
@ManyToOne(targetEntity=User.class) return mainAuthor;
@JoinColumn(name="mainAuthor",nullable=false) }
public User getMainAuthor() {
return mainAuthor; @ManyToOne(targetEntity=User.class)
} @JoinColumn(name="mainAuthor",nullable=false)
public void setMainAuthor(User mainAuthor) {
@ManyToOne(targetEntity=User.class) this.mainAuthor = mainAuthor;
@JoinColumn(name="mainAuthor",nullable=false) }
public void setMainAuthor(User mainAuthor) {
this.mainAuthor = mainAuthor; public ArrayList<String> getSecondaryAuthors() {
} return secondaryAuthors;
}
public ArrayList<String> getSecondaryAuthors() {
return secondaryAuthors; public void setSecondaryAuthors(ArrayList<String> secondaryAuthors) {
} this.secondaryAuthors = new ArrayList<String>(secondaryAuthors);
}
public void setSecondaryAuthors(ArrayList<String> secondaryAuthors) {
this.secondaryAuthors = new ArrayList<String>(secondaryAuthors); @Enumerated(EnumType.ORDINAL)
} public State getState() {
return state;
@Enumerated(EnumType.ORDINAL) }
public State getState() {
return state; @Enumerated(EnumType.ORDINAL)
} public void setState(State state) {
this.state=state;
@Enumerated(EnumType.ORDINAL) }
public void setState(State state) {
this.state=state; @ManyToMany(targetEntity=User.class)
} @JoinTable(
name="articles_pcmembers_map",
@ManyToMany(targetEntity=User.class) joinColumns=@JoinColumn(name="user_id"),
@JoinTable( inverseJoinColumns=@JoinColumn(name="article_id")
name="articles_pcmembers_map", )
joinColumns=@JoinColumn(name="user_id"), public List<User> getPcMembers() {
inverseJoinColumns=@JoinColumn(name="article_id") return pcMembers;
) }
public List<User> getPcMembers() { @ManyToMany(targetEntity=User.class)
return pcMembers; @JoinTable(
} name="articles_pcmembers_map",
@ManyToMany(targetEntity=User.class) joinColumns=@JoinColumn(name="user_id"),
@JoinTable( inverseJoinColumns=@JoinColumn(name="article_id")
name="articles_pcmembers_map", )
joinColumns=@JoinColumn(name="user_id"), public void setPcMembers(List<User> pcMembers) {
inverseJoinColumns=@JoinColumn(name="article_id") this.pcMembers = pcMembers;
) }
public void setPcMembers(List<User> pcMembers) { // public void addPCMember(User pcMember){
this.pcMembers = pcMembers; // if(! pcMembers.contains(pcMember)){
} // pcMembers.add(pcMember);
public void addPCMember(User pcMember){ // }
if(! pcMembers.contains(pcMember)){ // }
pcMembers.add(pcMember); //
} // public void removePCMember(User pcMember){
} // if(pcMembers.contains(pcMember)){
// pcMembers.remove(pcMember);
public void removePCMember(User pcMember){ // }
if(pcMembers.contains(pcMember)){ // }
pcMembers.remove(pcMember);
} public void delegateTo(User referee, User pcMember) {
} /* if(pcMembers.contains(pcMember)){
if(! referees.contains(referee)){
public void delegateTo(User referee, User pcMember) { referees.add(referee);
/* if(pcMembers.contains(pcMember)){ }
if(! referees.contains(referee)){ }*/
referees.add(referee); }
} @ManyToOne(targetEntity=Conference.class)
}*/ @JoinColumn(name="conference_id",nullable=false)
} public Conference getConference(){
@ManyToOne(targetEntity=Conference.class) return conference;
@JoinColumn(name="conference_id",nullable=false) }
public Conference getConference(){ @ManyToOne(targetEntity=Conference.class)
return conference; @JoinColumn(name="conference_id",nullable=false)
} public void setConference(Conference conference){
@ManyToOne(targetEntity=Conference.class) this.conference = conference;
@JoinColumn(name="conference_id",nullable=false) }
public void setConference(Conference conference){
this.conference = conference; /**
} * @return the preferences
*/
/** @OneToMany(targetEntity=Preference.class,mappedBy="article", cascade=CascadeType.ALL)
* @return the preferences public List<Preference> getPreferences() {
*/ return preferences;
@OneToMany(targetEntity=Preference.class,mappedBy="article", cascade=CascadeType.ALL) }
public List<Preference> getPreferences() {
return preferences; /**
} * @param preferences the preferences to set
*/
/** @OneToMany(targetEntity=Preference.class,mappedBy="article", cascade=CascadeType.ALL)
* @param preferences the preferences to set public void setPreferences(List<Preference> preferences) {
*/ this.preferences = preferences;
@OneToMany(targetEntity=Preference.class,mappedBy="article", cascade=CascadeType.ALL) }
public void setPreferences(List<Preference> preferences) {
this.preferences = preferences; public boolean hasMember(){
} return false;
}
public boolean hasMember(){
return false; @OneToMany(targetEntity=Report.class, mappedBy="article", cascade=CascadeType.ALL)
} public List<Report> getReport() {
return report;
@OneToMany(targetEntity=Report.class, mappedBy="article", cascade=CascadeType.ALL) }
public List<Report> getReport() { @OneToMany(targetEntity=Report.class, mappedBy="article", cascade=CascadeType.ALL)
return report; public void setReport(List<Report> report) {
} this.report = report;
@OneToMany(targetEntity=Report.class, mappedBy="article", cascade=CascadeType.ALL) }
public void setReport(List<Report> report) {
this.report = report; @OneToMany(cascade=CascadeType.ALL, targetEntity=Delegation.class, mappedBy="article")
} public List<Delegation> getDelegation() {
return delegation;
@OneToMany(cascade=CascadeType.ALL, targetEntity=Delegation.class, mappedBy="article") }
public List<Delegation> getDelegation() {
return delegation; @OneToMany(cascade=CascadeType.ALL, targetEntity=Delegation.class, mappedBy="article")
} public void setDelegation(List<Delegation> delegation) {
this.delegation = delegation;
@OneToMany(cascade=CascadeType.ALL, targetEntity=Delegation.class, mappedBy="article") }
public void setDelegation(List<Delegation> delegation) {
this.delegation = delegation;
} }
}

View File

@@ -1,188 +1,318 @@
package org.yacos.core.article; package org.yacos.core.article;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.yacos.core.article.Article.State;
import org.yacos.core.article.Preference.PreferenceType;
import org.yacos.core.conferences.Conference;
import org.yacos.core.exceptions.ConferenceDoesntExistException;
import org.yacos.core.users.User;
@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
public class ArticleManagerBean implements IArticleManager, Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@PersistenceContext
private EntityManager em;
public ArticleManagerBean() {
}
public Article addArticle(String title, String topic,String url_article,
String mainAuthorLogin, ArrayList<String> secondaryAuthors, State state,Integer conferenceId) {
Article a = new Article();
a.setTitle(title);
a.setTopic(topic);
a.setURL_article(url_article);
User mainAuthor = em.find(User.class,mainAuthorLogin);
a.setMainAuthor(mainAuthor);
a.setSecondaryAuthors(secondaryAuthors);
a.setState(state);
Conference conference = em.find(Conference.class, conferenceId);
a.setConference(conference);
em.persist(a);
return a;
}
public void updateArticle(Article article) { import java.io.Serializable;
em.merge(article); import java.util.ArrayList;
em.flush(); import java.util.List;
}
import javax.annotation.Resource;
public void removeArticle(Integer articleId) { import javax.ejb.Stateless;
Article article = this.getArticle(articleId); import javax.ejb.TransactionManagement;
em.remove(article); import javax.ejb.TransactionManagementType;
em.flush(); import javax.persistence.EntityManager;
} import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
public Article getArticle(Integer articleId) { import javax.persistence.Query;
return em.find(Article.class, articleId); import javax.transaction.HeuristicMixedException;
} import javax.transaction.HeuristicRollbackException;
import javax.transaction.NotSupportedException;
@SuppressWarnings("unchecked") import javax.transaction.RollbackException;
public List<Article> getArticles(Integer confId) throws ConferenceDoesntExistException { import javax.transaction.SystemException;
if(confId == null){ import javax.transaction.UserTransaction;
throw new ConferenceDoesntExistException(confId);
} import org.yacos.core.article.Article.State;
Conference conf = em.find(Conference.class, confId); import org.yacos.core.article.Preference.PreferenceType;
if(conf == null){ import org.yacos.core.conferences.Conference;
throw new ConferenceDoesntExistException(confId); import org.yacos.core.exceptions.ConferenceDoesntExistException;
} import org.yacos.core.users.Role;
import org.yacos.core.users.RolePK;
Query query = em.createQuery("from Article a WHERE a.conference = ? ORDER BY a.title"); import org.yacos.core.users.User;
query.setParameter(1, conf); import org.yacos.core.users.Role.RoleType;
return query.getResultList();
} @Stateless
@TransactionManagement(TransactionManagementType.BEAN)
@SuppressWarnings("unchecked") public class ArticleManagerBean implements IArticleManager, Serializable {
public List<Article> getArticleOfAuthor(Integer confId, String authorId) {
Conference conf = em.find(Conference.class, confId); /**
User author = em.find(User.class, authorId); *
Query query = em.createQuery("from Article a WHERE conference = ? and mainAuthor = ? ORDER BY a.title"); */
query.setParameter(1, conf); private static final long serialVersionUID = 1L;
query.setParameter(2, author);
return query.getResultList(); @PersistenceContext
} private EntityManager em;
public List<Article> getArticlesOfMember(Integer confId, String memberId){ @Resource
//TODO private UserTransaction ut;
return null;
} public ArticleManagerBean() {
public void assignArticleToPCMember(Integer articleId,String memberId){ }
Article article = this.getArticle(articleId);
User PCMember = em.find(User.class, memberId); public Article addArticle(String title, String topic,String url_article,
article.addPCMember(PCMember); String mainAuthorLogin, ArrayList<String> secondaryAuthors, State state,Integer conferenceId) {
this.updateArticle(article);
} try {
ut.begin();
public void unassignArticleToPCMember(Integer articleId,String memberId){ Article a = new Article();
Article article = this.getArticle(articleId); a.setTitle(title);
User PCMember = em.find(User.class, memberId); a.setTopic(topic);
article.removePCMember(PCMember); a.setURL_article(url_article);
this.updateArticle(article); User mainAuthor = em.find(User.class,mainAuthorLogin);
} a.setMainAuthor(mainAuthor);
a.setSecondaryAuthors(secondaryAuthors);
public List<User> getArticlePCMembers(Integer articleId) { a.setState(state);
Article article = this.getArticle(articleId); Conference conference = em.find(Conference.class, conferenceId);
List<User> users = (List<User>)article.getPcMembers(); a.setConference(conference);
return users; em.persist(a);
} ut.commit();
public void delegateArticleToReferee(Integer articleId, String refereeId, String memberId){ addRoleForConference(mainAuthorLogin,RoleType.AUTHOR,conferenceId);
Article article = this.getArticle(articleId);
User PCMember = em.find(User.class, memberId); return a;
User referee = em.find(User.class, refereeId); } catch (Exception e) {
article.delegateTo(referee,PCMember); try {
} ut.rollback();
e.printStackTrace();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
/* }
* gestion des preferences }
*/ return null;
}
public Preference addPreference(Integer article_id, String userLogin,PreferenceType preferenceType){ public void updateArticle(Article article) {
Preference preference = new Preference(); try {
Article article = getArticle(article_id); ut.begin();
preference.setArticle(article); Article persistentArticle = em.find(Article.class, article.getId());
User pcMember = em.find(User.class, userLogin); persistentArticle.setTitle(article.getTitle());
preference.setPcMember(pcMember); persistentArticle.setTopic(article.getTopic());
preference.setPreferenceType(preferenceType); persistentArticle.setMainAuthor(article.getMainAuthor());
em.persist(preference); persistentArticle.setURL_article(article.getURL_article());
em.flush(); persistentArticle.setState(article.getState());
return preference; persistentArticle.setSecondaryAuthors(article.getSecondaryAuthors());
} ut.commit();
} catch (Exception e) {
e.printStackTrace();
public void removePreference(Integer article_id, String userLogin){ } finally {
Preference pref = this.getPreferenceForUserAndArticle(article_id, userLogin); try {
em.remove(pref); ut.rollback();
} } catch (Exception e) {
e.printStackTrace();
public void updatePreference(Preference preference){ }
em.merge(preference); }
em.flush(); }
}
public void removeArticle(Integer articleId) {
public Preference getPreferenceForUserAndArticle(Integer article_id, String pcMemberLogin){ try {
PreferencePK preferenceid = new PreferencePK(); ut.begin();
preferenceid.article = em.find(Article.class, article_id); Article article = this.getArticle(articleId);
preferenceid.pcMember = em.find(User.class, pcMemberLogin); em.remove(article);
try { ut.commit();
return (Preference) em.find(Preference.class, preferenceid); } catch (Exception e) {
} catch (NoResultException e) { try {
return null; ut.rollback();
} } catch (Exception e1) {
} e1.printStackTrace();
}
@SuppressWarnings("unchecked") e.printStackTrace();
public List<Preference> getPreferencesForArticle(Integer article_id){ }
Query query = em.createQuery("from Preference p WHERE article_id = ?"); }
query.setParameter(1, article_id);
return query.getResultList(); public Article getArticle(Integer articleId) {
} return em.find(Article.class, articleId);
}
public boolean existsArticle(Integer articleId) { @SuppressWarnings("unchecked")
return em.find(Article.class, articleId)!=null; public List<Article> getArticles(Integer confId) throws ConferenceDoesntExistException {
} if(confId == null){
throw new ConferenceDoesntExistException(confId);
public boolean existsPreference(Preference preference) { }
return em.find(Preference.class, preference.getId())!=null; Conference conf = em.find(Conference.class, confId);
} if(conf == null){
throw new ConferenceDoesntExistException(confId);
public EntityManager getEntityManager() { }
return em;
} Query query = em.createQuery("from Article a WHERE a.conference = ? ORDER BY a.title");
query.setParameter(1, conf);
return query.getResultList();
} }
@SuppressWarnings("unchecked")
public List<Article> getArticleOfAuthor(Integer confId, String authorId) {
Conference conf = em.find(Conference.class, confId);
User author = em.find(User.class, authorId);
Query query = em.createQuery("from Article a WHERE conference = ? and mainAuthor = ? ORDER BY a.title");
query.setParameter(1, conf);
query.setParameter(2, author);
return query.getResultList();
}
public List<Article> getArticlesOfMember(Integer confId, String memberId){
//TODO
return null;
}
public void assignArticleToPCMember(Integer articleId,String memberId){
try{
ut.begin();
Article article = this.getArticle(articleId);
User PCMember = em.find(User.class, memberId);
article.getPcMembers().add(PCMember);
ut.commit();
this.updateArticle(article);
} catch (Exception e) {
try{
ut.rollback();
} catch (Exception e1) {
e1.printStackTrace();
}
}
//article.addPCMember(PCMember);
}
public void unassignArticleToPCMember(Integer articleId,String memberId){
Article article = this.getArticle(articleId);
User PCMember = em.find(User.class, memberId);
article.getPcMembers().remove(PCMember);
//article.removePCMember(PCMember);
this.updateArticle(article);
}
public List<User> getArticlePCMembers(Integer articleId) {
Article article = this.getArticle(articleId);
List<User> users = (List<User>)article.getPcMembers();
return users;
}
public void delegateArticleToReferee(Integer articleId, String refereeId, String memberId){
Article article = this.getArticle(articleId);
User PCMember = em.find(User.class, memberId);
User referee = em.find(User.class, refereeId);
article.delegateTo(referee,PCMember);
}
/*
* gestion des preferences
*/
public Preference addPreference(Integer article_id, String userLogin,PreferenceType preferenceType){
try{
ut.begin();
Preference preference = new Preference();
Article article = getArticle(article_id);
preference.setArticle(article);
User pcMember = em.find(User.class, userLogin);
preference.setPcMember(pcMember);
preference.setPreferenceType(preferenceType);
em.persist(preference);
ut.commit();
return preference;
} catch(Exception e){
try {
ut.rollback();
} catch (Exception e1) {
e1.printStackTrace();
}
}
return null;
}
public void removePreference(Integer article_id, String userLogin){
try{
ut.begin();
Preference pref = this.getPreferenceForUserAndArticle(article_id, userLogin);
em.remove(pref);
ut.commit();
} catch (Exception e) {
try{
ut.rollback();
} catch (Exception e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
}
public void updatePreference(Preference preference){
try{
ut.begin();
Preference persistedPreference = em.find(Preference.class, preference.getId());
persistedPreference.setPreferenceType(preference.getPreferenceType());
ut.commit();
} catch (Exception e) {
try{
ut.rollback();
} catch (Exception e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
}
public Preference getPreferenceForUserAndArticle(Integer article_id, String pcMemberLogin){
PreferencePK preferenceid = new PreferencePK();
preferenceid.article = em.find(Article.class, article_id);
preferenceid.pcMember = em.find(User.class, pcMemberLogin);
try {
return (Preference) em.find(Preference.class, preferenceid);
} catch (NoResultException e) {
return null;
}
}
@SuppressWarnings("unchecked")
public List<Preference> getPreferencesForArticle(Integer article_id){
Query query = em.createQuery("from Preference p WHERE article_id = ?");
query.setParameter(1, article_id);
return query.getResultList();
}
public boolean existsArticle(Integer articleId) {
return em.find(Article.class, articleId)!=null;
}
public boolean existsPreference(Preference preference) {
return em.find(Preference.class, preference.getId())!=null;
}
public boolean hasUserRoleForConference(String userLogin, RoleType roleType, Integer conferenceId){
Conference conference = em.find(Conference.class, conferenceId);
User user = em.find(User.class, userLogin);
RolePK rolePK = new RolePK(user,roleType,conference);
return em.find(Role.class, rolePK)!=null;
}
private void addRoleForConference(String userLogin, RoleType roleType, Integer conferenceId) {
Conference conference = em.find(Conference.class, conferenceId);
User user = em.find(User.class, userLogin);
if(! hasUserRoleForConference(userLogin, RoleType.AUTHOR, conferenceId)){
Role role = new Role();
role.setUser(user);
role.setType(roleType);
role.setConference(conference);
try{
ut.begin();
em.persist(role);
ut.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public EntityManager getEntityManager() {
return em;
}
}