瀏覽代碼

Added one more factory method, for the rerouting case

peter_backlund 18 年之前
父節點
當前提交
7437d802df
共有 1 個文件被更改,包括 21 次插入4 次删除
  1. 21
    4
      dddsample/src/main/java/se/citerus/dddsample/domain/model/cargo/RouteSpecification.java

+ 21
- 4
dddsample/src/main/java/se/citerus/dddsample/domain/model/cargo/RouteSpecification.java 查看文件

@@ -10,7 +10,8 @@ import se.citerus.dddsample.domain.model.location.Location;
10 10
 import java.util.Date;
11 11
 
12 12
 /**
13
- * Route specification
13
+ * Route specification.
14
+ * 
14 15
  */
15 16
 public class RouteSpecification implements ValueObject<RouteSpecification>, Specification<Itinerary> {
16 17
   private Location origin;
@@ -18,10 +19,9 @@ public class RouteSpecification implements ValueObject<RouteSpecification>, Spec
18 19
   private Date arrivalDeadline;
19 20
 
20 21
   /**
21
-   * Factory method.
22
+   * Factory for creatig a route specification for a cargo, from cargo
23
+   * origin to cargo destination. Use for initial routing.
22 24
    *
23
-   * TODO just a suggestion - could be useful with RouteSpecification.witinOneWeek(cargo) etc
24
-   * 
25 25
    * @param cargo cargo
26 26
    * @param arrivalDeadline arrival deadline
27 27
    * @return A route specification for this cargo and arrival deadline
@@ -33,6 +33,23 @@ public class RouteSpecification implements ValueObject<RouteSpecification>, Spec
33 33
     return new RouteSpecification(cargo.origin(), cargo.destination(), arrivalDeadline);
34 34
   }
35 35
 
36
+  /**
37
+   * Factory for creating a route specfication from an explicit destination,
38
+   * for rerouting a cargo.
39
+   *
40
+   * @param origin
41
+   * @param cargo
42
+   * @param arrivalDeadline
43
+   * @return
44
+   */
45
+  public static RouteSpecification fromLocation(Location origin, Cargo cargo, Date arrivalDeadline) {
46
+    Validate.notNull(origin);
47
+    Validate.notNull(cargo);
48
+    Validate.notNull(arrivalDeadline);
49
+
50
+    return new RouteSpecification(origin, cargo.destination(), arrivalDeadline);
51
+  }
52
+
36 53
   private RouteSpecification(Location origin, Location destination, Date arrivalDeadline) {
37 54
     this.origin = origin;
38 55
     this.destination = destination;