package com.ebottabi.bolt;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import com.ebottabi.bolt.RedisBolt.OnDynamicConfigurationListener;
import java.util.Map;
import twitter4j.HashtagEntity;
import twitter4j.Status;
/**
*
* Publish the hashtags coming from the different tweets.
*
* @author ebot
*
*/
public class RedisTagsPublisherBolt extends RedisBolt implements OnDynamicConfigurationListener {
private final List<String> forbiddenTags = new LinkedList<String>();
public RedisTagsPublisherBolt(String channel) {
super(channel);
}
@Override
protected void setupNonSerializableAttributes() {
super.setupNonSerializableAttributes();
setupDynamicConfiguration(this);
}
@Override
public List<Object> filter(Status status) {
if (status == null) {
return null;
}
List<HashtagEntity> hashtags = Arrays.asList(status.getHashtagEntities());
if (hashtags != null && hashtags.size() > 0) {
for (HashtagEntity tag : hashtags) {
if (!forbiddenTags.contains(tag.getText().toLowerCase())) {
publish(tag.getText().toLowerCase());
}
}
}
return null;
}
@Override
public void onConfigurationChange(String conf) {
//Utils.StringToList(conf, forbiddenTags);
}
@Override
public Map<String, Object> getComponentConfiguration() {
return null;
}
}