Advertisement
thebys

2010 / funkční anlýza volbeních výsledků

Jun 11th, 2011
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.61 KB | None | 0 0
  1.      static void bw2002_DoWork(object sender, DoWorkEventArgs e)
  2.         {
  3.             //zpracujeme argumenty
  4.             analyzepattern inputdata = e.Argument as analyzepattern;
  5.             logsys.WriteLogEntry("Pracovní vlákno aktivní! BW2002 pracuje...", inputdata.form);
  6.             DirectoryInfo dir = new DirectoryInfo(inputdata.folderpath);
  7.             FileInfo[] fi = dir.GetFiles("*.html"); //!!!HTML NEBO HTM
  8.             Int32 p = 0; //počet zpracovaných souborů
  9.             foreach (FileInfo file in fi)
  10.             {
  11.                 //ověříme jestli nemáme přestat
  12.                 if (bw2002.CancellationPending)
  13.                 {
  14.                     e.Cancel = true;
  15.                     return; //proč je tu tohle?
  16.                 }
  17.                
  18.                 HtmlAgilityPack.HtmlDocument dokument = new HtmlAgilityPack.HtmlDocument();
  19.                 dokument.Load(file.FullName, System.Text.Encoding.GetEncoding(28592)); //načte dokument se správným kódováním (volby.cz compatible)
  20.                
  21.                 if (dokument.DocumentNode != null)
  22.                 {
  23.                     //ověření typu dokumentu
  24.                     HtmlNode nadpis = dokument.DocumentNode.SelectSingleNode("//h2"); // musí být Výsledky hlasování za územní celky
  25.                     HtmlNode citynameinput = dokument.DocumentNode.SelectSingleNode("//h3[last()]"); //prvních 6 znaků poslední H3 musí být obec...
  26.                     if (nadpis != null & citynameinput != null)
  27.                     {
  28.                         if (nadpis.InnerText.Contains("Výsledky hlasování za územní celky") & citynameinput.InnerText.Contains("Obec: "))
  29.                         {
  30.                             //zjistímě jméno a ID obce
  31.                             string cityname = citynameinput.InnerText.ToString();
  32.                             cityname = cityname.Replace(" ", " ");
  33.                             cityname = cityname.Remove(0, 7);
  34.                             cityname = cityname.Remove(cityname.Length - 1, 1);
  35.                             int cityid = dbo.getcityid(cityname);
  36.                             //zjistíme počet nevoličů
  37.                             HtmlNode volicivseznamuinput = dokument.DocumentNode.SelectSingleNode("//div[@class='tabulka1']/table//tr[3]/td[4]");
  38.                             HtmlNode platnehlasyinput = dokument.DocumentNode.SelectSingleNode("//div[@class='tabulka1']/table//tr[3]/td[8]");
  39.                             string volicivseznamu = volicivseznamuinput.InnerText.ToString();
  40.                             string platnehlasy = platnehlasyinput.InnerText.ToString();
  41.                             volicivseznamu = volicivseznamu.Replace(" ", string.Empty);
  42.                             volicivseznamu = volicivseznamu.Replace(" ", string.Empty);
  43.                             platnehlasy = platnehlasy.Replace(" ", string.Empty);
  44.                             platnehlasy = platnehlasy.Replace(" ", string.Empty);
  45.                             int pocetnevolicu = (Convert.ToInt32(volicivseznamu) - Convert.ToInt32(platnehlasy));
  46.                             //zapíšeme počet nevoličů
  47.                             if (cityid != -1)
  48.                             {
  49.                                 dbo.zapisvysledek(inputdata.year, cityid, -1, pocetnevolicu); //-1 se interpretuje jako null!
  50.                             }
  51.                             else
  52.                             {
  53.                                 logsys.WriteLogEntry("Nepodařilo se vytvořit řádek početnevoliču, vynechávám obec!: " + cityid + " : " + cityname + " - " + file.FullName, inputdata.form);
  54.                                 continue;
  55.                             }
  56.                             //zjistíme jednotlivé výsledky
  57.                             HtmlNodeCollection radkytabulky = dokument.DocumentNode.SelectNodes("//div[@class='tabulka2']//tr");
  58.                             foreach (HtmlNode radek in radkytabulky)
  59.                             {
  60.                                 int volebnistrana = -1;
  61.                                 int pocethlasu = -1;
  62.                                 HtmlNode stranainput = radek.SelectSingleNode("td[1]");
  63.                                 if (stranainput != null)
  64.                                 {
  65.                                     if (!stranainput.InnerText.ToString().Contains("-"))
  66.                                     {
  67.                                         volebnistrana = Convert.ToInt32(stranainput.InnerText.ToString());
  68.                                     }
  69.                                     else
  70.                                     {  
  71.                                         continue;
  72.                                     }
  73.                                 }
  74.                                 else
  75.                                 {
  76.                                     continue;
  77.                                 }
  78.                                 HtmlNode hlasyinput = radek.SelectSingleNode("td[3]");
  79.                                 if (hlasyinput != null)
  80.                                 {
  81.                                     if (!hlasyinput.InnerText.ToString().Contains("-"))
  82.                                     {
  83.                                         string pocethlasuinput = hlasyinput.InnerText.ToString();
  84.                                         pocethlasuinput = pocethlasuinput.Replace(" ", string.Empty);
  85.                                         pocethlasuinput = pocethlasuinput.Replace(" ", string.Empty);
  86.                                         pocethlasu = Convert.ToInt32(pocethlasuinput);
  87.                                     }
  88.                                     else
  89.                                     {
  90.                                         continue;
  91.                                     }
  92.                                 }
  93.                                 else
  94.                                 {  
  95.                                     continue;
  96.                                 }
  97.                                 //zapíšeme výsledek
  98.                                 if (cityid != -1 & volebnistrana != -1 & pocethlasu != -1)
  99.                                 {
  100.                                     dbo.zapisvysledek(inputdata.year, cityid, volebnistrana, pocethlasu);
  101.                                 }
  102.                             }
  103.                         }
  104.                     }
  105.                     else
  106.                     {
  107.                         continue;
  108.                     }
  109.                 }
  110.                 p++;
  111.                 bw2002.ReportProgress(p);
  112.             }
  113.  
  114.              
  115.             }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement