package uk.bl.monitrix.database.mongodb.model; import java.util.Iterator; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import uk.bl.monitrix.database.mongodb.MongoProperties; import uk.bl.monitrix.model.VirusLog; import uk.bl.monitrix.model.VirusRecord; public class MongoVirusLog implements VirusLog { protected DBCollection collection; public MongoVirusLog(DB db) { this.collection = db.getCollection(MongoProperties.COLLECTION_VIRUS_LOG); // Virus Log collection is indexed by virus name this.collection.ensureIndex(new BasicDBObject(MongoProperties.FIELD_VIRUS_LOG_NAME, 1)); } @Override public VirusRecord getRecordForVirus(String virusName) { DBObject dbo = collection.findOne(new BasicDBObject(MongoProperties.FIELD_VIRUS_LOG_NAME, virusName)); if (dbo == null) return null; return new MongoVirusRecord(dbo); } @Override public Iterator<VirusRecord> getVirusRecords() { final DBCursor cursor = collection.find(); return new Iterator<VirusRecord>() { @Override public boolean hasNext() { return cursor.hasNext(); } @Override public VirusRecord next() { return new MongoVirusRecord(cursor.next()); } @Override public void remove() { cursor.remove(); } }; } }