package uk.bl.monitrix.extensions.imageqa.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.ExtensionTable;
import uk.bl.monitrix.extensions.imageqa.model.ImageQALog;
import uk.bl.monitrix.extensions.imageqa.model.ImageQALogEntry;
import uk.bl.monitrix.extensions.imageqa.mongodb.MongoImageQAProperties;
public class MongoImageQALog extends ExtensionTable implements ImageQALog {
protected DBCollection collection;
public MongoImageQALog(DB db) {
super(db);
this.collection = db.getCollection(MongoImageQAProperties.COLLECTION_IMAGE_QA_LOG);
this.collection.ensureIndex(new BasicDBObject(MongoImageQAProperties.FIELD_IMAGE_QA_LOG_ORIGINAL_WEB_URL, 1));
}
@Override
public long countEntries() {
return collection.count();
}
@Override
public Iterator<ImageQALogEntry> listEntries() {
final DBCursor cursor = collection.find();
return new Iterator<ImageQALogEntry>() {
@Override
public boolean hasNext() {
return cursor.hasNext();
}
@Override
public ImageQALogEntry next() {
return new MongoImageQALogEntry(cursor.next());
}
@Override
public void remove() {
cursor.remove();
}
};
}
@Override
public ImageQALogEntry findForURL(String url) {
DBObject dbo = collection.findOne(new BasicDBObject(MongoImageQAProperties.FIELD_IMAGE_QA_LOG_ORIGINAL_IMAGE_URL, url));
if (dbo == null)
return null;
return new MongoImageQALogEntry(dbo);
}
}