コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        /// <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);
        }