Migrate ccsdk/apps to ccsdk/cds
[ccsdk/cds.git] / ms / controllerblueprints / modules / service / src / main / java / org / onap / ccsdk / cds / controllerblueprints / service / AutoResourceMappingService.java
-/*\r
- * Copyright © 2017-2018 AT&T Intellectual Property.\r
- * Modifications Copyright © 2018 IBM.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *     http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-package org.onap.ccsdk.apps.controllerblueprints.service;\r
-\r
-import com.att.eelf.configuration.EELFLogger;\r
-import com.att.eelf.configuration.EELFManager;\r
-import com.google.common.base.Preconditions;\r
-import org.apache.commons.collections.CollectionUtils;\r
-import org.apache.commons.lang3.StringUtils;\r
-import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException;\r
-import org.onap.ccsdk.apps.controllerblueprints.core.data.PropertyDefinition;\r
-import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceAssignment;\r
-import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceDefinition;\r
-import org.onap.ccsdk.apps.controllerblueprints.resource.dict.utils.ResourceDictionaryUtils;\r
-import org.onap.ccsdk.apps.controllerblueprints.service.domain.ResourceDictionary;\r
-import org.onap.ccsdk.apps.controllerblueprints.service.model.AutoMapResponse;\r
-import org.onap.ccsdk.apps.controllerblueprints.service.repository.ResourceDictionaryRepository;\r
-import org.springframework.stereotype.Service;\r
-\r
-import java.util.ArrayList;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-/**\r
- * AutoResourceMappingService.java Purpose: Provide Automapping of Resource Assignments AutoResourceMappingService\r
- *\r
- * @author Brinda Santh\r
- * @version 1.0\r
- */\r
-\r
-@Service\r
-@SuppressWarnings("unused")\r
-public class AutoResourceMappingService {\r
-\r
-    private static EELFLogger log = EELFManager.getInstance().getLogger(AutoResourceMappingService.class);\r
-\r
-    private ResourceDictionaryRepository dataDictionaryRepository;\r
-\r
-    /**\r
-     * This is a AutoResourceMappingService constructor\r
-     *\r
-     * @param dataDictionaryRepository dataDictionaryRepository\r
-     */\r
-    public AutoResourceMappingService(ResourceDictionaryRepository dataDictionaryRepository) {\r
-        this.dataDictionaryRepository = dataDictionaryRepository;\r
-    }\r
-\r
-    /**\r
-     * This is a autoMap service to map the template keys automatically to Dictionary fields.\r
-     *\r
-     * @param resourceAssignments resourceAssignments\r
-     * @return AutoMapResponse\r
-     */\r
-    public AutoMapResponse autoMap(List<ResourceAssignment> resourceAssignments) throws BluePrintException {\r
-        AutoMapResponse autoMapResponse = new AutoMapResponse();\r
-        try {\r
-            if (CollectionUtils.isNotEmpty(resourceAssignments)) {\r
-\r
-                // Create the Dictionary definitions for the ResourceAssignment Names\r
-                Map<String, ResourceDictionary> dictionaryMap = getDictionaryDefinitions(resourceAssignments);\r
-\r
-                for (ResourceAssignment resourceAssignment : resourceAssignments) {\r
-                    if (resourceAssignment != null && StringUtils.isNotBlank(resourceAssignment.getName())\r
-                            && StringUtils.isBlank(resourceAssignment.getDictionaryName())) {\r
-\r
-                        populateDictionaryMapping(dictionaryMap, resourceAssignment);\r
-\r
-                        log.info("Mapped Resource : {}", resourceAssignment);\r
-\r
-                    }\r
-                }\r
-            }\r
-            List<ResourceDictionary> dictionaries = getDictionaryDefinitionsList(resourceAssignments);\r
-            List<ResourceAssignment> resourceAssignmentsFinal = getAllAutomapResourceAssignments(resourceAssignments);\r
-            autoMapResponse.setDataDictionaries(dictionaries);\r
-            autoMapResponse.setResourceAssignments(resourceAssignmentsFinal);\r
-        } catch (Exception e) {\r
-            log.error(String.format("Failed in auto process %s", e.getMessage()));\r
-            throw new BluePrintException(e.getMessage(), e);\r
-        }\r
-        return autoMapResponse;\r
-    }\r
-\r
-    private void populateDictionaryMapping(Map<String, ResourceDictionary> dictionaryMap, ResourceAssignment resourceAssignment) {\r
-        ResourceDictionary dbDataDictionary = dictionaryMap.get(resourceAssignment.getName());\r
-        if (dbDataDictionary != null && dbDataDictionary.getDefinition() != null) {\r
-\r
-            ResourceDefinition dictionaryDefinition = dbDataDictionary.getDefinition();\r
-\r
-            if (dictionaryDefinition != null && StringUtils.isNotBlank(dictionaryDefinition.getName())\r
-                    && StringUtils.isBlank(resourceAssignment.getDictionaryName())) {\r
-\r
-                resourceAssignment.setDictionaryName(dbDataDictionary.getName());\r
-                ResourceDictionaryUtils.populateSourceMapping(resourceAssignment, dictionaryDefinition);\r
-            }\r
-        }\r
-    }\r
-\r
-    private Map<String, ResourceDictionary> getDictionaryDefinitions(List<ResourceAssignment> resourceAssignments) {\r
-        Map<String, ResourceDictionary> dictionaryMap = new HashMap<>();\r
-        List<String> names = new ArrayList<>();\r
-        for (ResourceAssignment resourceAssignment : resourceAssignments) {\r
-            if (resourceAssignment != null && StringUtils.isNotBlank(resourceAssignment.getName())) {\r
-                names.add(resourceAssignment.getName());\r
-            }\r
-        }\r
-        if (CollectionUtils.isNotEmpty(names)) {\r
-\r
-            List<ResourceDictionary> dictionaries = dataDictionaryRepository.findByNameIn(names);\r
-            if (CollectionUtils.isNotEmpty(dictionaries)) {\r
-                for (ResourceDictionary dataDictionary : dictionaries) {\r
-                    if (dataDictionary != null && StringUtils.isNotBlank(dataDictionary.getName())) {\r
-                        dictionaryMap.put(dataDictionary.getName(), dataDictionary);\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        return dictionaryMap;\r
-\r
-    }\r
-\r
-    private List<ResourceDictionary> getDictionaryDefinitionsList(List<ResourceAssignment> resourceAssignments) {\r
-        List<ResourceDictionary> dictionaries = null;\r
-        List<String> names = new ArrayList<>();\r
-        for (ResourceAssignment resourceAssignment : resourceAssignments) {\r
-            if (resourceAssignment != null && StringUtils.isNotBlank(resourceAssignment.getDictionaryName())) {\r
-\r
-                if (!names.contains(resourceAssignment.getDictionaryName())) {\r
-                    names.add(resourceAssignment.getDictionaryName());\r
-                }\r
-\r
-                if (resourceAssignment.getDependencies() != null && !resourceAssignment.getDependencies().isEmpty()) {\r
-                    List<String> dependencyNames = resourceAssignment.getDependencies();\r
-                    for (String dependencyName : dependencyNames) {\r
-                        if (StringUtils.isNotBlank(dependencyName) && !names.contains(dependencyName)) {\r
-                            names.add(dependencyName);\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        if (CollectionUtils.isNotEmpty(names)) {\r
-            dictionaries = dataDictionaryRepository.findByNameIn(names);\r
-        }\r
-        return dictionaries;\r
-\r
-    }\r
-\r
-    private List<ResourceAssignment> getAllAutomapResourceAssignments(List<ResourceAssignment> resourceAssignments) {\r
-        List<ResourceDictionary> dictionaries = null;\r
-        List<String> names = new ArrayList<>();\r
-        for (ResourceAssignment resourceAssignment : resourceAssignments) {\r
-            if (resourceAssignment != null && StringUtils.isNotBlank(resourceAssignment.getDictionaryName())) {\r
-                if (resourceAssignment.getDependencies() != null && !resourceAssignment.getDependencies().isEmpty()) {\r
-                    List<String> dependencieNames = resourceAssignment.getDependencies();\r
-                    for (String dependencieName : dependencieNames) {\r
-                        if (StringUtils.isNotBlank(dependencieName) && !names.contains(dependencieName)\r
-                                && !checkAssignmentsExists(resourceAssignments, dependencieName)) {\r
-                            names.add(dependencieName);\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-        }\r
-\r
-        if (!names.isEmpty()) {\r
-            dictionaries = dataDictionaryRepository.findByNameIn(names);\r
-        }\r
-        if (dictionaries != null) {\r
-            for (ResourceDictionary resourcedictionary : dictionaries) {\r
-                ResourceDefinition dictionaryDefinition = resourcedictionary.getDefinition();\r
-                Preconditions.checkNotNull(dictionaryDefinition, "failed to get Resource Definition from dictionary definition");\r
-                PropertyDefinition property = new PropertyDefinition();\r
-                property.setRequired(true);\r
-                ResourceAssignment resourceAssignment = new ResourceAssignment();\r
-                resourceAssignment.setName(resourcedictionary.getName());\r
-                resourceAssignment.setDictionaryName(resourcedictionary\r
-                        .getName());\r
-                resourceAssignment.setVersion(0);\r
-                resourceAssignment.setProperty(property);\r
-                ResourceDictionaryUtils.populateSourceMapping(resourceAssignment, dictionaryDefinition);\r
-                resourceAssignments.add(resourceAssignment);\r
-            }\r
-        }\r
-        return resourceAssignments;\r
-\r
-    }\r
-\r
-\r
-    private boolean checkAssignmentsExists(List<ResourceAssignment> resourceAssignmentsWithDepencies, String resourceName) {\r
-        return resourceAssignmentsWithDepencies.stream().anyMatch(names -> names.getName().equalsIgnoreCase(resourceName));\r
-    }\r
-\r
-}\r
+/*
+ * Copyright © 2017-2018 AT&T Intellectual Property.
+ * Modifications Copyright © 2018 IBM.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onap.ccsdk.cds.controllerblueprints.service;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.google.common.base.Preconditions;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException;
+import org.onap.ccsdk.cds.controllerblueprints.core.data.PropertyDefinition;
+import org.onap.ccsdk.cds.controllerblueprints.resource.dict.ResourceAssignment;
+import org.onap.ccsdk.cds.controllerblueprints.resource.dict.ResourceDefinition;
+import org.onap.ccsdk.cds.controllerblueprints.resource.dict.utils.ResourceDictionaryUtils;
+import org.onap.ccsdk.cds.controllerblueprints.service.domain.ResourceDictionary;
+import org.onap.ccsdk.cds.controllerblueprints.service.model.AutoMapResponse;
+import org.onap.ccsdk.cds.controllerblueprints.service.repository.ResourceDictionaryRepository;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * AutoResourceMappingService.java Purpose: Provide Automapping of Resource Assignments AutoResourceMappingService
+ *
+ * @author Brinda Santh
+ * @version 1.0
+ */
+
+@Service
+@SuppressWarnings("unused")
+public class AutoResourceMappingService {
+
+    private static EELFLogger log = EELFManager.getInstance().getLogger(AutoResourceMappingService.class);
+
+    private ResourceDictionaryRepository dataDictionaryRepository;
+
+    /**
+     * This is a AutoResourceMappingService constructor
+     *
+     * @param dataDictionaryRepository dataDictionaryRepository
+     */
+    public AutoResourceMappingService(ResourceDictionaryRepository dataDictionaryRepository) {
+        this.dataDictionaryRepository = dataDictionaryRepository;
+    }
+
+    /**
+     * This is a autoMap service to map the template keys automatically to Dictionary fields.
+     *
+     * @param resourceAssignments resourceAssignments
+     * @return AutoMapResponse
+     */
+    public AutoMapResponse autoMap(List<ResourceAssignment> resourceAssignments) throws BluePrintException {
+        AutoMapResponse autoMapResponse = new AutoMapResponse();
+        try {
+            if (CollectionUtils.isNotEmpty(resourceAssignments)) {
+
+                // Create the Dictionary definitions for the ResourceAssignment Names
+                Map<String, ResourceDictionary> dictionaryMap = getDictionaryDefinitions(resourceAssignments);
+
+                for (ResourceAssignment resourceAssignment : resourceAssignments) {
+                    if (resourceAssignment != null && StringUtils.isNotBlank(resourceAssignment.getName())
+                            && StringUtils.isBlank(resourceAssignment.getDictionaryName())) {
+
+                        populateDictionaryMapping(dictionaryMap, resourceAssignment);
+
+                        log.info("Mapped Resource : {}", resourceAssignment);
+
+                    }
+                }
+            }
+            List<ResourceDictionary> dictionaries = getDictionaryDefinitionsList(resourceAssignments);
+            List<ResourceAssignment> resourceAssignmentsFinal = getAllAutomapResourceAssignments(resourceAssignments);
+            autoMapResponse.setDataDictionaries(dictionaries);
+            autoMapResponse.setResourceAssignments(resourceAssignmentsFinal);
+        } catch (Exception e) {
+            log.error(String.format("Failed in auto process %s", e.getMessage()));
+            throw new BluePrintException(e.getMessage(), e);
+        }
+        return autoMapResponse;
+    }
+
+    private void populateDictionaryMapping(Map<String, ResourceDictionary> dictionaryMap, ResourceAssignment resourceAssignment) {
+        ResourceDictionary dbDataDictionary = dictionaryMap.get(resourceAssignment.getName());
+        if (dbDataDictionary != null && dbDataDictionary.getDefinition() != null) {
+
+            ResourceDefinition dictionaryDefinition = dbDataDictionary.getDefinition();
+
+            if (dictionaryDefinition != null && StringUtils.isNotBlank(dictionaryDefinition.getName())
+                    && StringUtils.isBlank(resourceAssignment.getDictionaryName())) {
+
+                resourceAssignment.setDictionaryName(dbDataDictionary.getName());
+                ResourceDictionaryUtils.populateSourceMapping(resourceAssignment, dictionaryDefinition);
+            }
+        }
+    }
+
+    private Map<String, ResourceDictionary> getDictionaryDefinitions(List<ResourceAssignment> resourceAssignments) {
+        Map<String, ResourceDictionary> dictionaryMap = new HashMap<>();
+        List<String> names = new ArrayList<>();
+        for (ResourceAssignment resourceAssignment : resourceAssignments) {
+            if (resourceAssignment != null && StringUtils.isNotBlank(resourceAssignment.getName())) {
+                names.add(resourceAssignment.getName());
+            }
+        }
+        if (CollectionUtils.isNotEmpty(names)) {
+
+            List<ResourceDictionary> dictionaries = dataDictionaryRepository.findByNameIn(names);
+            if (CollectionUtils.isNotEmpty(dictionaries)) {
+                for (ResourceDictionary dataDictionary : dictionaries) {
+                    if (dataDictionary != null && StringUtils.isNotBlank(dataDictionary.getName())) {
+                        dictionaryMap.put(dataDictionary.getName(), dataDictionary);
+                    }
+                }
+            }
+        }
+        return dictionaryMap;
+
+    }
+
+    private List<ResourceDictionary> getDictionaryDefinitionsList(List<ResourceAssignment> resourceAssignments) {
+        List<ResourceDictionary> dictionaries = null;
+        List<String> names = new ArrayList<>();
+        for (ResourceAssignment resourceAssignment : resourceAssignments) {
+            if (resourceAssignment != null && StringUtils.isNotBlank(resourceAssignment.getDictionaryName())) {
+
+                if (!names.contains(resourceAssignment.getDictionaryName())) {
+                    names.add(resourceAssignment.getDictionaryName());
+                }
+
+                if (resourceAssignment.getDependencies() != null && !resourceAssignment.getDependencies().isEmpty()) {
+                    List<String> dependencyNames = resourceAssignment.getDependencies();
+                    for (String dependencyName : dependencyNames) {
+                        if (StringUtils.isNotBlank(dependencyName) && !names.contains(dependencyName)) {
+                            names.add(dependencyName);
+                        }
+                    }
+                }
+            }
+        }
+        if (CollectionUtils.isNotEmpty(names)) {
+            dictionaries = dataDictionaryRepository.findByNameIn(names);
+        }
+        return dictionaries;
+
+    }
+
+    private List<ResourceAssignment> getAllAutomapResourceAssignments(List<ResourceAssignment> resourceAssignments) {
+        List<ResourceDictionary> dictionaries = null;
+        List<String> names = new ArrayList<>();
+        for (ResourceAssignment resourceAssignment : resourceAssignments) {
+            if (resourceAssignment != null && StringUtils.isNotBlank(resourceAssignment.getDictionaryName())) {
+                if (resourceAssignment.getDependencies() != null && !resourceAssignment.getDependencies().isEmpty()) {
+                    List<String> dependencieNames = resourceAssignment.getDependencies();
+                    for (String dependencieName : dependencieNames) {
+                        if (StringUtils.isNotBlank(dependencieName) && !names.contains(dependencieName)
+                                && !checkAssignmentsExists(resourceAssignments, dependencieName)) {
+                            names.add(dependencieName);
+                        }
+                    }
+                }
+            }
+        }
+
+        if (!names.isEmpty()) {
+            dictionaries = dataDictionaryRepository.findByNameIn(names);
+        }
+        if (dictionaries != null) {
+            for (ResourceDictionary resourcedictionary : dictionaries) {
+                ResourceDefinition dictionaryDefinition = resourcedictionary.getDefinition();
+                Preconditions.checkNotNull(dictionaryDefinition, "failed to get Resource Definition from dictionary definition");
+                PropertyDefinition property = new PropertyDefinition();
+                property.setRequired(true);
+                ResourceAssignment resourceAssignment = new ResourceAssignment();
+                resourceAssignment.setName(resourcedictionary.getName());
+                resourceAssignment.setDictionaryName(resourcedictionary
+                        .getName());
+                resourceAssignment.setVersion(0);
+                resourceAssignment.setProperty(property);
+                ResourceDictionaryUtils.populateSourceMapping(resourceAssignment, dictionaryDefinition);
+                resourceAssignments.add(resourceAssignment);
+            }
+        }
+        return resourceAssignments;
+
+    }
+
+
+    private boolean checkAssignmentsExists(List<ResourceAssignment> resourceAssignmentsWithDepencies, String resourceName) {
+        return resourceAssignmentsWithDepencies.stream().anyMatch(names -> names.getName().equalsIgnoreCase(resourceName));
+    }
+
+}