package org.atlasapi.persistence.media.entity; import javax.annotation.Nullable; import org.atlasapi.media.entity.Publisher; import org.atlasapi.media.entity.Rating; import com.google.common.base.Function; import com.metabroadcast.common.persistence.translator.TranslatorUtils; import com.mongodb.DBObject; public class RatingsTranslator { private static String TYPE_KEY = "type"; private static String VALUE_KEY = "value"; private Rating fromDBObject(Publisher publisher, DBObject dbo) { return new Rating( TranslatorUtils.toString(dbo, TYPE_KEY), TranslatorUtils.toFloat(dbo, VALUE_KEY), publisher); } public DBObject toDBObject(DBObject dbObject, Rating model) { TranslatorUtils.from(dbObject, TYPE_KEY, model.getType()); TranslatorUtils.from(dbObject, VALUE_KEY, model.getValue()); // Publisher is not saved in the db. The only reason it's in the model is // because it's output on merged content, so it's required in the merged // complex model. return dbObject; } public Function<DBObject, Rating> fromDbo(final Publisher publisher) { return new Function<DBObject, Rating>() { @Override @Nullable public Rating apply(@Nullable DBObject dbo) { return fromDBObject(publisher, dbo); } }; } }