1 package org.openecomp.sdc.be.components.merge.heat;
3 import org.openecomp.sdc.be.dao.utils.MapUtil;
4 import org.openecomp.sdc.be.model.ArtifactDefinition;
5 import org.openecomp.sdc.be.model.HeatParameterDefinition;
6 import org.springframework.stereotype.Component;
7 import org.springframework.util.CollectionUtils;
9 import java.util.ArrayList;
10 import java.util.List;
14 * Created by chaya on 9/14/2017.
17 public class HeatEnvArtifactsMergeBusinessLogic {
19 public List<ArtifactDefinition> mergeInstanceHeatEnvArtifacts(List<ArtifactDefinition> origHeatEnvArtifacts, List<ArtifactDefinition> newHeatEnvArtifacts) {
20 Map<String, ArtifactDefinition> origArtifactDefinitionByLabel = MapUtil.toMap(origHeatEnvArtifacts, ArtifactDefinition::getArtifactLabel);
21 List<ArtifactDefinition> artifactsToUpdate = new ArrayList<>();
22 newHeatEnvArtifacts.stream()
23 .filter(heatEnvArtifact -> origArtifactDefinitionByLabel.containsKey(heatEnvArtifact.getArtifactLabel()))
24 .forEach(heatEnvArtifact -> {
25 ArtifactDefinition origHeatEnvArtifact = origArtifactDefinitionByLabel.get(heatEnvArtifact.getArtifactLabel());
26 Boolean wasMergedHeatEnvArtifact = mergeHeatEnvArtifactsParameters(heatEnvArtifact, origHeatEnvArtifact);
27 if (wasMergedHeatEnvArtifact) {
28 artifactsToUpdate.add(heatEnvArtifact);
31 return artifactsToUpdate;
34 private Boolean mergeHeatEnvArtifactsParameters(ArtifactDefinition currArtifact, ArtifactDefinition origArtifact) {
35 List<HeatParameterDefinition> currentHeatEnvParams = currArtifact.getListHeatParameters();
36 List<HeatParameterDefinition> origHeatEnvParams = origArtifact.getListHeatParameters();
37 boolean wasChanged = false;
39 if (CollectionUtils.isEmpty(origHeatEnvParams) || CollectionUtils.isEmpty(currentHeatEnvParams)) {
43 Map<String, HeatParameterDefinition> origHeatParametersByName = MapUtil.toMap(origHeatEnvParams, HeatParameterDefinition::getName);
45 for (HeatParameterDefinition currHeatParam : currentHeatEnvParams) {
46 String paramName = currHeatParam.getName();
47 HeatParameterDefinition origHeatParam = origHeatParametersByName.get(paramName);
48 if (isSameHeatWithDiffValue(origHeatParam, currHeatParam)) {
49 currHeatParam.setCurrentValue(origHeatParam.getCurrentValue());
53 currArtifact.setListHeatParameters(currentHeatEnvParams);
57 private boolean isSameHeatWithDiffValue(HeatParameterDefinition origHeatParam, HeatParameterDefinition newHeatParam) {
58 return origHeatParam != null &&
59 origHeatParam.getCurrentValue() != null &&
60 origHeatParam.getType().equals(newHeatParam.getType()) &&
61 !origHeatParam.getCurrentValue().equals(newHeatParam.getCurrentValue());