Advertisement
thebys

Jedna ze tříd EPOSu

Jun 2nd, 2011
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.27 KB | None | 0 0
  1. using System.IO; //file operations
  2. using HtmlAgilityPack; //header variable consideration
  3. using System.Windows.Forms; //operace s richtextboxem
  4. using System.Collections;
  5. using System;
  6. using System.ComponentModel;
  7. using System.Threading; //operace s arralistem
  8.  
  9. namespace EPOS_LS
  10. {
  11.     class fahrs
  12.     {
  13.         //načte složku pro zpracování a rozhodne co s jednotlivými soubory
  14.         public static void recognize(string dirpath, form1 form)
  15.         {
  16.             DirectoryInfo dir = new DirectoryInfo(dirpath);
  17.             FileInfo[] fi = dir.GetFiles("*.html");
  18.             foreach (FileInfo file in fi)
  19.             {
  20.                 //složka načtena, budeme zjišťovat co je obsah podle nadpisu h2
  21.                 HtmlAgilityPack.HtmlDocument dokument = new HtmlAgilityPack.HtmlDocument();
  22.                 dokument.Load(file.FullName, System.Text.Encoding.GetEncoding(28592)); //načte dokument se správným kódováním (volby.cz compatible)
  23.                 if (dokument.DocumentNode != null)
  24.                 {
  25.                     HtmlNode h2 = dokument.DocumentNode.SelectSingleNode("//h2");
  26.                     if (h2 != null) //tahle podmínka zařizuje rozřazení podle obsahu H2
  27.                     {
  28.                         if (h2.InnerText.ToString().Contains("Číselník obcí a okrsků") == true) //Je tam nějaká divná mezera, proto contains a nestačí ==
  29.                         {
  30.                             //baselist.Tfilllevel3(file.FullName, form); //určeno pro číselníky 3. úrovně
  31.                             //zakomentováno - tato úroveň číselníku je v databázi a není potřeba ji přidávat
  32.                         }
  33.                         if (h2.InnerText.ToString().Contains("") == true) //-//-
  34.                         {
  35.  
  36.                         }
  37.                     }
  38.                 }
  39.                 else
  40.                 {
  41.                     //H2 error...
  42.                     logsys.WriteLogEntry(file.Name + "neobsahuje H2 (!!!)", form);
  43.                 }
  44.             }
  45.  
  46.         }
  47.         //snalyzuje soubory ve složce na hlavní vlákně
  48.         public static void AnalyzeFolder(string dirpath, string xpath, form1 form, RichTextBox richTextBox)
  49.         {
  50.             //vygenerování polí pro výsledek a počet výsledků
  51.             ArrayList vysledky = new ArrayList();
  52.             ArrayList pocty = new ArrayList();
  53.             pocty.Add(0);
  54.             vysledky.Add("Dokument neobsahuje nic podle zadaných kritérií (XPATH)");
  55.             DirectoryInfo dir = new DirectoryInfo(dirpath);
  56.             FileInfo[] fi = dir.GetFiles("*.html");
  57.             foreach (FileInfo file in fi)
  58.             {
  59.                 //složka načtena, budeme zjišťovat co je obsah podle nadpisu h2
  60.                 HtmlAgilityPack.HtmlDocument dokument = new HtmlAgilityPack.HtmlDocument();
  61.                 dokument.Load(file.FullName, System.Text.Encoding.GetEncoding(28592)); //načte dokument se správným kódováním (volby.cz compatible)
  62.                 if (dokument.DocumentNode != null)
  63.                 {
  64.                     HtmlNode node = dokument.DocumentNode.SelectSingleNode(xpath);
  65.                     try
  66.                     {
  67.                         string vysledek = node.InnerHtml.ToString();
  68.                         int i = 0;
  69.                         bool nalezeno = false;
  70.                         foreach (string zaznam in vysledky)
  71.                         {
  72.                             if (zaznam.Contains(vysledek)) { nalezeno = true; break; } //prochází záznamy dokud nenajde shodu - pokud ji najde změní proměnnou nalezeno a přeruší cyklus
  73.                             else
  74.                             {
  75.                                 i++;
  76.                             }
  77.                         }
  78.                         if (!nalezeno)
  79.                         {
  80.                             vysledky.Add(vysledek); //přidá nový výsledek do pole
  81.                             pocty.Add(1);
  82.                         }
  83.                         else if (nalezeno) { pocty[i] = 1 + Convert.ToInt32(pocty[i].ToString()); i++; } //inkrementuje počet nalezených výsledků
  84.  
  85.                         //else
  86.                         //{
  87.                         //    pocty[0] = 1 + Convert.ToInt32(pocty[0].ToString());
  88.                         //}
  89.                     }
  90.  
  91.  
  92.                     catch (NullReferenceException)
  93.                     {
  94.                         pocty[0] = 1 + Convert.ToInt32(pocty[0].ToString()); //pokud není H2
  95.                     }
  96.  
  97.                 }
  98.                 for (int z = 0; z < vysledky.Count; z++)
  99.                 {
  100.                     richTextBox.AppendText(vysledky[z] + " -nalezeno: " + pocty[z] + "*\r\n");
  101.                 }
  102.  
  103.  
  104.             }
  105.         }
  106.         //analyzuje soubory ve složce na pracovním vlákně (nesekne aplikaci)
  107.         static BackgroundWorker bw = new BackgroundWorker();
  108.         public static void AnalyzeFolderBackground(object data)
  109.         {
  110.             analyzepattern workdata = data as analyzepattern;
  111.             bw.DoWork += new DoWorkEventHandler(bw_DoWork);
  112.             bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
  113.             bw.WorkerSupportsCancellation = true;
  114.             bw.RunWorkerAsync(data);
  115.         }
  116.  
  117.         static void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  118.         {
  119.            
  120.             if (e.Cancelled)
  121.             {}
  122.            
  123.             if (e.Error != null) {}
  124.             else
  125.             {
  126.                 workdata outputdata = e.Result as workdata;
  127.                 var form = Form.ActiveForm as form1;
  128.                 if (form != null)
  129.                 {
  130.                     for (int z = 0; z < outputdata.vysledky.Count; z++)
  131.                     {
  132.                         form.richTextBox1.AppendText(outputdata.vysledky[z] + " -nalezeno: " + outputdata.pocty[z] + "*\r\n");
  133.                     }
  134.                 }
  135.             }
  136.         }
  137.  
  138.         static void bw_DoWork(object sender, DoWorkEventArgs e)
  139.         {
  140.             //přimeme argumenty
  141.             analyzepattern inputdata = e.Argument as analyzepattern;
  142.             ArrayList pocty = new ArrayList();
  143.             ArrayList vysledky = new ArrayList();
  144.             //tady je práce + dopsat cancel atp...
  145.             //vygenerování polí pro výsledek a počet výsledků
  146.             pocty.Add(0);
  147.             vysledky.Add("Dokument neobsahuje nic podle zadaných kritérií (XPATH)");
  148.             DirectoryInfo dir = new DirectoryInfo(inputdata.folderpath);
  149.             FileInfo[] fi = dir.GetFiles("*.html");
  150.             foreach (FileInfo file in fi)
  151.             {
  152.                 //ověříme jestli nemáme přestat
  153.                 if (bw.CancellationPending)
  154.                 {
  155.                     e.Cancel = true;
  156.                     return; //proč je tu tohle?
  157.                 }
  158.                 //složka načtena, budeme zjišťovat co je obsah podle nadpisu h2
  159.                 HtmlAgilityPack.HtmlDocument dokument = new HtmlAgilityPack.HtmlDocument();
  160.                 dokument.Load(file.FullName, System.Text.Encoding.GetEncoding(28592)); //načte dokument se správným kódováním (volby.cz compatible)
  161.                 if (dokument.DocumentNode != null)
  162.                 {
  163.                     HtmlNode node = dokument.DocumentNode.SelectSingleNode(inputdata.xpath);
  164.                     try
  165.                     {
  166.                         string vysledek = node.InnerHtml.ToString();
  167.                         int i = 0;
  168.                         bool nalezeno = false;
  169.                         foreach (string zaznam in vysledky)
  170.                         {
  171.                             if (zaznam.Contains(vysledek)) { nalezeno = true; break; } //prochází záznamy dokud nenajde shodu - pokud ji najde změní proměnnou nalezeno a přeruší cyklus
  172.                             else
  173.                             {
  174.                                 i++;
  175.                             }
  176.                         }
  177.                         if (!nalezeno)
  178.                         {
  179.                             vysledky.Add(vysledek); //přidá nový výsledek do pole
  180.                             pocty.Add(1);
  181.                         }
  182.                         else if (nalezeno) { pocty[i] = 1 + Convert.ToInt32(pocty[i].ToString()); i++; } //inkrementuje počet nalezených výsledků
  183.  
  184.                         else
  185.                         {
  186.                             pocty[0] = 1 + Convert.ToInt32(pocty[0].ToString());
  187.                         }
  188.                     }
  189.  
  190.  
  191.                     catch (NullReferenceException)
  192.                     {
  193.                         pocty[0] = 1 + Convert.ToInt32(pocty[0].ToString()); //pokud není H2
  194.                     }
  195.                 }
  196.                 else
  197.                 {
  198.                     pocty[0] = 1 + Convert.ToInt32(pocty[0].ToString()); //pokud není dokument?
  199.                 }
  200.  
  201.  
  202.                
  203.             }
  204.             //odešleme výsledek metodě runworkercompleted
  205.             workdata outputdata = new workdata();
  206.             outputdata.vysledky = vysledky;
  207.             outputdata.pocty = pocty;
  208.             e.Result = outputdata;
  209.         }
  210.         public static void cancelbw() { bw.CancelAsync(); }
  211.     }
  212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement