package org.atlasapi.persistence.media.entity; import static com.metabroadcast.common.persistence.mongo.MongoBuilders.where; import java.util.Set; import org.atlasapi.media.entity.Equiv; import com.google.common.base.Function; import com.google.common.collect.Iterables; import com.metabroadcast.common.persistence.mongo.MongoConstants; import com.metabroadcast.common.persistence.mongo.MongoQueryBuilder; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; public class EquivTranslator { private static final String RIGHT_KEY = "right"; private static final String LEFT_KEY = "left"; public Equiv fromDBObject(DBObject dbObject) { return new Equiv((String) dbObject.get(LEFT_KEY), (String) dbObject.get(RIGHT_KEY)); } public Iterable<Equiv> fromDBObject(Iterable<DBObject> dbObjects) { return Iterables.transform(dbObjects, new Function<DBObject, Equiv>() { @Override public Equiv apply(DBObject dbObject) { return fromDBObject(dbObject); } }); } public DBObject toDBObject(Equiv equiv) { DBObject dbObject = new BasicDBObject(); dbObject.put(MongoConstants.ID, equiv.key()); dbObject.put(LEFT_KEY, equiv.left()); dbObject.put(RIGHT_KEY, equiv.right()); return dbObject; } public MongoQueryBuilder findPathLengthOne(Set<String> ids) { return where().or(where().fieldIn(LEFT_KEY, ids), where().fieldIn(RIGHT_KEY, ids)); } }