package edu.ualberta.med.biobank.common.action.scanprocess.data; import java.util.HashMap; import java.util.List; import java.util.Map; import edu.ualberta.med.biobank.common.util.ItemState; import edu.ualberta.med.biobank.common.wrappers.CenterWrapper; import edu.ualberta.med.biobank.common.wrappers.DispatchWrapper; import edu.ualberta.med.biobank.common.wrappers.ItemWrapper; import edu.ualberta.med.biobank.common.wrappers.RequestWrapper; import edu.ualberta.med.biobank.model.Container; public class ShipmentProcessInfo extends AbstractProcessPalletInfo { private static final long serialVersionUID = 1L; // used for dispatch sending only private Integer senderId; private Map<Integer, ItemState> currentDispatchSpecimenIds; private boolean errorIfAlreadyAdded; public ShipmentProcessInfo(Container pallet, RequestWrapper request, boolean errorIfAlreadyAdded) { super(pallet == null ? null : pallet.getId()); init(request.getRequestSpecimenCollection(false), errorIfAlreadyAdded, null); } public ShipmentProcessInfo(Container pallet, DispatchWrapper dispatch, boolean errorIfAlreadyAdded) { super(pallet == null ? null : pallet.getId()); init(dispatch.getDispatchSpecimenCollection(false), errorIfAlreadyAdded, dispatch.getSenderCenter()); } private void init(List<? extends ItemWrapper> items, boolean errorIfAlreadyAdded, CenterWrapper<?> sender) { if (items != null) { currentDispatchSpecimenIds = new HashMap<Integer, ItemState>(); for (ItemWrapper iw : items) { currentDispatchSpecimenIds.put(iw.getSpecimen().getId(), iw.getSpecimenState()); } senderId = sender == null ? null : sender.getId(); } this.errorIfAlreadyAdded = errorIfAlreadyAdded; } public Map<Integer, ItemState> getCurrentDispatchSpecimenIds() { return currentDispatchSpecimenIds; } public Integer getSenderId() { return senderId; } public boolean isErrorIfAlreadyAdded() { return errorIfAlreadyAdded; } }