package edu.ualberta.med.biobank.model; import java.util.HashSet; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.Table; import org.hibernate.validator.constraints.NotEmpty; import edu.ualberta.med.biobank.validator.constraint.Empty; import edu.ualberta.med.biobank.validator.group.PreDelete; /** * A contact person associated with a collecting location. This person should be * the point of contact for any inquiries. * * ET: The name of the person the Techs will contact when there is an incident * * JM: Person that CBSR is to contact in case of an incident * * NCI Term - Contact Person: A person acting as a channel for communication * between groups or on behalf of a group. * */ @Entity @Table(name = "CONTACT") @Empty(property = "studies", groups = PreDelete.class) public class Contact extends AbstractBiobankModel { private static final long serialVersionUID = 1L; private String name; private String title; private String mobileNumber; private String faxNumber; private String emailAddress; private String pagerNumber; private String officeNumber; private Set<Study> studies = new HashSet<Study>(0); private Clinic clinic; @NotEmpty(message = "{edu.ualberta.med.biobank.model.Contact.name.NotNull}") @Column(name = "NAME", length = 100) public String getName() { return this.name; } public void setName(String name) { this.name = name; } @Column(name = "TITLE", length = 100) public String getTitle() { return this.title; } public void setTitle(String title) { this.title = title; } @Column(name = "MOBILE_NUMBER", length = 50) public String getMobileNumber() { return this.mobileNumber; } public void setMobileNumber(String mobileNumber) { this.mobileNumber = mobileNumber; } @Column(name = "FAX_NUMBER", length = 50) public String getFaxNumber() { return this.faxNumber; } public void setFaxNumber(String faxNumber) { this.faxNumber = faxNumber; } // TODO: write an email check that allows null @Email @Column(name = "EMAIL_ADDRESS", length = 50) public String getEmailAddress() { return this.emailAddress; } public void setEmailAddress(String emailAddress) { this.emailAddress = emailAddress; } @Column(name = "PAGER_NUMBER", length = 50) public String getPagerNumber() { return this.pagerNumber; } public void setPagerNumber(String pagerNumber) { this.pagerNumber = pagerNumber; } @Column(name = "OFFICE_NUMBER", length = 50) public String getOfficeNumber() { return this.officeNumber; } public void setOfficeNumber(String officeNumber) { this.officeNumber = officeNumber; } @ManyToMany(fetch = FetchType.LAZY, mappedBy = "contacts") public Set<Study> getStudies() { return this.studies; } public void setStudies(Set<Study> studies) { this.studies = studies; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "CLINIC_ID", nullable = false) public Clinic getClinic() { return this.clinic; } public void setClinic(Clinic clinic) { this.clinic = clinic; } }