Sync Integ to Master
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / impl / PolicyTypeBusinessLogic.java
1 package org.openecomp.sdc.be.components.impl;
2
3 import fj.data.Either;
4 import org.openecomp.sdc.be.components.validation.UserValidations;
5 import org.openecomp.sdc.be.config.ConfigurationManager;
6 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
7 import org.openecomp.sdc.be.impl.ComponentsUtils;
8 import org.openecomp.sdc.be.model.PolicyTypeDefinition;
9 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
10 import org.openecomp.sdc.be.model.operations.impl.PolicyTypeOperation;
11 import org.openecomp.sdc.exception.ResponseFormat;
12 import org.slf4j.Logger;
13 import org.slf4j.LoggerFactory;
14 import org.springframework.stereotype.Component;
15
16 import java.util.List;
17 import java.util.Set;
18
19 @Component
20 public class PolicyTypeBusinessLogic {
21
22     private static final Logger log = LoggerFactory.getLogger(PolicyTypeBusinessLogic.class);
23     private PolicyTypeOperation policyTypeOperation;
24     private TitanDao titanDao;
25     private ComponentsUtils componentsUtils;
26     private UserValidations userValidations;
27
28     public PolicyTypeBusinessLogic(PolicyTypeOperation policyTypeOperation, TitanDao titanDao, ComponentsUtils componentsUtils, UserValidations userValidations) {
29         this.policyTypeOperation = policyTypeOperation;
30         this.titanDao = titanDao;
31         this.componentsUtils = componentsUtils;
32         this.userValidations = userValidations;
33     }
34
35     public Either<List<PolicyTypeDefinition>, ResponseFormat> getAllPolicyTypes(String userId, String internalComponentType) {
36         try {
37             Set<String> excludedPolicyTypes = ConfigurationManager.getConfigurationManager().getConfiguration().getExcludedPolicyTypesMapping().get(internalComponentType);
38             return userValidations.validateUserExists(userId, "get policy types", true)
39                                   .left()
40                                   .bind(user -> getPolicyTypes(excludedPolicyTypes));
41         } finally {
42             titanDao.commit();
43         }
44     }
45
46     private Either<List<PolicyTypeDefinition>, ResponseFormat> getPolicyTypes(Set<String> excludedTypes) {
47         return policyTypeOperation.getAllPolicyTypes(excludedTypes)
48                                   .right()
49                                   .bind(this::convertToResponseFormatOrNotFoundErrorToEmptyList);
50     }
51
52     private Either<List<PolicyTypeDefinition>, ResponseFormat> convertToResponseFormatOrNotFoundErrorToEmptyList(StorageOperationStatus err) {
53         log.debug("error when trying to fetch policy types: {}", err);
54         return componentsUtils.convertToResponseFormatOrNotFoundErrorToEmptyList(err);
55     }
56 }