@Override
public void addParcelIn(Container container, Parcel parcel) {
synchronized (this) {
checkArgument(!roadModel.containsObject(parcel),
"this parcel is already added to the roadmodel");
checkArgument(
parcelState.getKeys(parcel) == ParcelState.AVAILABLE,
"parcel must be registered and in AVAILABLE state, current state: %s",
parcelState.getKeys(parcel));
checkArgument(containerCapacities.containsKey(container),
"the parcel container is not registered");
checkArgument(roadModel.containsObject(container),
"the parcel container is not on the roadmodel");
final double newSize = containerContentsSize.get(container)
+ parcel.getNeededCapacity();
checkArgument(
newSize <= containerCapacities.get(container),
"parcel does not fit in container. Capacity is %s, current content "
+ "size is %s, new parcel size is %s",
containerCapacities.get(container),
containerContentsSize.get(container), parcel.getNeededCapacity());
containerContents.put(container, parcel);
containerContentsSize.put(container, newSize);
parcelState.put(ParcelState.IN_CARGO, parcel);
}
}