package edu.ualberta.med.biobank.common.wrappers.internal;
import edu.ualberta.med.biobank.common.peer.ContainerPositionPeer;
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.actions.BiobankSessionAction;
import edu.ualberta.med.biobank.common.wrappers.actions.IfAction.Is;
import edu.ualberta.med.biobank.common.wrappers.base.ContainerPositionBaseWrapper;
import edu.ualberta.med.biobank.common.wrappers.checks.ContainerPositionAvailableCheck;
import edu.ualberta.med.biobank.common.wrappers.checks.ContainerPositionInBoundsCheck;
import edu.ualberta.med.biobank.model.ContainerPosition;
import gov.nih.nci.system.applicationservice.WritableApplicationService;
public class ContainerPositionWrapper extends ContainerPositionBaseWrapper {
public ContainerPositionWrapper(WritableApplicationService appService,
ContainerPosition wrappedObject) {
super(appService, wrappedObject);
}
public ContainerPositionWrapper(WritableApplicationService appService) {
super(appService);
}
@Override
public int compareTo(ModelWrapper<ContainerPosition> modelWrapper) {
if (modelWrapper instanceof ContainerPositionWrapper) {
return getContainer().compareTo(
((ContainerPositionWrapper) modelWrapper).getContainer());
}
return 0;
}
@Override
public String toString() {
return "[" + getRow() + ", " + getCol() + "] " //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ getContainer().toString();
}
@Override
public ContainerWrapper getParent() {
return getParentContainer();
}
@Override
protected void setParent(ContainerWrapper parent) {
setParentContainer(parent);
}
@Deprecated
@Override
protected void addPersistTasks(TaskList tasks) {
tasks.add(check().notNull(ContainerPositionPeer.CONTAINER));
super.addPersistTasks(tasks);
BiobankSessionAction checkPosition =
new ContainerPositionAvailableCheck<ContainerPosition>(
this, ContainerPositionPeer.PARENT_CONTAINER);
tasks.add(check().ifProperty(ContainerPositionPeer.PARENT_CONTAINER,
Is.NOT_NULL, checkPosition));
BiobankSessionAction checkBounds =
new ContainerPositionInBoundsCheck<ContainerPosition>(
this, ContainerPositionPeer.PARENT_CONTAINER);
tasks.add(check().ifProperty(ContainerPositionPeer.PARENT_CONTAINER,
Is.NOT_NULL, checkBounds));
tasks.persist(this, ContainerPositionPeer.CONTAINER);
}
}