-/*\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));
+ }
+
+}