Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.IO; //file operations
- using HtmlAgilityPack; //header variable consideration
- using System.Windows.Forms; //operace s richtextboxem
- using System.Collections;
- using System;
- using System.ComponentModel;
- using System.Threading; //operace s arralistem
- namespace EPOS_LS
- {
- class fahrs
- {
- //načte složku pro zpracování a rozhodne co s jednotlivými soubory
- public static void recognize(string dirpath, form1 form)
- {
- DirectoryInfo dir = new DirectoryInfo(dirpath);
- FileInfo[] fi = dir.GetFiles("*.html");
- foreach (FileInfo file in fi)
- {
- //složka načtena, budeme zjišťovat co je obsah podle nadpisu h2
- HtmlAgilityPack.HtmlDocument dokument = new HtmlAgilityPack.HtmlDocument();
- dokument.Load(file.FullName, System.Text.Encoding.GetEncoding(28592)); //načte dokument se správným kódováním (volby.cz compatible)
- if (dokument.DocumentNode != null)
- {
- HtmlNode h2 = dokument.DocumentNode.SelectSingleNode("//h2");
- if (h2 != null) //tahle podmínka zařizuje rozřazení podle obsahu H2
- {
- if (h2.InnerText.ToString().Contains("Číselník obcí a okrsků") == true) //Je tam nějaká divná mezera, proto contains a nestačí ==
- {
- //baselist.Tfilllevel3(file.FullName, form); //určeno pro číselníky 3. úrovně
- //zakomentováno - tato úroveň číselníku je v databázi a není potřeba ji přidávat
- }
- if (h2.InnerText.ToString().Contains("") == true) //-//-
- {
- }
- }
- }
- else
- {
- //H2 error...
- logsys.WriteLogEntry(file.Name + "neobsahuje H2 (!!!)", form);
- }
- }
- }
- //snalyzuje soubory ve složce na hlavní vlákně
- public static void AnalyzeFolder(string dirpath, string xpath, form1 form, RichTextBox richTextBox)
- {
- //vygenerování polí pro výsledek a počet výsledků
- ArrayList vysledky = new ArrayList();
- ArrayList pocty = new ArrayList();
- pocty.Add(0);
- vysledky.Add("Dokument neobsahuje nic podle zadaných kritérií (XPATH)");
- DirectoryInfo dir = new DirectoryInfo(dirpath);
- FileInfo[] fi = dir.GetFiles("*.html");
- foreach (FileInfo file in fi)
- {
- //složka načtena, budeme zjišťovat co je obsah podle nadpisu h2
- HtmlAgilityPack.HtmlDocument dokument = new HtmlAgilityPack.HtmlDocument();
- dokument.Load(file.FullName, System.Text.Encoding.GetEncoding(28592)); //načte dokument se správným kódováním (volby.cz compatible)
- if (dokument.DocumentNode != null)
- {
- HtmlNode node = dokument.DocumentNode.SelectSingleNode(xpath);
- try
- {
- string vysledek = node.InnerHtml.ToString();
- int i = 0;
- bool nalezeno = false;
- foreach (string zaznam in vysledky)
- {
- 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
- else
- {
- i++;
- }
- }
- if (!nalezeno)
- {
- vysledky.Add(vysledek); //přidá nový výsledek do pole
- pocty.Add(1);
- }
- else if (nalezeno) { pocty[i] = 1 + Convert.ToInt32(pocty[i].ToString()); i++; } //inkrementuje počet nalezených výsledků
- //else
- //{
- // pocty[0] = 1 + Convert.ToInt32(pocty[0].ToString());
- //}
- }
- catch (NullReferenceException)
- {
- pocty[0] = 1 + Convert.ToInt32(pocty[0].ToString()); //pokud není H2
- }
- }
- for (int z = 0; z < vysledky.Count; z++)
- {
- richTextBox.AppendText(vysledky[z] + " -nalezeno: " + pocty[z] + "*\r\n");
- }
- }
- }
- //analyzuje soubory ve složce na pracovním vlákně (nesekne aplikaci)
- static BackgroundWorker bw = new BackgroundWorker();
- public static void AnalyzeFolderBackground(object data)
- {
- analyzepattern workdata = data as analyzepattern;
- bw.DoWork += new DoWorkEventHandler(bw_DoWork);
- bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
- bw.WorkerSupportsCancellation = true;
- bw.RunWorkerAsync(data);
- }
- static void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- if (e.Cancelled)
- {}
- if (e.Error != null) {}
- else
- {
- workdata outputdata = e.Result as workdata;
- var form = Form.ActiveForm as form1;
- if (form != null)
- {
- for (int z = 0; z < outputdata.vysledky.Count; z++)
- {
- form.richTextBox1.AppendText(outputdata.vysledky[z] + " -nalezeno: " + outputdata.pocty[z] + "*\r\n");
- }
- }
- }
- }
- static void bw_DoWork(object sender, DoWorkEventArgs e)
- {
- //přimeme argumenty
- analyzepattern inputdata = e.Argument as analyzepattern;
- ArrayList pocty = new ArrayList();
- ArrayList vysledky = new ArrayList();
- //tady je práce + dopsat cancel atp...
- //vygenerování polí pro výsledek a počet výsledků
- pocty.Add(0);
- vysledky.Add("Dokument neobsahuje nic podle zadaných kritérií (XPATH)");
- DirectoryInfo dir = new DirectoryInfo(inputdata.folderpath);
- FileInfo[] fi = dir.GetFiles("*.html");
- foreach (FileInfo file in fi)
- {
- //ověříme jestli nemáme přestat
- if (bw.CancellationPending)
- {
- e.Cancel = true;
- return; //proč je tu tohle?
- }
- //složka načtena, budeme zjišťovat co je obsah podle nadpisu h2
- HtmlAgilityPack.HtmlDocument dokument = new HtmlAgilityPack.HtmlDocument();
- dokument.Load(file.FullName, System.Text.Encoding.GetEncoding(28592)); //načte dokument se správným kódováním (volby.cz compatible)
- if (dokument.DocumentNode != null)
- {
- HtmlNode node = dokument.DocumentNode.SelectSingleNode(inputdata.xpath);
- try
- {
- string vysledek = node.InnerHtml.ToString();
- int i = 0;
- bool nalezeno = false;
- foreach (string zaznam in vysledky)
- {
- 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
- else
- {
- i++;
- }
- }
- if (!nalezeno)
- {
- vysledky.Add(vysledek); //přidá nový výsledek do pole
- pocty.Add(1);
- }
- else if (nalezeno) { pocty[i] = 1 + Convert.ToInt32(pocty[i].ToString()); i++; } //inkrementuje počet nalezených výsledků
- else
- {
- pocty[0] = 1 + Convert.ToInt32(pocty[0].ToString());
- }
- }
- catch (NullReferenceException)
- {
- pocty[0] = 1 + Convert.ToInt32(pocty[0].ToString()); //pokud není H2
- }
- }
- else
- {
- pocty[0] = 1 + Convert.ToInt32(pocty[0].ToString()); //pokud není dokument?
- }
- }
- //odešleme výsledek metodě runworkercompleted
- workdata outputdata = new workdata();
- outputdata.vysledky = vysledky;
- outputdata.pocty = pocty;
- e.Result = outputdata;
- }
- public static void cancelbw() { bw.CancelAsync(); }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement