package org.akaza.openclinica.domain.datamap;
// Generated Jul 31, 2013 2:03:33 PM by Hibernate Tools 3.4.0.CR1
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.UniqueConstraint;
import org.akaza.openclinica.domain.DataMapDomainObject;
import org.akaza.openclinica.domain.Status;
import org.akaza.openclinica.domain.user.UserAccount;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import org.hibernate.annotations.Type;
/**
* StudySubject generated by hbm2java
*/
@Entity
@Table(name = "study_subject", uniqueConstraints = @UniqueConstraint(columnNames = "oc_oid"))
@GenericGenerator(name = "id-generator", strategy = "native", parameters = { @Parameter(name = "sequence_name", value = "study_subject_study_subject_id_seq") })
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class StudySubject extends DataMapDomainObject {
private int studySubjectId;
private UserAccount userAccount;
private Study study;
private Status status;
private Subject subject;
private String label;
private String secondaryLabel;
private Date enrollmentDate;
private Date dateCreated;
private Date dateUpdated;
private Integer updateId;
private String ocOid;
private List<SubjectGroupMap> subjectGroupMaps ;
private List<DnStudySubjectMap> dnStudySubjectMaps;
private List<StudyEvent> studyEvents ;
private List<EventCrf> eventCrfs;
private List<StudyEventDefinition> studyEventDefinitions;
public StudySubject() {
}
public StudySubject(int studySubjectId, String ocOid) {
this.studySubjectId = studySubjectId;
this.ocOid = ocOid;
}
public StudySubject(int studySubjectId, UserAccount userAccount,
Study study, Status status, Subject subject, String label,
String secondaryLabel, Date enrollmentDate, Date dateCreated,
Date dateUpdated, Integer updateId, String ocOid,
List<SubjectGroupMap> subjectGroupMaps, List<DnStudySubjectMap> dnStudySubjectMaps, List<StudyEvent> studyEvents,
List<EventCrf> eventCrfs) {
this.studySubjectId = studySubjectId;
this.userAccount = userAccount;
this.study = study;
this.status = status;
this.subject = subject;
this.label = label;
this.secondaryLabel = secondaryLabel;
this.enrollmentDate = enrollmentDate;
this.dateCreated = dateCreated;
this.dateUpdated = dateUpdated;
this.updateId = updateId;
this.ocOid = ocOid;
this.subjectGroupMaps = subjectGroupMaps;
this.dnStudySubjectMaps = dnStudySubjectMaps;
this.studyEvents = studyEvents;
this.eventCrfs = eventCrfs;
}
@Id
@Column(name = "study_subject_id", unique = true, nullable = false)
@GeneratedValue(generator = "id-generator")
public int getStudySubjectId() {
return this.studySubjectId;
}
public void setStudySubjectId(int studySubjectId) {
this.studySubjectId = studySubjectId;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "owner_id")
public UserAccount getUserAccount() {
return this.userAccount;
}
public void setUserAccount(UserAccount userAccount) {
this.userAccount = userAccount;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "study_id")
public Study getStudy() {
return this.study;
}
public void setStudy(Study study) {
this.study = study;
}
@Type(type = "status")
@Column(name = "status_id")
public Status getStatus() {
if (status != null) {
return status;
} else
return Status.AVAILABLE;
}
public void setStatus(Status status) {
this.status = status;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "subject_id")
public Subject getSubject() {
return this.subject;
}
public void setSubject(Subject subject) {
this.subject = subject;
}
@Column(name = "label", length = 30)
public String getLabel() {
return this.label;
}
public void setLabel(String label) {
this.label = label;
}
@Column(name = "secondary_label", length = 30)
public String getSecondaryLabel() {
return this.secondaryLabel;
}
public void setSecondaryLabel(String secondaryLabel) {
this.secondaryLabel = secondaryLabel;
}
@Temporal(TemporalType.DATE)
@Column(name = "enrollment_date", length = 4)
public Date getEnrollmentDate() {
return this.enrollmentDate;
}
public void setEnrollmentDate(Date enrollmentDate) {
this.enrollmentDate = enrollmentDate;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "date_created", length = 8)
public Date getDateCreated() {
return this.dateCreated;
}
public void setDateCreated(Date dateCreated) {
this.dateCreated = dateCreated;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "date_updated", length = 4)
public Date getDateUpdated() {
return this.dateUpdated;
}
public void setDateUpdated(Date dateUpdated) {
this.dateUpdated = dateUpdated;
}
@Column(name = "update_id")
public Integer getUpdateId() {
return this.updateId;
}
public void setUpdateId(Integer updateId) {
this.updateId = updateId;
}
@Column(name = "oc_oid", unique = true, nullable = false, length = 40)
public String getOcOid() {
return this.ocOid;
}
public void setOcOid(String ocOid) {
this.ocOid = ocOid;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "studySubject")
public List<SubjectGroupMap> getSubjectGroupMaps() {
return this.subjectGroupMaps;
}
public void setSubjectGroupMaps(List<SubjectGroupMap> subjectGroupMaps) {
this.subjectGroupMaps = subjectGroupMaps;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "studySubject")
@OrderBy("discrepancyNote")
public List<DnStudySubjectMap> getDnStudySubjectMaps() {
return this.dnStudySubjectMaps;
}
public void setDnStudySubjectMaps(List<DnStudySubjectMap> dnStudySubjectMaps) {
this.dnStudySubjectMaps = dnStudySubjectMaps;
}
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name="study_subject_id")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public List<StudyEvent> getStudyEvents() {
return this.studyEvents;
}
public void setStudyEvents( List<StudyEvent> studyEvents) {
this.studyEvents = studyEvents;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "studySubject")
public List<EventCrf> getEventCrfs() {
return this.eventCrfs;
}
public void setEventCrfs(List<EventCrf> eventCrfs) {
this.eventCrfs = eventCrfs;
}
}