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 } }
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); }