- for (int i = listSize - 1; i >= 0; i--) {
- if (i > currentSequence - 1) {
- flowsToExecute.remove(i);
- } else {
- String flowName = flowsToExecute.get(i).getBuildingBlock().getBpmnFlowName();
- if (flowName.startsWith("Assign")) {
- flowName = flowName.replaceFirst("Assign", "Unassign");
- } else if (flowName.startsWith("Create")) {
- flowName = flowName.replaceFirst("Create", "Delete");
- } else if (flowName.startsWith("Activate")) {
- flowName = flowName.replaceFirst("Activate", "Deactivate");
- } else if (flowName.startsWith("Add")) {
- flowName = flowName.replaceFirst("Add", "Delete");
- } else if (flowName.startsWith("VNF")) {
- if (flowName.startsWith("VNFSet")) {
- flowName = flowName.replaceFirst("VNFSet", "VNFUnset");
- } else if (flowName.startsWith("VNFLock")) {
- flowName = flowName.replaceFirst("VNFLock", "VNFUnlock");
- } else if (flowName.startsWith("VNFStop")) {
- flowName = flowName.replaceFirst("VNFStop", "VNFStart");
- } else if (flowName.startsWith("VNFQuiesce")) {
- flowName = flowName.replaceFirst("VNFQuiesce", "VNFResume");
- } else {
- continue;
- }
- } else {
- continue;
+ List<BuildingBlockRollback> filteredList = bbRollbackList.stream()
+ .filter(k -> k.getBuildingBlockName().equals((flowName))).collect(Collectors.toList());
+ Optional<BuildingBlockRollback> matchedBBRollback =
+ "".equals(bbAction) ? filteredList.stream().findFirst()
+ : filteredList.stream().filter(k -> bbAction.equals(k.getAction())).findFirst();
+ if (matchedBBRollback.isPresent()) {
+ final BuildingBlockRollback buildingBlockRollbackItem = matchedBBRollback.get();
+ String rollbackFlow = buildingBlockRollbackItem.getRollbackBuildingBlockName();
+ flowsToExecute.get(i).getBuildingBlock().setBpmnFlowName(rollbackFlow);
+ // if we have an action, search the filtered list for the bbrollback that matches the given action.
+ if (null != buildingBlockRollbackItem.getRollbackAction()) {
+ logger.info("Setting rollback_action {} for BB: {} action: {}",
+ buildingBlockRollbackItem.getRollbackAction(),
+ buildingBlockRollbackItem.getBuildingBlockName(),
+ buildingBlockRollbackItem.getAction());
+ flowsToExecute.get(i).getBuildingBlock()
+ .setBpmnAction(buildingBlockRollbackItem.getRollbackAction());