package org.atlasapi.persistence; import com.metabroadcast.common.currency.Price; import com.metabroadcast.common.persistence.translator.TranslatorUtils; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import org.atlasapi.media.entity.simple.Pricing; import org.joda.time.DateTime; import java.util.Currency; public class PricingTranslator implements ModelTranslator<Pricing> { private static final String CURRENCY = "currency"; private static final String PRICE = "price"; private static final String START_TIME = "startTime"; private static final String END_TIME = "endTime"; @Override public DBObject toDBObject(DBObject dbObject, Pricing model) { if (dbObject == null) { dbObject = new BasicDBObject(); } TranslatorUtils.from(dbObject, CURRENCY, model.getPrice().getCurrency().getCurrencyCode()); TranslatorUtils.from(dbObject, PRICE, model.getPrice().getAmount()); if (model.getStartTime() != null) { TranslatorUtils.fromDateTime(dbObject, START_TIME, model.getStartTime()); } if(model.getEndTime() != null){ TranslatorUtils.fromDateTime(dbObject, END_TIME, model.getEndTime()); } return dbObject; } @Override public Pricing fromDBObject(DBObject dbObject, Pricing model) { Price price = new Price( Currency.getInstance(TranslatorUtils.toString(dbObject, CURRENCY)), TranslatorUtils.toInteger(dbObject, PRICE) ); DateTime startTime = TranslatorUtils.toDateTime(dbObject, START_TIME); DateTime endTime = TranslatorUtils.toDateTime(dbObject, END_TIME); return new Pricing(startTime, endTime, price); } }