package nl.tno.timeseries.testapp;
import java.util.List;
import java.util.Map;
import nl.tno.sensorstorm.api.annotation.OperationDeclaration;
import nl.tno.sensorstorm.api.particles.DataParticle;
import nl.tno.sensorstorm.api.processing.SingleParticleOperation;
import nl.tno.sensorstorm.timer.TimerControllerInterface;
import nl.tno.sensorstorm.timer.TimerParticleHandler;
import nl.tno.sensorstorm.timer.TimerTaskInterface;
import nl.tno.storm.configuration.api.ExternalStormConfiguration;
@OperationDeclaration(inputs = { MyDataParticle.class }, outputs = {}, metaParticleHandlers = { TimerParticleHandler.class })
public class MyTimedOperation implements SingleParticleOperation,
TimerTaskInterface {
private static final long serialVersionUID = 773649574489299505L;
TimerControllerInterface timerController = null;
private String fieldGrouperValue;
@Override
public void init(String fieldGrouperValue, long startTimestamp,
@SuppressWarnings("rawtypes") Map stormNativeConfig,
ExternalStormConfiguration stormConfiguration) {
this.fieldGrouperValue = fieldGrouperValue;
System.out.println("myTimedOperation.init for fieldGrouperValue "
+ fieldGrouperValue + " at " + startTimestamp);
}
@Override
public List<DataParticle> execute(DataParticle inputParticle) {
if (inputParticle != null) {
if (inputParticle instanceof MyDataParticle<?>) {
System.out.println("myTimedOperation.MyDataParticle received "
+ inputParticle);
} else {
System.out.println("myTimedOperation.Data particle received "
+ inputParticle);
}
}
return null;
}
@Override
public void setTimerController(TimerControllerInterface timerController) {
this.timerController = timerController;
timerController.registerOperationForRecurringTimerTask(1500, this);
timerController.registerOperationForSingleTimerTask(3300, this);
System.out.println("myTimedOperation.Timers set");
}
@Override
public List<DataParticle> doTimerRecurringTask(long timestamp) {
System.out
.println("myTimedOperation.Recurring task for fieldGrouperValue "
+ fieldGrouperValue + " at " + timestamp);
return null;
}
@Override
public List<DataParticle> doTimerSingleTask(long timestamp) {
System.out
.println("myTimedOperation.Single task for fieldGrouperValue "
+ fieldGrouperValue + " at " + timestamp);
return null;
}
}