package org.atlasapi.persistence.media.entity; import java.util.Set; import org.atlasapi.media.entity.Award; import com.google.common.base.Function; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.metabroadcast.common.persistence.translator.TranslatorUtils; import com.mongodb.BasicDBList; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; public class AwardTranslator { public static final String OUTCOME = "outcome"; public static final String TITLE = "title"; public static final String DESCRIPTION = "description"; public static final String YEAR = "year"; public DBObject toDBObject(Award award) { DBObject dbo = new BasicDBObject(); TranslatorUtils.from(dbo, OUTCOME, award.getOutcome()); TranslatorUtils.from(dbo, TITLE, award.getTitle()); TranslatorUtils.from(dbo, DESCRIPTION, award.getDescription()); TranslatorUtils.from(dbo, YEAR, award.getYear()); return dbo; } public Award fromDBObject(DBObject dbo) { Award award = new Award(); award.setOutcome(TranslatorUtils.toString(dbo, OUTCOME)); award.setTitle(TranslatorUtils.toString(dbo, TITLE)); award.setDescription(TranslatorUtils.toString(dbo, DESCRIPTION)); award.setYear(TranslatorUtils.toInteger(dbo, YEAR)); return award; } public Set<Award> fromDBObjects(Iterable<DBObject> dbObjects) { return ImmutableSet.copyOf(Iterables.transform(dbObjects, TO_AWARDS)); } public BasicDBList toDBList(Iterable<Award> awards) { BasicDBList list = new BasicDBList(); list.addAll(ImmutableSet.copyOf(Iterables.transform(awards, TO_DB_OBJECT))); return list; } private Function<Award, DBObject> TO_DB_OBJECT = new Function<Award, DBObject>() { @Override public DBObject apply(Award award) { return toDBObject(award); } }; private Function<DBObject, Award> TO_AWARDS = new Function<DBObject, Award>() { @Override public Award apply(DBObject dbObject) { return fromDBObject(dbObject); } }; }