package edu.ualberta.med.biobank.common.wrappers.loggers;
import edu.ualberta.med.biobank.model.Center;
import edu.ualberta.med.biobank.model.CollectionEvent;
import edu.ualberta.med.biobank.model.Container;
import edu.ualberta.med.biobank.model.Log;
import edu.ualberta.med.biobank.model.Patient;
import edu.ualberta.med.biobank.model.Specimen;
import edu.ualberta.med.biobank.model.SpecimenPosition;
public class SpecimenLogProvider implements WrapperLogProvider<Specimen> {
private static final long serialVersionUID = 1L;
@Override
public Log getLog(Specimen specimen) {
Log log = new Log();
Center currentCenter = specimen.getCurrentCenter();
if (currentCenter != null) {
log.setCenter(currentCenter.getNameShort());
}
CollectionEvent collectionEvent = specimen.getCollectionEvent();
if (collectionEvent != null) {
Patient patient = collectionEvent.getPatient();
if (patient != null) {
log.setPatientNumber(patient.getPnumber());
}
}
log.setInventoryId(specimen.getInventoryId());
SpecimenPosition pos = specimen.getSpecimenPosition();
if (pos != null) {
Container container = pos.getContainer();
if (container != null) {
String locationLabel = container.getLabel()
+ pos.getPositionString();
log.setLocationLabel(locationLabel);
}
}
return log;
}
@Override
public Log getObjectLog(Object model) {
if (model instanceof Specimen)
return getLog((Specimen) model);
if (model instanceof SpecimenPosition)
return getLog(((SpecimenPosition) model).getSpecimen());
return null;
}
}