protected override async Task InitializeForNewStudySessionAsync(
            MultiLineTextList multiLineTexts)
        {
            #region DisableNav/Thinking
            DisableNavigationRequestedEventMessage.Publish();
            var targetId = Guid.NewGuid();
            History.Events.ThinkingAboutTargetEvent.Publish(targetId);
            #endregion
            try
            {
                #region ThinkPing
                History.Events.ThinkingAboutTargetEvent.Publish(System.Guid.Empty);
                #endregion
                var retrieverStudyData = await Business.StudyDataRetriever.CreateNewAsync();

                _CurrentUserNativeLanguageText = retrieverStudyData.StudyData.NativeLanguageText;
                #region ThinkPing
                History.Events.ThinkingAboutTargetEvent.Publish(System.Guid.Empty);
                #endregion
                var retrieverRecentBeliefs = await MostRecentPhraseDataBeliefsRetriever.CreateNewAsync();

                _MostRecentPhraseBeliefsCache = retrieverRecentBeliefs.MostRecentPhraseBeliefs;
                #region ThinkPing
                History.Events.ThinkingAboutTargetEvent.Publish(System.Guid.Empty);
                #endregion
            }
            finally
            {
                #region EnableNav/Thinked
                EnableNavigationRequestedEventMessage.Publish();
                History.Events.ThinkedAboutTargetEvent.Publish(targetId);
                #endregion
            }
        }
Пример #2
0
        GetAnalysisImpl(string analysisIdString = "", bool recordInDb = false)
        {
            if (analysisIdString == AnalysisResources.AnalysisIdEstimatedKnownPhraseCounts)
            {
                ///IF WE ALREADY HAVE AN ANALYSIS, THEN RETURN THAT. REFINE ANALYSIS
                ///IS RESPONSIBLE FOR UPDATING THIS ONCE THE ANALYSIS IS CREATED.
                if (_Analysis != null)
                {
                    _Analysis  = null;
                    _Retriever = null;
                    _UnrefinedPhraseBeliefs = null;
                    AnalysisHasBeenBuilt    = false;
                    //return _Analysis;
                }

                ///OUR DATA WILL BE IN THE FORM OF A LIST OF KEYVALUEPAIRS
                ObservableCollection <KeyValuePair <string, int> > data =
                    new ObservableCollection <KeyValuePair <string, int> >();

                ///GET THE MOST RECENT BELIEF FOR EACH AND EVERY PHRASE
                ///FOR THE CURRENT USER. I AM STORING THIS IN A PROPERTY
                ///FOR USE WITH THE REFINE ANALYSIS
                if (_Retriever == null)
                {
                    _Retriever = await MostRecentPhraseDataBeliefsRetriever.CreateNewAsync();
                }

                var results = from belief in _Retriever.MostRecentPhraseBeliefs
                              group belief by belief.Phrase.Language.Text into languageGroup
                              orderby languageGroup.Key
                              select languageGroup;

                foreach (var group in results)
                {
                    var languageText           = group.Key;
                    var totalPhrasesInLanguage = group.Count();
                    var knownCount             = 0;
                    foreach (var belief in group)
                    {
                        ///IF THE STRENGTH MEETS OUR MINIMUM THRESHOLD FOR KNOWLEDGE
                        ///THEN WE CONSIDER THE PHRASE TO BE KNOWN
                        if (belief.Strength >= _MinBeliefStrengthForKnowledge)
                        {
                            knownCount++;
                        }
                    }

                    ///WE NOW KNOW HOW MANY PHRASES WE KNOW FOR THIS LANGUAGE, SO
                    ///ADD IT TO THE DATA
                    data.Add(new KeyValuePair <string, int>(languageText, knownCount));
                }

                ///AND CREATE OUR ANALYSIS
                _Analysis            = new EstimatedKnownPhraseCountsAnalysis(data);
                AnalysisHasBeenBuilt = true;

                ///WE DONE MERN!
                return(_Analysis);
            }

            ///IF WE'VE GOTTEN THIS FAR, THE CALLER IS ASKING FOR AN ANALYSIS
            ///THAT THIS ANALYZER DOES NOT RECOGNIZE
            throw new AnalysisIdNotRecognizedException(analysisIdString, 0);
        }