package storm.applications.model.spam;
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.Serializer;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
import java.io.Serializable;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
/**
*
* @author mayconbordin
*/
public class WordMap implements Serializable {
private static final long serialVersionUID = -4598301402074863687L;
private Map<String, Word> words;
private long spamTotal = 0;
private long hamTotal = 0;
public WordMap() {
words = new HashMap<>();
}
public WordMap(Map<String, Word> words, long spamTotal, long hamTotal) {
this.spamTotal = spamTotal;
this.hamTotal = hamTotal;
this.words = words;
}
public long getSpamTotal() {
return spamTotal;
}
public long getHamTotal() {
return hamTotal;
}
public void incSpamTotal(long count) {
spamTotal += count;
}
public void incHamTotal(long count) {
hamTotal += count;
}
public void put(String key, Word w) {
words.put(key, w);
}
public Word get(String key) {
return words.get(key);
}
public boolean containsKey(String key) {
return words.containsKey(key);
}
public Collection<Word> values() {
return words.values();
}
public static class WordMapSerializer extends Serializer<WordMap> {
@Override
public void write (Kryo kryo, Output output, WordMap object) {
kryo.writeObject(output, object.words);
output.writeLong(object.spamTotal);
output.writeLong(object.hamTotal);
}
@Override
public WordMap read (Kryo kryo, Input input, Class<WordMap> type) {
return new WordMap(kryo.readObject(input, HashMap.class), input.readLong(), input.readLong());
}
}
}