Correction de updateArticle :
Passage de tout article en transactions
This commit is contained in:
@@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user