package com.salesmanager.shop.tags;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.salesmanager.shop.constants.Constants;
import com.salesmanager.shop.model.shop.Breadcrumb;
public class StoreBreadcrumbsTag extends TagSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
private static final Logger LOGGER = LoggerFactory.getLogger(StoreBreadcrumbsTag.class);
private Long categoryId = null;
private Long productId = null;
public int doStartTag() throws JspException {
try {
HttpServletRequest request = (HttpServletRequest) pageContext
.getRequest();
Breadcrumb breadCrumb = (Breadcrumb)request.getAttribute(Constants.BREADCRUMB);
StringBuilder ref = new StringBuilder();
if(breadCrumb!=null && !StringUtils.isBlank(breadCrumb.getUrlRefContent())) {
ref.append(Constants.SLASH).append(Constants.REF).append(Constants.EQUALS).append(breadCrumb.getUrlRefContent());
if(categoryId!=null) {
List<String> ids = this.parseBreadCrumb(breadCrumb.getUrlRefContent());
if(!ids.contains(String.valueOf(this.getCategoryId()))) {
ref.append(",").append(this.getCategoryId().longValue());
}
}
} else {
if(categoryId!=null) {
ref.append(Constants.SLASH).append(Constants.REF).append(Constants.EQUALS).append(Constants.REF_C).append(this.getCategoryId());
} else {
ref.append("");
}
}
pageContext.getOut().print(ref.toString());
} catch (Exception ex) {
LOGGER.error("Error while getting content url", ex);
}
return SKIP_BODY;
}
/** only category **/
private List<String> parseBreadCrumb(String refContent) throws Exception {
/** c:1,2,3 **/
String[] categoryComa = refContent.split(":");
String[] categoryIds = categoryComa[1].split(",");
return new LinkedList(Arrays.asList(categoryIds));
}
public int doEndTag() {
return EVAL_PAGE;
}
public Long getCategoryId() {
return categoryId;
}
public void setCategoryId(Long categoryId) {
this.categoryId = categoryId;
}
public Long getProductId() {
return productId;
}
public void setProductId(Long productId) {
this.productId = productId;
}
}