From be80ff84430b5f28613ec5b99cbc6b5e5d3ee45b Mon Sep 17 00:00:00 2001
From: Felix Kehrer <felix.kehrer@gmail.com>
Date: Mon, 7 May 2018 18:53:28 +0200
Subject: Changed interface back to how it was before

---
 .../controller/RegistrationWindowController.java    |  2 +-
 .../service/RegistrationService.java                |  7 +++----
 .../service/RegistrationServiceImpl.java            | 21 +++++++++++++++++++--
 3 files changed, 23 insertions(+), 7 deletions(-)

(limited to 'src/main/java')

diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowController.java
index f375fe9..bf413bb 100644
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowController.java
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowController.java
@@ -167,7 +167,7 @@ public class RegistrationWindowController {
                             .build());
         }
         try {
-            registrationService.add(chosenVehicle, registrations);
+            registrationService.add(chosenVehicle.id(), registrations);
             ((Stage) lVehicles.getScene().getWindow()).close();
         } catch (InvalidVehicleException e) {
             // NOT THROWN ANYWHERE RIGHT NOW
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationService.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationService.java
index c20ed3c..c345a2b 100644
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationService.java
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationService.java
@@ -1,7 +1,6 @@
 package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service;
 
 import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Registration;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle;
 import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidRegistrationException;
 import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException;
 import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException;
@@ -12,14 +11,14 @@ public interface RegistrationService {
     /**
      * Register employee to a vehicle.
      *
-     * @param vehicle the target vehicle
+     * @param vehicleId the id of the target vehicle
      * @param registrations that should be added to the vehicle
-     * @return the id that was assigned
+     * @return the list of ids that were assigned
      * @throws InvalidVehicleException if the vehicleId is invalid or does not exist
      * @throws InvalidRegistrationException if the registration is invalid
      * @throws ServiceException if the registration could not be persisted
      */
-    List<Long> add(Vehicle vehicle, List<Registration> registrations)
+    List<Long> add(long vehicleId, List<Registration> registrations)
             throws InvalidVehicleException, InvalidRegistrationException, ServiceException;
 
     /**
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImpl.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImpl.java
index b0605f0..a267b6f 100644
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImpl.java
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/RegistrationServiceImpl.java
@@ -4,10 +4,12 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.Registratio
 import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Registration;
 import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.RegistrationValidator;
 import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle;
+import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.Status;
 import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidRegistrationException;
 import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException;
 import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException;
 import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException;
+import java.util.EnumSet;
 import java.util.List;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -20,15 +22,30 @@ public class RegistrationServiceImpl implements RegistrationService {
     private static final Logger LOG = LoggerFactory.getLogger(RegistrationServiceImpl.class);
 
     private final RegistrationDAO registrationDAO;
+    private final VehicleService vehicleService;
 
     @Autowired
-    public RegistrationServiceImpl(RegistrationDAO registrationDAO) {
+    public RegistrationServiceImpl(RegistrationDAO registrationDAO, VehicleService vehicleService) {
         this.registrationDAO = registrationDAO;
+        this.vehicleService = vehicleService;
     }
 
     @Override
-    public List<Long> add(Vehicle vehicle, List<Registration> registrations)
+    public List<Long> add(long vehicleId, List<Registration> registrations)
             throws InvalidVehicleException, InvalidRegistrationException, ServiceException {
+
+        Vehicle vehicle =
+                vehicleService
+                        .list(EnumSet.of(Status.ABGEMELDET))
+                        .stream()
+                        .filter(v -> v.id() == vehicleId)
+                        .findFirst()
+                        .orElse(null);
+
+        if (vehicle == null) {
+            throw new ServiceException("no vehicle with this id");
+        }
+
         RegistrationValidator.validate(vehicle, registrations);
         try {
             return registrationDAO.add(vehicle.id(), registrations);
-- 
cgit v1.2.3-70-g09d2