public virtual TimelineEvents GetEntityTimelines(string entityType, ICollection <string > entityIds, long limit, long windowStart, long windowEnd, ICollection <string> eventTypes ) { lock (this) { TimelineEvents allEvents = new TimelineEvents(); if (entityIds == null) { return(allEvents); } if (limit == null) { limit = DefaultLimit; } if (windowStart == null) { windowStart = long.MinValue; } if (windowEnd == null) { windowEnd = long.MaxValue; } foreach (string entityId in entityIds) { EntityIdentifier entityID = new EntityIdentifier(entityId, entityType); TimelineEntity entity = entities[entityID]; if (entity == null) { continue; } TimelineEvents.EventsOfOneEntity events = new TimelineEvents.EventsOfOneEntity(); events.SetEntityId(entityId); events.SetEntityType(entityType); foreach (TimelineEvent @event in entity.GetEvents()) { if (events.GetEvents().Count >= limit) { break; } if (@event.GetTimestamp() <= windowStart) { continue; } if (@event.GetTimestamp() > windowEnd) { continue; } if (eventTypes != null && !eventTypes.Contains(@event.GetEventType())) { continue; } events.AddEvent(@event); } allEvents.AddEvent(events); } return(allEvents); } }