1
0
mirror of https://github.com/FreeOpcUa/opcua-asyncio synced 2025-10-29 17:07:18 +08:00

Fix WhereClauseEvauluator by einarmo

This commit is contained in:
oroulet 2019-10-01 08:36:04 +02:00 committed by oroulet
parent 31db049abf
commit f5e678e444

View File

@ -256,30 +256,30 @@ class WhereClauseEvaluator:
# ops = [self._eval_op(op, event) for op in el.FilterOperands]
ops = el.FilterOperands # just to make code more readable
if el.FilterOperator == ua.FilterOperator.Equals:
return self._eval_op(ops[0], event) == self._eval_el(ops[1], event)
return self._eval_op(ops[0], event) == self._eval_op(ops[1], event)
if el.FilterOperator == ua.FilterOperator.IsNull:
return self._eval_op(ops[0], event) is None # FIXME: might be too strict
if el.FilterOperator == ua.FilterOperator.GreaterThan:
return self._eval_op(ops[0], event) > self._eval_el(ops[1], event)
return self._eval_op(ops[0], event) > self._eval_op(ops[1], event)
if el.FilterOperator == ua.FilterOperator.LessThan:
return self._eval_op(ops[0], event) < self._eval_el(ops[1], event)
return self._eval_op(ops[0], event) < self._eval_op(ops[1], event)
if el.FilterOperator == ua.FilterOperator.GreaterThanOrEqual:
return self._eval_op(ops[0], event) >= self._eval_el(ops[1], event)
return self._eval_op(ops[0], event) >= self._eval_op(ops[1], event)
if el.FilterOperator == ua.FilterOperator.LessThanOrEqual:
return self._eval_op(ops[0], event) <= self._eval_el(ops[1], event)
return self._eval_op(ops[0], event) <= self._eval_op(ops[1], event)
if el.FilterOperator == ua.FilterOperator.Like:
return self._like_operator(self._eval_op(ops[0], event), self._eval_el(ops[1], event))
return self._like_operator(self._eval_op(ops[0], event), self._eval_op(ops[1], event))
if el.FilterOperator == ua.FilterOperator.Not:
return not self._eval_op(ops[0], event)
if el.FilterOperator == ua.FilterOperator.Between:
return self._eval_el(ops[2], event) >= self._eval_op(ops[0], event) >= self._eval_el(ops[1], event)
return self._eval_op(ops[2], event) >= self._eval_op(ops[0], event) >= self._eval_op(ops[1], event)
if el.FilterOperator == ua.FilterOperator.InList:
return self._eval_op(ops[0], event) in [self._eval_op(op, event) for op in ops[1:]]
if el.FilterOperator == ua.FilterOperator.And:
self.elements(ops[0].Index)
return self._eval_op(ops[0], event) and self._eval_op(ops[1], event)
if el.FilterOperator == ua.FilterOperator.Or:
return self._eval_op(ops[0], event) or self._eval_el(ops[1], event)
return self._eval_op(ops[0], event) or self._eval_op(ops[1], event)
if el.FilterOperator == ua.FilterOperator.Cast:
self.logger.warn("Cast operand not implemented, assuming True")
return True