aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/instance/ComponentInstanceChangeOperationOrchestrator.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/instance/ComponentInstanceChangeOperationOrchestrator.java')
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/instance/ComponentInstanceChangeOperationOrchestrator.java43
1 files changed, 43 insertions, 0 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/instance/ComponentInstanceChangeOperationOrchestrator.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/instance/ComponentInstanceChangeOperationOrchestrator.java
new file mode 100644
index 0000000000..e922daf837
--- /dev/null
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/instance/ComponentInstanceChangeOperationOrchestrator.java
@@ -0,0 +1,43 @@
+package org.openecomp.sdc.be.components.impl.instance;
+
+import org.openecomp.sdc.be.dao.api.ActionStatus;
+import org.openecomp.sdc.be.model.Component;
+import org.openecomp.sdc.be.model.ComponentInstance;
+import org.openecomp.sdc.common.log.wrappers.Logger;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.function.Function;
+
+@org.springframework.stereotype.Component
+public class ComponentInstanceChangeOperationOrchestrator {
+
+ private static final Logger log = Logger.getLogger(ComponentInstanceChangeOperationOrchestrator.class);
+ private final List<OnComponentInstanceChangeOperation> onInstanceChangeOperations;
+
+ public ComponentInstanceChangeOperationOrchestrator(List<OnComponentInstanceChangeOperation> onInstanceChangeOperations) {
+ this.onInstanceChangeOperations = onInstanceChangeOperations;
+ }
+
+ public ActionStatus doPostChangeVersionOperations(Component container, ComponentInstance prevVersion, ComponentInstance newVersion) {
+ log.debug("#doPostChangeVersionOperations - starting post change version operations for component {}. from instance {} to instance {}", container.getUniqueId(), prevVersion.getUniqueId(), newVersion.getUniqueId());
+ Function<OnComponentInstanceChangeOperation, ActionStatus> instanceChangeTaskRunner = operation -> operation.onChangeVersion(container, prevVersion, newVersion);
+ return doOnChangeInstanceOperations(instanceChangeTaskRunner);
+ }
+
+ public ActionStatus doOnDeleteInstanceOperations(Component container, String deletedInstanceId) {
+ log.debug("#doPostChangeVersionOperations - starting on delete instance operations for component {} and instance {}.", container.getUniqueId(), deletedInstanceId);
+ Function<OnComponentInstanceChangeOperation, ActionStatus> instanceChangeTaskRunner = operation -> operation.onDelete(container, deletedInstanceId);
+ return doOnChangeInstanceOperations(instanceChangeTaskRunner);
+ }
+
+ private ActionStatus doOnChangeInstanceOperations(Function<OnComponentInstanceChangeOperation, ActionStatus> instanceChangeTaskRunner) {
+ ActionStatus onDeleteInstanceResult = ActionStatus.OK;
+ Iterator<OnComponentInstanceChangeOperation> onDeleteInstIter = onInstanceChangeOperations.iterator();
+ while(onDeleteInstIter.hasNext() && onDeleteInstanceResult == ActionStatus.OK) {
+ onDeleteInstanceResult = instanceChangeTaskRunner.apply(onDeleteInstIter.next());
+ }
+ return onDeleteInstanceResult;
+ }
+
+}