summaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/property/DataDefinitionsValuesMergingBusinessLogic.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/property/DataDefinitionsValuesMergingBusinessLogic.java')
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/property/DataDefinitionsValuesMergingBusinessLogic.java43
1 files changed, 43 insertions, 0 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/property/DataDefinitionsValuesMergingBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/property/DataDefinitionsValuesMergingBusinessLogic.java
new file mode 100644
index 0000000000..96d3bce97e
--- /dev/null
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/property/DataDefinitionsValuesMergingBusinessLogic.java
@@ -0,0 +1,43 @@
+package org.openecomp.sdc.be.components.merge.property;
+
+import java.util.List;
+
+import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
+import org.openecomp.sdc.be.model.InputDefinition;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DataDefinitionsValuesMergingBusinessLogic {
+
+ @javax.annotation.Resource
+ private PropertyDataValueMergeBusinessLogic propertyValueMergeBL;
+
+ /**
+ * Merge previous version data definition values into the new version data definition.
+ * A data definition value is merged if it had a value in previous version and has no value in the current version.
+ * in case a property get input value has no corresponding input in the current version its value will not be merged
+ * @param oldInstanceDataDefinition the currently persisted instance data definitions
+ * @param oldInputs the previous version inputs
+ * @param updatedInstanceDataDefinition the currently being update instance data definitions
+ * @param newInputs the new version inputs
+ */
+ public <T extends PropertyDataDefinition> void mergeInstanceDataDefinitions(List<T> oldInstanceDataDefinition, List<InputDefinition> oldInputs, List<T> updatedInstanceDataDefinition, List<InputDefinition> newInputs) {
+ if (updatedInstanceDataDefinition == null || updatedInstanceDataDefinition.isEmpty() || oldInstanceDataDefinition == null || oldInstanceDataDefinition.isEmpty()) {
+ return;
+ }
+ List<MergePropertyData> mergePropertyData = PropertyInstanceMergeDataBuilder.getInstance().buildDataForMerging(oldInstanceDataDefinition, oldInputs, updatedInstanceDataDefinition, newInputs);
+ mergePropertyData.forEach(this::mergeInstanceDefinition);
+
+ }
+
+ private void mergeInstanceDefinition(MergePropertyData mergeData) {
+ if (isSameType(mergeData.getOldProp(), mergeData.getNewProp())) {
+ propertyValueMergeBL.mergePropertyValue(mergeData.getOldProp(), mergeData.getNewProp(), mergeData.getGetInputNamesToMerge());
+ }
+ }
+
+ private boolean isSameType(PropertyDataDefinition oldDataDefinition, PropertyDataDefinition updatedDataDefinition) {
+ return oldDataDefinition.typeEquals(updatedDataDefinition);
+ }
+
+}