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); } } }
assertEquals(VehicleState.PICKING_UP, pm.getVehicleState(d)); assertEquals(ParcelState.PICKING_UP, pm.getParcelState(p1)); assertEquals(pm.getVehicleActionInfo(d).timeNeeded(), minute(2)); assertEquals(VehicleState.PICKING_UP, pm.getVehicleState(d)); assertEquals(ParcelState.PICKING_UP, pm.getParcelState(p1)); assertEquals(pm.getVehicleActionInfo(d).timeNeeded(), minute(1)); assertEquals(minute(2) + 10, pm.getVehicleActionInfo(d).timeNeeded()); assertEquals(minute(1) + 10, pm.getVehicleActionInfo(d).timeNeeded()); assertEquals(minute(0) + 10, pm.getVehicleActionInfo(d).timeNeeded());
final int x = vp.toCoordX(pos.x); final int y = vp.toCoordY(pos.y); final double percentage = 1d - vpai.timeNeeded() / (double) p.getPickupDuration(); final String text = (int) (percentage * MAX_PERC) + "%";
gc.drawText( state.toString() + " " + pdpModel.getVehicleActionInfo(v).timeNeeded(), x, y - STATE_TEXT_OFFSET);
final int x = vp.toCoordX(pos.x); final int y = vp.toCoordY(pos.y); final double percentage = 1d - vpai.timeNeeded() / (double) p.getPickupDuration(); final String text = (int) (percentage * MAX_PERC) + "%";
assertEquals(VehicleState.PICKING_UP, pm.getVehicleState(d2)); assertThat(pm.getVehicleActionInfo(d2).getParcel()).isSameAs(p3);
? pdpModel.get().getVehicleActionInfo(vehicle.get()).getParcel() : destination; if (!route.peek().equals(next)) {
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);
+ "it is %s.", parcelState, parcelState.isTransitionState() ? getPDPModel() .getVehicleActionInfo(this).timeNeeded() : null); final boolean isPickup = !parcelState.isPickedUp();
+ "it is %s.", parcelState, parcelState.isTransitionState() ? getPDPModel() .getVehicleActionInfo(this).timeNeeded() : null); final boolean isPickup = !parcelState.isPickedUp();
void checkVehicles(List<? extends TestVehicle> expected, ImmutableList<VehicleStateObject> states) { assertEquals(expected.size(), states.size()); for (int i = 0; i < expected.size(); i++) { final TestVehicle vehicle = expected.get(i); final VehicleDTO dto = vehicle.dto; final VehicleStateObject vs = states.get(i); assertEquals(dto.getAvailabilityTimeWindow(), vs.getDto().getAvailabilityTimeWindow()); assertEquals(dto.getCapacity(), vs.getDto().getCapacity()); assertEquals(dto.getSpeed(), vs.getDto().getSpeed(), 0); assertEquals(dto.getStartPosition(), vs.getDto().getStartPosition()); assertEquals(rm.getPosition(expected.get(i)), vs.getLocation()); final Parcel dest = rm.getDestinationToParcel(vehicle); if (dest == null) { assertFalse(vs.getDestination().isPresent()); } else { assertEquals(dest, vs.getDestination().get()); } if (pm.getVehicleState(vehicle) == VehicleState.IDLE) { assertEquals(0, vs.getRemainingServiceTime()); } else { assertEquals(pm.getVehicleActionInfo(vehicle).timeNeeded(), vs.getRemainingServiceTime()); } } }
@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 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); }
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); }