package com.salesmanager.shop.populator.order; import com.salesmanager.core.business.constants.Constants; import com.salesmanager.core.business.exception.ConversionException; import com.salesmanager.core.business.services.catalog.product.PricingService; import com.salesmanager.core.business.utils.AbstractDataPopulator; import com.salesmanager.core.model.merchant.MerchantStore; import com.salesmanager.core.model.order.OrderTotal; import com.salesmanager.core.model.reference.language.Language; import com.salesmanager.shop.model.order.ReadableOrderTotal; import com.salesmanager.shop.utils.LabelUtils; import com.salesmanager.shop.utils.LocaleUtils; import org.apache.commons.lang.Validate; import org.apache.commons.lang3.StringUtils; import java.util.Locale; public class ReadableOrderTotalPopulator extends AbstractDataPopulator<OrderTotal, ReadableOrderTotal> { private PricingService pricingService; private LabelUtils messages; @Override public ReadableOrderTotal populate(OrderTotal source, ReadableOrderTotal target, MerchantStore store, Language language) throws ConversionException { Validate.notNull(pricingService,"PricingService must be set"); Validate.notNull(messages,"LabelUtils must be set"); Locale locale = LocaleUtils.getLocale(language); try { target.setCode(source.getOrderTotalCode()); target.setId(source.getId()); target.setModule(source.getModule()); target.setOrder(source.getSortOrder()); target.setTitle(messages.getMessage(source.getOrderTotalCode(), locale, source.getOrderTotalCode())); target.setText(source.getText()); target.setValue(source.getValue()); target.setTotal(pricingService.getDisplayAmount(source.getValue(), store)); if(!StringUtils.isBlank(source.getOrderTotalCode())) { if(Constants.OT_DISCOUNT_TITLE.equals(source.getOrderTotalCode())) { target.setDiscounted(true); } } } catch(Exception e) { throw new ConversionException(e); } return target; } @Override protected ReadableOrderTotal createTarget() { return new ReadableOrderTotal(); } public PricingService getPricingService() { return pricingService; } public void setPricingService(PricingService pricingService) { this.pricingService = pricingService; } public LabelUtils getMessages() { return messages; } public void setMessages(LabelUtils messages) { this.messages = messages; } }