package edu.ualberta.med.biobank.model;
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.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
/**
* caTissue Term - Transfer Event: Event that refers to moving specimen from one
* storage location to another storage location.
*
*/
@Entity
@Table(name = "DISPATCH")
public class Dispatch extends AbstractBiobankModel {
private static final long serialVersionUID = 1L;
private Integer state;
private Set<DispatchSpecimen> dispatchSpecimens =
new HashSet<DispatchSpecimen>(0);
private Center senderCenter;
private ShipmentInfo shipmentInfo;
private Center receiverCenter;
private Set<Comment> comments = new HashSet<Comment>(0);
// TODO: convert to enum
@NotNull(message = "{edu.ualberta.med.biobank.model.Dispatch.state.NotNull}")
@Column(name = "STATE")
public Integer getState() {
return this.state;
}
public void setState(Integer state) {
this.state = state;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "dispatch", orphanRemoval = true)
public Set<DispatchSpecimen> getDispatchSpecimens() {
return this.dispatchSpecimens;
}
public void setDispatchSpecimens(Set<DispatchSpecimen> dispatchSpecimens) {
this.dispatchSpecimens = dispatchSpecimens;
}
@NotNull(message = "{edu.ualberta.med.biobank.model.Dispatch.senderCenter.NotNull}")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "SENDER_CENTER_ID", nullable = false)
public Center getSenderCenter() {
return this.senderCenter;
}
public void setSenderCenter(Center senderCenter) {
this.senderCenter = senderCenter;
}
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "SHIPMENT_INFO_ID", unique = true)
public ShipmentInfo getShipmentInfo() {
return this.shipmentInfo;
}
public void setShipmentInfo(ShipmentInfo shipmentInfo) {
this.shipmentInfo = shipmentInfo;
}
@NotNull(message = "{edu.ualberta.med.biobank.model.Dispatch.receiverCenter.NotNull}")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "RECEIVER_CENTER_ID", nullable = false)
public Center getReceiverCenter() {
return this.receiverCenter;
}
public void setReceiverCenter(Center receiverCenter) {
this.receiverCenter = receiverCenter;
}
@ManyToMany(cascade = CascadeType.REMOVE, fetch = FetchType.LAZY)
@JoinTable(name = "DISPATCH_COMMENT",
joinColumns = { @JoinColumn(name = "DISPATCH_ID", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "COMMENT_ID", unique = true, nullable = false, updatable = false) })
public Set<Comment> getComments() {
return this.comments;
}
public void setComments(Set<Comment> comments) {
this.comments = comments;
}
}