From a8cd3e14781f702554e1e305a181726b8189152b Mon Sep 17 00:00:00 2001 From: Emanuele Ferrelli Date: Thu, 21 Nov 2024 16:33:12 +0100 Subject: [PATCH] updated step counter for user visualization while executing scenarios --- .../services/ScenarioExecutionService.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/olympus/hermione/services/ScenarioExecutionService.java b/src/main/java/com/olympus/hermione/services/ScenarioExecutionService.java index 45ac5ca..58d81aa 100644 --- a/src/main/java/com/olympus/hermione/services/ScenarioExecutionService.java +++ b/src/main/java/com/olympus/hermione/services/ScenarioExecutionService.java @@ -3,6 +3,8 @@ package com.olympus.hermione.services; import java.util.HashMap; import java.util.List; import java.util.Optional; +import java.util.OptionalInt; +import java.util.stream.IntStream; import org.slf4j.LoggerFactory; import org.springframework.ai.azure.openai.AzureOpenAiChatModel; @@ -84,7 +86,7 @@ public class ScenarioExecutionService { public ScenarioOutput getExecutionProgress(String scenarioExecutionId){ ScenarioOutput scenarioOutput = new ScenarioOutput(); Optional o_scenarioExecution = scenarioExecutionRepository.findById(scenarioExecutionId); - + if(o_scenarioExecution.isPresent()){ ScenarioExecution scenarioExecution = o_scenarioExecution.get(); scenarioExecution.setCurrentStepId(scenarioExecution.getCurrentStepId()); @@ -97,10 +99,16 @@ public class ScenarioExecutionService { }else{ scenarioOutput.setScenarioExecution_id(scenarioExecution.getId()); scenarioOutput.setStatus("IN_PROGRESS"); - scenarioOutput.setCurrentStepId(scenarioExecution.getCurrentStepId()); - scenarioOutput.setCurrentStepDescription(scenarioExecution.getCurrentStepDescription()); - if (scenarioOutput.getCurrentStepId() != null){ - scenarioOutput.setMessage("Executing "+scenarioOutput.getCurrentStepId()+"/"+scenarioExecution.getScenario().getSteps().size()+": "+scenarioOutput.getCurrentStepDescription()+"."); + + if (scenarioExecution.getCurrentStepId() != null){ + OptionalInt indexOpt = IntStream.range(0, scenarioExecution.getScenario().getSteps().size()) + .filter(i -> scenarioExecution.getScenario().getSteps().get(i).getStepId().equals(scenarioExecution.getCurrentStepId())) + .map(i -> i + 1) + .findFirst(); + + scenarioOutput.setCurrentStepId(scenarioExecution.getCurrentStepId()); + scenarioOutput.setCurrentStepDescription(scenarioExecution.getCurrentStepDescription()); + scenarioOutput.setMessage("Executing step "+indexOpt.getAsInt()+"/"+scenarioExecution.getScenario().getSteps().size()+": "+scenarioOutput.getCurrentStepDescription()+"."); }else { scenarioOutput.setMessage("Starting execution..."); }