package com.hongqiang.shop.modules.util.service; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.servlet.ServletContext; import org.apache.commons.io.FileUtils; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.annotation.Cacheable; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; import org.springframework.web.context.ServletContextAware; import com.hongqiang.shop.common.utils.model.CommonAttributes; import com.hongqiang.shop.modules.utils.Template; @Service public class TemplateServiceImpl implements TemplateService, ServletContextAware { private ServletContext servletContext; @Value("${template.loader_path}") private String[] loaderpath; public void setServletContext(ServletContext servletContext) { this.servletContext = servletContext; } @Cacheable({"template"}) public List<Template> getAll() { try { File localFile = new ClassPathResource(CommonAttributes.HQ_SHOP_XML_PATH).getFile(); Document localDocument = new SAXReader().read(localFile); ArrayList<Template> localArrayList = new ArrayList<Template>(); @SuppressWarnings("unchecked") List<Template> localList = localDocument.selectNodes("/shophq/template"); Iterator<Template> localIterator = localList.iterator(); while (localIterator.hasNext()) { Element localElement = (Element)localIterator.next(); Template localTemplate = compTemplate(localElement); localArrayList.add(localTemplate); } return localArrayList; } catch (Exception localException) { localException.printStackTrace(); } return null; } @Cacheable({"template"}) public List<Template> getList(Template.Type type) { if (type != null) try { File localFile = new ClassPathResource(CommonAttributes.HQ_SHOP_XML_PATH).getFile(); Document localDocument = new SAXReader().read(localFile); ArrayList<Template> localArrayList = new ArrayList<Template>(); @SuppressWarnings("unchecked") List<Template> localList = localDocument.selectNodes("/shophq/template[@type='" + type + "']"); Iterator<Template> localIterator = localList.iterator(); while (localIterator.hasNext()) { Element localElement = (Element)localIterator.next(); Template localTemplate = compTemplate(localElement); localArrayList.add(localTemplate); } return localArrayList; } catch (Exception localException1) { localException1.printStackTrace(); return null; } return getAll(); } @Cacheable({"template"}) public Template get(String id) { try { File localFile = new ClassPathResource(CommonAttributes.HQ_SHOP_XML_PATH).getFile(); Document localDocument = new SAXReader().read(localFile); Element localElement = (Element)localDocument.selectSingleNode("/shophq/template[@id='" + id + "']"); Template localTemplate = compTemplate(localElement); return localTemplate; } catch (Exception localException1) { localException1.printStackTrace(); } return null; } public String read(String id) { Template localTemplate = get(id); return read(localTemplate); } public String read(Template template) { String str1 = this.servletContext.getRealPath(this.loaderpath[0] + template.getTemplatePath()); File localFile = new File(str1); String str2 = null; try { str2 = FileUtils.readFileToString(localFile, "UTF-8"); } catch (IOException localIOException) { localIOException.printStackTrace(); } return str2; } public void write(String id, String content) { Template localTemplate = get(id); write(localTemplate, content); } public void write(Template template, String content) { String str = this.servletContext.getRealPath(this.loaderpath[0] + template.getTemplatePath()); File localFile = new File(str); try { FileUtils.writeStringToFile(localFile, content, "UTF-8"); } catch (IOException localIOException) { localIOException.printStackTrace(); } } private Template compTemplate(Element paramElement) { String str1 = paramElement.attributeValue("id"); String str2 = paramElement.attributeValue("type"); String str3 = paramElement.attributeValue("name"); String str4 = paramElement.attributeValue("templatePath"); String str5 = paramElement.attributeValue("staticPath"); String str6 = paramElement.attributeValue("description"); Template localTemplate = new Template(); localTemplate.setId(str1); localTemplate.setType(Template.Type.valueOf(str2)); localTemplate.setName(str3); localTemplate.setTemplatePath(str4); localTemplate.setStaticPath(str5); localTemplate.setDescription(str6); return localTemplate; } }