Sync Integ to Master
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / validation / AccessValidations.java
1 package org.openecomp.sdc.be.components.validation;
2
3 import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
4 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
5 import org.openecomp.sdc.be.model.Component;
6 import org.openecomp.sdc.be.model.User;
7 import org.openecomp.sdc.exception.ResponseFormat;
8
9 @org.springframework.stereotype.Component
10 public class AccessValidations {
11
12     private final UserValidations userValidations;
13     private final ComponentValidations componentValidations;
14
15
16     public AccessValidations(UserValidations userValidations, ComponentValidations componentValidations) {
17         this.userValidations = userValidations;
18         this.componentValidations = componentValidations;
19     }
20
21     public Component validateUserCanWorkOnComponentAndLockIt(ComponentTypeEnum componentTypeEnum, String componentId, String userId, String actionContext) {
22         userValidations.validateUserExists(userId, actionContext, false)
23                 .left()
24                 .on(this::onUserError);
25
26         return componentValidations.validateComponentIsCheckedOutByUserAndLockIt(componentTypeEnum, componentId, userId);
27     }
28
29     private User onUserError(ResponseFormat responseFormat) {
30         throw new ComponentException(responseFormat);
31     }
32
33
34 }