diff --git a/src/main/java/com/olympus/hermione/services/ScenarioExecutionService.java b/src/main/java/com/olympus/hermione/services/ScenarioExecutionService.java index 69153e2..0d1c0c2 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; @@ -85,7 +87,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()); @@ -98,10 +100,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..."); }