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.Table;
import javax.validation.constraints.NotNull;
@Entity
@Table(name = "DISPATCH_SPECIMEN")
public class DispatchSpecimen extends AbstractBiobankModel {
private static final long serialVersionUID = 1L;
private Integer state;
private Dispatch dispatch;
private Specimen specimen;
private Set<Comment> comments = new HashSet<Comment>(0);
// TODO: convert to enum
@NotNull(message = "{edu.ualberta.med.biobank.model.DispatchSpecimen.state.NotNull}")
@Column(name = "STATE")
public Integer getState() {
return this.state;
}
public void setState(Integer state) {
this.state = state;
}
@NotNull(message = "{edu.ualberta.med.biobank.model.DispatchSpecimen.dispatch.NotNull}")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "DISPATCH_ID", nullable = false)
public Dispatch getDispatch() {
return this.dispatch;
}
public void setDispatch(Dispatch dispatch) {
this.dispatch = dispatch;
}
@NotNull(message = "{edu.ualberta.med.biobank.model.DispatchSpecimen.specimen.NotNull}")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "SPECIMEN_ID", nullable = false)
public Specimen getSpecimen() {
return this.specimen;
}
public void setSpecimen(Specimen specimen) {
this.specimen = specimen;
}
@ManyToMany(cascade = CascadeType.REMOVE, fetch = FetchType.LAZY)
@JoinTable(name = "DISPATCH_SPECIMEN_COMMENT",
joinColumns = { @JoinColumn(name = "DISPATCH_SPECIMEN_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;
}
}