package uk.bl.monitrix.database.mongodb.ingest;
import java.util.Map;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import uk.bl.monitrix.database.mongodb.model.MongoVirusLog;
import uk.bl.monitrix.database.mongodb.model.MongoVirusRecord;
public class MongoVirusLogImporter extends MongoVirusLog {
public MongoVirusLogImporter(DB db) {
super(db);
}
/**
* TODO this class should have caching as well.
* Main problem is the escaping/unescaping of hostnames that takes place on every update.
*/
public void recordOccurence(String virusName, String hostname) {
// In this case we know it's a safe cast
MongoVirusRecord record = (MongoVirusRecord) getRecordForVirus(virusName);
if (record == null) {
record = new MongoVirusRecord(new BasicDBObject());
record.setName(virusName);
}
Map<String, Integer> occurences = record.getOccurences();
if (occurences.containsKey(hostname)) {
int count = occurences.get(hostname);
occurences.put(hostname, count + 1);
} else {
occurences.put(hostname, 1);
}
record.setOccurences(occurences);
collection.save(record.getBackingDBO());
}
}