Пример #1
0
            public void UpdateParameter(int type,string strIdGroup,string par,string val)
            {
                Logging.Logg().Debug(@"FileINI::UpdateParameter (ID=" + strIdGroup + @", par=" + par + @") - ...",Logging.INDEX_MESSAGE.NOT_SET);

                if (par.Equals(@"SCUR") == true)
                {
                    m_arListGroupValues[(int)type].m_listGroupSrc[GetIDIndex(strIdGroup)].m_IDCurrentConnSett = val;
                    SetSecValueOfKey(SEC_SRC_TYPES[(int)type] + s_chSecDelimeters[(int)INDEX_DELIMETER.SEC_PART_TARGET] + strIdGroup
                                     ,par
                                     ,val);
                }
                else
                if (par.Equals(@"ADDING") == true)
                {
                    //???m_arListGroupValues[type].m_listGroupSrc[GetIDIndex(strIdGroup)].m_dictAdding =
                    SetSecValueOfKey(SEC_SRC_TYPES[(int)type] + s_chSecDelimeters[(int)INDEX_DELIMETER.SEC_PART_TARGET] + strIdGroup
                                     ,par
                                     ,val);
                    GROUP_SRC grpSrc = m_arListGroupValues[(int)type].m_listGroupSrc[GetIDIndex(strIdGroup)];
                    grpSrc.setAdding(val.Split(new char[] { s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL] }));
                }
                else
                {
                    ;
                }
            }
Пример #2
0
            public void UpdateParameter(int type,string strIdGroup,string par,string val)
            {
                Logging.Logg().Debug(@"FileINI::UpdateParameter (ID=" + strIdGroup + @", par=" + par + @") - ...",Logging.INDEX_MESSAGE.NOT_SET);

                if (par.Equals(@"SCUR") == true)
                {//Установить индекс тукущего источника данных
                    //???Какова очередность внесения изменений (объект - файл, файл - объект)
                    m_arListGroupValues[(int)type].m_listGroupSrc[GetIDIndex(strIdGroup)].m_IDCurrentConnSett = val;
                    SetSecValueOfKey(SEC_SRC_TYPES[(int)type] + s_chSecDelimeters[(int)INDEX_DELIMETER.SEC_PART_TARGET] + strIdGroup
                                     ,par
                                     ,val);
                }
                else
                if (par.Equals(@"ADDING") == true)
                {
                    //???Какова очередность внесения изменений (объект - файл, файл - объект)
                    GROUP_SRC grpSrc = m_arListGroupValues[(int)type].m_listGroupSrc[GetIDIndex(strIdGroup)];
                    grpSrc.SetAdding(val.Split(new char[] { s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL] }));
                    SetSecValueOfKey(SEC_SRC_TYPES[(int)type] + s_chSecDelimeters[(int)INDEX_DELIMETER.SEC_PART_TARGET] + strIdGroup
                                     ,par
                                     ,val);
                }
                else
                {
                    int    indx = GetIDIndex(par);
                    string mask = string.Empty;
                    //Проверить является параметр индексированным (источник, группа сигналов)
                    if (!(indx < 0))
                    {    //Обновляемый параметр - индексированный
                        //???Какова очередность внесения изменений (объект - файл, файл - объект)
                        GROUP_SRC grpSrc = m_arListGroupValues[(int)type].m_listGroupSrc[GetIDIndex(strIdGroup)];
                        //Строковый идентификатор раздела (группа источников)
                        string secGroup = SEC_SRC_TYPES[(int)type] + s_chSecDelimeters[(int)INDEX_DELIMETER.SEC_PART_TARGET] + strIdGroup;
                        //Получить ниаменования параметров для групп сигналов
                        List <string> pars = GetSecValueOfKey(secGroup,KEY_TREE_SGNLS[(int)INDEX_KEY_SIGNAL.GROUP_SIGNALS] + s_chSecDelimeters[(int)INDEX_DELIMETER.SEC_PART_TARGET] + @"PARS").Split(s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL]).ToList <string>();
                        try
                        {
                            grpSrc.SetGroupSignalsPars(pars,val.Split(new char[] { s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL] }));
                        }
                        catch (Exception e)
                        {
                            Logging.Logg().Exception(e
                                                     ,@"FileINI::UpdateParameter (idGroup=" + strIdGroup
                                                     + @", par=" + par
                                                     + @", value=" + val
                                                     + @") - ..."
                                                     ,Logging.INDEX_MESSAGE.NOT_SET);
                        }
                        SetSecValueOfKey(secGroup
                                         ,par
                                         ,val);
                    }
                    else
                    {
                        ;
                    }
                }
            }
Пример #3
0
            /// <summary>
            /// Возвратить объект добавленной группы источников
            /// </summary>
            /// <param name="iSrc">Индекс типа группы (источник, назначение)</param>
            /// <param name="secGroup">Наименование секции группы источников</param>
            /// <returns>Объект группы источников</returns>
            private ITEM_SRC addGroupSources(int iSrc,string secGroup)
            {
                ITEM_SRC itemRes = null;
                string   msgErr  = string.Empty;

                itemRes = new GROUP_SRC();
                (itemRes as GROUP_SRC).m_IDCurrentConnSett = GetSecValueOfKey(secGroup,@"SCUR");
                (itemRes as GROUP_SRC).m_strDLLName        = GetSecValueOfKey(secGroup,@"DLL_NAME");

                //Инициализировать список с параметрами для групп сигналов для группы источников
                (itemRes as GROUP_SRC).m_listGroupSignalsPars = null;
                (itemRes as GROUP_SRC).m_listGroupSignalsPars = new List <GROUP_SIGNALS_PARS>();

                //Получить ниаменования параметров для групп сигналов
                List <string> pars = GetSecValueOfKey(secGroup,KEY_TREE_SGNLS[(int)INDEX_KEY_SIGNAL.GROUP_SIGNALS] + s_chSecDelimeters[(int)INDEX_DELIMETER.SEC_PART_TARGET] + @"PARS").Split(s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL]).ToList <string>();

                string[] vals;
                string   key = string.Empty;

                int j = 0;

                while (true)
                {
                    key = KEY_TREE_SGNLS[(int)INDEX_KEY_SIGNAL.GROUP_SIGNALS] + j.ToString();
                    if (isSecKey(secGroup,key) == true)
                    {
                        vals = GetSecValueOfKey(secGroup,key).Split(s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL]);

                        if (vals.Length == pars.Count)
                        {
                            //??? каждую итерацию будет определяться тип 'GROUP_SIGNAL_PARS'
                            (itemRes as GROUP_SRC).SetGroupSignalsPars(pars,vals);
                        }
                        else
                        {
                            msgErr = @"FileINI::addGroupValues () - не установлены параметры для [" + secGroup + @", " + key + @"] - ...";
                            ////Вариант №1 - аврийно завершить загрузку - работу приложения
                            //throw new Exception(msgErr);
                            //Вариант №2 - зафиксировать ошибку - продолжить загрузку
                            Logging.Logg().Error(msgErr,Logging.INDEX_MESSAGE.NOT_SET);
                        }
                    }
                    else
                    {
                        break;
                    }

                    j++;
                }

                m_arListGroupValues[iSrc].m_listGroupSrc.Add(itemRes as GROUP_SRC);

                return(itemRes);
            }
Пример #4
0
        /// <summary>
        /// Конструктор - основной (с параметрами)
        /// </summary>
        /// <param name="grpSrc">Объект группы источников из файла конфигурации</param>
        /// <param name="listGrpSgnls">Список объектов групп сигналов из файла конфигурации</param>
        public GroupSourcesDest(GROUP_SRC grpSrc, List <GROUP_SIGNALS_SRC> listGrpSgnls)
            : base(grpSrc, listGrpSgnls)
        {
            m_dictLinkedIndexGroupSources = new Dictionary <int, List <int> >();

            List <int> listNeededIndexGroupSources = GetListNeededIndexGroupSources();

            foreach (int indx in listNeededIndexGroupSources)
            {
                m_dictLinkedIndexGroupSources.Add(indx, new List <int>());
            }
        }
Пример #5
0
            public GROUP_SIGNALS_PARS GetObjectGroupSignalsPars(object[] pars)
            {
                GROUP_SRC          itemSrc     = getItemSrc((INDEX_SRC)pars[0],pars[1] as string) as GROUP_SRC;
                GROUP_SIGNALS_PARS grpSgnlsRes = null;

                //???
                //return (getItemSrc(pars) as GROUP_SRC).m_listGroupSignalsPars[0];

                foreach (GROUP_SIGNALS_PARS grpSgnlsPars in itemSrc.m_listGroupSignalsPars)
                {
                    if (grpSgnlsPars.m_strId.Equals(pars[2] as string) == true)
                    {
                        grpSgnlsRes = grpSgnlsPars;

                        break;
                    }
                    else
                    {
                        ;
                    }
                }

                return(grpSgnlsRes);
            }
Пример #6
0
            /// <summary>
            /// Добавить группу и ее значения
            /// </summary>
            /// <param name="indxSrc">Индекс панели (источник, неазначение)</param>
            /// <param name="type">Тип группы</param>
            /// <param name="secGroup">Наименование для секции со значениями параметров группы</param>
            /// <returns>Результат выполнения</returns>
            private int addGroupValues(INDEX_SRC indxSrc, Type type, string shrName, string secGroup)
            {
                int iRes = 0; //Результат выполнения
                //Индекс типа элемента группы (источник, сигнал)
                INDEX_TYPE_GROUP indxTypeGroup;

                ////Вариант №1
                //switch (typeof(type))
                //{
                //    default:
                //        break;
                //}
                //Вариант №2
                ITEM_SRC itemSrc = null;

                if (type == typeof(GROUP_SRC))
                {//Источник
                    indxTypeGroup = INDEX_TYPE_GROUP.SRC;
                }
                else
                if (type == typeof(GROUP_SIGNALS_SRC))
                {    //Сигнал
                    indxTypeGroup = INDEX_TYPE_GROUP.SIGNAL;
                }
                else
                {
                    throw new Exception(@"FileINI::addGroupValues () - неизвестный тип группы: " + type.FullName);
                }

                //Добавить элемент группы
                switch (indxTypeGroup)
                {
                case INDEX_TYPE_GROUP.SRC:     //Добавить группу источников
                    itemSrc = new GROUP_SRC();
                    (itemSrc as GROUP_SRC).m_IDCurrentConnSett = GetSecValueOfKey(secGroup,@"SCUR");
                    (itemSrc as GROUP_SRC).m_strDLLName        = GetSecValueOfKey(secGroup,@"DLL_NAME");

                    //Инициализировать список с параметрами для групп сигналов для группы источников
                    (itemSrc as GROUP_SRC).m_listGroupSignalsPars = null;
                    (itemSrc as GROUP_SRC).m_listGroupSignalsPars = new List <GROUP_SIGNALS_PARS> ();

                    //Получить ниаменования параметров для групп сигналов
                    List <string> pars = GetSecValueOfKey(secGroup,KEY_TREE_SGNLS[(int)INDEX_KEY_SIGNAL.GROUP_SIGNALS] + s_chSecDelimeters[(int)INDEX_DELIMETER.SEC_PART_TARGET] + @"PARS").Split(s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL]).ToList <string> ();
                    string[]      vals;
                    string        key = string.Empty;

                    int j = 0;
                    while (true)
                    {
                        key = KEY_TREE_SGNLS[(int)INDEX_KEY_SIGNAL.GROUP_SIGNALS] + j.ToString();
                        if (isSecKey(secGroup,key) == true)
                        {
                            vals = GetSecValueOfKey(secGroup,key).Split(s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL]);

                            if (vals.Length == pars.Count)
                            {
                                //??? каждую итерацию будет определяться тип 'GROUP_SIGNAL_PARS'
                                (itemSrc as GROUP_SRC).SetGroupSignalsPars(pars,vals);
                            }
                            else
                            {
                                string msg = @"FileINI::addGroupValues () - не установлены параметры для [" + secGroup + @", " + key + @"] - ...";
                                ////Вариант №1 - аврийно завершить загрузку - работу приложения
                                //throw new Exception(msg);
                                //Вариант №2 - зафиксировать ошибку - продолжить загрузку
                                Logging.Logg().Error(msg,Logging.INDEX_MESSAGE.NOT_SET);
                            }
                        }
                        else
                        {
                            break;
                        }

                        j++;
                    }

                    m_arListGroupValues[(int)indxSrc].m_listGroupSrc.Add(itemSrc as GROUP_SRC);
                    break;

                case INDEX_TYPE_GROUP.SIGNAL:     //Добавить группу сигналов
                    itemSrc = new GROUP_SIGNALS_SRC();
                    //(itemSrc as GROUP_SIGNALS_SRC).m_iAutoStart = bool.Parse(GetSecValueOfKey(secGroup, @"AUTO_START")) == true ? 1 : 0;
                    //(itemSrc as GROUP_SIGNALS_SRC).m_mode = bool.Parse(GetSecValueOfKey(secGroup, @"CUR_INTERVAL_STATE")) == true ? MODE_WORK.CUR_INTERVAL : MODE_WORK.COSTUMIZE;
                    //if (Int32.TryParse(GetSecValueOfKey(secGroup, @"CURINTERVAL_PERIODLOCAL"), out (itemSrc as GROUP_SIGNALS_SRC).m_arWorkIntervals[(int)MODE_WORK.CUR_INTERVAL].m_iInterval) == false)
                    //    (itemSrc as GROUP_SIGNALS_SRC).m_arWorkIntervals[(int)MODE_WORK.CUR_INTERVAL].m_iInterval = -1;
                    //else
                    //    ;
                    //parseWorkInterval(GetSecValueOfKey(secGroup, @"COSTUMIZE_VALUE"), ref (itemSrc as GROUP_SIGNALS_SRC).m_arWorkIntervals[(int)MODE_WORK.COSTUMIZE]);
                    m_arListGroupValues[(int)indxSrc].m_listGroupSgnlsSrc.Add(itemSrc as GROUP_SIGNALS_SRC);
                    break;

                default:
                    break;
                }

                //Проверить наличие секции
                if ((isSec(secGroup) == true) &&
                    (!(itemSrc == null)))
                {
                    //Присвоить наименование группы элементов (источников, сигналов)
                    itemSrc.m_strID      = secGroup.Split(s_chSecDelimeters[(int)INDEX_DELIMETER.SEC_PART_TARGET])[1];
                    itemSrc.m_strShrName = shrName;

                    string[] values //ЗначениЕ для элемента группы
                    ,vals;          //ЗначениЕ для (1-го) параметра элемента группы

                    //Присвоить "дополнительные" значения для группы
                    //if (typeGroup == INDEX_TYPE_GROUP.SRC)
                    if (itemSrc is GROUP_SRC)
                    {//Только для группы источников
                        (itemSrc as GROUP_SRC).SetAdding(GetSecValueOfKey(secGroup,@"ADDING").Split(s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL]));
                    }
                    else
                    {
                        ;
                    }

                    int    j   = -1;           //Индекс для ключа элемента группы (источник, сигнал) в секции
                    string key = string.Empty; //Ключ для элемента группы (источник, сигнал) в секции

                    //Получить словарь значений секции
                    Dictionary <string,string> dictSecValues = getSecValues(secGroup);
                    ////ЗначениЯ для элемента группы
                    //// только для источника, т.к. для сигнала ... (см. 'SIGNAL_SRC')
                    //Dictionary <string, string> dictItemValues;

                    //Проверить наличие значений в секции
                    if (!(dictSecValues == null))
                    {
                        string keyPars = (indxTypeGroup == INDEX_TYPE_GROUP.SRC ? KEY_TREE_SRC[(int)INDEX_KEY_SRC.SRC_OF_GROUP] : indxTypeGroup == INDEX_TYPE_GROUP.SIGNAL ? KEY_TREE_SGNLS[(int)INDEX_KEY_SIGNAL.SIGNAL_OF_GROUP] : string.Empty) + s_chSecDelimeters[(int)INDEX_DELIMETER.SEC_PART_TARGET] + KEY_PARS;

                        //Получить наименовния параметров для элемента группы (источник, сигнал)
                        itemSrc.m_listSKeys = GetSecValueOfKey(secGroup,keyPars).Split(s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL]).ToList <string> ();

                        foreach (string parName in itemSrc.m_listSKeys)
                        {
                            if (parName.Equals(string.Empty) == true)
                            {
                                throw new Exception(@"FileINI::addGroupValues (" + indxSrc.ToString() + @", " + type.AssemblyQualifiedName + @", " + secGroup + @") - ...");
                            }
                            else
                            {
                                ;
                            }
                        }

                        j = 0; //1-ый индекс == 0
                        while (true)
                        {
                            //Сфрмировать ключ элемента группы в секции
                            switch (indxTypeGroup)
                            {
                            case INDEX_TYPE_GROUP.SRC:     //Источник
                                key = KEY_TREE_SRC[(int)INDEX_KEY_SRC.SRC_OF_GROUP];
                                break;

                            case INDEX_TYPE_GROUP.SIGNAL:     //Сигнал
                                key = KEY_TREE_SGNLS[(int)INDEX_KEY_SIGNAL.SIGNAL_OF_GROUP];
                                break;

                            default:
                                break;
                            }

                            //Добавить к ключу индекс
                            key += j.ToString();

                            //Проверить наличие ключа в сеекции
                            if (isSecKey(secGroup,key) == true)
                            {
                                //Получить значение по ключу для элмента группы (источник, сигнал)
                                values = GetSecValueOfKey(secGroup,key).Split(s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL]);

                                if (values.Length == itemSrc.m_listSKeys.Count)
                                {
                                    switch (indxTypeGroup)
                                    {
                                    case INDEX_TYPE_GROUP.SRC:     //Источник
                                        //Инициализация, если элемент группы 1-ый
                                        if ((itemSrc as GROUP_SRC).m_dictConnSett == null)
                                        {
                                            (itemSrc as GROUP_SRC).m_dictConnSett = new Dictionary <string,ConnectionSettings>();
                                        }
                                        else
                                        {
                                            ;
                                        }

                                        (itemSrc as GROUP_SRC).m_dictConnSett.Add(KEY_TREE_SRC[(int)INDEX_KEY_SRC.SRC_OF_GROUP] + (itemSrc as GROUP_SRC).m_dictConnSett.Count
                                                                                  ,new ConnectionSettings(
                                                                                      Int32.Parse(values[itemSrc.m_listSKeys.IndexOf(@"ID")])
                                                                                      ,values[itemSrc.m_listSKeys.IndexOf(@"NAME_SHR")]
                                                                                      ,values[itemSrc.m_listSKeys.IndexOf(@"IP")]
                                                                                      ,Int32.Parse(values[itemSrc.m_listSKeys.IndexOf(@"PORT")])
                                                                                      ,values[itemSrc.m_listSKeys.IndexOf(@"DB_NAME")]
                                                                                      ,values[itemSrc.m_listSKeys.IndexOf(@"UID")]
                                                                                      ,values[itemSrc.m_listSKeys.IndexOf(@"PSWD*")]
                                                                                      ));
                                        break;

                                    case INDEX_TYPE_GROUP.SIGNAL:     //Сигнал
                                        //Инициализация, если элемент группы 1-ый
                                        if ((itemSrc as GROUP_SIGNALS_SRC).m_listSgnls == null)
                                        {
                                            (itemSrc as GROUP_SIGNALS_SRC).m_listSgnls = new List <SIGNAL_SRC>();
                                        }
                                        else
                                        {
                                            ;
                                        }

                                        (itemSrc as GROUP_SIGNALS_SRC).m_listSgnls.Add(new SIGNAL_SRC());
                                        (itemSrc as GROUP_SIGNALS_SRC).m_listSgnls[(itemSrc as GROUP_SIGNALS_SRC).m_listSgnls.Count - 1].m_arSPars = new string[values.Length];
                                        values.CopyTo((itemSrc as GROUP_SIGNALS_SRC).m_listSgnls[(itemSrc as GROUP_SIGNALS_SRC).m_listSgnls.Count - 1].m_arSPars,0);
                                        break;

                                    default:
                                        break;
                                    }
                                }
                                else
                                {
                                    //Значение по ключу не соответствует формату
                                    break;
                                }
                            }
                            else
                            {
                                //Ключ в секции не  найден
                                break;
                            }
                            //Увеличить индекс элемента (источник, сигнал)
                            j++;
                        }
                    }
                    else
                    {
                        //Секция есть, но в ней не определен ни один источник...
                        iRes = -1; //???
                    }
                }
                else
                {
                    throw new Exception(@"FileINI::ctor () - addGroupValues () - группа объявлена, но значения не определены [" + secGroup + @"] ...");
                }

                return(iRes);
            }
Пример #7
0
 /// <summary>
 /// Заполнить рабочий элемент - список источников
 /// </summary>
 /// <param name="indxWork">Индекс панели</param>
 /// <param name="grpSrc">Объект с данными для заполнения</param>
 private void fillWorkItem(INDEX_SRC indxWork, GROUP_SRC grpSrc)
 {
     m_arLoader[(int)indxWork].FillWorkItem(grpSrc);
 }