From 8cf177afca4a0da8389ec2f198d10f1513c5d9ca Mon Sep 17 00:00:00 2001
From: Dominic Rogetzer <e1627756@student.tuwien.ac.at>
Date: Thu, 3 May 2018 23:47:31 +0200
Subject: Implement vehicleService.list

---
 .../service/VehicleServiceImpl.java                | 29 ++++++++++++++++++----
 1 file changed, 24 insertions(+), 5 deletions(-)

(limited to 'src/main/java/at/ac')

diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleServiceImpl.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleServiceImpl.java
index 4a11298..bbe668b 100644
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleServiceImpl.java
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/VehicleServiceImpl.java
@@ -9,14 +9,16 @@ 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 java.util.stream.Collectors;
 import org.springframework.stereotype.Service;
 
 @Service
 public class VehicleServiceImpl implements VehicleService {
-    private VehicleDAO vehicleDAO;
 
-    public VehicleServiceImpl(VehicleDAO vehicleDAO) {
-        this.vehicleDAO = vehicleDAO;
+    private VehicleDAO vehiclePersistence;
+
+    public VehicleServiceImpl(VehicleDAO vehiclePersistence) {
+        this.vehiclePersistence = vehiclePersistence;
     }
 
     public long add(Vehicle vehicle) throws InvalidVehicleException, ServiceException {
@@ -59,7 +61,7 @@ public class VehicleServiceImpl implements VehicleService {
                 throw new ServiceException("not a Valid type");
         }
         try {
-            vehicleDAO.add(vehicle);
+            vehiclePersistence.add(vehicle);
         } catch (PersistenceException e) {
             throw new ServiceException(e);
         }
@@ -70,10 +72,27 @@ public class VehicleServiceImpl implements VehicleService {
         throw new UnsupportedOperationException();
     }
 
+    @Override
     public List<Vehicle> list(EnumSet<Status> statuses) throws ServiceException {
-        throw new UnsupportedOperationException();
+
+        if (statuses == null) {
+            throw new ServiceException("statuses may not be null");
+        }
+
+        List<Vehicle> vehicles;
+
+        try {
+            vehicles = vehiclePersistence.list();
+        } catch (PersistenceException e) {
+            throw new ServiceException(e);
+        }
+
+        return vehicles.stream()
+                .filter(vehicle -> statuses.contains(vehicle.status()))
+                .collect(Collectors.toList());
     }
 
+    @Override
     public void remove(long id) throws InvalidVehicleException, ServiceException {
         throw new UnsupportedOperationException();
     }
-- 
cgit v1.2.3-70-g09d2