@Override public Collection<Parcel> getParcels(ParcelState state) { return delegate.getParcels(state); }
@Override public Collection<Parcel> getParcels(ParcelState... states) { return delegate.getParcels(states); }
@Override public GlobalStateObject convert(SolveArgs args) { final Collection<Vehicle> vs = vehicles.isEmpty() ? roadModel .getObjectsOfType(Vehicle.class) : vehicles; final Set<Parcel> ps = args.parcels.isPresent() ? args.parcels.get() : ImmutableSet.copyOf(pdpModel.getParcels(ANNOUNCED, AVAILABLE, PICKING_UP)); return Solvers.convert(roadModel, pdpModel, vs, ps, time(), args.currentRoutes, args.fixRoutes); }
Optional<Parcel> findTarget() { final Collection<Parcel> available = pm.get().getParcels( ParcelState.AVAILABLE); final ImmutableSet<Parcel> contents = pm.get().getContents(this); if (available.isEmpty() && contents.isEmpty()) { return Optional.absent(); } boolean pickup; if (!available.isEmpty() && !contents.isEmpty()) { pickup = rng.get().nextBoolean(); } else { pickup = !available.isEmpty(); } if (pickup) { return Optional.of(newArrayList(available).get( rng.get().nextInt(available.size()))); } return Optional.of(contents.asList().get( rng.get().nextInt(contents.size()))); }
@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); } } }
@Override protected void tickImpl(TimeLapse time) { final Parcel p = getPDPModel().getParcels(ParcelState.values()) .iterator().next(); getRoadModel().moveTo(this, p, time); if (getRoadModel().equalPosition(this, p) && time.hasTimeLeft()) { getPDPModel().pickup(this, p, time); } }
@Test public void addPackageIn() { assertTrue(model.getParcels(ParcelState.AVAILABLE).isEmpty()); final Depot d = new TestDepot(10); final Parcel p1 = Parcel.builder(new Point(0, 0), new Point(0, 0)) .neededCapacity(1d) .build(); model.register(d); model.register(p1); rm.addObjectAt(d, new Point(0, 0)); model.addParcelIn(d, p1); assertEquals(1, model.getContents(d).size()); assertTrue(model.getContents(d).contains(p1)); }
final Collection<Parcel> parcels = pdpModel.getParcels( ParcelState.AVAILABLE, ParcelState.ANNOUNCED); for (final Parcel parcel : parcels) {
final Collection<Parcel> allParcels = pm.getParcels(ParcelState.values()); final Collection<Parcel> deliveredParcels = pm.getParcels(ParcelState.DELIVERED);
while (time.hasTimeLeft()) { final Set<Parcel> parcels = newHashSet(pdpModel .getParcels(ParcelState.AVAILABLE)); if (!pdpModel.getContents(vehicle).isEmpty()) { parcels.addAll(pdpModel.getContents(vehicle));
assertEquals(ParcelState.AVAILABLE, model.getParcelState(pack1)); assertEquals(VehicleState.IDLE, model.getVehicleState(truck)); assertEquals(newHashSet(pack1), model.getParcels(ParcelState.AVAILABLE)); assertTrue(model.getParcels(ParcelState.AVAILABLE).isEmpty()); assertEquals(ParcelState.AVAILABLE, model.getParcelState(pack2)); assertEquals(VehicleState.IDLE, model.getVehicleState(truck)); assertEquals(newHashSet(pack2), model.getParcels(ParcelState.AVAILABLE)); assertTrue(model.getParcels(ParcelState.AVAILABLE).isEmpty());