// 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.OPERATOR_CREATE; import static fi.hsl.parkandride.core.domain.Permission.OPERATOR_UPDATE; import static fi.hsl.parkandride.core.service.AuthenticationService.authorize; import fi.hsl.parkandride.core.back.OperatorRepository; import fi.hsl.parkandride.core.domain.Operator; import fi.hsl.parkandride.core.domain.OperatorSearch; import fi.hsl.parkandride.core.domain.SearchResults; import fi.hsl.parkandride.core.domain.User; public class OperatorService { private final OperatorRepository repository; private final ValidationService validationService; public OperatorService(OperatorRepository repository, ValidationService validationService) { this.repository = repository; this.validationService = validationService; } @TransactionalWrite public Operator createOperator(Operator operator, User currentUser) { authorize(currentUser, OPERATOR_CREATE); validationService.validate(operator); return getOperator(repository.insertOperator(operator)); } @TransactionalWrite public Operator updateOperator(long operatorId, Operator operator, User currentUser) { operator.id = operatorId; authorize(currentUser, operator, OPERATOR_UPDATE); validationService.validate(operator); repository.updateOperator(operatorId, operator); return getOperator(operatorId); } @TransactionalRead public Operator getOperator(long id) { return repository.getOperator(id); } @TransactionalRead public SearchResults<Operator> search(OperatorSearch search) { return repository.findOperators(search); } }