OHLCPlugInView: fix occasional window time overlap

This commit is contained in:
2018-05-30 16:58:16 -07:00
parent 2a97579ac0
commit 98324bc505

View File

@ -86,9 +86,7 @@ public class OHLCPlugInView extends ViewSupport {
*/ */
private DateTime getTimestamp(EventBean event) { private DateTime getTimestamp(EventBean event) {
ExprEvaluator evaluator = timestampExpression.getForge().getExprEvaluator(); ExprEvaluator evaluator = timestampExpression.getForge().getExprEvaluator();
//Long l = (Long)evaluator.evaluate(new EventBean[] {event}, true, agentContext);
return (DateTime)evaluator.evaluate(new EventBean[] {event}, true, agentContext); return (DateTime)evaluator.evaluate(new EventBean[] {event}, true, agentContext);
//return toDateTime(l);
} }
/** /**
@ -133,16 +131,17 @@ public class OHLCPlugInView extends ViewSupport {
// create open window // create open window
windowStartTime = makeWindowStartTime(timestamp, interval); windowStartTime = makeWindowStartTime(timestamp, interval);
windowEndTime = makeWindowEndTime(windowStartTime, interval); windowEndTime = makeWindowEndTime(windowStartTime, interval);
scheduleCallback(windowEndTime);
} }
if (!inWindow(timestamp)) { if (!inWindow(timestamp)) {
// past current window. // past current window.
// post and create a new one. // post and create a new one.
postData(); postData();
scheduleCallback();
windowStartTime = makeWindowStartTime(timestamp, interval); windowStartTime = makeWindowStartTime(timestamp, interval);
windowEndTime = makeWindowEndTime(windowStartTime, interval); windowEndTime = makeWindowEndTime(windowStartTime, interval);
scheduleCallback(windowEndTime);
} }
} }
@ -162,7 +161,9 @@ public class OHLCPlugInView extends ViewSupport {
return timestamp.minus(intoPeriod); return timestamp.minus(intoPeriod);
} }
private static DateTime makeWindowEndTime(DateTime startTime, Duration interval) { private static DateTime makeWindowEndTime(DateTime startTime,
Duration interval)
{
if (startTime == null || interval == null) return null; if (startTime == null || interval == null) return null;
return startTime.plus(interval.getMillis()); return startTime.plus(interval.getMillis());
@ -201,7 +202,7 @@ public class OHLCPlugInView extends ViewSupport {
/** /**
* Set up a callback to post an event when our time window expires. * Set up a callback to post an event when our time window expires.
*/ */
private void scheduleCallback() { private void scheduleCallback(DateTime endTime) {
SchedulingService sched = agentContext.getStatementContext().getSchedulingService(); SchedulingService sched = agentContext.getStatementContext().getSchedulingService();
if (handle != null) { if (handle != null) {
// remove old schedule // remove old schedule
@ -210,7 +211,7 @@ public class OHLCPlugInView extends ViewSupport {
} }
DateTime currentTime = toDateTime(sched.getTime()); DateTime currentTime = toDateTime(sched.getTime());
DateTime targetTime = windowEndTime.plusSeconds(LATE_EVENT_SLACK_SECONDS); DateTime targetTime = endTime.plusSeconds(LATE_EVENT_SLACK_SECONDS);
long callbackTime = targetTime.getMillis() - currentTime.getMillis(); long callbackTime = targetTime.getMillis() - currentTime.getMillis();
ScheduleHandleCallback callback = new ScheduleHandleCallback() { ScheduleHandleCallback callback = new ScheduleHandleCallback() {