Esempio n. 1
0
        /// <summary>
        /// Получить представление заданного типа и права на него
        /// </summary>
        public bool GetView(Type viewType, int viewSetIndex, int viewIndex, 
            out BaseView view, out MainData.Right right)
        {
            bool result = false;
            view = null;
            right = MainData.Right.NoRights;

            try
            {
                if (viewSetRightList != null && 0 <= viewSetIndex && viewSetIndex < viewSetRightList.Count)
                {
                    ViewSetRight viewSetRight = viewSetRightList[viewSetIndex];
                    ViewSettings.ViewSet viewSet = viewSetRight.ViewSet;

                    if (viewSetRight.ViewRightArr == null)
                        InitViewRightArr(viewSetRight);

                    MainData.Right[] viewRightArr = viewSetRight.ViewRightArr;

                    if (viewSet != null && viewRightArr != null && 0 <= viewIndex && 
                        viewIndex < viewSet.Count && viewIndex < viewRightArr.Length)
                    {
                        ViewSettings.ViewInfo viewInfo = viewSet[viewIndex];
                        right = viewRightArr[viewIndex];

                        // попытка получить стандартный тип представления, если тип не задан
                        if (viewType == null)
                            viewType = viewInfo.GetViewType();

                        if (viewType == null)
                        {
                            // возврат представления из кэша, если тип не задан
                            view = viewInfo.ViewCash;
                            return view != null;
                        }
                        else if (viewInfo.Type == viewType.Name)
                        {
                            if (viewInfo.ViewCash != null && viewInfo.ViewCash.GetType() == viewType)
                            {
                                // возврат представления из кэша, 
                                // если в кэше загружено представление и его тип совпадает с заданным
                                view = viewInfo.ViewCash;
                                result = true;
                            }
                            else
                            {
                                // создание и загрузка нового представления
                                view = (BaseView)Activator.CreateInstance(viewType);

                                if (!view.StoredOnServer)
                                    view.ItfObjName = Path.GetFileName(viewInfo.FileName);

                                if (!view.StoredOnServer || 
                                    AppData.MainData.ServerComm.ReceiveView(viewSet.Directory + viewInfo.FileName, view))
                                {
                                    AppData.MainData.RefreshBase();
                                    view.BindCnlProps(AppData.MainData.CnlPropsArr);
                                    viewInfo.ViewCash = view;
                                    result = true;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                AppData.Log.WriteAction((Localization.UseRussian ? "Ошибка при получении представления: " : 
                    "Error getting view: ") + ex.Message, Log.ActTypes.Exception);
            }

            return result;
        }
Esempio n. 2
0
        /// <summary>
        /// Принять представление от SCADA-Сервера
        /// </summary>
        public bool ReceiveView(string fileName, BaseView view)
        {
            Monitor.Enter(tcpLock);
            bool result = false;
            errMsg = "";

            try
            {
                try
                {
                    if (RestoreConnection())
                    {
                        using (MemoryStream memStream = new MemoryStream())
                        {
                            if (ReceiveFile(Dirs.Itf, fileName, memStream))
                            {
                                view.LoadFromStream(memStream);
                                result = true;
                            }
                        }
                    }
                }
                finally
                {
                    // очистка представления, если не удалось получить новые данные
                    if (!result)
                        view.Clear();
                    // установка наименования объекта интерфейса
                    view.ItfObjName = Path.GetFileName(fileName);
                }
            }
            catch (Exception ex)
            {
                errMsg = (Localization.UseRussian ? "Ошибка при приёме представления от SCADA-Сервера: " :
                    "Error receiving view from SCADA-Server: ") + ex.Message;
                WriteAction(errMsg, Log.ActTypes.Exception);
            }
            finally
            {
                Monitor.Exit(tcpLock);
            }

            return result;
        }
Esempio n. 3
0
        /// <summary>
        /// �������� ������������� ��������� ���� � ����� �� ����
        /// </summary>
        public bool GetView(Type viewType, int viewSetIndex, int viewIndex, 
            out BaseView view, out MainData.Right right)
        {
            bool result = false;
            view = null;
            right = MainData.Right.NoRights;

            try
            {
                if (viewSetRightList != null && 0 <= viewSetIndex && viewSetIndex < viewSetRightList.Count)
                {
                    ViewSetRight viewSetRight = viewSetRightList[viewSetIndex];
                    ViewSettings.ViewSet viewSet = viewSetRight.ViewSet;

                    if (viewSetRight.ViewRightArr == null)
                        InitViewRightArr(viewSetRight);

                    MainData.Right[] viewRightArr = viewSetRight.ViewRightArr;

                    if (viewSet != null && viewRightArr != null && 0 <= viewIndex &&
                        viewIndex < viewSet.Count && viewIndex < viewRightArr.Length)
                    {
                        ViewSettings.ViewInfo viewInfo = viewSet[viewIndex];
                        right = viewRightArr[viewIndex];

                        if (viewType == null)
                        {
                            view = viewInfo.ViewCash;
                            return view != null;
                        }
                        else if (viewInfo.Type == viewType.Name)
                        {
                            if (viewInfo.ViewCash != null && viewInfo.ViewCash.GetType() == viewType)
                            {
                                view = viewInfo.ViewCash;
                                result = true;
                            }
                            else
                            {
                                view = (BaseView)Activator.CreateInstance(viewType);

                                if (!view.StoredOnServer)
                                    view.ItfObjName = Path.GetFileName(viewInfo.FileName);

                                if (!view.StoredOnServer ||
                                    AppData.MainData.ServerComm.ReceiveView(viewSet.Directory + viewInfo.FileName, view))
                                {
                                    AppData.MainData.RefreshBase();
                                    view.BindCnlProps(AppData.MainData.CnlPropsArr);
                                    viewInfo.ViewCash = view;
                                    result = true;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                AppData.Log.WriteAction((Localization.UseRussian ? "������ ��� ��������� �������������: " :
                    "Error getting view: ") + ex.Message, Log.ActTypes.Exception);
            }

            return result;
        }
Esempio n. 4
0
        /// <summary>
        /// Установить параметры отчёта.
        /// repParams[0] - табличное представление типа TableView,
        /// repParams[1] - дата запрашиваемых данных типа DateTime,
        /// repParams[2] - вывод событий типа int: 0 и меньше - не выводить, 1 - все события, иначе - по представлению
        /// </summary>
        public override void SetParams(params object[] repParams)
        {
            baseView = (BaseView)repParams[0];
            tableView = baseView as TableView;
            date = (DateTime)repParams[1];
            eventOut = (int)repParams[2];

            if (tableView == null && eventOut <= 0)
                throw new Exception(WebPhrases.NoReportData);
        }