package edu.ualberta.med.biobank.model; import java.util.Date; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.validation.constraints.NotNull; import javax.validation.constraints.Null; import edu.ualberta.med.biobank.validator.group.PreDelete; /** * caTissue Term - Specimen Distribution: An event that results in transfer of a * specimen from a Repository to a Laboratory * */ @Entity @Table(name = "REQUEST") public class Request extends AbstractBiobankModel { private static final long serialVersionUID = 1L; private Date submitted; private Date created; private Set<Dispatch> dispatches = new HashSet<Dispatch>(0); private Set<RequestSpecimen> requestSpecimens = new HashSet<RequestSpecimen>(0); private Address address; private ResearchGroup researchGroup; @Null(groups = PreDelete.class, message = "{edu.ualberta.med.biobank.model.Request.submitted.Null}") @Column(name = "SUBMITTED") public Date getSubmitted() { return this.submitted; } public void setSubmitted(Date submitted) { this.submitted = submitted; } @NotNull(message = "{edu.ualberta.med.biobank.model.Request.created.NotNull}") @Column(name = "CREATED", nullable = false) public Date getCreated() { return this.created; } public void setCreated(Date created) { this.created = created; } @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "REQUEST_ID") public Set<Dispatch> getDispatches() { return this.dispatches; } public void setDispatches(Set<Dispatch> dispatches) { this.dispatches = dispatches; } @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "request") public Set<RequestSpecimen> getRequestSpecimens() { return this.requestSpecimens; } public void setRequestSpecimens(Set<RequestSpecimen> requestSpecimens) { this.requestSpecimens = requestSpecimens; } @NotNull(message = "{edu.ualberta.med.biobank.model.Request.address.NotNull}") @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "ADDRESS_ID", nullable = false) public Address getAddress() { return this.address; } public void setAddress(Address address) { this.address = address; } @NotNull(message = "{edu.ualberta.med.biobank.model.Request.researchGroup.NotNull}") @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "RESEARCH_GROUP_ID", nullable = false) public ResearchGroup getResearchGroup() { return this.researchGroup; } public void setResearchGroup(ResearchGroup researchGroup) { this.researchGroup = researchGroup; } }