@Override public final TimeWindow getPickupTimeWindow() { return dto.getPickupTimeWindow(); }
@Override public JsonElement doSerialize(ParcelDTO src, Type typeOfSrc, JsonSerializationContext context) { final JsonArray arr = new JsonArray(); arr.add(context.serialize(src.getPickupLocation())); arr.add(context.serialize(src.getDeliveryLocation())); arr.add(context.serialize(src.getPickupTimeWindow(), TimeWindow.class)); arr.add( context.serialize(src.getDeliveryTimeWindow(), TimeWindow.class)); arr.add(context.serialize(src.getNeededCapacity())); arr.add(context.serialize(src.getOrderAnnounceTime())); arr.add(context.serialize(src.getPickupDuration())); arr.add(context.serialize(src.getDeliveryDuration())); return arr; } }
@Override public JsonElement doSerialize(ParcelDTO src, Type typeOfSrc, JsonSerializationContext context) { final JsonArray arr = new JsonArray(); arr.add(context.serialize(src.getPickupLocation())); arr.add(context.serialize(src.getDeliveryLocation())); arr.add(context.serialize(src.getPickupTimeWindow(), TimeWindow.class)); arr.add( context.serialize(src.getDeliveryTimeWindow(), TimeWindow.class)); arr.add(context.serialize(src.getNeededCapacity())); arr.add(context.serialize(src.getOrderAnnounceTime())); arr.add(context.serialize(src.getPickupDuration())); arr.add(context.serialize(src.getDeliveryDuration())); return arr; } }
@Override public int compare(Visit o1, Visit o2) { final boolean is1pv = o1 instanceof ParcelVisit; final boolean is2pv = o2 instanceof ParcelVisit; if (!is1pv && !is2pv) { return 0; } else if (!is1pv) { return -1; } else if (!is2pv) { return 1; } // is1pv && is2pv final ParcelDTO p1 = ((ParcelVisit) o1).getParcel().getDto(); final ParcelDTO p2 = ((ParcelVisit) o2).getParcel().getDto(); if (p1.equals(p2)) { return 0; } return ComparisonChain.start() // small time windows are more difficult, therefore: reverse ordering .compare( p1.getPickupTimeWindow().length() + p1.getDeliveryTimeWindow().length(), p2.getPickupTimeWindow().length() + p2.getDeliveryTimeWindow().length(), Ordering.natural().reverse()) .result(); }
@Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof ParcelDTO) { ParcelDTO that = (ParcelDTO) o; return (this.pickupLocation.equals(that.getPickupLocation())) && (this.deliveryLocation.equals(that.getDeliveryLocation())) && (this.pickupTimeWindow.equals(that.getPickupTimeWindow())) && (this.deliveryTimeWindow.equals(that.getDeliveryTimeWindow())) && (Double.doubleToLongBits(this.neededCapacity) == Double.doubleToLongBits(that.getNeededCapacity())) && (this.orderAnnounceTime == that.getOrderAnnounceTime()) && (this.pickupDuration == that.getPickupDuration()) && (this.deliveryDuration == that.getDeliveryDuration()); } return false; }
Builder(ParcelDTO dto) { pickupLocation = dto.getPickupLocation(); deliveryLocation = dto.getDeliveryLocation(); pickupTimeWindow = dto.getPickupTimeWindow(); deliveryTimeWindow = dto.getDeliveryTimeWindow(); neededCapacity = dto.getNeededCapacity(); orderAnnounceTime = dto.getOrderAnnounceTime(); pickupDuration = dto.getPickupDuration(); deliveryDuration = dto.getDeliveryDuration(); toString = null; }
? cur.getDto().getPickupTimeWindow().begin() : cur.getDto().getDeliveryTimeWindow().begin()) - time.getTime();
? cur.getDto().getPickupTimeWindow().begin() : cur.getDto().getDeliveryTimeWindow().begin()) - time.getTime();
static void checkParcelTWStrictness(AddParcelEvent event, TravelTimes travelTimes) { final long firstDepartureTime = event.getParcelDTO() .getPickupTimeWindow().begin() + event.getParcelDTO().getPickupDuration(); final long latestDepartureTime = event.getParcelDTO() .getPickupTimeWindow().end() + event.getParcelDTO().getPickupDuration(); final double travelTime = travelTimes.getShortestTravelTime( event.getParcelDTO().getPickupLocation(), event.getParcelDTO().getDeliveryLocation()); checkArgument( event.getParcelDTO().getDeliveryTimeWindow().begin() >= firstDepartureTime + travelTime, "The begin of the delivery time window (%s) is too early, " + "should be >= %s.", event.getParcelDTO().getDeliveryTimeWindow(), firstDepartureTime + travelTime); checkArgument( latestDepartureTime + travelTime <= event.getParcelDTO() .getDeliveryTimeWindow().end(), "The end of the pickup time window %s is too late, or end of delivery " + "is too early.", event.getParcelDTO().getPickupTimeWindow().end()); }
static ImmutableList<LoadPart> measureLoad(AddParcelEvent event, TravelTimes tt) { checkArgument( event.getParcelDTO().getPickupTimeWindow().begin() <= event.getParcelDTO() .getDeliveryTimeWindow().begin(), "Delivery TW begin may not be before pickup TW begin."); checkArgument( event.getParcelDTO().getPickupTimeWindow().end() <= event.getParcelDTO() .getDeliveryTimeWindow().end(), "Delivery TW end may not be before pickup TW end."); final long pickupLb = event.getParcelDTO().getPickupTimeWindow().begin(); final long pickupUb = event.getParcelDTO().getPickupTimeWindow().end() + event.getParcelDTO().getPickupDuration(); final double pickupLoad = event.getParcelDTO().getPickupDuration()