package edu.ualberta.med.biobank.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import org.hibernate.annotations.Type;
import edu.ualberta.med.biobank.validator.constraint.NotUsed;
import edu.ualberta.med.biobank.validator.group.PreDelete;
@Entity
@Table(name = "STUDY_EVENT_ATTR")
@NotUsed(by = EventAttr.class, property = "studyEventAttr", groups = PreDelete.class)
public class StudyEventAttr extends AbstractBiobankModel {
private static final long serialVersionUID = 1L;
private String permissible;
private boolean required = false;
private GlobalEventAttr globalEventAttr;
private Study study;
private ActivityStatus activityStatus = ActivityStatus.ACTIVE;
@Column(name = "PERMISSIBLE")
public String getPermissible() {
return this.permissible;
}
public void setPermissible(String permissible) {
this.permissible = permissible;
}
@Column(name = "REQUIRED")
// TODO: rename to isRequired
public boolean getRequired() {
return this.required;
}
public void setRequired(boolean required) {
this.required = required;
}
@NotNull(message = "{edu.ualberta.med.biobank.model.StudyEventAttr.globalEventAttr.NotNull}")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "GLOBAL_EVENT_ATTR_ID", nullable = false)
public GlobalEventAttr getGlobalEventAttr() {
return this.globalEventAttr;
}
public void setGlobalEventAttr(GlobalEventAttr globalEventAttr) {
this.globalEventAttr = globalEventAttr;
}
@NotNull(message = "{edu.ualberta.med.biobank.model.StudyEventAttr.study.NotNull}")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "STUDY_ID", nullable = false)
public Study getStudy() {
return this.study;
}
public void setStudy(Study study) {
this.study = study;
}
@NotNull(message = "{edu.ualberta.med.biobank.model.StudyEventAttr.activityStatus.NotNull}")
@Column(name = "ACTIVITY_STATUS_ID", nullable = false)
@Type(type = "activityStatus")
public ActivityStatus getActivityStatus() {
return this.activityStatus;
}
public void setActivityStatus(ActivityStatus activityStatus) {
this.activityStatus = activityStatus;
}
}