package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service; import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException; 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 at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.RegistrationDAO; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dao.VehicleDAO; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Registration; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.RegistrationValidator; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle; import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class RegistrationServiceImpl implements RegistrationService { private final RegistrationDAO registrationDAO; private final VehicleDAO vehicleDAO; @Autowired public RegistrationServiceImpl(RegistrationDAO registrationDAO, VehicleDAO vehicleDAO) { this.registrationDAO = registrationDAO; this.vehicleDAO = vehicleDAO; } @Override public Set add(long vehicleId, Set registrations) throws InvalidVehicleException, InvalidRegistrationException, ServiceException { if (vehicleId <= 0) throw new InvalidVehicleException("VehicleId invalid"); try { Vehicle vehicle = vehicleDAO.get(vehicleId); RegistrationValidator.validate(vehicle, registrations); return registrationDAO.add(vehicle.id(), registrations); } catch (PersistenceException e) { throw new ServiceException(e); } catch (ElementNotFoundException e) { throw new InvalidVehicleException(e); } } @Override public void remove(long registrationId) throws InvalidRegistrationException, ServiceException { if (registrationId <= 0) throw new InvalidRegistrationException("RegistrationId invalid"); try { registrationDAO.remove(registrationId); } catch (PersistenceException e) { throw new ServiceException(e); } catch (ElementNotFoundException e) { throw new InvalidRegistrationException(e); } } }