package net.java.cargotracker.interfaces.booking.facade.internal.assembler;
import net.java.cargotracker.domain.model.cargo.Cargo;
import net.java.cargotracker.domain.model.cargo.Leg;
import net.java.cargotracker.domain.model.cargo.RoutingStatus;
import net.java.cargotracker.domain.model.cargo.TransportStatus;
import net.java.cargotracker.interfaces.booking.facade.dto.CargoRoute;
// TODO Convert to a singleton?
public class CargoRouteDtoAssembler {
public CargoRoute toDto(Cargo cargo) {
CargoRoute dto = new CargoRoute(cargo.getTrackingId().getIdString(),
cargo.getOrigin().getName(), cargo.getRouteSpecification().getDestination()
.getName(), cargo.getRouteSpecification().getArrivalDeadline(),
cargo.getDelivery().getRoutingStatus()
.sameValueAs(RoutingStatus.MISROUTED),
cargo.getDelivery().getTransportStatus()
.sameValueAs(TransportStatus.CLAIMED),
cargo.getDelivery().getLastKnownLocation().getName(),
cargo.getDelivery().getTransportStatus().name()
);
for (Leg leg : cargo.getItinerary().getLegs()) {
dto.addLeg(leg.getVoyage().getVoyageNumber().getIdString(), leg
.getLoadLocation().getUnLocode().getIdString(), leg.getUnloadLocation()
.getUnLocode().getIdString(), leg.getLoadTime(), leg.getUnloadTime());
}
return dto;
}
}