internal static IEnumerable <AnnotatedQuestionDialog> ParseQuestionDialogs(AnnotatedDialogLogFile log, QuestionCollection questions = null) { var actions = log.LoadActions().ToArray(); var validDialogs = new List <AnnotatedQuestionDialog>(); //fill builders with dialog data AnnotatedDialogBuilder currentBuilder = null; foreach (var action in actions) { if (action.IsDialogStart && currentBuilder != null) { if (currentBuilder.HasValidDialog) { validDialogs.Add(currentBuilder.Build()); } currentBuilder = null; } if (currentBuilder == null) { currentBuilder = new AnnotatedDialogBuilder(log, questions); } currentBuilder.Register(action); } return(validDialogs); }
internal void Refresh() { _questionDialogs.Clear(); var logFiles = new List <LogFile>(); foreach (var experiment in _experiments) { foreach (var logFile in experiment.LoadLogFiles()) { logFiles.Add(logFile); } } foreach (var logFile in logFiles) { var annotatedLogFile = new AnnotatedDialogLogFile(logFile); foreach (var dialog in AnnotatedDialogBuilder.ParseQuestionDialogs(annotatedLogFile, _questions)) { _questionDialogs.Add(dialog); } } _questionDialogs.Sort((a, b) => a.DialogEnd.CompareTo(b.DialogEnd)); }