public static void LinkProvFunc(Form1 form, string basename) { var bdconn = new DbConn { dataBasePath = basename }; form.AddLog("Загрузка parents"); var person = bdconn.ReadParents(); form.AddLog("Загрузка main"); var main = bdconn.ReadMain(); main = Records.ParsePerson(main); form.AddLog("Проверка.."); foreach (var m in main) { if (!person.Exists(f => f.id == m.id)) { form.AddLog("main.id = " + m.id.ToString() + " остутствует в parents.id", true); } if (m.persons != null && m.persons.Count != 0) { foreach (var pers in m.persons) { if (!main.Exists(f => f.id == pers.id)) { form.AddLog("main.id = " + m.id.ToString() + " лишняя персоналия в f1 id = " + pers.id.ToString(), true); } if (pers.markup.H <= 0 || pers.markup.W <= 0) { form.AddLog("main.id = " + m.id.ToString() + " нулевые или отрицательные координаты", true); } } } } foreach (var p in person) { if (!main.Exists(f => f.id == p.id)) { form.AddLog("parents.id = " + p.id.ToString() + " остутствует в main.id", true); } if (!main.Exists(f => f.id == p.pid) && p.pid != 0) { form.AddLog("parents.pid = " + p.pid.ToString() + " остутствует в main.id", true); } } }
public static List <Records> DelPers(Form1 form, string basename) { var bdconn = new DbConn { dataBasePath = basename }; form.AddLog("Загрузка main"); var main = bdconn.ReadMain(); main = Records.ParsePerson(main); form.AddLog("Проверка.."); foreach (var m in main.FindAll(f => f.persons != null && f.persons.Count != 0)) { bool flag = false; foreach (var pers in m.persons.Where(pers => !main.Exists(f => f.id == pers.id)).ToList()) { form.AddLog("main.id = " + m.id.ToString() + " лишняя персоналия в f1 id = " + pers.id.ToString(), true); m.persons.Remove(pers); bdconn.deletparents(pers.id); flag = true; } if (flag) { var newxdoc = new XDocument( new XElement("i", new XAttribute("src", m.path) )); foreach (var p in m.persons) { var s = new XElement("s", new XAttribute("c", p.markup.X.ToString() + "," + p.markup.Y.ToString() + "," + p.markup.W.ToString() + "," + p.markup.H.ToString()), new XAttribute("id", p.id)); newxdoc.Element("i")?.Add(s); } m.F1_new = newxdoc; m.isFix = true; } } return(main); }
private void process(string basename) { if (checkBox4.Checked) { var bdconn = new DbConn { dataBasePath = basename }; var main = new List <Records>(); var task = new Task(() => { main = LinkProv.DelPers(this, basename); }); task.Start(); task.Wait(); AddLog("Обновляем базу"); task = new Task(() => { bdconn.Updatef1(main, this); }); task.Start(); task.Wait(); } if (checkBox2.Checked) { var task = new Task(() => { LinkProv.LinkProvFunc(this, basename); }); task.Start(); task.Wait(); } if (checkBox1.Checked) { var records = new List <Records>(); var bdconn = new DbConn { dataBasePath = basename }; AddLog(@"Загрузка базы"); var task = new Task(delegate { records = bdconn.ReadDb(); }); task.Start(); var timer = new Timer { Interval = 30000 }; timer.Tick += new EventHandler(timer_Tick); timer.Enabled = true; task.Wait(); timer.Enabled = false; AddLog(@"База загружена"); task = new Task(() => { records = Records.ParsePerson(records); }); task.Start(); AddLog(@"Парсим персоналии"); task.Wait(); var count = 0; task = new Task(() => { records = Records.ProvMarkup(records, ref count, checkBox3.Checked, this); }); AddLog(@"Проверяем разметку"); task.Start(); task.Wait(); AddLog("Нашлось " + count.ToString() + " подозрительных"); task = new Task(() => { bdconn.Updatef1(records, this); }); task.Start(); task.Wait(); } if (checkBox1.Checked == false && checkBox2.Checked == false && checkBox4.Checked == false) { MessageBox.Show("Ни одна из задач не выбрана"); } else { MessageBox.Show("Готово!"); } }