package com.salesmanager.shop.tags;
import java.util.Map;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspException;
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.model.catalog.product.file.DigitalProduct;
import com.salesmanager.core.model.merchant.MerchantStore;
import com.salesmanager.shop.constants.Constants;
import com.salesmanager.shop.utils.FilePathUtils;
public class AdminProductDownloadUrlTag extends RequestContextAwareTag {
/**
*
*/
private static final long serialVersionUID = 6319855234657139862L;
private static final Logger LOGGER = LoggerFactory.getLogger(AdminProductDownloadUrlTag.class);
private DigitalProduct digitalProduct;
@Inject
private FilePathUtils filePathUtils;
public DigitalProduct getDigitalProduct() {
return digitalProduct;
}
public void setDigitalProduct(DigitalProduct digitalProduct) {
this.digitalProduct = digitalProduct;
}
public int doStartTagInternal() throws JspException {
try {
if (filePathUtils==null) {
WebApplicationContext wac = getRequestContext().getWebApplicationContext();
AutowireCapableBeanFactory factory = wac.getAutowireCapableBeanFactory();
factory.autowireBean(this);
}
HttpServletRequest request = (HttpServletRequest) pageContext
.getRequest();
MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
HttpSession session = request.getSession();
StringBuilder filePath = new StringBuilder();
//TODO domain from merchant, else from global config, else from property (localhost)
// example -> "/files/{storeCode}/{fileName}.{extension}"
@SuppressWarnings("unchecked")
Map<String,String> configurations = (Map<String, String>)session.getAttribute(Constants.STORE_CONFIGURATION);
String scheme = Constants.HTTP_SCHEME;
if(configurations!=null) {
scheme = (String)configurations.get("scheme");
}
filePath.append(scheme).append("://")
.append(merchantStore.getDomainName())
//.append("/")
.append(request.getContextPath());
filePath
.append(filePathUtils.buildAdminDownloadProductFilePath(merchantStore, digitalProduct)).toString();
pageContext.getOut().print(filePath.toString());
} catch (Exception ex) {
LOGGER.error("Error while getting content url", ex);
}
return SKIP_BODY;
}
public int doEndTag() {
return EVAL_PAGE;
}
}