// Remove old data
if (oldData != null)
{
for (int i = 0; i < oldData.length; i++)
{
EventBean oldDataItem = oldData[i];
Object sortValues = getTimestamp(oldDataItem);
boolean result = CollectionUtil.removeEventByKeyLazyListMap(sortValues, oldDataItem, sortedEvents);
if (result)
{
eventCount--;
if (postOldEventsArray == null) {
postOldEventsArray = oldData;
}
else {
postOldEventsArray = CollectionUtil.addArrayWithSetSemantics(postOldEventsArray, oldData);
}
internalHandleRemoved(sortValues, oldDataItem);
}
}
}
if ((newData != null) && (newData.length > 0))
{
// figure out the current tail time
long engineTime = agentInstanceContext.getStatementContext().getSchedulingService().getTime();
long windowTailTime = engineTime - intervalSize + 1;
long oldestEvent = Long.MAX_VALUE;
if (!sortedEvents.isEmpty())
{
oldestEvent = (Long) sortedEvents.firstKey();
}
boolean addedOlderEvent = false;
// add events or post events as remove stream if already older then tail time
ArrayList<EventBean> postOldEvents = null;
for (int i = 0; i < newData.length; i++)
{
// get timestamp of event
EventBean newEvent = newData[i];
Long timestamp = getTimestamp(newEvent);
// if the event timestamp indicates its older then the tail of the window, release it
if (timestamp < windowTailTime)
{