package org.atlasapi.persistence.media.entity; import java.util.Set; import org.atlasapi.media.entity.Alias; 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 AliasTranslator { public static final String NAMESPACE = "namespace"; public static final String VALUE = "value"; public Set<Alias> fromDBObjects(Iterable<DBObject> dbos) { return ImmutableSet.<Alias>copyOf(Iterables.transform(dbos, TO_ALIAS)); } public BasicDBList toDBList(Iterable<Alias> aliases) { BasicDBList list = new BasicDBList(); list.addAll(ImmutableSet.copyOf(Iterables.transform(aliases, FROM_ALIAS))); return list; } private Function<Alias, DBObject> FROM_ALIAS = new Function<Alias, DBObject>() { @Override public DBObject apply(Alias alias) { return toDBObject(alias); } }; public DBObject toDBObject(Alias alias) { DBObject dbo = new BasicDBObject(); TranslatorUtils.from(dbo, NAMESPACE, alias.getNamespace()); TranslatorUtils.from(dbo, VALUE, alias.getValue()); return dbo; } private Function<DBObject, Alias> TO_ALIAS = new Function<DBObject, Alias>() { @Override public Alias apply(DBObject dbObject) { return fromDBObject(dbObject); } }; public Alias fromDBObject(DBObject dbObject) { return new Alias(TranslatorUtils.toString(dbObject, NAMESPACE), TranslatorUtils.toString(dbObject, VALUE)); } }