package edu.ualberta.med.biobank.test.action.helper; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import edu.ualberta.med.biobank.common.action.clinic.ClinicGetInfoAction; import edu.ualberta.med.biobank.common.action.clinic.ClinicGetInfoAction.ClinicInfo; import edu.ualberta.med.biobank.common.action.container.ContainerSaveAction; import edu.ualberta.med.biobank.common.action.containerType.ContainerTypeSaveAction; import edu.ualberta.med.biobank.common.action.info.SiteInfo; import edu.ualberta.med.biobank.common.action.info.StudyCountInfo; import edu.ualberta.med.biobank.common.action.patient.PatientSaveAction; import edu.ualberta.med.biobank.common.action.site.SiteSaveAction; import edu.ualberta.med.biobank.common.action.study.StudySaveAction; import edu.ualberta.med.biobank.model.ActivityStatus; import edu.ualberta.med.biobank.model.Address; import edu.ualberta.med.biobank.test.Utils; import edu.ualberta.med.biobank.test.action.IActionExecutor; public class SiteHelper extends Helper { public static SiteSaveAction getSaveAction(String name, String nameShort, ActivityStatus activityStatus) { Address address = new Address(); String city = name + "_city"; if (city.length() > 50) { city = city.substring(city.length() - 50); } address.setCity(city); SiteSaveAction siteSaveAction = new SiteSaveAction(); siteSaveAction.setName(name); siteSaveAction.setNameShort(nameShort); siteSaveAction.setActivityStatus(activityStatus); siteSaveAction.setAddress(address); siteSaveAction.setStudyIds(new HashSet<Integer>()); return siteSaveAction; } public static Integer createSite(IActionExecutor actionExecutor, String name, String city, ActivityStatus activityStatus, Set<Integer> studyIds) { Address address = new Address(); address.setCity(city); SiteSaveAction saveSite = new SiteSaveAction(); saveSite.setName(name); saveSite.setNameShort(name); saveSite.setAddress(address); saveSite.setActivityStatus(activityStatus); saveSite.setStudyIds(studyIds); return actionExecutor.exec(saveSite).getId(); } public static List<Integer> createSites( IActionExecutor actionExecutor, String name, ActivityStatus activityStatus, int numToCreate) { List<Integer> result = new ArrayList<Integer>(); for (int i = 0; i < numToCreate; ++i) { result.add(createSite(actionExecutor, name, Utils.getRandomString(15), activityStatus, new HashSet<Integer>())); } return result; } public static SiteSaveAction getSaveAction(SiteInfo siteInfo) { SiteSaveAction siteSaveAction = new SiteSaveAction(); siteSaveAction.setId(siteInfo.getSite().getId()); siteSaveAction.setName(siteInfo.getSite().getName()); siteSaveAction.setNameShort(siteInfo.getSite().getNameShort()); siteSaveAction .setActivityStatus(siteInfo.getSite().getActivityStatus()); siteSaveAction.setAddress(siteInfo.getSite().getAddress()); Set<Integer> ids = new HashSet<Integer>(); for (StudyCountInfo infos : siteInfo.getStudyCountInfos()) { ids.add(infos.getStudy().getId()); } siteSaveAction.setStudyIds(ids); return siteSaveAction; } /* * Creates a clinic, study and site. Clinic is linked to study via contact. * Study is linked to Site. */ public static class Provisioning { public Integer siteId; public Integer studyId; public Integer clinicId; public List<Integer> patientIds; public List<Integer> containerTypeIds; public Provisioning(IActionExecutor actionExecutor, String basename) { patientIds = new ArrayList<Integer>(); containerTypeIds = new ArrayList<Integer>(); clinicId = ClinicHelper.createClinicWithContacts(actionExecutor, basename + "_clinic", 1); ClinicInfo clinicInfo = actionExecutor.exec(new ClinicGetInfoAction(clinicId)); StudySaveAction studySaveAction = StudyHelper.getSaveAction(basename + "_study", basename + "_study", ActivityStatus.ACTIVE); HashSet<Integer> ids = new HashSet<Integer>(); ids.add(clinicInfo.contacts.get(0).getId()); studySaveAction.setContactIds(ids); studyId = actionExecutor.exec(studySaveAction).getId(); SiteSaveAction siteSaveAction = SiteHelper.getSaveAction(basename + "_site", basename + "_site", ActivityStatus.ACTIVE); ids = new HashSet<Integer>(); ids.add(studyId); siteSaveAction.setStudyIds(ids); siteId = actionExecutor.exec(siteSaveAction).getId(); PatientSaveAction patientSaveAction = new PatientSaveAction(null, studyId, basename + "_patient1", Utils.getRandomDate(), null); patientIds.add(actionExecutor.exec(patientSaveAction) .getId()); } public Integer addContainerType(IActionExecutor executor, String name, Integer containerLabelingSchemeId, double defaultTemp) { ContainerTypeSaveAction ctSaveAction = ContainerTypeHelper.getSaveAction(name, name, siteId, true, 3, 10, containerLabelingSchemeId, defaultTemp); Integer containerTypeId = executor.exec(ctSaveAction).getId(); containerTypeIds.add(containerTypeId); return containerTypeId; } public Integer addContainer(IActionExecutor executor, Integer containerTypeId, String label) { ContainerSaveAction containerSaveAction = new ContainerSaveAction(); containerSaveAction.setActivityStatus(ActivityStatus.ACTIVE); containerSaveAction.setBarcode(Utils.getRandomString(5, 10)); containerSaveAction.setLabel("01"); containerSaveAction.setSiteId(siteId); containerSaveAction.setTypeId(containerTypeId); containerSaveAction.setLabel(label); return executor.exec(containerSaveAction).getId(); } } }