package net.java.cargotracker.interfaces.booking.facade;
import java.util.Date;
import java.util.List;
import net.java.cargotracker.interfaces.booking.facade.dto.CargoRoute;
import net.java.cargotracker.interfaces.booking.facade.dto.Location;
import net.java.cargotracker.interfaces.booking.facade.dto.RouteCandidate;
/**
* This facade shields the domain layer - model, services, repositories - from
* concerns about such things as the user interface and remoting.
*/
public interface BookingServiceFacade {
String bookNewCargo(String origin, String destination, Date arrivalDeadline);
CargoRoute loadCargoForRouting(String trackingId);
void assignCargoToRoute(String trackingId, RouteCandidate route);
void changeDestination(String trackingId, String destinationUnLocode);
List<RouteCandidate> requestPossibleRoutesForCargo(String trackingId);
List<Location> listShippingLocations();
List<CargoRoute> listAllCargos();
}