/// <summary> /// The load user data from desktop search. /// </summary> /// <param name="endTime">The end time.</param> /// <param name="months">The months.</param> /// <param name="errors">The errors.</param> /// <returns>The <see cref="User"/></returns> internal static User LoadUserData(DateTime endTime, int months, out IList <string> errors) { errors = new List <string>(); // The object that holds all user data var user = new User(); DateTime startTime = endTime.AddMonths(-months); Console.WriteLine(@"Start {0}, End {1}", startTime, endTime); // Populate user mailbox data from desktop search // Note: this does not retrieve email content, just summaries using (var dsp = new DesktopSearchProvider { User = user, StartTime = startTime, EndTime = endTime }) { using (new CodeTimer("Populating contacts")) { dsp.PopulateContacts(); } using (new CodeTimer("Populating messages")) { dsp.PopulateMessages(); } Console.WriteLine(@"{0} contacts found", user.ContactDetailsAddressLookup.Count + user.ContactDetailsNameLookup.Count); Console.WriteLine(@"{0} conversations found", user.Conversations.Count()); Console.WriteLine(@"{0} messages found", user.Messages.Count); // Heuristic to merge people with multiple email addresses using (new CodeTimer("Merging contacts")) { user.MergeContacts(); } Console.WriteLine(@"{0} contacts after merging", user.Contacts.Count); Console.WriteLine(@"{0} identities", user.Identities.Count); if (user.Conversations.Count == 0) { errors.Add("Conversation count is 0"); } return(user); } }
/// <summary> /// Loads the inputs from desktop fetcher. /// </summary> /// <param name="months">The number of months to go back into the past.</param> /// <returns> /// The inputs /// </returns> private User LoadInputsFromDesktopFetcher(int months) { // Use desktop fetcher IList <string> errors; User user = DesktopSearchProvider.LoadUserData(this.EndTime, months, out errors); user.SetUpData(months, Program.TrainSetSize, Program.ValidationSetSize, Program.TestSetSize, out errors); if (errors.Count == 0) { return(user); } // Here we could just return the partial files, or null, asking the user to expand the date range Console.WriteLine(string.Join("\n", errors)); if (months < Program.MaxMonths) { return(null); } Console.WriteLine(@"Continuing to save files anyway since the maximum number of months was entered."); return(user); }