示例#1
0
        /// <summary> добавляет фильтр</summary>
        public static void AddFilter(string user, string filtername, string group_id, Values val)
        {
            //поиск группы
            FilterGroup group = GetGroup(group_id);
            //поиск свободного id
            uint id = 0;

            for (id = 0; ; id++)
            {
                if (group.Cur_Filters.Keys.Contains(id))
                {
                    continue;
                }
                else
                {
                    break;
                }
            }
            //создание фильтра
            OneFilter filter = new OneFilter(filtername, id, group);

            //добавление фильтра
            group.Cur_Filters.Add(id, filter);
            All_Filters.Add(filter.StringID, filter);
            //добавление фильтра в аккаунты
            foreach (Account acc in Accounts.Values)
            {
                acc.AccountFilters.AddNewFilter(filter);
            }
            //сохранение базы
            string filename = SaveFilters(val);

            //сохранение лога
            Log.AddFilter(user, filename, group.Name, filtername);
        }
示例#2
0
        public static void ChangeFilter(string user, OneFilter oldfilter, string newname)
        {
            string oldname = oldfilter.Name;

            //переименовывание фильтра
            oldfilter.ChangeName(newname);
            //переименовывание фильтра во всех аккаунтах
            foreach (Account acc in SaveEquip.Accounts.Values)
            {
                acc.AccountFilters.AllSingleFilters[oldfilter.StringID].ChangeName(newname);
            }
            //сохранение базы
            string filename = SaveFilters(oldfilter.Parent.CurValues);

            foreach (Equipment equip in SaveEquip.Equipments.Values)
            {
                foreach (Parameter par in equip.CurParameters.Values)
                {
                    if (par.Filter == oldfilter)
                    {
                        par.SetTextValue();
                    }
                }
            }
            SaveEquip.SaveEquipments();
            //сохранения лога
            Log.ChangeFilter(user, filename, oldname, newname);
        }
        public string ChangeFilter(string oldfilterID, string newfiltername, string type)
        {
            if (oldfilterID == null || oldfilterID == "")
            {
                return("Ошибка в данных");
            }
            if (type == null || type == "")
            {
                return("Ошибка в данных");
            }
            if (newfiltername == null || newfiltername == "")
            {
                return("Название не может быть пустым");
            }
            if (SaveEquip.All_Filters.ContainsKey(oldfilterID) == false)
            {
                return("Ошибка данных");
            }
            OneFilter filter = SaveEquip.All_Filters[oldfilterID];

            switch (type)
            {
            case "well":
                bool hassamewell = SaveEquip.CheckFilter(Values.Location, filter.Parent.StringID, newfiltername);
                if (hassamewell)
                {
                    return("Такая скважина уже есть");
                }
                SaveEquip.ChangeFilter(SaveEquip.Accounts[User.Identity.Name].Name, filter, newfiltername);
                break;

            case "type":
                bool hassametype = SaveEquip.CheckFilter(Values.Type, filter.Parent.StringID, newfiltername);
                if (hassametype)
                {
                    return("Такой тип оборудования уже есть");
                }
                SaveEquip.ChangeFilter(SaveEquip.Accounts[User.Identity.Name].Name, filter, newfiltername);
                break;

            case "maker":
                bool hassamemaker = SaveEquip.CheckFilter(Values.Maker, filter.Parent.StringID, newfiltername);
                if (hassamemaker)
                {
                    return("Такой тип оборудования уже есть");
                }
                SaveEquip.ChangeFilter(SaveEquip.Accounts[User.Identity.Name].Name, filter, newfiltername);
                break;
            }
            return("");
        }
示例#4
0
        static string SaveFilters(Values val)
        {
            OneFilter startfilter = null;
            uint      filterid    = FilteredValues[val];
            string    filename    = "";

            switch (val)
            {
            case Values.Type:
                startfilter = Filters.Start_Type; filename = TypeFile; break;

            case Values.Location:
                startfilter = Filters.Start_Location; filename = LocationsFile; break;

            case Values.Maker:
                startfilter = Filters.Start_Maker; filename = MakerFile; break;

            default: throw new Exception();
            }
            List <string> file = new List <string>();

            file.Add(filterid.ToString());
            foreach (FilterGroup gr in Filters_From_File[filterid].Values)
            {
                file.Add(String.Format("GROUP {0} {1}", gr.ID, gr.Name));
                foreach (OneFilter filter in gr.Cur_Filters.Values)
                {
                    if (filter == startfilter)
                    {
                        file.Add(string.Format("{0} START {1}", filter.ID, filter.Name));
                    }
                    else
                    {
                        file.Add(string.Format("{0} {1}", filter.ID, filter.Name));
                    }
                }
                file.Add("ENDGROUP");
            }
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            Encoding enc = Encoding.GetEncoding(1251);

            File.WriteAllLines(filename, file, enc);
            return(filename);
        }
示例#5
0
        static void ReadFilters(string filename, Values value, out OneFilter startpos)
        {
            startpos = null;
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            Encoding enc = Encoding.GetEncoding(1251);

            string[] file = File.ReadAllLines(filename, enc);
            if (file == null || file.Length == 0)
            {
                throw new Exception("Ошибка при считывании файла с фильтрами: Файл не найден или пуст " + filename);
            }
            uint filter_id = 0;
            bool filter_id_parse_result = UInt32.TryParse(file[0], out filter_id);

            if (filter_id_parse_result == false)
            {
                throw new Exception("Ошибка при считывании файла с фильтрами: ошибка структуры файла: " + filename);
            }
            foreach (SortedList <uint, FilterGroup> a in Filters_From_File.Values)
            {
                foreach (FilterGroup g in a.Values)
                {
                    if (g.Filter_ID == filter_id)
                    {
                        throw new Exception("Ошибка при считывании файла с фильтрами: данный ID группы фильтров уже загружен: " + filename);
                    }
                }
            }
            bool        havegroup    = false;
            uint        cur_group_id = 0;
            FilterGroup cur_group    = null;
            SortedList <uint, FilterGroup> groups = new SortedList <uint, FilterGroup>();

            for (int i = 1; i < file.Length; i++)
            {
                string s = file[i];
                if (s == "")
                {
                    continue;
                }
                if (havegroup == false)
                {
                    string[] ss = s.Split(' ');
                    if (ss.Length < 3)
                    {
                        throw new Exception("Ошибка при считывании файла с фильтрами: ошибка инициализации группы в строке: " + i + " файла " + filename);
                    }
                    if (ss[0] != "GROUP")
                    {
                        throw new Exception("Ошибка при считывании файла с фильтрами: Начало группы не найдено в строке: " + i + " файла " + filename);
                    }
                    bool group_id_parse_result = UInt32.TryParse(ss[1], out cur_group_id);
                    if (group_id_parse_result == false)
                    {
                        throw new Exception("Ошибка при считывании файла с фильтрами: ID группы не найдено в строке: " + i + " файла " + filename);
                    }
                    if (groups.ContainsKey(cur_group_id))
                    {
                        throw new Exception("Ошибка при считывании файла с фильтрами: Дублирование ID группы в строке: " + i + " файла " + filename);
                    }
                    string group_name = "";
                    for (int j = 2; j < ss.Length; j++)
                    {
                        group_name += ss[j]; if (j < ss.Length - 1)
                        {
                            group_name += " ";
                        }
                    }
                    FilterGroup gr = new FilterGroup(group_name, cur_group_id, filter_id, value);
                    groups.Add(cur_group_id, gr);
                    AllGroups.Add(gr.StringID, gr);
                    havegroup = true;
                    cur_group = groups[cur_group_id];
                }
                else
                {
                    if (s == "ENDGROUP")
                    {
                        havegroup = false;
                        cur_group = null;
                    }
                    else
                    {
                        string[] ss = s.Split(' ');
                        if (s.Length < 2)
                        {
                            throw new Exception("Ошибка при считывании файла с фильтрами: ошибка распознования в строке: " + i + " файла " + filename);
                        }
                        uint one_filter_id;
                        bool one_filter_id_parse_result = UInt32.TryParse(ss[0], out one_filter_id);
                        if (one_filter_id_parse_result == false)
                        {
                            throw new Exception("Ошибка при считывании файла с фильтрами: ошибка распознования ID одного фильтра в строке: " + i + " файла " + filename);
                        }
                        if (cur_group.Cur_Filters.ContainsKey(one_filter_id))
                        {
                            throw new Exception("Ошибка при считывании файла с фильтрами: Дублирование ID одного фильтра в строке: " + i + " файла " + filename);
                        }
                        string filter_name = "";
                        if (ss[1] == "START")
                        {
                            for (int j = 2; j < ss.Length; j++)
                            {
                                filter_name += ss[j]; if (j < ss.Length - 1)
                                {
                                    filter_name += " ";
                                }
                            }
                            OneFilter f = new OneFilter(filter_name, one_filter_id, cur_group);
                            cur_group.Cur_Filters.Add(one_filter_id, f);
                            All_Filters.Add(f.StringID, f);
                            if (startpos == null)
                            {
                                startpos = cur_group.Cur_Filters[one_filter_id];
                            }
                            else
                            {
                                throw new Exception("Ошибка при считывании файла с фильтрами: Дублирование стартового фильтра в строке: " + i + " файла " + filename);
                            }
                        }
                        else
                        {
                            for (int j = 1; j < ss.Length; j++)
                            {
                                filter_name += ss[j]; if (j < ss.Length - 1)
                                {
                                    filter_name += " ";
                                }
                            }
                            OneFilter f = new OneFilter(filter_name, one_filter_id, cur_group);
                            cur_group.Cur_Filters.Add(one_filter_id, f);
                            All_Filters.Add(f.StringID, f);
                        }
                    }
                }
            }
            if (havegroup != false)
            {
                throw new Exception("Ошибка при считывании файла с фильтрами: нет конца группы в файле " + filename);
            }
            Filters_From_File.Add(filter_id, groups);
            if (Program.Change_Base)
            {
                All_Filters = new SortedList <string, OneFilter>();
                foreach (SortedList <uint, FilterGroup> list in Filters_From_File.Values)
                {
                    foreach (KeyValuePair <uint, FilterGroup> pair in list)
                    {
                        foreach (OneFilter f in pair.Value.Cur_Filters.Values)
                        {
                            All_Filters.Add(f.Name, f);
                        }
                    }
                }
            }
        }