re base code
[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.apache.commons.lang.StringUtils;
5 import org.openecomp.sdc.be.components.validation.UserValidations;
6 import org.openecomp.sdc.be.config.ConfigurationManager;
7 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
8 import org.openecomp.sdc.be.impl.ComponentsUtils;
9 import org.openecomp.sdc.be.model.PolicyTypeDefinition;
10 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
11 import org.openecomp.sdc.be.model.operations.impl.PolicyTypeOperation;
12 import org.openecomp.sdc.common.log.wrappers.Logger;
13 import org.openecomp.sdc.exception.ResponseFormat;
14 import org.springframework.stereotype.Component;
15 import org.springframework.transaction.annotation.Transactional;
16
17 import java.util.List;
18 import java.util.Map;
19 import java.util.Set;
20
21 import static java.util.Collections.emptySet;
22
23 @Component
24 public class PolicyTypeBusinessLogic {
25
26     private static final Logger log = Logger.getLogger(PolicyTypeBusinessLogic.class);
27     private PolicyTypeOperation policyTypeOperation;
28     private TitanDao titanDao;
29     private ComponentsUtils componentsUtils;
30     private UserValidations userValidations;
31
32     public PolicyTypeBusinessLogic(PolicyTypeOperation policyTypeOperation, TitanDao titanDao, ComponentsUtils componentsUtils, UserValidations userValidations) {
33         this.policyTypeOperation = policyTypeOperation;
34         this.titanDao = titanDao;
35         this.componentsUtils = componentsUtils;
36         this.userValidations = userValidations;
37     }
38
39     @Transactional
40     public List<PolicyTypeDefinition> getAllPolicyTypes(String userId, String internalComponentType) {
41         Set<String> excludedPolicyTypes = getExcludedPolicyTypes(internalComponentType);
42         userValidations.validateUserExists(userId, "get policy types", true);
43         return getPolicyTypes(excludedPolicyTypes);
44     }
45
46     public Set<String> getExcludedPolicyTypes(String internalComponentType) {
47         if (StringUtils.isEmpty(internalComponentType)) {
48             return emptySet();
49         }
50         Map<String, Set<String>> excludedPolicyTypesMapping = ConfigurationManager.getConfigurationManager().getConfiguration().getExcludedPolicyTypesMapping();
51         Set<String> excludedTypes = excludedPolicyTypesMapping.get(internalComponentType);
52         return excludedTypes == null ? emptySet() : excludedTypes;
53     }
54
55     private List<PolicyTypeDefinition> getPolicyTypes(Set<String> excludedTypes) {
56         return policyTypeOperation.getAllPolicyTypes(excludedTypes);
57     }
58
59     private Either<List<PolicyTypeDefinition>, ResponseFormat> convertToResponseFormatOrNotFoundErrorToEmptyList(StorageOperationStatus err) {
60         log.debug("error when trying to fetch policy types: {}", err);
61         return componentsUtils.convertToResponseFormatOrNotFoundErrorToEmptyList(err);
62     }
63 }