Example #1
0
 public NameSequence()
 {
     using (var storageProvider = new AllCheckinSqlStorageProvider())
     {
         names = storageProvider.GetNames();
     }
 }
 public RandomNameSequence(int givenNameLength)
 {
     using (var storageProvider = new AllCheckinSqlStorageProvider())
     {
         givenNames = storageProvider.GetGivenNames(givenNameLength);
         surNames   = storageProvider.GetSurNames();
     }
 }
Example #3
0
 public void TestNameQueried()
 {
     using (var storageProvider = new AllCheckinSqlStorageProvider())
     {
         Assert.IsFalse(storageProvider.IsNameQueried("王冉"));
         Assert.IsFalse(storageProvider.IsNameQueried("张三"));
         Assert.IsTrue(storageProvider.IsNameQueried("张帅"));
     }
 }
Example #4
0
        public void TestStorage()
        {
            using (IAllCheckinStorageProvider storageProvider = new AllCheckinSqlStorageProvider())
            {
                CheckinEntry entry = new CheckinEntry();
                entry.Id              = "111222";
                entry.Name            = "xxxxx";
                entry.TelephoneNumber = "3214323";
                storageProvider.SaveEntry(entry);

                storageProvider.SaveEntry(entry);
                entry.Id = "2222222";
                storageProvider.SaveEntry(entry);
            }
        }
Example #5
0
 public void TestGetSurNames()
 {
     using (var storageProvider = new AllCheckinSqlStorageProvider())
     {
         var surNames    = storageProvider.GetSurNames();
         var totalWeight = surNames.Sum(surName => surName.Weight);
         Console.WriteLine("Total Weight: {0}", totalWeight);
         Console.WriteLine("Max Int: {0}", Int32.MaxValue);
         Console.WriteLine("================================");
         foreach (var surName in surNames)
         {
             Console.WriteLine("{0,-16}, {1,-16}, {2}", surName.Id, surName.Chinese, surName.Weight);
         }
     }
 }
Example #6
0
 public void TestGetGivenNames()
 {
     using (var storageProvider = new AllCheckinSqlStorageProvider())
     {
         Stopwatch watch = new Stopwatch();
         watch.Start();
         try
         {
             var givenNames = storageProvider.GetGivenNames();
             Console.WriteLine("Total {0} given names.", givenNames.Count);
         }
         finally
         {
             watch.Stop();
             Console.WriteLine("Time Cost: {0} ms", watch.Elapsed.TotalMilliseconds);
         }
     }
 }
Example #7
0
        public void Crawl(long maxStep, QueryType queryType)
        {
            long currentStep = 0;

            using (ICheckinEntryProvider checkinEntryProvider = new CheckinEntryProvider())
                using (IAllCheckinStorageProvider storageProvider = new AllCheckinSqlStorageProvider())
                {
                    checkinEntryProvider.Connect();

                    while (currentStep < maxStep && !keywordSequence.EndOfSequence)
                    {
                        var keyword = keywordSequence.Current;
                        try
                        {
                            if (BeforeCrawl != null)
                            {
                                var args = new BeforeCrawlEventArgs
                                {
                                    Cancel   = false,
                                    Progress = new CrawlProgress
                                    {
                                        Current        = currentStep,
                                        Total          = maxStep,
                                        CurrentKeyword = keyword,
                                        Message        = "Already processed. Skip!",
                                    }
                                };
                                BeforeCrawl.Invoke(this, args);
                                if (args.Cancel)
                                {
                                    continue;
                                }
                            }
                            var entries = checkinEntryProvider.GetEntries(queryType, keyword).ToList();
                            foreach (var entry in entries)
                            {
                                if (entry.Birthdate != null)
                                {
                                    entry.Birthdate = storageProvider.NormalizeDateTime(entry.Birthdate.Value);
                                }
                                if (entry.CheckinTime != null)
                                {
                                    entry.CheckinTime = storageProvider.NormalizeDateTime(entry.CheckinTime.Value);
                                }
                                storageProvider.SaveEntry(entry);
                            }
                            if (AfterCrawl != null)
                            {
                                AfterCrawl.Invoke(this, new AfterCrawlEventArgs
                                {
                                    Progress = new CrawlProgress
                                    {
                                        Current        = currentStep,
                                        Total          = maxStep,
                                        CurrentKeyword = keyword,
                                        Message        = string.Format("{0,5} entry(s) updated.", entries.Count)
                                    }
                                });
                            }
                        }
                        catch (Exception e)
                        {
                            Trace.TraceError("[keyword = {0}] {1}", keyword, e);
                            if (AfterCrawl != null)
                            {
                                AfterCrawl.Invoke(this, new AfterCrawlEventArgs
                                {
                                    Error    = e,
                                    Progress = new CrawlProgress
                                    {
                                        Current        = currentStep,
                                        Total          = maxStep,
                                        CurrentKeyword = keyword,
                                        Message        = "Error!"
                                    }
                                });
                            }
                        }
                        finally
                        {
                            ++currentStep;
                            keywordSequence.MoveNext();

                            Thread.Sleep(PauseInterval);
                        }
                    }
                }
        }