package com.salesmanager.shop.tags; import java.math.BigDecimal; import javax.inject.Inject; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.config.AutowireCapableBeanFactory; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.servlet.tags.RequestContextAwareTag; import com.salesmanager.core.business.services.catalog.product.PricingService; import com.salesmanager.core.business.utils.ProductPriceUtils; import com.salesmanager.core.model.merchant.MerchantStore; import com.salesmanager.core.model.reference.currency.Currency; import com.salesmanager.shop.constants.Constants; public class ShopProductPriceFormatTag extends RequestContextAwareTag { /** * */ private static final long serialVersionUID = 1L; private static final Logger LOGGER = LoggerFactory.getLogger(ShopProductPriceFormatTag.class); @Inject private PricingService pricingService; @Inject private ProductPriceUtils productPriceUtils; private BigDecimal value; private Currency currency; public Currency getCurrency() { return currency; } public void setCurrency(Currency currency) { this.currency = currency; } @Override protected int doStartTagInternal() throws Exception { if (pricingService == null || productPriceUtils==null) { LOGGER.debug("Autowiring productPriceUtils"); WebApplicationContext wac = getRequestContext().getWebApplicationContext(); AutowireCapableBeanFactory factory = wac.getAutowireCapableBeanFactory(); factory.autowireBean(this); } HttpServletRequest request = (HttpServletRequest) pageContext .getRequest(); MerchantStore store = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE); String formatedPrice = null; if(this.getCurrency()!=null) { formatedPrice = productPriceUtils.getFormatedAmountWithCurrency(this.getCurrency(), this.getValue()); } else { formatedPrice = pricingService.getDisplayAmount(this.getValue(), store); } pageContext.getOut().print(formatedPrice); return SKIP_BODY; } public int doEndTag() { return EVAL_PAGE; } public void setValue(BigDecimal value) { this.value = value; } public BigDecimal getValue() { return value; } }