package edu.ualberta.med.biobank.common.wrappers; import java.text.MessageFormat; import java.util.ArrayList; import java.util.List; import edu.ualberta.med.biobank.common.peer.ContactPeer; import edu.ualberta.med.biobank.common.wrappers.WrapperTransaction.TaskList; import edu.ualberta.med.biobank.common.wrappers.base.ContactBaseWrapper; import edu.ualberta.med.biobank.model.Contact; import gov.nih.nci.system.applicationservice.ApplicationException; import gov.nih.nci.system.applicationservice.WritableApplicationService; import gov.nih.nci.system.query.hibernate.HQLCriteria; /** * Get the studyCollection. Use Study.setContactCollection to link study and * contact */ public class ContactWrapper extends ContactBaseWrapper { private static final String HAS_STUDIES_MSG = Messages .getString("ContactWrapper.delete.error.msg"); //$NON-NLS-1$ public ContactWrapper(WritableApplicationService appService, Contact wrappedObject) { super(appService, wrappedObject); } public ContactWrapper(WritableApplicationService appService) { super(appService); } public List<StudyWrapper> getStudyCollection() { return getStudyCollection(false); } public boolean deleteAllowed() { List<StudyWrapper> studies = getStudyCollection(false); return ((studies == null) || (studies.size() == 0)); } @Override public int compareTo(ModelWrapper<Contact> c2) { if (c2 instanceof ContactWrapper) { String myName = wrappedObject.getName(); String c2Name = c2.wrappedObject.getName(); if (myName != null && c2Name != null) { return myName.compareTo(c2Name); } } return 0; } @Override public String toString() { return getName() + " (" + getMobileNumber() + ")"; //$NON-NLS-1$ //$NON-NLS-2$ } private static final String ALL_CONTACTS_QRY = "from " //$NON-NLS-1$ + Contact.class.getName(); public static List<ContactWrapper> getAllContacts( WritableApplicationService appService) throws ApplicationException { List<ContactWrapper> wrappers = new ArrayList<ContactWrapper>(); HQLCriteria c = new HQLCriteria(ALL_CONTACTS_QRY); List<Contact> contacts = appService.query(c); for (Contact contact : contacts) { wrappers.add(new ContactWrapper(appService, contact)); } return wrappers; } @Deprecated @Override protected void addDeleteTasks(TaskList tasks) { String hasStudiesMsg = MessageFormat.format(HAS_STUDIES_MSG, getName()); tasks.add(check().empty(ContactPeer.STUDIES, hasStudiesMsg)); super.addDeleteTasks(tasks); } // /** // * contact is part of a clinic. Can update the contact if can read the // * clinic // */ // @Override // public boolean canUpdate(UserWrapper user) { // return getClinic() == null || getClinic().canUpdate(user); // } // // /** // * contact is part of a clinic. Can delete the contact if can update the // * clinic // */ // @Override // public boolean canDelete(UserWrapper user) { // return getClinic() == null || getClinic().canUpdate(user); // } }