package net.java.cargotracker.interfaces.booking.facade.dto; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; /** * DTO for registering and routing a cargo. */ public class CargoRoute implements Serializable { private static final long serialVersionUID = 1L; private final String trackingId; private final String origin; private final String finalDestination; private final Date arrivalDeadline; private final boolean misrouted; private final List<Leg> legs; private final boolean claimed; private final String lastKnownLocation; private final String transportStatus; private String nextLocation; public CargoRoute(String trackingId, String origin, String finalDestination, Date arrivalDeadline, boolean misrouted, boolean claimed, String lastKnownLocation, String transportStatus) { this.trackingId = trackingId; this.origin = origin; this.finalDestination = finalDestination; this.arrivalDeadline = arrivalDeadline; this.misrouted = misrouted; this.claimed = claimed; this.lastKnownLocation = lastKnownLocation; this.transportStatus = transportStatus; this.legs = new ArrayList<>(); } public String getTrackingId() { return trackingId; } public String getOrigin() { return origin; } public String getFinalDestination() { return finalDestination; } public void addLeg(String voyageNumber, String from, String to, Date loadTime, Date unloadTime) { legs.add(new Leg(voyageNumber, from, to, loadTime, unloadTime)); } public List<Leg> getLegs() { return Collections.unmodifiableList(legs); } public boolean isMisrouted() { return misrouted; } public boolean isRouted() { return !legs.isEmpty(); } public Date getArrivalDeadline() { return arrivalDeadline; } public boolean isClaimed() { return claimed; } public String getLastKnownLocation() { return this.lastKnownLocation; } public String getTransportStatus() { return this.transportStatus; } public String getNextLocation() { return this.nextLocation; } }