package nl.tno.sensorstorm.particlemappertest;
import java.util.Map;
import nl.tno.sensorstorm.api.particles.CustomParticlePojoMapper;
import nl.tno.sensorstorm.particlemapper.ParticleMapper;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Tuple;
import backtype.storm.tuple.Values;
public class SomeCustomMapper implements
CustomParticlePojoMapper<SelfMappedParticle> {
private static Fields fields = new Fields(
ParticleMapper.TIMESTAMP_FIELD_NAME, "customNameForId", "intId",
"map");
@Override
public Values particleToValues(SelfMappedParticle particle) {
Values v = new Values();
v.add(particle.timestamp);
v.add(particle.id);
v.add(particle.intId);
v.add(particle.map);
return v;
}
@SuppressWarnings("unchecked")
@Override
public SelfMappedParticle tupleToParticle(Tuple tuple) {
SelfMappedParticle p = new SelfMappedParticle();
p.timestamp = tuple.getLongByField(ParticleMapper.TIMESTAMP_FIELD_NAME);
p.id = tuple.getStringByField("customNameForId");
p.intId = tuple.getIntegerByField("intId");
p.map = (Map<String, Double>) tuple.getValueByField("map");
return p;
}
@Override
public Fields getFields() {
return fields;
}
@Override
public boolean canMapTuple(Tuple tuple) {
return tuple.contains("customNameForId");
}
}