Exemplo n.º 1
0
 public bool?Compute(
     long leftStart,
     long leftEnd,
     long rightStart,
     long rightEnd,
     EventBean[] eventsPerStream,
     bool newData,
     ExprEvaluatorContext context)
 {
     if (overlaps)
     {
         long minThreshold = minEval.Evaluate(leftStart, eventsPerStream, newData, context);
         long maxThreshold = maxEval.Evaluate(leftEnd, eventsPerStream, newData, context);
         return(IntervalComputerOverlapsAndByThresholdEval.ComputeIntervalOverlaps(
                    leftStart,
                    leftEnd,
                    rightStart,
                    rightEnd,
                    minThreshold,
                    maxThreshold));
     }
     else
     {
         long minThreshold = minEval.Evaluate(rightStart, eventsPerStream, newData, context);
         long maxThreshold = maxEval.Evaluate(rightEnd, eventsPerStream, newData, context);
         return(IntervalComputerOverlapsAndByThresholdEval.ComputeIntervalOverlaps(
                    rightStart,
                    rightEnd,
                    leftStart,
                    leftEnd,
                    minThreshold,
                    maxThreshold));
     }
 }
Exemplo n.º 2
0
            public bool?Compute(
                long leftStart,
                long leftEnd,
                long rightStart,
                long rightEnd,
                EventBean[] eventsPerStream,
                bool newData,
                ExprEvaluatorContext context)
            {
                var threshold = _thresholdExpr.Evaluate(Math.Min(rightEnd, leftEnd), eventsPerStream, newData, context);

                if (threshold < 0)
                {
                    Log.Warn("The 'finishes' date-time method does not allow negative threshold");
                    return(null);
                }

                if (leftStart >= rightStart)
                {
                    return(false);
                }
                var delta = Math.Abs(leftEnd - rightEnd);

                return(delta <= threshold);
            }
Exemplo n.º 3
0
            public bool?Compute(
                long leftStart,
                long leftEnd,
                long rightStart,
                long rightEnd,
                EventBean[] eventsPerStream,
                bool newData,
                ExprEvaluatorContext context)
            {
                var minStart = _minStartEval.Evaluate(rightStart, eventsPerStream, newData, context);
                var maxStart = _maxStartEval.Evaluate(rightStart, eventsPerStream, newData, context);
                var minEnd   = _minEndEval.Evaluate(rightEnd, eventsPerStream, newData, context);
                var maxEnd   = _maxEndEval.Evaluate(rightEnd, eventsPerStream, newData, context);

                if (_during)
                {
                    return(IntervalComputerDuringAndIncludesMinMax.ComputeInternalDuring(
                               leftStart, leftEnd, rightStart, rightEnd, minStart, maxStart, minEnd, maxEnd));
                }
                else
                {
                    return(IntervalComputerDuringAndIncludesMinMax.ComputeInternalIncludes(
                               leftStart, leftEnd, rightStart, rightEnd, minStart, maxStart, minEnd, maxEnd));
                }
            }
Exemplo n.º 4
0
            public bool?Compute(
                long leftStart,
                long leftEnd,
                long rightStart,
                long rightEnd,
                EventBean[] eventsPerStream,
                bool newData,
                ExprEvaluatorContext context)
            {
                var thresholdValue = _threshold.Evaluate(leftStart, eventsPerStream, newData, context);

                if (_during)
                {
                    var deltaStart = leftStart - rightStart;
                    if (deltaStart <= 0 || deltaStart > thresholdValue)
                    {
                        return(false);
                    }

                    var deltaEnd = rightEnd - leftEnd;
                    return(!(deltaEnd <= 0 || deltaEnd > thresholdValue));
                }
                else
                {
                    var deltaStart = rightStart - leftStart;
                    if (deltaStart <= 0 || deltaStart > thresholdValue)
                    {
                        return(false);
                    }

                    var deltaEnd = leftEnd - rightEnd;
                    return(!(deltaEnd <= 0 || deltaEnd > thresholdValue));
                }
            }
            public bool?Compute(
                long leftStart,
                long leftEnd,
                long rightStart,
                long rightEnd,
                EventBean[] eventsPerStream,
                bool newData,
                ExprEvaluatorContext context)
            {
                long startValue = start.Evaluate(Math.Min(leftStart, rightStart), eventsPerStream, newData, context);
                long endValue   = finish.Evaluate(Math.Min(leftEnd, rightEnd), eventsPerStream, newData, context);

                if (startValue < 0 || endValue < 0)
                {
                    Log.Warn("The coincides date-time method does not allow negative start and end values");
                    return(null);
                }

                return(IntervalComputerConstantCoincides.ComputeIntervalCoincides(
                           leftStart,
                           leftEnd,
                           rightStart,
                           rightEnd,
                           startValue,
                           endValue));
            }
            public bool?Compute(
                long leftStart,
                long leftEnd,
                long rightStart,
                long rightEnd,
                EventBean[] eventsPerStream,
                bool newData,
                ExprEvaluatorContext context)
            {
                long threshold = thresholdExpr.Evaluate(
                    Math.Min(leftStart, rightStart),
                    eventsPerStream,
                    newData,
                    context);

                if (threshold < 0)
                {
                    LogWarningIntervalStartsThreshold();
                    return(null);
                }

                var delta = Math.Abs(leftStart - rightStart);

                return(delta <= threshold && leftEnd < rightEnd);
            }
            public bool?Compute(
                long leftStart,
                long leftEnd,
                long rightStart,
                long rightEnd,
                EventBean[] eventsPerStream,
                bool newData,
                ExprEvaluatorContext context)
            {
                long threshold = thresholdExpr.Evaluate(Math.Min(rightEnd, leftEnd), eventsPerStream, newData, context);

                if (threshold < 0)
                {
                    LogWarningIntervalFinishedByThreshold();
                    return(null);
                }

                if (leftStart >= rightStart)
                {
                    return(false);
                }

                var delta = Math.Abs(leftEnd - rightEnd);

                return(delta <= threshold);
            }
Exemplo n.º 8
0
            public bool?Compute(
                long leftStart,
                long leftEnd,
                long rightStart,
                long rightEnd,
                EventBean[] eventsPerStream,
                bool newData,
                ExprEvaluatorContext context)
            {
                long rangeStartDelta = start.Evaluate(rightStart, eventsPerStream, newData, context);
                long rangeEndDelta   = finish.Evaluate(rightStart, eventsPerStream, newData, context);

                if (rangeStartDelta > rangeEndDelta)
                {
                    return(IntervalComputerConstantAfter.ComputeIntervalAfter(
                               leftStart,
                               rightEnd,
                               rangeEndDelta,
                               rangeStartDelta));
                }

                return(IntervalComputerConstantAfter.ComputeIntervalAfter(
                           leftStart,
                           rightEnd,
                           rangeStartDelta,
                           rangeEndDelta));
            }
Exemplo n.º 9
0
 public bool?Compute(
     long leftStart,
     long leftEnd,
     long rightStart,
     long rightEnd,
     EventBean[] eventsPerStream,
     bool newData,
     ExprEvaluatorContext context)
 {
     if (_overlaps)
     {
         var threshold = _thresholdExpr.Evaluate(leftStart, eventsPerStream, newData, context);
         return(ComputeInternalOverlaps(leftStart, leftEnd, rightStart, rightEnd, 0, threshold));
     }
     else
     {
         var threshold = _thresholdExpr.Evaluate(rightStart, eventsPerStream, newData, context);
         return(ComputeInternalOverlaps(rightStart, rightEnd, leftStart, leftEnd, 0, threshold));
     }
 }
            public bool?Compute(
                long leftStart,
                long leftEnd,
                long rightStart,
                long rightEnd,
                EventBean[] eventsPerStream,
                bool newData,
                ExprEvaluatorContext context)
            {
                long min = minEval.Evaluate(leftStart, eventsPerStream, newData, context);
                long max = maxEval.Evaluate(rightEnd, eventsPerStream, newData, context);

                if (during)
                {
                    return(ComputeIntervalDuring(leftStart, leftEnd, rightStart, rightEnd, min, max, min, max));
                }

                return(ComputeIntervalIncludes(leftStart, leftEnd, rightStart, rightEnd, min, max, min, max));
            }
Exemplo n.º 11
0
            public bool?Compute(
                long leftStart,
                long leftEnd,
                long rightStart,
                long rightEnd,
                EventBean[] eventsPerStream,
                bool newData,
                ExprEvaluatorContext context)
            {
                var rangeStartDelta = _start.Evaluate(leftEnd, eventsPerStream, newData, context);
                var rangeEndDelta   = _finish.Evaluate(leftEnd, eventsPerStream, newData, context);

                if (rangeStartDelta > rangeEndDelta)
                {
                    return(IntervalComputerConstantBefore.ComputeInternal(
                               leftStart, leftEnd, rightStart, rangeEndDelta, rangeStartDelta));
                }
                else
                {
                    return(IntervalComputerConstantBefore.ComputeInternal(
                               leftStart, leftEnd, rightStart, rangeStartDelta, rangeEndDelta));
                }
            }