package org.buildoop.storm.bolts;
import backtype.storm.task.TopologyContext;
import backtype.storm.topology.BasicOutputCollector;
import backtype.storm.topology.IBasicBolt;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Tuple;
import java.util.HashMap;
import java.util.Map;
import org.buildoop.storm.tools.AuditParser;
import static backtype.storm.utils.Utils.tuple;
@SuppressWarnings("serial")
public class AuditParserBolt implements IBasicBolt {
@SuppressWarnings("rawtypes")
public void prepare(Map stormConf, TopologyContext context) {
}
public void execute(Tuple input, BasicOutputCollector collector) {
Map<String,String> tupleValue = fillAuditAttributes(AuditParser.parseAuditInput(input.getString(0)));
if (!tupleValue.isEmpty())
collector.emit(tuple(tupleValue));
}
private Map<String,String> fillAuditAttributes(Map<String,Object> attributes){
Map<String,String> tupleValue = new HashMap<String,String>();
String type = null;
if (attributes.containsKey("type")){
type = (String)attributes.get("type");
switch (type){
case "USER_LOGIN":
case "USER_LOGOUT":
if (attributes.get("res").equals("success"))
{
tupleValue.put("type", type);
tupleValue.put("host", (String)attributes.get("node"));
tupleValue.put("user", (String)attributes.get("username"));
}
default:
}
}
return tupleValue;
}
public void cleanup() {
}
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declare(new Fields("tupleValue"));
}
@Override
public Map<String, Object> getComponentConfiguration() {
return null;
}
}