re base code
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / impl / GroupTypeBusinessLogic.java
index d852ac3..99c4e9e 100644 (file)
@@ -1,46 +1,70 @@
 package org.openecomp.sdc.be.components.impl;
 
-import java.util.List;
-import java.util.Set;
-
+import org.apache.commons.lang3.StringUtils;
 import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
 import org.openecomp.sdc.be.components.validation.UserValidations;
 import org.openecomp.sdc.be.config.ConfigurationManager;
+import org.openecomp.sdc.be.dao.api.ActionStatus;
 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
+import org.openecomp.sdc.be.impl.ComponentsUtils;
 import org.openecomp.sdc.be.model.GroupTypeDefinition;
-import org.openecomp.sdc.be.model.User;
+import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
 import org.openecomp.sdc.be.model.operations.impl.GroupTypeOperation;
-import org.openecomp.sdc.exception.ResponseFormat;
 import org.springframework.stereotype.Component;
 
-@Component
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static java.util.Collections.emptySet;
+
+@Component("groupTypeBusinessLogic")
 public class GroupTypeBusinessLogic {
 
     private final GroupTypeOperation groupTypeOperation;
     private final TitanDao titanDao;
     private final UserValidations userValidations;
+    private final ComponentsUtils componentsUtils;
 
-    public GroupTypeBusinessLogic(GroupTypeOperation groupTypeOperation, TitanDao titanDao, UserValidations userValidations) {
+    public GroupTypeBusinessLogic(GroupTypeOperation groupTypeOperation, TitanDao titanDao, UserValidations userValidations, ComponentsUtils componentsUtils) {
         this.groupTypeOperation = groupTypeOperation;
         this.titanDao = titanDao;
         this.userValidations = userValidations;
+        this.componentsUtils = componentsUtils;
     }
 
 
     public List<GroupTypeDefinition> getAllGroupTypes(String userId, String internalComponentType) {
         try {
-            userValidations.validateUserExists(userId, "get group types", true)
-                    .left()
-                    .on(this::onUserError);
-
-            Set<String> excludeGroupTypes = ConfigurationManager.getConfigurationManager().getConfiguration().getExcludedGroupTypesMapping().get(internalComponentType);
+            userValidations.validateUserExists(userId, "get group types", true);
+            Set<String> excludeGroupTypes = getExcludedGroupTypes(internalComponentType);
             return groupTypeOperation.getAllGroupTypes(excludeGroupTypes);
         } finally {
             titanDao.commit();
         }
     }
 
-    private User onUserError(ResponseFormat responseFormat) {
-        throw new ComponentException(responseFormat);
+    public GroupTypeDefinition getLatestGroupTypeByType(String groupTypeName) {
+        return groupTypeOperation.getLatestGroupTypeByType(groupTypeName, true)
+                .left()
+                .on(e -> failOnGetGroupType(e, groupTypeName));
+    }
+
+    public Set<String> getExcludedGroupTypes(String internalComponentType) {
+        if (StringUtils.isEmpty(internalComponentType)) {
+            return emptySet();
+        }
+        Map<String, Set<String>> excludedGroupTypesMapping = ConfigurationManager.getConfigurationManager().getConfiguration().getExcludedGroupTypesMapping();
+        Set<String> excludedTypes = excludedGroupTypesMapping.get(internalComponentType);
+        return excludedTypes == null ? emptySet() : excludedTypes;
+    }
+
+    private GroupTypeDefinition failOnGetGroupType(StorageOperationStatus status, String groupType) {
+        titanDao.rollback();
+        if (status == StorageOperationStatus.NOT_FOUND) {
+            throw new ComponentException(ActionStatus.GROUP_TYPE_IS_INVALID, groupType);
+        } else {
+            throw new ComponentException(ActionStatus.GENERAL_ERROR);
+        }
     }
 }