package edu.ualberta.med.biobank.test.internal;
import java.util.ArrayList;
import java.util.List;
import org.springframework.util.Assert;
import edu.ualberta.med.biobank.common.wrappers.ProcessingEventWrapper;
import edu.ualberta.med.biobank.common.wrappers.SiteWrapper;
import edu.ualberta.med.biobank.common.wrappers.SpecimenWrapper;
import edu.ualberta.med.biobank.model.ActivityStatus;
import edu.ualberta.med.biobank.test.Utils;
@Deprecated
public class SiteHelper extends CenterHelper {
public static List<SiteWrapper> createdSites = new ArrayList<SiteWrapper>();
public static SiteWrapper newSite(String name) throws Exception {
SiteWrapper site = new SiteWrapper(appService);
site.setName(name);
site.setNameShort(name);
if (name != null) {
if (name.length() <= 50) {
site.setNameShort(name);
} else {
site.setNameShort(name.substring(0, 49));
}
}
site.setActivityStatus(ActivityStatus.ACTIVE);
site.setStreet1(Utils.getRandomString(32));
site.setCity(Utils.getRandomString(32));
return site;
}
public static SiteWrapper addSite(String name, boolean addToCreatedList)
throws Exception {
SiteWrapper site = newSite(name);
site.persist();
if (addToCreatedList) {
createdSites.add(site);
}
return site;
}
public static SiteWrapper addSite(String name) throws Exception {
return addSite(name, true);
}
public static List<SiteWrapper> addSites(String basename, int count)
throws Exception {
List<SiteWrapper> sites = new ArrayList<SiteWrapper>();
for (int i = 0; i < count; i++) {
sites.add(addSite(basename + i));
}
return sites;
}
public static void deleteSiteAndDependencies(SiteWrapper site)
throws Exception {
site.reload();
deleteContainers(site.getTopContainerCollection(false));
// in case containers with no top level type has been created without a
// parent :
// TODO check if still need this with last modifications
site.reload();
deleteContainers(site.getContainerCollection(false));
deleteFromList(site.getContainerTypeCollection(false));
site.reload();
// dispatches should have been deleted before sites are deleted
//
// see TestDatabase.tearDown().
Assert.isTrue(site.getSrcDispatchCollection(false).size() == 0);
Assert.isTrue(site.getDstDispatchCollection(false).size() == 0);
deleteCenterDependencies(site);
site.reload();
List<ProcessingEventWrapper> processingEvents = site
.getProcessingEventCollection(false);
for (ProcessingEventWrapper processingEvent : processingEvents) {
List<SpecimenWrapper> specimens = processingEvent
.getSpecimenCollection(false);
deleteFromList(specimens);
}
deleteFromList(processingEvents);
site.removeFromStudyCollection(site.getStudyCollection(false));
site.persist();
site.reload();
site.delete();
}
public static void deleteCreatedSites() throws Exception {
for (SiteWrapper site : createdSites) {
deleteSiteAndDependencies(site);
}
createdSites.clear();
}
}