}
public final void update(EventBean[] newData, EventBean[] oldData)
{
// If we have child views, keep a reference to the old values, so we can update them as old data event.
EventBean oldDataMap = null;
if (lastNewEvent == null)
{
if (this.hasViews())
{
oldDataMap = populateMap(baseStatisticsBean, statementContext.getEventAdapterService(), eventType, additionalProps, lastValuesEventNew);
}
}
// add data points to the bean
if (newData != null)
{
for (int i = 0; i < newData.length; i++)
{
eventsPerStream[0] = newData[i];
Number pointnum = (Number) fieldExpressionEvaluator.evaluate(eventsPerStream, true, statementContext);
if (pointnum != null) {
double point = pointnum.doubleValue();
baseStatisticsBean.addPoint(point, 0);
}
}
if ((additionalProps != null) && (newData.length != 0)) {
if (lastValuesEventNew == null) {
lastValuesEventNew = new Object[additionalProps.getAdditionalExpr().length];
}
for (int val = 0; val < additionalProps.getAdditionalExpr().length; val++) {
lastValuesEventNew[val] = additionalProps.getAdditionalExpr()[val].evaluate(eventsPerStream, true, statementContext);
}
}
}
// remove data points from the bean
if (oldData != null)
{
for (int i = 0; i < oldData.length; i++)
{
eventsPerStream[0] = oldData[i];
Number pointnum = (Number) fieldExpressionEvaluator.evaluate(eventsPerStream, true, statementContext);
if (pointnum != null) {
double point = pointnum.doubleValue();
baseStatisticsBean.removePoint(point, 0);
}
}
}
// If there are child view, call update method
if (this.hasViews())
{
EventBean newDataMap = populateMap(baseStatisticsBean, statementContext.getEventAdapterService(), eventType, additionalProps, lastValuesEventNew);
if (lastNewEvent == null)
{
updateChildren(new EventBean[] {newDataMap}, new EventBean[] {oldDataMap});
}