package edu.ualberta.med.biobank.common.wrappers.internal;
import edu.ualberta.med.biobank.common.peer.SpecimenPositionPeer;
import edu.ualberta.med.biobank.common.util.RowColPos;
import edu.ualberta.med.biobank.common.wrappers.ContainerTypeWrapper;
import edu.ualberta.med.biobank.common.wrappers.ContainerWrapper;
import edu.ualberta.med.biobank.common.wrappers.ModelWrapper;
import edu.ualberta.med.biobank.common.wrappers.WrapperTransaction.TaskList;
import edu.ualberta.med.biobank.common.wrappers.base.SpecimenPositionBaseWrapper;
import edu.ualberta.med.biobank.common.wrappers.checks.ContainerPositionAvailableCheck;
import edu.ualberta.med.biobank.common.wrappers.checks.ContainerPositionInBoundsCheck;
import edu.ualberta.med.biobank.model.SpecimenPosition;
import gov.nih.nci.system.applicationservice.WritableApplicationService;
public class SpecimenPositionWrapper extends SpecimenPositionBaseWrapper {
public SpecimenPositionWrapper(WritableApplicationService appService,
SpecimenPosition wrappedObject) {
super(appService, wrappedObject);
}
public SpecimenPositionWrapper(WritableApplicationService appService) {
super(appService);
}
@Override
public int compareTo(ModelWrapper<SpecimenPosition> o) {
return 0;
}
@Override
public ContainerWrapper getParent() {
return getContainer();
}
@Override
protected void setParent(ContainerWrapper parent) {
setContainer(parent);
}
@Deprecated
@Override
protected void addPersistTasks(TaskList tasks) {
tasks.add(check().notNull(SpecimenPositionPeer.CONTAINER));
super.addPersistTasks(tasks);
tasks.add(new ContainerPositionAvailableCheck<SpecimenPosition>(this,
SpecimenPositionPeer.CONTAINER));
tasks.add(new ContainerPositionInBoundsCheck<SpecimenPosition>(this,
SpecimenPositionPeer.CONTAINER));
tasks.persist(this, SpecimenPositionPeer.SPECIMEN);
// tasks.log(SomeClassThatSaysHowToLog<E>(this));
}
@Override
protected void setPosition(RowColPos newPosition) {
RowColPos oldPosition = getPosition();
super.setPosition(newPosition);
if (!newPosition.equals(oldPosition)) {
updatePositionString();
}
}
private void updatePositionString() {
ContainerWrapper container = getParent();
if (container != null && getRow() != null && getCol() != null) {
ContainerTypeWrapper containerType = container.getContainerType();
if (containerType != null) {
String positionString = containerType
.getPositionString(new RowColPos(getRow(), getCol()));
setPositionString(positionString);
}
}
}
}