package edu.ualberta.med.biobank.forms.utils;
import java.util.ArrayList;
import java.util.List;
import edu.ualberta.med.biobank.common.util.DispatchSpecimenState;
import edu.ualberta.med.biobank.common.util.ItemState;
import edu.ualberta.med.biobank.common.wrappers.DispatchSpecimenWrapper;
import edu.ualberta.med.biobank.common.wrappers.DispatchWrapper;
import edu.ualberta.med.biobank.treeview.Node;
import edu.ualberta.med.biobank.treeview.TreeItemAdapter;
public class DispatchTableGroup extends TableGroup<DispatchWrapper> {
public DispatchTableGroup(DispatchSpecimenState ds, String alternateLabel,
DispatchWrapper dispatch) {
super(ds, alternateLabel, dispatch);
}
public DispatchTableGroup(DispatchSpecimenState ds, DispatchWrapper dispatch) {
super(ds, dispatch);
}
public static List<DispatchTableGroup> getGroupsForShipment(
DispatchWrapper ship) {
List<DispatchTableGroup> groups = new ArrayList<DispatchTableGroup>();
if (ship.isInCreationState()) {
groups.add(new DispatchTableGroup(DispatchSpecimenState.NONE,
"Added", ship));
} else {
groups.add(new DispatchTableGroup(DispatchSpecimenState.NONE,
"Non processed", ship));
}
if (ship.hasBeenReceived()) {
groups.add(new DispatchTableGroup(DispatchSpecimenState.RECEIVED,
ship));
groups
.add(new DispatchTableGroup(DispatchSpecimenState.EXTRA, ship));
}
if (ship.hasBeenReceived() || ship.isInTransitState()) {
groups.add(new DispatchTableGroup(DispatchSpecimenState.MISSING,
ship));
}
return groups;
}
@Override
public void createAdapterTree(ItemState state, DispatchWrapper request) {
List<DispatchSpecimenWrapper> cache = request.getMap().get(state);
List<Node> adapters = new ArrayList<Node>();
if (cache == null) {
switch (DispatchSpecimenState.getState(state.getId())) {
case NONE:
cache = request.getNonProcessedDispatchSpecimenCollection();
break;
case MISSING:
cache = request.getMissingDispatchSpecimens();
break;
case EXTRA:
cache = request.getExtraDispatchSpecimens();
break;
case RECEIVED:
cache = request.getReceivedDispatchSpecimens();
break;
}
}
for (DispatchSpecimenWrapper wrapper : cache) {
adapters.add(new TreeItemAdapter(null, wrapper));
numSpecimens++;
}
this.tops = adapters;
}
@Override
public void removeChild(Node o) {
// TODO Auto-generated method stub
}
}