Пример #1
0
        private void OkBTN_Click(object sender, EventArgs e)
        {
            try
            {
                EventFilter filter = new EventFilter();

                filter.SelectClauses.AddRange(SelectClauseCTRL.GetSelectClauses());
                filter.WhereClause = ContentFilterCTRL.GetFilter();

                EventFilter.Result result = filter.Validate(new FilterContext(m_session.NamespaceUris, m_session.TypeTree));

                if (ServiceResult.IsBad(result.Status))
                {
                    throw ServiceResultException.Create(StatusCodes.BadEventFilterInvalid, result.GetLongString());
                }

                m_filter = filter;

                DialogResult = DialogResult.OK;
            }
            catch (Exception exception)
            {
                GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
            }
        }
        /// <summary>
        /// Updates or inserts events.
        /// </summary>
        protected override void HistoryUpdateEvents(
            ServerSystemContext context,
            IList <UpdateEventDetails> nodesToUpdate,
            IList <HistoryUpdateResult> results,
            IList <ServiceResult> errors,
            List <NodeHandle> nodesToProcess,
            IDictionary <NodeId, NodeState> cache)
        {
            for (int ii = 0; ii < nodesToProcess.Count; ii++)
            {
                NodeHandle          handle       = nodesToProcess[ii];
                UpdateEventDetails  nodeToUpdate = nodesToUpdate[handle.Index];
                HistoryUpdateResult result       = results[handle.Index];

                // validate the event filter.
                FilterContext      filterContext = new FilterContext(context.NamespaceUris, context.TypeTable, context);
                EventFilter.Result filterResult  = nodeToUpdate.Filter.Validate(filterContext);

                if (ServiceResult.IsBad(filterResult.Status))
                {
                    errors[handle.Index] = filterResult.Status;
                    continue;
                }

                // all done.
                errors[handle.Index] = StatusCodes.BadNotImplemented;
            }
        }