package com.jspxcms.core.generatepage; import static com.jspxcms.core.domain.Node.STATIC_INFO_NODE; import static com.jspxcms.core.domain.Node.STATIC_INFO_NODE_PARENT; import static com.jspxcms.core.domain.Node.STATIC_MANUAL; import java.io.File; import java.io.IOException; import java.util.HashSet; import java.util.Set; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.ArrayUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; import com.jspxcms.common.web.PathResolver; import com.jspxcms.core.domain.Info; import com.jspxcms.core.domain.Node; import freemarker.template.Configuration; import freemarker.template.TemplateException; /** * GeneratePageServiceImpl * * @author liufang * */ @Service @Transactional public class GeneratePageServiceImpl implements GeneratePageService { public void generateInfo(Info info) throws IOException, TemplateException { Node node = info.getNode(); int method = node.getStaticMethodOrDef(); if (STATIC_MANUAL != method) { PInfo.generate(info, getConfig(), resolver); generateNode(node); } } public void generateNode(Node node) throws IOException, TemplateException { int method = node.getStaticMethodOrDef(); if (STATIC_INFO_NODE_PARENT == method) { while (node != null) { PNode.generate(node, getConfig(), resolver); node = node.getParent(); } } else if (STATIC_INFO_NODE == method) { PNode.generate(node, getConfig(), resolver); } else { } } public void generateNodeWhole(Node[] nodes) throws IOException, TemplateException { if (ArrayUtils.isEmpty(nodes)) { return; } Set<String> tns = new HashSet<String>(); for (Node node : nodes) { tns.add(node.getTreeNumber()); } String[] tna = tns.toArray(new String[tns.size()]); dao.generateInfoWhole(tna, getConfig(), resolver); dao.generateNodeWhole(tna, getConfig(), resolver); } public void deletePage(Node node) { if (node == null) { return; } String path = node.getUrlStatic(1, false, true); String filename = resolver.getPath(path); File file = new File(filename); if (file.exists()) { FileUtils.deleteQuietly(file); } } private Configuration getConfig() { return freeMarkerConfigurer.getConfiguration(); } private FreeMarkerConfigurer freeMarkerConfigurer; private PathResolver resolver; private GeneratePageDao dao; @Autowired public void setFreeMarkerConfigurer( FreeMarkerConfigurer freeMarkerConfigurer) { this.freeMarkerConfigurer = freeMarkerConfigurer; } @Autowired public void setPathResolver(PathResolver resolver) { this.resolver = resolver; } @Autowired public void setGeneratePageDao(GeneratePageDao dao) { this.dao = dao; } }