From 41351e6f6ac6d92b21d8c23051d1a31cc5b2ae3d Mon Sep 17 00:00:00 2001 From: Maxime Dagnicourt Date: Wed, 6 Feb 2008 22:46:51 +0000 Subject: [PATCH] Policy failures: Code warning - failed on resource Report.java. Reason: The import javax.persistence.CascadeType is never used, line 9 - failed on resource Report.java. Reason: The import javax.persistence.FetchType is never used, line 11 - failed on resource UserManagerBean.java. Reason: The import org.yacos.core.article.Article is never used, line 15 - failed on resource Article.java. Reason: The import org.yacos.core.users.Role is never used, line 2 Override reason: u --- .../org/yacos/core/article/Article.java | 91 +++++++------------ .../core/article/ArticleManagerBean.java | 5 +- .../yacos/core/article/IArticleManager.java | 4 +- .../org/yacos/core/article/Preference.java | 6 +- .../org/yacos/core/evaluation/Criterion.java | 29 ++---- .../evaluation/EvaluationManagerBean.java | 33 ++++++- .../core/evaluation/IEvaluationManager.java | 5 + .../org/yacos/core/evaluation/Rating.java | 42 +++++---- .../org/yacos/core/evaluation/RatingPK.java | 45 +++++++++ .../org/yacos/core/evaluation/Report.java | 17 ++-- .../ejbModule/org/yacos/core/users/Role.java | 21 +---- .../org/yacos/core/users/UserManagerBean.java | 9 +- 12 files changed, 170 insertions(+), 137 deletions(-) create mode 100644 YACOSCore/ejbModule/org/yacos/core/evaluation/RatingPK.java diff --git a/YACOSCore/ejbModule/org/yacos/core/article/Article.java b/YACOSCore/ejbModule/org/yacos/core/article/Article.java index 30213d7..b041442 100644 --- a/YACOSCore/ejbModule/org/yacos/core/article/Article.java +++ b/YACOSCore/ejbModule/org/yacos/core/article/Article.java @@ -2,7 +2,6 @@ package org.yacos.core.article; import java.io.Serializable; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import javax.persistence.CascadeType; @@ -20,6 +19,7 @@ import javax.persistence.OneToMany; import org.yacos.core.conferences.Conference; import org.yacos.core.evaluation.Report; +import org.yacos.core.users.Role; import org.yacos.core.users.User; @Entity @@ -37,8 +37,8 @@ public class Article implements Serializable { private String topic; private String URL_article; - //@ManyToOne(targetEntity=Conference.class) - //@JoinColumn(name="mainAuthor",nullable=false) + @ManyToOne(targetEntity=Conference.class) + @JoinColumn(name="mainAuthor",nullable=false) private User mainAuthor; private ArrayList secondaryAuthors; @@ -50,16 +50,8 @@ public class Article implements Serializable { @JoinColumn(name="conference_id",nullable=false) private Conference conference; - /** - * The referees reviewing this article - */ - @ManyToMany(targetEntity=User.class) - @JoinTable( - name="articles_referees_map", - joinColumns=@JoinColumn(name="user_id"), - inverseJoinColumns=@JoinColumn(name="article_id") - ) - private Collection referees; + @OneToMany(cascade=CascadeType.ALL, targetEntity=Delegation.class, mappedBy="article") + private List delegation; /** * The PC Members responsible for this article evaluation @@ -70,13 +62,13 @@ public class Article implements Serializable { joinColumns=@JoinColumn(name="user_id"), inverseJoinColumns=@JoinColumn(name="article_id") ) - private Collection pcMembers; + private List pcMembers; - @OneToMany(targetEntity=Preference.class,mappedBy="article") - private Collection preferences; + @OneToMany(targetEntity=Preference.class,mappedBy="article", cascade=CascadeType.ALL) + private List preferences; @OneToMany(targetEntity=Report.class, mappedBy="article", cascade=CascadeType.ALL) - private Collection report; + private List report; public enum State { @@ -105,7 +97,6 @@ public class Article implements Serializable { this.secondaryAuthors = new ArrayList(); } this.state = state; - referees = new ArrayList(); pcMembers = new ArrayList(); this.conference = conference; } @@ -160,7 +151,7 @@ public class Article implements Serializable { return secondaryAuthors; } - public void setSecondaryAuthors(List secondaryAuthors) { + public void setSecondaryAuthors(ArrayList secondaryAuthors) { this.secondaryAuthors = new ArrayList(secondaryAuthors); } @@ -173,37 +164,14 @@ public class Article implements Serializable { public void setState(State state) { this.state=state; } - - @ManyToMany(targetEntity=User.class) - @JoinTable( - name="articles_referees_map", - joinColumns=@JoinColumn(name="user_id"), - inverseJoinColumns=@JoinColumn(name="article_id") - ) - public Collection getReferees(){ - return referees; - } - - /** - * @param referees the referees to set - */ - @ManyToMany(targetEntity=User.class) - @JoinTable( - name="articles_referees_map", - joinColumns=@JoinColumn(name="user_id"), - inverseJoinColumns=@JoinColumn(name="article_id") - ) - public void setReferees(Collection referees) { - this.referees = referees; - } - + @ManyToMany(targetEntity=User.class) @JoinTable( name="articles_pcmembers_map", joinColumns=@JoinColumn(name="user_id"), inverseJoinColumns=@JoinColumn(name="article_id") ) - public Collection getPCMembers(){ + public List getPcMembers() { return pcMembers; } @ManyToMany(targetEntity=User.class) @@ -212,10 +180,9 @@ public class Article implements Serializable { joinColumns=@JoinColumn(name="user_id"), inverseJoinColumns=@JoinColumn(name="article_id") ) - public void setPCMembers(Collection pcMembers){ + public void setPcMembers(List pcMembers) { this.pcMembers = pcMembers; } - public void addPCMember(User pcMember){ if(! pcMembers.contains(pcMember)){ pcMembers.add(pcMember); @@ -229,11 +196,11 @@ public class Article implements Serializable { } public void delegateTo(User referee, User pcMember) { - if(pcMembers.contains(pcMember)){ + /* if(pcMembers.contains(pcMember)){ if(! referees.contains(referee)){ referees.add(referee); } - } + }*/ } @ManyToOne(targetEntity=Conference.class) @JoinColumn(name="conference_id",nullable=false) @@ -249,16 +216,16 @@ public class Article implements Serializable { /** * @return the preferences */ - @OneToMany(targetEntity=Preference.class,mappedBy="article") - public Collection getPreferences() { + @OneToMany(targetEntity=Preference.class,mappedBy="article", cascade=CascadeType.ALL) + public List getPreferences() { return preferences; } /** * @param preferences the preferences to set */ - @OneToMany(targetEntity=Preference.class,mappedBy="article") - public void setPreferences(Collection preferences) { + @OneToMany(targetEntity=Preference.class,mappedBy="article", cascade=CascadeType.ALL) + public void setPreferences(List preferences) { this.preferences = preferences; } @@ -266,12 +233,24 @@ public class Article implements Serializable { return false; } - @OneToMany(targetEntity=Report.class, mappedBy="article") - public Collection getReport() { + @OneToMany(targetEntity=Report.class, mappedBy="article", cascade=CascadeType.ALL) + public List getReport() { return report; } - @OneToMany(targetEntity=Report.class, mappedBy="article") - public void setReport(Collection report) { + @OneToMany(targetEntity=Report.class, mappedBy="article", cascade=CascadeType.ALL) + public void setReport(List report) { this.report = report; } + + @OneToMany(cascade=CascadeType.ALL, targetEntity=Delegation.class, mappedBy="article") + public List getDelegation() { + return delegation; + } + + @OneToMany(cascade=CascadeType.ALL, targetEntity=Delegation.class, mappedBy="article") + public void setDelegation(List delegation) { + this.delegation = delegation; + } + + } diff --git a/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java b/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java index b710180..6f9b23a 100644 --- a/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java +++ b/YACOSCore/ejbModule/org/yacos/core/article/ArticleManagerBean.java @@ -1,6 +1,7 @@ package org.yacos.core.article; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; import javax.ejb.Stateless; @@ -34,7 +35,7 @@ public class ArticleManagerBean implements IArticleManager, Serializable { } public Article addArticle(String title, String topic,String url_article, - String mainAuthorLogin, List secondaryAuthors, State state,Integer conferenceId) { + String mainAuthorLogin, ArrayList secondaryAuthors, State state,Integer conferenceId) { Article a = new Article(); a.setTitle(title); a.setTopic(topic); @@ -110,7 +111,7 @@ public class ArticleManagerBean implements IArticleManager, Serializable { public List getArticlePCMembers(Integer articleId) { Article article = this.getArticle(articleId); - List users = (List)article.getPCMembers(); + List users = (List)article.getPcMembers(); return users; } diff --git a/YACOSCore/ejbModule/org/yacos/core/article/IArticleManager.java b/YACOSCore/ejbModule/org/yacos/core/article/IArticleManager.java index c619bff..b7bfb96 100644 --- a/YACOSCore/ejbModule/org/yacos/core/article/IArticleManager.java +++ b/YACOSCore/ejbModule/org/yacos/core/article/IArticleManager.java @@ -1,5 +1,6 @@ package org.yacos.core.article; +import java.util.ArrayList; import java.util.List; import javax.ejb.Remote; @@ -7,7 +8,6 @@ import javax.ejb.Remote; import org.yacos.core.article.Article.State; import org.yacos.core.article.Preference.PreferenceType; import org.yacos.core.exceptions.ConferenceDoesntExistException; -import org.yacos.core.users.User; @@ -15,7 +15,7 @@ import org.yacos.core.users.User; public interface IArticleManager { public Article getArticle(Integer id); public Article addArticle(String title, String topic,String url_article, - String mainauthor, List secondaryAuthor, State state,Integer integer); + String mainauthor, ArrayList secondaryAuthor, State state,Integer integer); public void removeArticle(Integer articleId); public void updateArticle(Article article); diff --git a/YACOSCore/ejbModule/org/yacos/core/article/Preference.java b/YACOSCore/ejbModule/org/yacos/core/article/Preference.java index 64df7d8..d25b63c 100644 --- a/YACOSCore/ejbModule/org/yacos/core/article/Preference.java +++ b/YACOSCore/ejbModule/org/yacos/core/article/Preference.java @@ -41,6 +41,10 @@ public class Preference implements Serializable { LIKE,INDIFFERENT,DISLIKE,CONFLICT } + public Preference(){ + + } + private PreferenceType preferenceType; /** @@ -75,7 +79,7 @@ public class Preference implements Serializable { public void setArticle(Article article) { this.article = article; } - public PreferenceType getPreference() { + public PreferenceType getPreferenceType() { return preferenceType; } public void setPreferenceType(PreferenceType preferenceType) { diff --git a/YACOSCore/ejbModule/org/yacos/core/evaluation/Criterion.java b/YACOSCore/ejbModule/org/yacos/core/evaluation/Criterion.java index 57d8667..356521a 100644 --- a/YACOSCore/ejbModule/org/yacos/core/evaluation/Criterion.java +++ b/YACOSCore/ejbModule/org/yacos/core/evaluation/Criterion.java @@ -80,8 +80,6 @@ public class Criterion implements Serializable { this.id = id; } - - /** * @return the name of this criterion */ @@ -96,32 +94,19 @@ public class Criterion implements Serializable { this.name = name; } - /** - * @return the minimum value for this criterion - */ - public Integer getMin() { + + public Integer getMin_rating() { return min_rating; } - - /** - * @param min the minimum value for this criterion - */ - public void setMin(Integer min) { - this.min_rating = min; + public void setMin_rating(Integer min_rating) { + this.min_rating = min_rating; } - /** - * @return the maximum value for this criterion - */ - public Integer getMax() { + public Integer getMax_rating() { return max_rating; } - - /** - * @param max the maximum value for this criterion - */ - public void setMax(Integer max) { - this.max_rating = max; + public void setMax_rating(Integer max_rating) { + this.max_rating = max_rating; } } diff --git a/YACOSCore/ejbModule/org/yacos/core/evaluation/EvaluationManagerBean.java b/YACOSCore/ejbModule/org/yacos/core/evaluation/EvaluationManagerBean.java index cb31db1..a44c688 100644 --- a/YACOSCore/ejbModule/org/yacos/core/evaluation/EvaluationManagerBean.java +++ b/YACOSCore/ejbModule/org/yacos/core/evaluation/EvaluationManagerBean.java @@ -83,8 +83,8 @@ public class EvaluationManagerBean implements IEvaluationManager { cm = getConferenceManager(); Criterion crit = new Criterion(); crit.setName(name); - crit.setMin(min_rating); - crit.setMax(max_rating); + crit.setMin_rating(min_rating); + crit.setMax_rating(max_rating); crit.setConference(cm.getConference(confId)); em.persist(crit); em.flush(); @@ -165,4 +165,33 @@ public class EvaluationManagerBean implements IEvaluationManager { return q.getResultList(); } + /* + * rating methods + */ + + public Rating addRating(Integer value, Criterion criterion, Report report) { + Rating rating = new Rating(value,criterion,report); + em.persist(rating); + em.flush(); + return rating; + } + + @SuppressWarnings("unchecked") + public List getRatingForReport(Integer reportId){ + Query q = em.createQuery("select r.ratings from Report r where r.id=?"); + q.setParameter(1, reportId); + return q.getResultList(); + } + public void removeRating(Criterion criterion, Report report) { + Rating rating = em.find(Rating.class, new RatingPK(criterion,report)); + em.remove(rating); + em.flush(); + } + + public Rating updateRating(Rating rating) { + em.merge(rating); + em.flush(); + return rating; + } + } diff --git a/YACOSCore/ejbModule/org/yacos/core/evaluation/IEvaluationManager.java b/YACOSCore/ejbModule/org/yacos/core/evaluation/IEvaluationManager.java index ec6725a..fdce74d 100644 --- a/YACOSCore/ejbModule/org/yacos/core/evaluation/IEvaluationManager.java +++ b/YACOSCore/ejbModule/org/yacos/core/evaluation/IEvaluationManager.java @@ -30,4 +30,9 @@ public interface IEvaluationManager { public Report getReportforArticleAndReferee(int articleId, String refereeLogin); public List getReportsForArticle(int articleId); public List getReportsForReferee(String refereeLogin); + + public Rating addRating(Integer value,Criterion criterion,Report report); + public void removeRating(Criterion criterion,Report report); + public Rating updateRating(Rating rating); + public List getRatingForReport(Integer reportId); } diff --git a/YACOSCore/ejbModule/org/yacos/core/evaluation/Rating.java b/YACOSCore/ejbModule/org/yacos/core/evaluation/Rating.java index 3f8fd54..30dc052 100644 --- a/YACOSCore/ejbModule/org/yacos/core/evaluation/Rating.java +++ b/YACOSCore/ejbModule/org/yacos/core/evaluation/Rating.java @@ -6,49 +6,49 @@ package org.yacos.core.evaluation; import java.io.Serializable; import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; + import javax.persistence.Id; +import javax.persistence.IdClass; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; + /** * @author christiancorsano * */ @Entity +@IdClass(RatingPK.class) public class Rating implements Serializable { private static final long serialVersionUID = 1L; + @Id - @GeneratedValue(strategy=GenerationType.AUTO) - private Integer id; - - private Integer value; - @ManyToOne(targetEntity=Criterion.class,fetch=FetchType.EAGER) + @ManyToOne(targetEntity=Criterion.class)//,fetch=FetchType.EAGER) @JoinColumn(name="criterion_id",nullable=false) private Criterion criterion; + @Id @ManyToOne(targetEntity=Report.class) @JoinColumn(name="report_id",nullable=false) private Report report; - /** - * @return the id - */ - public Integer getId() { - return id; - } - - /** - * @param id the id to set - */ - public void setId(Integer id) { - this.id = id; + private Integer value; + + public Rating(){ + super(); } + + public Rating(Integer value, Criterion criterion, Report report) { + super(); + this.value = value; + this.criterion = criterion; + this.report = report; + } + + /** * @return the value */ @@ -93,6 +93,8 @@ public class Rating implements Serializable public void setReport(Report report) { this.report = report; } + + } diff --git a/YACOSCore/ejbModule/org/yacos/core/evaluation/RatingPK.java b/YACOSCore/ejbModule/org/yacos/core/evaluation/RatingPK.java new file mode 100644 index 0000000..7341273 --- /dev/null +++ b/YACOSCore/ejbModule/org/yacos/core/evaluation/RatingPK.java @@ -0,0 +1,45 @@ +package org.yacos.core.evaluation; + +import java.io.Serializable; + +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; + +public class RatingPK implements Serializable{ + private static final long serialVersionUID = 1L; + + + @ManyToOne(targetEntity=Criterion.class)//,fetch=FetchType.EAGER) + @JoinColumn(name="criterion_id",nullable=false) + private Criterion criterion; + + @ManyToOne(targetEntity=Report.class) + @JoinColumn(name="report_id",nullable=false) + private Report report; + + + @Override + public boolean equals(Object obj) { + if (! (obj instanceof RatingPK) ) { + return false; + } + RatingPK other = (RatingPK) obj; + return this.criterion.getId().equals(other.criterion.getId()) && + this.report.getId() == other.report.getId(); + } + + @Override + public int hashCode() { + return this.criterion.getId().hashCode() ^ this.report.getId(); + } + + public RatingPK(){ + super(); + } + + public RatingPK(Criterion criterion, Report report) { + super(); + this.criterion = criterion; + this.report = report; + } +} diff --git a/YACOSCore/ejbModule/org/yacos/core/evaluation/Report.java b/YACOSCore/ejbModule/org/yacos/core/evaluation/Report.java index 02c4749..38ed20a 100644 --- a/YACOSCore/ejbModule/org/yacos/core/evaluation/Report.java +++ b/YACOSCore/ejbModule/org/yacos/core/evaluation/Report.java @@ -4,9 +4,9 @@ package org.yacos.core.evaluation; import java.io.Serializable; -import java.util.Collection; import java.util.List; +import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; @@ -38,8 +38,8 @@ public class Report implements Serializable private String commentPCMember; private String commentAuthor; - @OneToMany(targetEntity=Rating.class,mappedBy="report",fetch=FetchType.EAGER) - private Collection ratings; + @OneToMany(targetEntity=Rating.class,mappedBy="report")//, cascade=CascadeType.ALL, fetch=FetchType.EAGER) + private List ratings; @ManyToOne(targetEntity=User.class) @JoinColumn(name="referee_id",nullable=false) @@ -58,7 +58,7 @@ public class Report implements Serializable } public Report(String commentPCMember, String commentAuthor, - Collection ratings, User referee, Article article) { + List ratings, User referee, Article article) { super(); this.commentPCMember = commentPCMember; this.commentAuthor = commentAuthor; @@ -140,15 +140,12 @@ public class Report implements Serializable this.article = article; } - public void addRating(Rating rating){ - ratings.add(rating); - } - + /** * @return the ratings */ @OneToMany(targetEntity=Rating.class,mappedBy="report") - public Collection getRatings() { + public List getRatings() { return ratings; } /** @@ -158,4 +155,6 @@ public class Report implements Serializable public void setRatings(List ratings) { this.ratings = ratings; } + + } diff --git a/YACOSCore/ejbModule/org/yacos/core/users/Role.java b/YACOSCore/ejbModule/org/yacos/core/users/Role.java index d5a5b5a..7cd46e8 100644 --- a/YACOSCore/ejbModule/org/yacos/core/users/Role.java +++ b/YACOSCore/ejbModule/org/yacos/core/users/Role.java @@ -28,13 +28,8 @@ public class Role implements Serializable { */ private static final long serialVersionUID = 1L; - /** - * Dummy field to make the composite PK work despite the ManyToOne relationship - */ - /*@Id - @Column(name="user_id",insertable=false,updatable=false) - private String user_id; - */ + + /** * User for which this role is defined * Primary Key @@ -44,13 +39,7 @@ public class Role implements Serializable { @ManyToOne(targetEntity=User.class,optional=false) @JoinColumn(name="user_id",nullable=false) private User user; - /** - * Dummy field to make the composite PK work despite the ManyToOne relationship - */ - /*@Id - @Column(name="conference_id",insertable=false,updatable=false) - private Integer conference_id; - */ + /** * Conference for which this role is defined * Primary Key @@ -91,7 +80,6 @@ public class Role implements Serializable { @JoinColumn(name="user_id",nullable=false) public void setUser(User user) { this.user = user; - //this.user_id = user.getLogin(); } @ManyToOne(targetEntity=Conference.class,optional=false) @@ -105,10 +93,9 @@ public class Role implements Serializable { @JoinColumn(name="conference_id",nullable=false) public void setConference(Conference conference) { this.conference = conference; - //this.conference_id = conference.getId(); + } - /** * @return the type of this role */ diff --git a/YACOSCore/ejbModule/org/yacos/core/users/UserManagerBean.java b/YACOSCore/ejbModule/org/yacos/core/users/UserManagerBean.java index 9b6cd75..6feaaa4 100644 --- a/YACOSCore/ejbModule/org/yacos/core/users/UserManagerBean.java +++ b/YACOSCore/ejbModule/org/yacos/core/users/UserManagerBean.java @@ -113,12 +113,9 @@ public class UserManagerBean implements IUserManager{ @SuppressWarnings("unchecked") public List getPCMemberForArticle(Integer articleId){ //select p from Paper p join p.referees r where r.login=:aLogin and p.conference=:aConf - //Query query = em.createQuery("select members from Article a join a.pcMembers members WHERE a.id = ?"); - //query.setParameter(1, articleId); - //return query.getResultList(); - Article article = em.find(Article.class, articleId); - return (List)article.getPCMembers(); - + Query query = em.createQuery("select a.pcMembers from Article a where a.id=?"); + query.setParameter(1, articleId); + return query.getResultList(); } @SuppressWarnings("unchecked")