@Override public void unclaim(Parcel p) { LOGGER.info("{} unclaim {}", this, p); checkArgument(claimedParcels.contains(p), "Can not unclaim %s because it is not claimed.", p); // check that parcel is still assignable to another bidder checkArgument( // it may be available or announced pdpModel.get().getParcelState(p) == ParcelState.AVAILABLE || pdpModel.get().getParcelState(p) == ParcelState.ANNOUNCED // otherwise, we must make sure that 'our' vehicle is not servicing it // i.e. if our vehicle is idle: || pdpModel.get().getVehicleState(vehicle.get()) == VehicleState.IDLE // or, if our vehicle is not idle, that it is not servicing the parcel // we are trying to get rid of: || pdpModel.get().getVehicleActionInfo(vehicle.get()).getParcel() != p, "%s: Parcel (%s) can not be unclaimed because it is being serviced.", this, p, pdpModel.get().getParcelState(p)); claimedParcels.remove(p); }
? pdpModel.get().getVehicleActionInfo(vehicle.get()).getParcel() : destination; if (!route.peek().equals(next)) {
assertEquals(VehicleState.PICKING_UP, pm.getVehicleState(d2)); assertThat(pm.getVehicleActionInfo(d2).getParcel()).isSameAs(p3);
assertThat(pm.getVehicleState(d)).isSameAs(VehicleState.PICKING_UP); assertThat(pm.getVehicleState(d2)).isSameAs(VehicleState.PICKING_UP); assertThat(pm.getVehicleActionInfo(d).getParcel()).isSameAs(p1); assertThat(pm.getVehicleActionInfo(d2).getParcel()).isSameAs(p4); assertThat(d.getRoute()).containsExactly(p1, p1); assertThat(d2.getRoute()).containsExactly(p4, p4);
if (!isIdle) { final VehicleParcelActionInfo vpai = pm.getVehicleActionInfo(vehicle); destination = vpai.getParcel(); remainingServiceTime = vpai.timeNeeded(); } else if (!rm.isVehicleDiversionAllowed()) {
@Override public void renderDynamic(GC gc, ViewPort vp, long time) { uiSchema.initialize(gc.getDevice()); final Collection<Parcel> parcels = pdpModel.getParcels( ParcelState.values()); final Image image = uiSchema.getImage(Box.class); checkState(image != null); synchronized (pdpModel) { final Set<Vehicle> vehicles = pdpModel.getVehicles(); final Map<Parcel, Vehicle> mapping = new LinkedHashMap<>(); for (final Vehicle v : vehicles) { for (final Parcel p : pdpModel.getContents(v)) { mapping.put(p, v); } if (pdpModel.getVehicleState(v) != VehicleState.IDLE) { final PDPModel.VehicleParcelActionInfo vpai = pdpModel .getVehicleActionInfo(v); mapping.put(vpai.getParcel(), vpai.getVehicle()); } } for (final Parcel p : parcels) { drawBox(p, gc, vp, time, image, mapping); } } }
@Override public void renderDynamic(GC gc, ViewPort vp, long time) { uiSchema.initialize(gc.getDevice()); final Collection<Parcel> parcels = pdpModel.getParcels( ParcelState.values()); final Image image = uiSchema.getImage(Box.class); checkState(image != null); synchronized (pdpModel) { final Set<Vehicle> vehicles = pdpModel.getVehicles(); final Map<Parcel, Vehicle> mapping = new LinkedHashMap<>(); for (final Vehicle v : vehicles) { for (final Parcel p : pdpModel.getContents(v)) { mapping.put(p, v); } if (pdpModel.getVehicleState(v) != VehicleState.IDLE) { final PDPModel.VehicleParcelActionInfo vpai = pdpModel .getVehicleActionInfo(v); mapping.put(vpai.getParcel(), vpai.getVehicle()); } } for (final Parcel p : parcels) { drawBox(p, gc, vp, time, image, mapping); } } }
boolean isPickingUp(Parcel p) { return getPDPModel().getVehicleState(this) == VehicleState.PICKING_UP && getPDPModel().getVehicleActionInfo(this).getParcel().equals(p); }
boolean isPickingUp(Parcel p) { return getPDPModel().getVehicleState(this) == VehicleState.PICKING_UP && getPDPModel().getVehicleActionInfo(this).getParcel().equals(p); }