package com.ebottabi.bolt;
/**
*
* @author ebot
*/
import java.util.Map;
import twitter4j.HashtagEntity;
import twitter4j.Status;
import backtype.storm.task.OutputCollector;
import backtype.storm.task.TopologyContext;
//import backtype.storm.topology.base.BaseBasicBolt;
import backtype.storm.topology.base.BaseRichBolt;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Tuple;
import backtype.storm.tuple.Values;
public class TwitterFilterBolt extends BaseRichBolt {
OutputCollector collector;
@Override
public void execute(Tuple tuple) {
Status status = (Status) tuple.getValue(0);
HashtagEntity hashTags[] = status.getHashtagEntities();
if (hashTags != null && hashTags.length >= 2) {
int count = 0;
/**
* Do simple filtering to remove spam tweets
*/
for (HashtagEntity hashtag : hashTags) {
if ("android".equals(hashtag.getText().toLowerCase())
|| "androidgames".equals(hashtag.getText().toLowerCase())) {
count++;
}
}
if (count == 2) {
return;
}
}
collector.emit(tuple, new Values(status));
collector.ack(tuple);
}
@Override
public void cleanup() {
}
@Override
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declare(new Fields("FJJ"));
}
@Override
public void prepare(Map stormConf, TopologyContext context, OutputCollector collector) {
this.collector = collector;
}
}