peter_backlund 17 лет назад
Родитель
Сommit
e6ddcab7eb

+ 0
- 107
dddsample/src/main/java/se/citerus/dddsample/application/impl/BookingServiceImpl.java Просмотреть файл

@@ -1,107 +0,0 @@
1
-package se.citerus.dddsample.application.impl;
2
-
3
-import org.apache.commons.lang.Validate;
4
-import org.apache.commons.logging.Log;
5
-import org.apache.commons.logging.LogFactory;
6
-import org.springframework.transaction.annotation.Transactional;
7
-import se.citerus.dddsample.application.BookingService;
8
-import se.citerus.dddsample.application.CargoLockingService;
9
-import se.citerus.dddsample.application.CargoLockingServiceInMem;
10
-import se.citerus.dddsample.domain.model.cargo.*;
11
-import se.citerus.dddsample.domain.model.location.Location;
12
-import se.citerus.dddsample.domain.model.location.LocationRepository;
13
-import se.citerus.dddsample.domain.model.location.UnLocode;
14
-import se.citerus.dddsample.domain.service.RoutingService;
15
-
16
-import java.util.Collections;
17
-import java.util.Date;
18
-import java.util.List;
19
-
20
-public final class BookingServiceImpl implements BookingService {
21
-
22
-  private final RoutingService routingService;
23
-  private final CargoFactory cargoFactory;
24
-  private final CargoRepository cargoRepository;
25
-  private final LocationRepository locationRepository;
26
-  private final CargoLockingService cargoLockingService;
27
-  private final Log logger = LogFactory.getLog(getClass());
28
-
29
-  public BookingServiceImpl(final RoutingService routingService,
30
-                            final CargoFactory cargoFactory,
31
-                            final CargoRepository cargoRepository,
32
-                            final LocationRepository locationRepository) {
33
-    this.routingService = routingService;
34
-    this.cargoFactory = cargoFactory;
35
-    this.cargoRepository = cargoRepository;
36
-    this.locationRepository = locationRepository;
37
-    this.cargoLockingService = new CargoLockingServiceInMem();
38
-  }
39
-
40
-  @Override
41
-  @Transactional
42
-  public TrackingId bookNewCargo(final UnLocode originUnLocode,
43
-                                 final UnLocode destinationUnLocode,
44
-                                 final Date arrivalDeadline) {
45
-    final Cargo cargo = cargoFactory.newCargo(originUnLocode, destinationUnLocode, arrivalDeadline);
46
-    cargoRepository.store(cargo);
47
-    logger.info("Booked new cargo with tracking id " + cargo.trackingId().stringValue());
48
-
49
-    return cargo.trackingId();
50
-  }
51
-
52
-  @Override
53
-  @Transactional(readOnly = true)
54
-  public List<Itinerary> requestPossibleRoutesForCargo(final TrackingId trackingId) {
55
-    final Cargo cargo = cargoRepository.find(trackingId);
56
-
57
-    if (cargo == null) {
58
-      return Collections.emptyList();
59
-    }
60
-
61
-    return routingService.fetchRoutesForSpecification(cargo.routeSpecification());
62
-  }
63
-
64
-  @Override
65
-  @Transactional
66
-  public void assignCargoToRoute(final Itinerary itinerary, final TrackingId trackingId) {
67
-    cargoLockingService.assertLocked(trackingId);
68
-
69
-    final Cargo cargo = cargoRepository.find(trackingId);
70
-    Validate.notNull(cargo, "Can't assign itinerary to non-existing cargo " + trackingId);
71
-    cargo.assignToRoute(itinerary);
72
-    cargoRepository.store(cargo);
73
-
74
-    logger.info("Assigned cargo " + trackingId + " to new route");
75
-
76
-    cargoLockingService.unlock(trackingId);
77
-  }
78
-
79
-  @Override
80
-  @Transactional
81
-  public void changeDestination(final TrackingId trackingId, final UnLocode unLocode) {
82
-    cargoLockingService.assertLocked(trackingId);
83
-
84
-    final Cargo cargo = cargoRepository.find(trackingId);
85
-    Validate.notNull(cargo, "Can't change destination of non-existing cargo " + trackingId);
86
-    final Location newDestination = locationRepository.find(unLocode);
87
-
88
-    final RouteSpecification routeSpecification = cargo.routeSpecification().withDestination(newDestination);
89
-    cargo.specifyNewRoute(routeSpecification);
90
-
91
-    cargoRepository.store(cargo);
92
-    logger.info("Changed destination for cargo " + trackingId + " to " + routeSpecification.destination());
93
-
94
-    cargoLockingService.unlock(trackingId);
95
-  }
96
-
97
-  @Override
98
-  @Transactional(readOnly = true)
99
-  public Cargo loadCargoForRouting(final TrackingId trackingId) {
100
-    final Cargo cargo = cargoRepository.find(trackingId);
101
-    if (cargo != null) {
102
-      cargoLockingService.lock(trackingId);
103
-    }
104
-    return cargo;
105
-  }
106
-
107
-}

+ 0
- 61
dddsample/src/main/java/se/citerus/dddsample/application/impl/HandlingEventServiceImpl.java Просмотреть файл

@@ -1,61 +0,0 @@
1
-package se.citerus.dddsample.application.impl;
2
-
3
-import org.apache.commons.logging.Log;
4
-import org.apache.commons.logging.LogFactory;
5
-import org.springframework.transaction.annotation.Transactional;
6
-import se.citerus.dddsample.application.HandlingEventService;
7
-import se.citerus.dddsample.application.event.SystemEvents;
8
-import se.citerus.dddsample.domain.model.cargo.TrackingId;
9
-import se.citerus.dddsample.domain.model.handling.CannotCreateHandlingEventException;
10
-import se.citerus.dddsample.domain.model.handling.HandlingEvent;
11
-import se.citerus.dddsample.domain.model.handling.HandlingEventFactory;
12
-import se.citerus.dddsample.domain.model.handling.HandlingEventRepository;
13
-import se.citerus.dddsample.domain.model.location.UnLocode;
14
-import se.citerus.dddsample.domain.model.voyage.VoyageNumber;
15
-
16
-import java.util.Date;
17
-
18
-public final class HandlingEventServiceImpl implements HandlingEventService {
19
-
20
-  private final SystemEvents systemEvents;
21
-  private final HandlingEventRepository handlingEventRepository;
22
-  private final HandlingEventFactory handlingEventFactory;
23
-  private final Log logger = LogFactory.getLog(HandlingEventServiceImpl.class);
24
-
25
-  public HandlingEventServiceImpl(final HandlingEventRepository handlingEventRepository,
26
-                                  final SystemEvents systemEvents,
27
-                                  final HandlingEventFactory handlingEventFactory) {
28
-    this.handlingEventRepository = handlingEventRepository;
29
-    this.systemEvents = systemEvents;
30
-    this.handlingEventFactory = handlingEventFactory;
31
-  }
32
-
33
-  @Override
34
-  @Transactional(rollbackFor = CannotCreateHandlingEventException.class)
35
-  public void registerHandlingEvent(final Date completionTime,
36
-                                    final TrackingId trackingId,
37
-                                    final VoyageNumber voyageNumber,
38
-                                    final UnLocode unLocode,
39
-                                    final HandlingEvent.Type type) throws CannotCreateHandlingEventException {
40
-
41
-    final Date registrationTime = new Date();
42
-    /* Using a factory to create a HandlingEvent (aggregate). This is where
43
-       it is determined wether the incoming data, the attempt, actually is capable
44
-       of representing a real handling event. */
45
-    final HandlingEvent event = handlingEventFactory.createHandlingEvent(
46
-      registrationTime, completionTime, trackingId, voyageNumber, unLocode, type
47
-    );
48
-
49
-    /* Store the new handling event, which updates the persistent
50
-       state of the handling event aggregate (but not the cargo aggregate -
51
-       that happens asynchronously!)
52
-     */
53
-    handlingEventRepository.store(event);
54
-
55
-    /* Publish an event stating that a cargo has been handled. */
56
-    systemEvents.notifyOfHandlingEvent(event);
57
-
58
-    logger.info("Registered handling event");
59
-  }
60
-
61
-}

+ 0
- 7
dddsample/src/main/java/se/citerus/dddsample/application/impl/package.html Просмотреть файл

@@ -1,7 +0,0 @@
1
-<html>
2
-<body>
3
-<p>
4
-	Implementation of the application layer.
5
-</p>
6
-</body>
7
-</html>