package storm.applications.sink.formatter;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Tuple;
/**
*
* @author Maycon Viana Bordin <mayconbordin@gmail.com>
*/
public class FullInfoFormatter extends Formatter {
private static final String TEMPLATE = "source: %s:%d, stream: %s, id: %s, values: [%s]";
@Override
public String format(Tuple tuple) {
Fields schema = context.getComponentOutputFields(tuple.getSourceComponent(), tuple.getSourceStreamId());
String values = "";
for (int i=0; i<tuple.size(); i++) {
if (i != 0) values += ", ";
values += String.format("%s=%s", schema.get(i), tuple.getValue(i));
}
return String.format(TEMPLATE, tuple.getSourceComponent(), tuple.getSourceTask(),
tuple.getSourceStreamId(), tuple.getMessageId().toString(), values);
}
}