1 package org.openecomp.sdc.be.components.impl.instance;
3 import org.openecomp.sdc.be.dao.api.ActionStatus;
4 import org.openecomp.sdc.be.model.Component;
5 import org.openecomp.sdc.be.model.ComponentInstance;
6 import org.openecomp.sdc.common.log.wrappers.Logger;
8 import java.util.Iterator;
10 import java.util.function.Function;
12 @org.springframework.stereotype.Component
13 public class ComponentInstanceChangeOperationOrchestrator {
15 private static final Logger log = Logger.getLogger(ComponentInstanceChangeOperationOrchestrator.class);
16 private final List<OnComponentInstanceChangeOperation> onInstanceChangeOperations;
18 public ComponentInstanceChangeOperationOrchestrator(List<OnComponentInstanceChangeOperation> onInstanceChangeOperations) {
19 this.onInstanceChangeOperations = onInstanceChangeOperations;
22 public ActionStatus doPostChangeVersionOperations(Component container, ComponentInstance prevVersion, ComponentInstance newVersion) {
23 log.debug("#doPostChangeVersionOperations - starting post change version operations for component {}. from instance {} to instance {}", container.getUniqueId(), prevVersion.getUniqueId(), newVersion.getUniqueId());
24 Function<OnComponentInstanceChangeOperation, ActionStatus> instanceChangeTaskRunner = operation -> operation.onChangeVersion(container, prevVersion, newVersion);
25 return doOnChangeInstanceOperations(instanceChangeTaskRunner);
28 public ActionStatus doOnDeleteInstanceOperations(Component container, String deletedInstanceId) {
29 log.debug("#doPostChangeVersionOperations - starting on delete instance operations for component {} and instance {}.", container.getUniqueId(), deletedInstanceId);
30 Function<OnComponentInstanceChangeOperation, ActionStatus> instanceChangeTaskRunner = operation -> operation.onDelete(container, deletedInstanceId);
31 return doOnChangeInstanceOperations(instanceChangeTaskRunner);
34 private ActionStatus doOnChangeInstanceOperations(Function<OnComponentInstanceChangeOperation, ActionStatus> instanceChangeTaskRunner) {
35 ActionStatus onDeleteInstanceResult = ActionStatus.OK;
36 Iterator<OnComponentInstanceChangeOperation> onDeleteInstIter = onInstanceChangeOperations.iterator();
37 while(onDeleteInstIter.hasNext() && onDeleteInstanceResult == ActionStatus.OK) {
38 onDeleteInstanceResult = instanceChangeTaskRunner.apply(onDeleteInstIter.next());
40 return onDeleteInstanceResult;