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; } }