package edu.harvard.mcb.leschziner.pipe;
import java.util.Vector;
import java.util.concurrent.BlockingQueue;
import edu.harvard.mcb.leschziner.core.Particle;
import edu.harvard.mcb.leschziner.core.ParticleFilter;
import edu.harvard.mcb.leschziner.storage.DefaultStorageEngine;
public class FilteringPipeTask extends ParticlePipeTask {
private static final long serialVersionUID = 2219341028285498238L;
private final Vector<ParticleFilter> stages;
public FilteringPipeTask(Particle target,
Vector<ParticleFilter> stages,
String processedQueueName,
String executorName) {
super(target, processedQueueName, executorName);
this.stages = stages;
}
@Override public void process() {
BlockingQueue<Particle> processedParticles = DefaultStorageEngine.getStorageEngine()
.getQueue(processedQueueName);
Particle processed = target;
// Apply each filter
for (ParticleFilter stage : stages) {
processed = stage.filter(processed);
}
processedParticles.add(processed);
}
}