package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service; import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException; import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle.Status; import java.util.EnumSet; import java.util.Set; public interface VehicleService { /** * Add given vehicle to the store. * * @param vehicle that should be added to the store * @return the id that was assigned * @throws InvalidVehicleException if the vehicle is invalid * @throws ServiceException if the vehicle could not be persisted */ long add(Vehicle vehicle) throws InvalidVehicleException, ServiceException; /** * Update the given vehicle. * * @param vehicle that should be updated * @return the updated vehicle * @throws InvalidVehicleException if the vehicle is invalid * @throws ServiceException if the updated vehicle could not be persisted */ Vehicle update(Vehicle vehicle) throws InvalidVehicleException, ServiceException; /** * Get all stored vehicles with matching status. * * @param statuses set containing all statuses that should be matched * @return list containing all stored vehicles * @throws ServiceException if loading the stored vehicles failed */ Set list(EnumSet statuses) throws ServiceException; /** * Remove vehicle with the given id from the store. * * @param id of the vehicle that should be removed * @throws InvalidVehicleException if given vehicle id is invalid or does not exist * @throws ServiceException if the vehicle could not be removed from the store */ void remove(long id) throws InvalidVehicleException, ServiceException; }