package org.sculptor.dddsample.cargo.domain; import org.apache.commons.lang.Validate; import org.joda.time.DateTime; import org.sculptor.dddsample.common.Specification; import org.sculptor.dddsample.location.domain.Location; /** * * Value object representing RouteSpecification. * This class is responsible for the domain object related * business logic for RouteSpecification. Properties and associations are * implemented in the generated base class {@link org.sculptor.dddsample.cargo.domain.RouteSpecificationBase}. */ public class RouteSpecification extends RouteSpecificationBase implements Specification<Itinerary>{ private static final long serialVersionUID = 1L; /** * Factory for creatig a route specification for a cargo, from cargo * origin to cargo destination. Use for initial routing. * * @param cargo cargo * @param arrivalDeadline arrival deadline * @return A route specification for this cargo and arrival deadline */ public static RouteSpecification forCargo(Cargo cargo, DateTime arrivalDeadline) { Validate.notNull(cargo); Validate.notNull(arrivalDeadline); return new RouteSpecification(arrivalDeadline, cargo.getOrigin(), cargo.getDestination()); } protected RouteSpecification() { } RouteSpecification(DateTime arrivalDeadline, Location origin, Location destination) { super(arrivalDeadline, origin, destination); } public boolean isSatisfiedBy(Itinerary itinerary) { // Stub implementation for now return true; } }