Exemplo n.º 1
0
            public override bool Equals(object obj)
            {
                Item_flat flat     = obj as Item_flat;
                bool      EqOwners = true;

                if (owners.Count == flat.owners.Count)
                {
                    for (int i = 0; i < owners.Count; i++)
                    {
                        if (!owners[i].Equals(flat.owners[i]))
                        {
                            EqOwners = false;
                        }
                    }
                }
                else
                {
                    EqOwners = false;
                }

                return(address == flat.address &&
                       numberOfFlat == flat.numberOfFlat &&
                       area == flat.area &&
                       EqOwners);
            }
Exemplo n.º 2
0
        //Извлечение XML из архивов
        public static void UnZip(List <string> FileNames, bool NeedRename, ref ProgressBar progressBar)
        {
            //Временная директориz и папка для сохранения
            string home   = Directory.GetCurrentDirectory() + "\\";
            string temp   = home + "__tmp__";
            string target = home + "\\Распакованные файлы\\";

            try
            {
                Directory.CreateDirectory(temp);
                Directory.CreateDirectory(target);
            }
            catch
            {
            }

            foreach (string arhive_1lvl in FileNames)
            {
                progressBar.Value++; //прогресс бар
                try
                {
                    clrDir(temp);                                  //чистим временную папку
                    ZipFile.ExtractToDirectory(arhive_1lvl, temp); //распаковываем основной архив

                    //Распаковка вложениых архивов
                    foreach (string arhive_1lv2 in Directory.EnumerateFiles(temp, "*.zip", SearchOption.AllDirectories))
                    {
                        //РАзархивация
                        ZipFile.ExtractToDirectory(arhive_1lv2, temp);
                        //Получили XML
                        foreach (string xml_filename in Directory.EnumerateFiles(temp, "*.xml", SearchOption.AllDirectories))
                        {
                            //Выгрузка
                            Item_flat flat = XmlProcessing(XDocument.Load(xml_filename));
                            if (NeedRename)
                            {
                                File.Copy(xml_filename, target + flat.address + ", " + flat.numFlat + ".xml");
                            }
                            else
                            {
                                File.Copy(xml_filename, target + Path.GetFileName(xml_filename));
                            }
                        }
                    }
                }
                catch
                {
                }
            }

            //Удаление временной дериктории
            if (Directory.Exists(temp))
            {
                clrDir(temp);
                try { Directory.Delete(temp); }
                catch
                {
                }
            }
        }
Exemplo n.º 3
0
            public object Clone()
            {
                Item_flat flat = new Item_flat();

                flat.addressWithDot = this.addressWithDot;
                flat.number         = this.number;
                flat.address        = this.address;
                flat.numberOfFlat   = this.numberOfFlat;
                flat.area           = this.area;
                flat.owners         = this.owners;
                return(flat);
            }
Exemplo n.º 4
0
            public int CompareTo(object Flat)
            {
                const string eror = "Сравниваемый объект не пренадлежит классу Item_flat.";
                Item_flat    flat = Flat as Item_flat;

                if (numberOfFlat < flat.numberOfFlat)
                {
                    return(-1);
                }
                if (numberOfFlat == flat.numberOfFlat)
                {
                    return(0);
                }
                if (numberOfFlat > flat.numberOfFlat)
                {
                    return(1);
                }

                throw new ArgumentException(eror);
            }
Exemplo n.º 5
0
        //Переименование Xml файлов
        public static void RenameFiles(List <string> FileNames, string Target, string Type, ref ProgressBar progressBar, bool SaveDuplicate = false)
        {
            //Временная директориz и папка для сохранения
            string target = Target + "Переименованные файлы\\";

            //Решение проблем с прошлой итерацией
            while (Directory.Exists(target))
            {
                target += "Новые Переименованные файлы\\";
            }
            try { Directory.CreateDirectory(target); }
            catch
            {
            }

            string temp = target + "__tmp__";

            if (Type == ".zip")
            {
                Directory.CreateDirectory(temp);
            }

            if (FileNames.Count() > 0)
            {
                foreach (string filename in FileNames)
                {
                    progressBar.Value++; //прогресс бар

                    //Получение данных об объекте
                    Item_flat flat = new Item_flat();
                    if (Type == ".xml")
                    {
                        flat = XmlProcessing(XDocument.Load(filename));
                    }
                    if (Type == ".zip")
                    {
                        try
                        {
                            clrDir(temp);                               //чистим временную папку
                            ZipFile.ExtractToDirectory(filename, temp); //распаковываем основной архив

                            //Распаковка вложениых архивов
                            foreach (string arhive_1lv2 in Directory.EnumerateFiles(temp, "*.zip", SearchOption.AllDirectories))
                            {
                                ZipFile.ExtractToDirectory(arhive_1lv2, temp);
                                //Получили XML
                                foreach (string xml_filename in Directory.EnumerateFiles(temp, "*.xml", SearchOption.AllDirectories))
                                {
                                    flat = XmlProcessing(XDocument.Load(xml_filename));
                                }
                            }
                        }
                        catch
                        {
                        }
                    }

                    bool SaveThis = true; // нужно ли ещё сохранять этот файл
                                          //Устранение непригодных символов
                    string newName = "";
                    foreach (char ch in flat.address + ", " + flat.numFlat + Type)
                    {
                        if (ch == '/')
                        {
                            newName += '-';
                        }
                        else
                        {
                            newName += ch;
                        }
                    }

                    if (File.Exists(target + newName))
                    {
                        try
                        {
                            Item_flat taretFlat = XmlProcessing(XDocument.Load(target + newName));

                            if (!flat.Equals(taretFlat))
                            {
                                File.Copy(filename, target + "Другой " + newName);
                                continue;
                            }
                            else if (SaveDuplicate)
                            {
                                if (File.Exists(target + "Дубликат " + newName))
                                {
                                    continue;
                                }

                                File.Copy(filename, target + "Дубликат " + newName);
                                continue;
                            }
                        }
                        catch
                        {
                            continue;
                        }
                    }
                    //копирование
                    try
                    {
                        if (SaveThis)
                        {
                            File.Copy(filename, target + newName);
                        }
                    }
                    catch
                    {
                    }
                }
            }
            if (Directory.Exists(temp))
            {
                clrDir(temp);
                try { Directory.Delete(temp); }
                catch
                {
                }
            }
        }
Exemplo n.º 6
0
        //Переименование Xml файлов
        public static void RenameXML(List <string> FileNames, string Target, ref ProgressBar progressBar, bool SaveDuplicate = false)
        {
            //Временная директориz и папка для сохранения
            string target = Target + "Переименованные файлы\\";

            //Решение проблем с прошлой итерацией
            while (Directory.Exists(target))
            {
                target += "Новые Переименованные файлы\\";
            }

            try { Directory.CreateDirectory(target); }
            catch
            {
            }

            if (FileNames.Count() > 0)
            {
                foreach (string xml_filename in FileNames)
                {
                    progressBar.Value++; //прогресс бар

                    //Получение данных об объекте
                    Item_flat flat     = XmlProcessing(XDocument.Load(xml_filename));
                    bool      SaveThis = true; // нужно ли ещё сохранять этот файл
                                               //Устранение непригодных символов
                    string newName = "";
                    foreach (char ch in flat.address + ", " + flat.numFlat + ".xml")
                    {
                        if (ch == '/')
                        {
                            newName += '-';
                        }
                        else
                        {
                            newName += ch;
                        }
                    }

                    if (File.Exists(target + newName))
                    {
                        try
                        {
                            Item_flat taretFlat = XmlProcessing(XDocument.Load(target + newName));

                            if (!flat.Equals(taretFlat))
                            {
                                File.Copy(xml_filename, target + "Другой " + newName);
                                continue;
                            }
                            else if (SaveDuplicate)
                            {
                                if (File.Exists(target + "Дубликат " + newName))
                                {
                                    continue;
                                }

                                File.Copy(xml_filename, target + "Дубликат " + newName);
                                continue;
                            }
                        }
                        catch
                        {
                            continue;
                        }
                    }
                    //копирование
                    try
                    {
                        if (SaveThis)
                        {
                            File.Copy(xml_filename, target + newName);
                        }
                    }
                    catch
                    {
                    }
                }
            }
        }
Exemplo n.º 7
0
        //Обработка XML, создание записи по квартире
        public static Item_flat XmlProcessing(XDocument xDoc)
        {
            //Разделитель точка (для перевода строк в Double)
            NumberFormatInfo provider = new NumberFormatInfo();

            provider.NumberDecimalSeparator = ".";

            //Данные по помещению
            string       number_flat_string = "";
            string       address            = "";     //Адрес
            string       addressWithDot     = "";     //Дополнительно
            int          number_flat        = 0;      //Номер помещения
            double       area   = 0;                  //Площадь
            List <Owner> Owners = new List <Owner>(); //Список владельцев

            //Получаем корень
            XElement root = xDoc.Root;

            //Все узлы в документе. Перебираем
            IEnumerable <XElement> all_nodes = root.Descendants();

            foreach (XElement node in all_nodes)
            {
                switch (node.Name.LocalName)
                {
                // ---Адрес---
                case ("Address"):
                {
                    foreach (XElement node_adr in node.Nodes())
                    {
                        switch (node_adr.Name.LocalName)
                        {
                        case ("Street"):
                            address        += node_adr.Attribute("Type").Value + " ";
                            address        += node_adr.Attribute("Name").Value + ", ";
                            addressWithDot += node_adr.Attribute("Type").Value + ". ";
                            addressWithDot += node_adr.Attribute("Name").Value + ", ";
                            break;

                        case ("Level1"):
                            address        += node_adr.Attribute("Type").Value + " ";
                            address        += node_adr.Attribute("Value").Value + ", ";
                            addressWithDot += node_adr.Attribute("Type").Value + ". ";
                            addressWithDot += node_adr.Attribute("Value").Value + ", ";
                            break;

                        case ("Level2"):
                            address        += node_adr.Attribute("Type").Value + " ";
                            address        += node_adr.Attribute("Value").Value + ", ";
                            addressWithDot += node_adr.Attribute("Type").Value + ". ";
                            addressWithDot += node_adr.Attribute("Value").Value + ", ";
                            break;

                        case ("Level3"):
                            address        += node_adr.Attribute("Type").Value + " ";
                            address        += node_adr.Attribute("Value").Value;
                            addressWithDot += node_adr.Attribute("Type").Value + ". ";
                            addressWithDot += node_adr.Attribute("Value").Value + ", ";
                            break;

                        case ("Apartment"):             //номер квартиры
                            number_flat_string = node_adr.Attribute("Value").Value + " кв.";
                            try { number_flat = Convert.ToInt32(node_adr.Attribute("Value").Value); }
                            catch { number_flat = Int32.MaxValue; /* //Console.WriteLine(" Плохой номер помещения. "); */ }
                            break;

                        case ("Other"):                     //что-то другое

                            string type = "", analise = ""; //Временные строки
                            if (node_adr.Value.Length > 12 && node_adr.Value.Length < 30 && node_adr.Value.Substring(0, 12) == "машино-место")
                            {
                                type = "м/м"; analise = node_adr.Value.Substring(12);
                            }
                            else if (node_adr.Value.Substring(node_adr.Value.Length - 3) == "м/м")
                            {
                                type = "м/м";
                                if (node_adr.Value.Length < 12)
                                {
                                    analise = node_adr.Value.Substring(0, node_adr.Value.Length - 3);
                                }
                                else
                                {
                                    analise = node_adr.Value.Substring(node_adr.Value.Length - 22);
                                }
                            }

                            if (type == "м/м")
                            {
                                //Выдераем "a/b"
                                bool   notOne = false;
                                string number = "";
                                int    num = 0, den = 0;
                                foreach (char ch in analise)
                                {
                                    if (Char.IsNumber(ch))
                                    {
                                        number += ch;
                                    }
                                    else if (num != 0)
                                    {
                                        den = Convert.ToInt32(number); break;
                                    }
                                    else if (ch == ',' && number != "")
                                    {
                                        number_flat_string += number + ","; number = ""; notOne = true;
                                    }
                                    else if (ch == '/' && number != "")
                                    {
                                        num = Convert.ToInt32(number); number = "";
                                    }
                                }

                                //Вносим в ячейку
                                number_flat = 5000 + den * 400 + num;
                                if (notOne)
                                {
                                    number_flat = 5000 + den * 400;                     //Переделываем
                                }
                                number_flat_string += num + "/" + den + " " + type;
                            }
                            break;

                        default:
                            break;
                        }
                    }
                    break;
                }         //Конец блока адреса

                //---Площадь---
                case ("Area"):
                {
                    if (node.Parent.Name.LocalName == "Flat" && node.Parent.Parent.Name.LocalName != "Flats" ||
                        node.Parent.Name.LocalName == "Building" && node.Parent.Parent.Name.LocalName != "Buildings")
                    {
                        string s = node.Value;
                        area = Convert.ToDouble(s, provider);
                    }
                    break;
                }

                //---Собственность---
                case ("Rights"):
                {
                    //Определение собственности
                    foreach (XElement right in node.Elements())
                    {
                        //Документ на собственность
                        string document = "";
                        string part     = "";     //Доля
                        double partOf   = 0;      //Размер доли
                        try
                        {
                            foreach (XElement registration in right.Elements())
                            {
                                if (registration.Name.LocalName == "Registration")
                                {
                                    foreach (XElement reg in registration.Elements())
                                    {
                                        if (reg.Name.LocalName == "RegNumber")
                                        {
                                            document += "№ " + reg.Value;
                                        }
                                    }
                                    foreach (XElement reg in registration.Elements())
                                    {
                                        if (reg.Name.LocalName == "RegDate")
                                        {
                                            document += ", " + reg.Value;
                                        }
                                    }
                                }
                            }
                            foreach (XElement point in right.Elements())
                            {
                                if (point.Name.LocalName == "Share")
                                {
                                    int num = Convert.ToInt32(point.Attribute("Numerator").Value);
                                    int den = Convert.ToInt32(point.Attribute("Denominator").Value);
                                    part  += num + " / " + den;
                                    partOf = area * (double)num / (double)den;
                                }
                            }
                            foreach (XElement point in right.Elements())
                            {
                                if (point.Name.LocalName == "Name")
                                {
                                    document += ", " + point.Value;
                                    if (part == "")
                                    {
                                        if (point.Value == "Собственность")
                                        {
                                            part = "1"; partOf = area;
                                        }
                                        if (point.Value == "Общая совместная собственность")
                                        {
                                            part = "*";
                                        }
                                    }
                                }
                            }
                        }
                        catch
                        {
                        }

                        //Собственники
                        string FIO = "";         //Ф.И.О
                        try
                        {
                            foreach (XElement owners in right.Elements())
                            {
                                if (owners.Name.LocalName == "Owners")
                                {
                                    foreach (XElement owner in owners.Elements())
                                    {
                                        if (owner.Name.LocalName == "Owner")
                                        {
                                            foreach (XElement person in owner.Elements())
                                            {
                                                if (person.Name.LocalName == "Person")
                                                {
                                                    foreach (XElement point in person.Elements())
                                                    {
                                                        if (point.Name.LocalName == "FamilyName")
                                                        {
                                                            FIO += point.Value + " ";
                                                        }
                                                    }
                                                    foreach (XElement point in person.Elements())
                                                    {
                                                        if (point.Name.LocalName == "FirstName")
                                                        {
                                                            FIO += point.Value + " ";
                                                        }
                                                    }
                                                    foreach (XElement point in person.Elements())
                                                    {
                                                        if (point.Name.LocalName == "Patronymic")
                                                        {
                                                            FIO += point.Value + " ";
                                                        }
                                                    }

                                                    // Записываем собственника
                                                    Owners.Add(new Owner(FIO, part, Convert.ToString(Math.Round(partOf, 2)), document));
                                                    FIO = "";
                                                }
                                                else if (person.Name.LocalName == "Governance")
                                                {
                                                    foreach (XElement point in person.Elements())
                                                    {
                                                        if (point.Name.LocalName == "Name")
                                                        {
                                                            FIO += point.Value + " ";
                                                        }
                                                    }
                                                    // Записываем государственного собственника
                                                    Owners.Add(new Owner(FIO, part, Convert.ToString(Math.Round(partOf, 2)), document));
                                                    FIO = "";
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        catch
                        {
                        }
                    }
                    break;
                }         //Конец поиска блока Rights (собственники)

                default:
                    break;
                }
            }//Окончание перебора узлов документа
            foreach (Owner owner in Owners)
            {
                if (owner.part == "*")
                {
                    owner.part   = "1/" + Owners.Count() + "*";
                    owner.partOf = Convert.ToString(area * (double)1 / (double)Owners.Count()) + "*";
                }
            }
            Item_flat flat_temp = new Item_flat(address, number_flat, area, Owners);

            flat_temp.numFlat        = number_flat_string;
            flat_temp.addressWithDot = addressWithDot;
            return(flat_temp);
            //Конец XmlProcessing
        }