* @return null, since this implementation works asynchronously.
*/
@Override
public Data process(Data input) {
final String mapEventTypeName = (String) input.get("@stream");
final Data event = input.createCopy();
event.remove("@stream");
event.remove("@stream:id");
// If this event defines a start time, then adjust the current time if
// necessary and replace the string value with the long value.
final String startTimeKey = _startTimestampMap.get(mapEventTypeName);
if (startTimeKey != null) {
final long dataStartTime = Long.parseLong(input.get(startTimeKey)
.toString());
event.put(startTimeKey, dataStartTime);
if (dataStartTime > _currentTime) {
_currentTime = dataStartTime;
final CurrentTimeEvent timeEvent = new CurrentTimeEvent(
_currentTime);
_log.debug("Sending time event new time: {}", _currentTime);
_epRuntime.sendEvent(timeEvent);
}
}
// If this event defines an end time, then replace the string value with
// the long value.
final String endTimeKey = _endTimestampMap.get(mapEventTypeName);
if (endTimeKey != null) {
final long dataEndTime = Long.parseLong(input.get(endTimeKey)
.toString());
event.put(endTimeKey, dataEndTime);
}
_epRuntime.sendEvent(event, mapEventTypeName);
return null;
}