package edu.ualberta.med.biobank.common.action.scanprocess;
import edu.ualberta.med.biobank.common.util.NotAProxy;
public enum CellInfoStatus implements NotAProxy {
NOT_INITIALIZED,
INITIALIZED,
FULL,
FREE_LOCATIONS,
EMPTY,
FILLED,
NEW,
MOVED,
MISSING,
ERROR,
NO_TYPE,
TYPE,
IN_SHIPMENT_EXPECTED,
IN_SHIPMENT_ADDED,
DUPLICATE_SCAN,
IN_SHIPMENT_RECEIVED,
EXTRA;
private CellInfoStatus() {
}
public CellInfoStatus mergeWith(CellInfoStatus newStatus) {
switch (this) {
case EMPTY:
return newStatus;
case FILLED:
case MOVED:
if (newStatus == MISSING || newStatus == ERROR) {
return newStatus;
}
return this;
case ERROR:
return ERROR;
case MISSING:
if (newStatus == ERROR) {
return ERROR;
}
return MISSING;
default:
break;
}
return EMPTY;
}
}