Exemplo n.º 1
0
        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));
        }