Skip to content

Commit 0969532

Browse files
committed
A few minor refactorings.
1 parent d4765cd commit 0969532

File tree

3 files changed

+30
-40
lines changed

3 files changed

+30
-40
lines changed

dddsample/tracking/core/src/main/java/se/citerus/dddsample/tracking/core/domain/model/cargo/Cargo.java

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
import static se.citerus.dddsample.tracking.core.domain.model.cargo.RoutingStatus.NOT_ROUTED;
1414
import static se.citerus.dddsample.tracking.core.domain.model.cargo.TransportStatus.ONBOARD_CARRIER;
15-
import static se.citerus.dddsample.tracking.core.domain.model.handling.HandlingEvent.Type.UNLOAD;
1615
import static se.citerus.dddsample.tracking.core.domain.model.shared.HandlingActivity.customsIn;
1716

1817
/**
@@ -106,18 +105,19 @@ public Date estimatedTimeOfArrival() {
106105
}
107106

108107
/**
109-
* @return Next expected activity.
108+
* @return Next expected activity. If the cargo is not on route (misdirected and/or misrouted),
109+
* it cannot be determined and null is returned.
110110
*/
111111
public HandlingActivity nextExpectedActivity() {
112112
if (!delivery.isOnRoute(itinerary, routeSpecification)) {
113113
return null;
114114
}
115115

116-
if (unloadedInCustomsClearancePoint()) {
116+
if (delivery.isUnloadedIn(customsClearancePoint())) {
117117
return customsIn(customsClearancePoint());
118+
} else {
119+
return itinerary.activitySucceding(delivery.mostRecentPhysicalHandlingActivity());
118120
}
119-
120-
return itinerary.activitySucceding(delivery.mostRecentPhysicalHandlingActivity());
121121
}
122122

123123
/**
@@ -228,7 +228,7 @@ public boolean isReadyToClaim() {
228228
if (customsClearancePoint().sameAs(routeSpecification.destination())) {
229229
return customsIn(customsClearancePoint()).sameValueAs(mostRecentHandlingActivity());
230230
} else {
231-
return delivery.onTheGroundAtDestination(routeSpecification);
231+
return delivery.isUnloadedIn(routeSpecification.destination());
232232
}
233233
}
234234

@@ -287,12 +287,6 @@ private boolean succedsMostRecentActivity(final HandlingActivity newHandlingActi
287287
}
288288
}
289289

290-
private boolean unloadedInCustomsClearancePoint() {
291-
return mostRecentHandlingActivity() != null &&
292-
mostRecentHandlingActivity().location().sameAs(customsClearancePoint()) &&
293-
mostRecentHandlingActivity().type() == UNLOAD;
294-
}
295-
296290
@Override
297291
public String toString() {
298292
return trackingId + " (" + routeSpecification + ")";

dddsample/tracking/core/src/main/java/se/citerus/dddsample/tracking/core/domain/model/cargo/Delivery.java

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ class Delivery extends ValueObjectSupport<Delivery> {
2222
private final HandlingActivity mostRecentPhysicalHandlingActivity;
2323
private final Date lastUpdatedOn;
2424

25+
/**
26+
* @return Initial delivery, before any handling has taken place
27+
*/
28+
static Delivery beforeHandling() {
29+
return new Delivery(null, null);
30+
}
31+
2532
/**
2633
* Derives a new delivery when a cargo has been handled.
2734
*
@@ -45,13 +52,6 @@ Delivery onRouting() {
4552
return new Delivery(mostRecentHandlingActivity, mostRecentPhysicalHandlingActivity);
4653
}
4754

48-
/**
49-
* @return Initial delivery, before any handling has taken place
50-
*/
51-
static Delivery beforeHandling() {
52-
return new Delivery(null, null);
53-
}
54-
5555
private Delivery(final HandlingActivity mostRecentHandlingActivity,
5656
final HandlingActivity mostRecentPhysicalHandlingActivity) {
5757
this.mostRecentHandlingActivity = mostRecentHandlingActivity;
@@ -119,16 +119,6 @@ boolean isMisdirected(final Itinerary itinerary) {
119119
return hasBeenHandled() && !itinerary.isExpectedActivity(mostRecentPhysicalHandlingActivity);
120120
}
121121

122-
/**
123-
* @return True if the cargo has been unloaded at the final destination.
124-
* @param routeSpecification route specification
125-
*/
126-
boolean onTheGroundAtDestination(final RouteSpecification routeSpecification) {
127-
return hasBeenHandled() &&
128-
mostRecentHandlingActivity.type() == UNLOAD &&
129-
routeSpecification.destination().sameAs(mostRecentHandlingActivity.location());
130-
}
131-
132122
/**
133123
* @return Routing status.
134124
* @param itinerary itinerary
@@ -168,4 +158,9 @@ boolean isOnRoute(final Itinerary itinerary, final RouteSpecification routeSpeci
168158
mostRecentHandlingActivity = mostRecentPhysicalHandlingActivity = null;
169159
}
170160

161+
boolean isUnloadedIn(Location customsClearancePoint) {
162+
return hasBeenHandled() &&
163+
mostRecentHandlingActivity.location().sameAs(customsClearancePoint) &&
164+
mostRecentHandlingActivity().type() == UNLOAD;
165+
}
171166
}

dddsample/tracking/core/src/test/java/se/citerus/dddsample/tracking/core/domain/model/cargo/DeliveryTest.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
11
package se.citerus.dddsample.tracking.core.domain.model.cargo;
22

33
import junit.framework.TestCase;
4+
import se.citerus.dddsample.tracking.core.domain.model.location.Location;
5+
import se.citerus.dddsample.tracking.core.domain.model.shared.HandlingActivity;
6+
import se.citerus.dddsample.tracking.core.domain.model.voyage.Voyage;
7+
8+
import java.util.Date;
9+
410
import static org.hamcrest.core.Is.is;
511
import static org.junit.Assert.assertThat;
612
import static se.citerus.dddsample.tracking.core.application.util.DateTestUtil.toDate;
713
import static se.citerus.dddsample.tracking.core.domain.model.cargo.RoutingStatus.MISROUTED;
814
import static se.citerus.dddsample.tracking.core.domain.model.cargo.RoutingStatus.ROUTED;
915
import static se.citerus.dddsample.tracking.core.domain.model.cargo.TransportStatus.*;
1016
import static se.citerus.dddsample.tracking.core.domain.model.handling.HandlingEvent.Type.*;
11-
import se.citerus.dddsample.tracking.core.domain.model.location.Location;
1217
import static se.citerus.dddsample.tracking.core.domain.model.location.SampleLocations.*;
13-
import se.citerus.dddsample.tracking.core.domain.model.shared.HandlingActivity;
1418
import static se.citerus.dddsample.tracking.core.domain.model.shared.HandlingActivity.customsIn;
1519
import static se.citerus.dddsample.tracking.core.domain.model.shared.HandlingActivity.loadOnto;
1620
import static se.citerus.dddsample.tracking.core.domain.model.voyage.SampleVoyages.*;
17-
import se.citerus.dddsample.tracking.core.domain.model.voyage.Voyage;
18-
19-
import java.util.Date;
2021

2122
public class DeliveryTest extends TestCase {
2223

@@ -61,7 +62,7 @@ public void testOnHandling() {
6162
public void testDerivedFromRouteSpecificationAndItinerary() throws Exception {
6263
assertEquals(ROUTED, delivery.routingStatus(itinerary, routeSpecification));
6364
assertEquals(Voyage.NONE, delivery.currentVoyage());
64-
assertFalse(delivery.onTheGroundAtDestination(routeSpecification));
65+
assertFalse(delivery.isUnloadedIn(routeSpecification.destination()));
6566
assertEquals(Location.NONE, delivery.lastKnownLocation());
6667
assertEquals(NOT_RECEIVED, delivery.transportStatus());
6768
assertTrue(delivery.lastUpdatedOn().before(new Date()));
@@ -79,7 +80,7 @@ public void testUpdateOnHandlingHappyPath() {
7980
assertEquals(IN_PORT, newDelivery.transportStatus());
8081

8182
// Changed on handling and/or (re-)routing
82-
assertFalse(newDelivery.onTheGroundAtDestination(routeSpecification));
83+
assertFalse(newDelivery.isUnloadedIn(routeSpecification.destination()));
8384

8485
// Changed on (re-)routing
8586
assertEquals(ROUTED, newDelivery.routingStatus(itinerary, routeSpecification));
@@ -96,7 +97,7 @@ public void testUpdateOnHandlingHappyPath() {
9697
assertEquals(HANGZOU, newDelivery.lastKnownLocation());
9798
assertEquals(ONBOARD_CARRIER, newDelivery.transportStatus());
9899

99-
assertFalse(newDelivery.onTheGroundAtDestination(routeSpecification));
100+
assertFalse(newDelivery.isUnloadedIn(routeSpecification.destination()));
100101

101102
assertEquals(ROUTED, newDelivery.routingStatus(itinerary, routeSpecification));
102103

@@ -113,7 +114,7 @@ public void testUpdateOnHandlingHappyPath() {
113114
assertEquals(STOCKHOLM, newDelivery.lastKnownLocation());
114115
assertEquals(IN_PORT, newDelivery.transportStatus());
115116

116-
assertTrue(newDelivery.onTheGroundAtDestination(routeSpecification));
117+
assertTrue(newDelivery.isUnloadedIn(routeSpecification.destination()));
117118

118119
assertEquals(ROUTED, newDelivery.routingStatus(itinerary, routeSpecification));
119120

@@ -128,7 +129,7 @@ public void testUpdateOnHandlingHappyPath() {
128129
assertEquals(STOCKHOLM, newDelivery.lastKnownLocation());
129130
assertEquals(CLAIMED, newDelivery.transportStatus());
130131

131-
assertFalse(newDelivery.onTheGroundAtDestination(routeSpecification));
132+
assertFalse(newDelivery.isUnloadedIn(routeSpecification.destination()));
132133

133134
assertEquals(ROUTED, newDelivery.routingStatus(itinerary, routeSpecification));
134135

@@ -146,7 +147,7 @@ public void testUpdateOnHandlingWhenMisdirected() {
146147

147148
// Next handling activity is undefined. Need a new itinerary to know what to do.
148149

149-
assertFalse(newDelivery.onTheGroundAtDestination(routeSpecification));
150+
assertFalse(newDelivery.isUnloadedIn(routeSpecification.destination()));
150151

151152
assertEquals(ROUTED, newDelivery.routingStatus(itinerary, routeSpecification));
152153

0 commit comments

Comments
 (0)