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.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import edu.ualberta.med.biobank.validator.constraint.NotUsed;
import edu.ualberta.med.biobank.validator.group.PreDelete;
/**
* A collection site that collects biospecimens and transports them to a
* repository site. Biospecimens are collected from patients that are
* participating in a study.
*
* NCI Term: Collecting laboratory. The laboratory that collects specimens from
* a study subject.
*/
@Entity
@DiscriminatorValue("Clinic")
@NotUsed.List({
@NotUsed(by = Study.class, property = "contacts.clinic", groups = PreDelete.class),
@NotUsed(by = OriginInfo.class, property = "center", groups = PreDelete.class)
})
public class Clinic extends Center {
private static final long serialVersionUID = 1L;
private boolean sendsShipments = false;
private Set<Contact> contacts = new HashSet<Contact>(0);
@Column(name = "SENDS_SHIPMENTS")
// TODO: rename to isSendsShipments
public boolean getSendsShipments() {
return this.sendsShipments;
}
public void setSendsShipments(boolean sendsShipments) {
this.sendsShipments = sendsShipments;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "clinic")
public Set<Contact> getContacts() {
return this.contacts;
}
public void setContacts(Set<Contact> contacts) {
this.contacts = contacts;
}
}