package storm.applications.bolt;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Tuple;
import backtype.storm.tuple.Values;
import java.util.HashMap;
import java.util.Map;
import static storm.applications.constants.ClickAnalyticsConstants.*;
/**
* User: domenicosolazzo
*/
public class RepeatVisitBolt extends AbstractBolt {
private Map<String, Void> map;
@Override
public void initialize() {
map = new HashMap<>();
}
@Override
public void execute(Tuple input) {
String clientKey = input.getStringByField(Field.CLIENT_KEY);
String url = input.getStringByField(Field.URL);
String key = url + ":" + clientKey;
if (map.containsKey(key)) {
collector.emit(input, new Values(clientKey, url, Boolean.FALSE.toString()));
} else {
map.put(key, null);
collector.emit(input, new Values(clientKey, url, Boolean.TRUE.toString()));
}
collector.ack(input);
}
@Override
public Fields getDefaultFields() {
return new Fields(Field.CLIENT_KEY, Field.URL, Field.UNIQUE);
}
}