@Override public <T> List<IData<T>> getAllData(String prefix) { List<IData<T>> dataList = new ArrayList<>(); for (String key : store.keySet()) { IData<T> data = getData(key); if (data != null) { if (key.startsWith(prefix)) dataList.add(data); } } return dataList; }
@Override public String toString() { return "ConversationStep" + "{input=" + getLatestData("input") + ", output=" + getLatestData("output") + '}'; } }
public ConversationMemory(String botId, Integer botVersion) { this.botId = botId; this.botVersion = botVersion; ConversationOutput conversationOutput = new ConversationOutput(); this.conversationOutputs.add(conversationOutput); this.currentStep = new ConversationStep(conversationOutput); this.previousSteps = new Stack<>(); }
@Override public <T> IData<T> getLatestData(String prefix) { List<IData> elements = getAllElements(); Collections.reverse(elements); for (IData element : elements) { if (element.getKey().startsWith(prefix)) { return element; } } return null; }
IConversationStep startNextStep(ConversationOutput conversationOutput) { ((ConversationStep) currentStep).conversationStepNumber = previousSteps.size(); previousSteps.push(currentStep); if (conversationOutput == null) { conversationOutput = new ConversationOutput(); } conversationOutputs.add(conversationOutput); currentStep = new ConversationStep(conversationOutput); return currentStep; }
private static List<IConversationMemory.IConversationStep> iterateRedoCache(List<ConversationMemorySnapshot.ConversationStepSnapshot> redoSteps) { List<IConversationMemory.IConversationStep> conversationSteps = new LinkedList<>(); for (ConversationMemorySnapshot.ConversationStepSnapshot redoStep : redoSteps) { IConversationMemory.IWritableConversationStep conversationStep = new ConversationStep(new ConversationOutput()); conversationSteps.add(conversationStep); for (ConversationMemorySnapshot.PackageRunSnapshot packageRunSnapshot : redoStep.getPackages()) { for (ConversationMemorySnapshot.ResultSnapshot resultSnapshot : packageRunSnapshot.getLifecycleTasks()) { Data data = new Data(resultSnapshot.getKey(), resultSnapshot.getResult(), resultSnapshot.getPossibleResults(), resultSnapshot.getTimestamp(), resultSnapshot.isPublic()); conversationStep.storeData(data); } } } return conversationSteps; }