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.particles.DataParticleBatch;
import nl.tno.sensorstorm.api.processing.ParticleBatchOperation;
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 MyTimedBatchOperation implements ParticleBatchOperation,
TimerTaskInterface {
private static final long serialVersionUID = 773649574489299505L;
TimerControllerInterface timerController = null;
private String fieldGrouper;
@Override
public void init(String fieldGrouper, long startTimestamp,
@SuppressWarnings("rawtypes") Map stormNativeConfig,
ExternalStormConfiguration stormConfiguration) {
this.fieldGrouper = fieldGrouper;
System.out.println("init myTimedBatchOperation for fieldGrouper "
+ fieldGrouper + " at " + startTimestamp);
}
@Override
public List<DataParticle> execute(DataParticleBatch inputParticles) {
if (inputParticles != null) {
System.out.print("Timed Batch Operation fieldGrouper "
+ fieldGrouper + " batch received :[");
for (DataParticle inputParticle : inputParticles) {
System.out.print(inputParticle + ", ");
}
System.out.println("]");
}
return null;
}
@Override
public void setTimerController(TimerControllerInterface timerController) {
this.timerController = timerController;
timerController.registerOperationForRecurringTimerTask(1500, this);
timerController.registerOperationForSingleTimerTask(3300, this);
System.out.println("Timers set");
}
@Override
public List<DataParticle> doTimerRecurringTask(long timestamp) {
System.out.println("Recurring task for fieldGrouper " + fieldGrouper
+ " at " + timestamp);
return null;
}
@Override
public List<DataParticle> doTimerSingleTask(long timestamp) {
System.out.println("Single task for fieldGrouper " + fieldGrouper
+ " at " + timestamp);
return null;
}
}