package uk.bl.monitrix.database.cassandra.model;
import java.util.Iterator;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.Row;
import uk.bl.monitrix.database.cassandra.CassandraProperties;
import uk.bl.monitrix.model.VirusLog;
import uk.bl.monitrix.model.VirusRecord;
public class CassandraVirusLog implements VirusLog {
private final String TABLE_VIRUS = CassandraProperties.KEYSPACE + "." + CassandraProperties.COLLECTION_VIRUS_LOG;
protected Session session;
public CassandraVirusLog(Session session) {
this.session = session;
}
@Override
public VirusRecord getRecordForVirus(String virusName) {
// TODO it may make sense to cache this
ResultSet results =
session.execute("SELECT * FROM " + TABLE_VIRUS + " WHERE " + CassandraProperties.FIELD_VIRUS_LOG_NAME + "='" + virusName + "';");
if (results.isExhausted())
return null;
return new CassandraVirusRecord(results.one());
}
@Override
public Iterator<VirusRecord> getVirusRecords() {
ResultSet results = session.execute("SELECT * FROM " + TABLE_VIRUS + ";");
final Iterator<Row> cursor = results.iterator();
return new Iterator<VirusRecord>() {
@Override
public boolean hasNext() {
return cursor.hasNext();
}
@Override
public VirusRecord next() {
return new CassandraVirusRecord(cursor.next());
}
@Override
public void remove() {
cursor.remove();
}
};
}
}