吴学文
2019-05-07 7276c85268da0c89fbcf0293c3cb6e0053c8395b
WebService/src/main/java/com/java110/web/core/VueComponentTemplate.java
@@ -1,8 +1,12 @@
package com.java110.web.core;
import org.springframework.core.io.ClassPathResource;
import org.springframework.util.StringUtils;
import java.io.*;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.HashMap;
import java.util.Map;
@@ -10,53 +14,54 @@
 * 静态资源文件加载器
 * Created by wuxw on 2019/3/18.
 */
public class VueComponentTemplate extends PackageScanner{
public class VueComponentTemplate extends PackageScanner {
    /**
     * 默认扫描路径
     */
    public final static String DEFAULT_COMPONENT_PACKAGE_PATH = "components";
    public static final String DEFAULT_COMPONENT_PACKAGE_PATH = "components";
    /**
     * js 文件
     */
    public final static String COMPONENT_JS = "js";
    public static final String COMPONENT_JS = "js";
    /**
     * css 文件
     */
    public final static String COMPONENT_CSS = "css";
    public static final String COMPONENT_CSS = "css";
    /**
     * html 文件
     */
    public final static String COMPONENT_HTML = "html";
    public static final String COMPONENT_HTML = "html";
    /**
     * HTML 文件缓存器
     */
    private final static Map<String,String> componentTemplate = new HashMap<>();
    private static final Map<String, String> componentTemplate = new HashMap<>();
    /**
     * 初始化 组件信息
     */
    public static void initComponent(String scanPath){
    public static void initComponent(String scanPath) {
        VueComponentTemplate vueComponentTemplate = new VueComponentTemplate();
        vueComponentTemplate.packageScanner(scanPath,COMPONENT_JS);
        vueComponentTemplate.packageScanner(scanPath,COMPONENT_HTML);
        vueComponentTemplate.packageScanner(scanPath,COMPONENT_CSS);
        vueComponentTemplate.packageScanner(scanPath, COMPONENT_JS);
        vueComponentTemplate.packageScanner(scanPath, COMPONENT_HTML);
        vueComponentTemplate.packageScanner(scanPath, COMPONENT_CSS);
    }
    /**
     * 根据组件编码查询模板
     *
     * @param componentCode
     * @return
     */
    public static String findTemplateByComponentCode(String componentCode) {
        if(componentTemplate.containsKey(componentCode)){
        if (componentTemplate.containsKey(componentCode)) {
            return componentTemplate.get(componentCode);
        }
@@ -66,27 +71,38 @@
    /**
     * 处理资源
     *
     * @param filePath
     */
    protected void handleResource(String filePath){
    protected void handleResource(String filePath) {
        Reader reader = null;
        String sb = "";
        try{
            InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(filePath);
            reader = new InputStreamReader(inputStream,"UTF-8");
        try {
            InputStream inputStream = new ClassPathResource(filePath).getInputStream();
            //InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(File.separator + filePath);
            reader = new InputStreamReader(inputStream, "UTF-8");
            int tempChar;
            StringBuffer b = new StringBuffer();
            while ((tempChar = reader.read()) != -1) {
                    b.append((char) tempChar);
                b.append((char) tempChar);
            }
            sb = b.toString();
            if(!StringUtils.isEmpty(sb)){
                componentTemplate.put(filePath.substring(filePath.lastIndexOf(File.separator)+1,filePath.length()),sb);
            if (StringUtils.isEmpty(sb)) {
                return;
            }
        }catch (IOException e){
            String componentKey = "";
            //这里在window 读取jar包中文件时,也是 / 但是直接启动时 为\这个 所以不能用 File.separator
            if (filePath.contains("/")) {
                componentKey = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.length());
            } else {
                componentKey = filePath.substring(filePath.lastIndexOf("\\") + 1, filePath.length());
            }
            componentTemplate.put(componentKey, sb);
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(reader != null){
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {