protected override Object GetKey(EventBean theEvent)
        {
            var keyValue = base.GetKey(theEvent);

            if ((keyValue != null) && (keyValue.GetType() != _coercionType))
            {
                keyValue = keyValue.IsNumber()
                    ? _coercer.Invoke(keyValue)
                    : EventBeanUtility.Coerce(keyValue, _coercionType);
            }
            return(keyValue);
        }
Esempio n. 2
0
        public ISet <EventBean> Lookup(EventBean[] eventPerStream, DataMap parent, ISet <EventBean> result, CompositeIndexQuery next, ExprEvaluatorContext context, IList <object> optionalKeyCollector)
        {
            var index      = (OrderedDictionary <object, object>)parent;
            var comparable = EvaluatePerStream(eventPerStream, context);

            if (optionalKeyCollector != null)
            {
                optionalKeyCollector.Add(comparable);
            }
            if (comparable == null)
            {
                return(null);
            }
            comparable = EventBeanUtility.Coerce(comparable, CoercionType);
            return(CompositeIndexQueryRange.Handle(eventPerStream, index.Tail(comparable, false), null, result, next));
        }
        public ICollection <EventBean> Lookup(EventBean[] eventPerStream, Map parent, ICollection <EventBean> result, CompositeIndexQuery next, ExprEvaluatorContext context, IList <object> optionalKeyCollector, CompositeIndexQueryResultPostProcessor postProcessor)
        {
            var comparableStart = base.EvaluatePerStreamStart(eventPerStream, context);

            if (optionalKeyCollector != null)
            {
                optionalKeyCollector.Add(comparableStart);
            }
            if (comparableStart == null)
            {
                return(null);
            }
            var comparableEnd = base.EvaluatePerStreamEnd(eventPerStream, context);

            if (optionalKeyCollector != null)
            {
                optionalKeyCollector.Add(comparableEnd);
            }
            if (comparableEnd == null)
            {
                return(null);
            }
            var index = (OrderedDictionary <object, object>)parent;

            comparableStart = EventBeanUtility.Coerce(comparableStart, CoercionType);
            comparableEnd   = EventBeanUtility.Coerce(comparableEnd, CoercionType);

            IDictionary <object, object> submap;

            try
            {
                submap = index.Between(comparableStart, IncludeStart, comparableEnd, IncludeEnd);
            }
            catch (ArgumentException)
            {
                if (_allowReverseRange)
                {
                    submap = index.Between(comparableEnd, IncludeStart, comparableStart, IncludeEnd);
                }
                else
                {
                    return(null);
                }
            }

            return(CompositeIndexQueryRange.Handle(eventPerStream, submap, null, result, next, postProcessor));
        }
        public void Enter(EventBean theEvent, AnyMap parent)
        {
            Object sortable = _propertyGetter.Get(theEvent);

            if (sortable == null)
            {
                if (_nullKeys == null)
                {
                    _nullKeys = new HashSet <EventBean>();
                }
                _nullKeys.Add(theEvent);
                return;
            }

            sortable = EventBeanUtility.Coerce(sortable, _coercionType);

            // if this is a leaf, enter event
            if (_next == null)
            {
                var eventMap = parent;
                var events   = eventMap.Get(sortable) as ICollection <EventBean>;
                if (events == null)
                {
                    events = new HashSet <EventBean>();
                    eventMap.Put(sortable, events);
                }

                events.Add(theEvent);
            }
            else
            {
                AnyMap innerIndex = (AnyMap)parent.Get(sortable);
                if (innerIndex == null)
                {
                    innerIndex = new OrderedDictionary <object, object>();
                    parent.Put(sortable, innerIndex);
                }
                _next.Enter(theEvent, innerIndex);
            }
        }
Esempio n. 5
0
        public ICollection <EventBean> Lookup(
            EventBean theEvent,
            DataMap parent,
            ICollection <EventBean> result,
            CompositeIndexQuery next,
            ExprEvaluatorContext context,
            IList <object> optionalKeyCollector,
            CompositeIndexQueryResultPostProcessor postProcessor)
        {
            var index      = (OrderedDictionary <object, object>)parent;
            var comparable = EvaluateLookup(theEvent, context);

            if (optionalKeyCollector != null)
            {
                optionalKeyCollector.Add(comparable);
            }
            if (comparable == null)
            {
                return(null);
            }
            comparable = EventBeanUtility.Coerce(comparable, CoercionType);
            return(CompositeIndexQueryRange.Handle(theEvent, index.Tail(comparable, false), null, result, next, postProcessor));
        }
Esempio n. 6
0
 public object Evaluate(
     EventBean[] events,
     ExprEvaluatorContext context)
 {
     return EventBeanUtility.Coerce(hashKeysEval.Evaluate(events, true, context), coercionType);
 }
        protected override Object GetKey(EventBean[] eventsPerStream, ExprEvaluatorContext context)
        {
            Object key = base.GetKey(eventsPerStream, context);

            return(EventBeanUtility.Coerce(key, _coercionType));
        }
 public Object Evaluate(EventBean[] events, ExprEvaluatorContext context)
 {
     return(EventBeanUtility.Coerce(
                _hashKeysEval.Evaluate(new EvaluateParams(events, true, context)),
                _coercionType));
 }
Esempio n. 9
0
 /// <summary>Returns the set of events that have the same property value as the given event. </summary>
 /// <returns>set of events with property value, or null if none found (never returns zero-sized set)</returns>
 public override ISet <EventBean> Lookup(Object key)
 {
     key = EventBeanUtility.Coerce(key, _coercionType);
     return(propertyIndex.Get(key));
 }
Esempio n. 10
0
 private object Coerce(object key)
 {
     return(EventBeanUtility.Coerce(key, _coercionType));
 }