package fi.arcusys.koku.common.service.datamodel;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
/**
* Entity for representing RequestTemplate in KV-Requests functionality.
*
* @author Dmitry Kudinov (dmitry.kudinov@arcusys.fi)
* Sep 2, 2011
*/
@Entity
@NamedQueries({
@NamedQuery(name = "findRequestTemplatesByPrefix", query = "SELECT tmp FROM RequestTemplate tmp WHERE tmp.subject LIKE :prefix ORDER BY tmp.id DESC"),
@NamedQuery(name = "findRequestTemplatesByPrefixAndUser", query = "SELECT tmp FROM RequestTemplate tmp WHERE tmp.subject LIKE :prefix AND " +
" (tmp.visibility = :visibility_all OR tmp.visibility = :visibility_organization OR tmp.visibility = :visibility_creator AND tmp.creator = :user)" +
" ORDER BY tmp.id DESC")
})
public class RequestTemplate extends AbstractEntity {
private String subject;
@ManyToOne
private User creator;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Set<Question> questions;
@Enumerated(EnumType.STRING)
private Visibility visibility;
/**
* @return the visibility
*/
public Visibility getVisibility() {
return visibility;
}
/**
* @param visibility the visibility to set
*/
public void setVisibility(Visibility visibility) {
this.visibility = visibility;
}
/**
* @return the subject
*/
public String getSubject() {
return subject;
}
/**
* @param subject the subject to set
*/
public void setSubject(String subject) {
this.subject = subject;
}
/**
* @return the creator
*/
public User getCreator() {
return creator;
}
/**
* @param creator the creator to set
*/
public void setCreator(User creator) {
this.creator = creator;
}
/**
* @return the questions
*/
public Set<Question> getQuestions() {
return questions;
}
/**
* @param questions the questions to set
*/
public void setQuestions(Set<Question> questions) {
this.questions = questions;
}
}