Sync Integ to Master
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / impl / GroupTypeBusinessLogic.java
1 package org.openecomp.sdc.be.components.impl;
2
3 import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
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.model.GroupTypeDefinition;
8 import org.openecomp.sdc.be.model.User;
9 import org.openecomp.sdc.be.model.operations.impl.GroupTypeOperation;
10 import org.openecomp.sdc.exception.ResponseFormat;
11 import org.springframework.stereotype.Component;
12
13 import java.util.List;
14 import java.util.Set;
15
16 @Component
17 public class GroupTypeBusinessLogic {
18
19     private final GroupTypeOperation groupTypeOperation;
20     private final TitanDao titanDao;
21     private final UserValidations userValidations;
22
23     public GroupTypeBusinessLogic(GroupTypeOperation groupTypeOperation, TitanDao titanDao, UserValidations userValidations) {
24         this.groupTypeOperation = groupTypeOperation;
25         this.titanDao = titanDao;
26         this.userValidations = userValidations;
27     }
28
29
30     public List<GroupTypeDefinition> getAllGroupTypes(String userId, String internalComponentType) {
31         try {
32             userValidations.validateUserExists(userId, "get group types", true)
33                     .left()
34                     .on(this::onUserError);
35
36             Set<String> excludeGroupTypes = ConfigurationManager.getConfigurationManager().getConfiguration().getExcludedGroupTypesMapping().get(internalComponentType);
37             return groupTypeOperation.getAllGroupTypes(excludeGroupTypes);
38         } finally {
39             titanDao.commit();
40         }
41     }
42
43     private User onUserError(ResponseFormat responseFormat) {
44         throw new ComponentException(responseFormat);
45     }
46 }