@Override public <T> List<IData<T>> getAllLatestData(String prefix) { return conversationSteps.stream().map((IConversationStep conversationStep) -> conversationStep.<T>getLatestData(prefix)).collect(Collectors.toList()); }
private int countActionOccurrences(IConversationStepStack conversationStepStack, String action) { int count = 0; for (int i = 0; i < conversationStepStack.size(); i++) { IConversationStep conversationStep = conversationStepStack.get(i); IData<List<String>> latestData = conversationStep.getLatestData(KEY_ACTIONS); if (latestData != null) { List<String> actions = latestData.getResult(); if (actions.contains(action)) { count++; } } } return count; }
actionsData = previousSteps.get(0).getLatestData(ACTIONS_IDENTIFIER); if (actionsData != null) { List<String> actions = actionsData.getResult();
@Override public ExecutionState execute(IConversationMemory memory, List<BehaviorRule> trace) { IData<String> data; switch (occurrence) { case currentStep: data = memory.getCurrentStep().getLatestData(KEY_EXPRESSIONS); state = evaluateInputExpressions(data); break; case lastStep: IConversationStepStack previousSteps = memory.getPreviousSteps(); if (previousSteps.size() > 0) { data = previousSteps.get(0).getLatestData(KEY_EXPRESSIONS); state = evaluateInputExpressions(data); } else { state = FAIL; } break; case anyStep: state = occurredInAnyStep(memory, KEY_EXPRESSIONS, this::evaluateInputExpressions) ? SUCCESS : FAIL; break; case never: state = occurredInAnyStep(memory, KEY_EXPRESSIONS, this::evaluateInputExpressions) ? FAIL : SUCCESS; break; } return state; }
@Override public ExecutionState execute(IConversationMemory memory, List<BehaviorRule> trace) { IData<List<String>> data; switch (occurrence) { case currentStep: data = memory.getCurrentStep().getLatestData(KEY_ACTIONS); state = evaluateActions(data); break; case lastStep: IConversationMemory.IConversationStepStack previousSteps = memory.getPreviousSteps(); if (previousSteps.size() > 0) { data = previousSteps.get(0).getLatestData(KEY_ACTIONS); state = evaluateActions(data); } else { state = FAIL; } break; case anyStep: state = occurredInAnyStep(memory, KEY_ACTIONS, this::evaluateActions) ? SUCCESS : FAIL; break; case never: state = occurredInAnyStep(memory, KEY_ACTIONS, this::evaluateActions) ? FAIL : SUCCESS; break; } return state; }