package org.atlasapi.media.channel;
import java.util.List;
import java.util.Set;
import com.google.common.collect.Sets;
import com.metabroadcast.common.persistence.translator.TranslatorUtils;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
public class TemporalTitleTranslator {
private static final String START_DATE_KEY = "startDate";
private static final String END_DATE_KEY = "endDate";
private static final String TITLE_KEY = "value";
public DBObject toDBObject(TemporalField<String> temporalTitle) {
DBObject dbo = new BasicDBObject();
TranslatorUtils.fromLocalDate(dbo, START_DATE_KEY, temporalTitle.getStartDate());
TranslatorUtils.fromLocalDate(dbo, END_DATE_KEY, temporalTitle.getEndDate());
TranslatorUtils.from(dbo, TITLE_KEY, temporalTitle.getValue());
return dbo;
}
public TemporalField<String> fromDBObject(DBObject dbo) {
return new TemporalField<String>(
TranslatorUtils.toString(dbo, TITLE_KEY),
TranslatorUtils.toLocalDate(dbo, START_DATE_KEY),
TranslatorUtils.toLocalDate(dbo, END_DATE_KEY));
}
public void fromTemporalTitleSet(DBObject dbObject, String key, Iterable<TemporalField<String>> titles) {
BasicDBList values = new BasicDBList();
for (TemporalField<String> value : titles) {
if (value != null) {
values.add(toDBObject(value));
}
}
dbObject.put(key, values);
}
@SuppressWarnings("unchecked")
public Set<TemporalField<String>> toTemporalTitleSet(DBObject object, String name) {
if (object.containsField(name)) {
Set<TemporalField<String>> temporalString = Sets.newLinkedHashSet();
for (DBObject element : (List<DBObject>) object.get(name)) {
temporalString.add(fromDBObject(element));
}
return temporalString;
}
return Sets.newLinkedHashSet();
}
}