// Copyright © 2015 HSL <https://www.hsl.fi> // This program is dual-licensed under the EUPL v1.2 and AGPLv3 licenses. package fi.hsl.parkandride.core.service; import static fi.hsl.parkandride.core.domain.Permission.HUB_CREATE; import static fi.hsl.parkandride.core.domain.Permission.HUB_UPDATE; import static fi.hsl.parkandride.core.service.AuthenticationService.authorize; import fi.hsl.parkandride.core.back.HubRepository; import fi.hsl.parkandride.core.domain.Hub; import fi.hsl.parkandride.core.domain.HubSearch; import fi.hsl.parkandride.core.domain.SearchResults; import fi.hsl.parkandride.core.domain.User; public class HubService { private final HubRepository repository; private final ValidationService validationService; public HubService(HubRepository repository, ValidationService validationService) { this.repository = repository; this.validationService = validationService; } @TransactionalWrite public Hub createHub(Hub hub, User currentUser) { authorize(currentUser, HUB_CREATE); validationService.validate(hub); return getHub(repository.insertHub(hub)); } @TransactionalWrite public Hub updateHub(long hubId, Hub hub, User currentUser) { authorize(currentUser, HUB_UPDATE); validationService.validate(hub); repository.updateHub(hubId, hub); return getHub(hubId); } @TransactionalRead public Hub getHub(long hubId) { return repository.getHub(hubId); } @TransactionalRead public SearchResults<Hub> search(HubSearch search) { return repository.findHubs(search); } }