package org.atlasapi.remotesite.preview; import com.google.common.base.Optional; import com.google.common.collect.Iterables; import com.metabroadcast.common.persistence.mongo.DatabasedMongo; import com.metabroadcast.common.persistence.translator.TranslatorUtils; import com.mongodb.BasicDBObject; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; public class MongoPreviewLastUpdatedStore implements PreviewLastUpdatedStore { private static final String LAST_UPDATED_COLLECTION = "previewNetworksLastUpdated"; private static final String LAST_UPDATED_KEY = "lastUpdated"; private final DBCollection lastUpdatedId; public MongoPreviewLastUpdatedStore(DatabasedMongo mongo) { lastUpdatedId = mongo.collection(LAST_UPDATED_COLLECTION); } @Override public void store(String lastUpdated) { DBObject dbo = new BasicDBObject(); TranslatorUtils.from(dbo, LAST_UPDATED_KEY, lastUpdated); lastUpdatedId.update(new BasicDBObject(), dbo); } @Override public Optional<String> retrieve() { DBCursor cursor = lastUpdatedId.find(); if (cursor.size() == 0) { return Optional.absent(); } DBObject dbo = Iterables.getOnlyElement(cursor); return Optional.fromNullable(TranslatorUtils.toString(dbo, LAST_UPDATED_KEY)); } }