示例#1
0
        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);
                }
            }
        }
示例#2
0
        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);
        }
示例#3
0
 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("Готово!");
     }
 }