package fi.arcusys.koku.common.service.datamodel; import java.util.Collections; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.Lob; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; /** * Entity for representing Response to Request. * * @author Dmitry Kudinov (dmitry.kudinov@arcusys.fi) * Jun 23, 2011 */ @Entity @NamedQueries({ @NamedQuery(name = "findRequestResponsesByUser", query = "SELECT DISTINCT r FROM Response r WHERE r.replier = :user " + " AND (r.request.replyTill IS NULL OR r.request.replyTill >= CURRENT_DATE) " + " ORDER BY r.id DESC"), @NamedQuery(name = "countRequestResponsesByUser", query = "SELECT COUNT(DISTINCT r) FROM Response r WHERE r.replier = :user " + " AND (r.request.replyTill IS NULL OR r.request.replyTill >= CURRENT_DATE)"), @NamedQuery(name = "findOldRequestResponsesByUser", query = "SELECT DISTINCT r FROM Response r WHERE r.replier = :user " + " AND (r.request.replyTill IS NOT NULL AND r.request.replyTill < CURRENT_DATE) " + " ORDER BY r.id DESC"), @NamedQuery(name = "countOldRequestResponsesByUser", query = "SELECT COUNT(DISTINCT r) FROM Response r WHERE r.replier = :user " + " AND (r.request.replyTill IS NOT NULL AND r.request.replyTill < CURRENT_DATE)") }) public class Response extends AbstractEntity { @ManyToOne private Request request; @ManyToOne private User replier; @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) private Set<Answer> answers; @Lob private String comment; /** * @return the comment */ public String getComment() { return comment; } /** * @param comment the comment to set */ public void setComment(String comment) { this.comment = comment; } /** * @return the replier */ public User getReplier() { return replier; } /** * @param replier the replier to set */ public void setReplier(User replier) { this.replier = replier; } /** * @return the request */ public Request getRequest() { return request; } /** * @param request the request to set */ public void setRequest(Request request) { this.request = request; } /** * @return the answers */ public Set<Answer> getAnswers() { if (this.answers == null) { return Collections.emptySet(); } return answers; } /** * @param answers the answers to set */ public void setAnswers(Set<Answer> answers) { this.answers = answers; } }