zoukankan      html  css  js  c++  java
  • freemarker的template用法

    //
    // Source code recreated from a .class file by IntelliJ IDEA
    // (powered by Fernflower decompiler)
    //
    
    package test.base;
    
    import freemarker.template.Template;
    import freemarker.template.TemplateException;
    import org.apache.commons.io.FileUtils;
    import org.apache.commons.lang.StringUtils;
    import org.jeecgframework.codegenerate.generate.CodeFactory;
    import org.jeecgframework.codegenerate.generate.ICallBack;
    import org.jeecgframework.codegenerate.util.CodeResourceUtil;
    import org.jeecgframework.codegenerate.util.CodeStringUtils;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.util.HashMap;
    import java.util.Map;
    
    public class CodeFactory2 extends CodeFactory {
        private ICallBack callBack;
    
        public CodeFactory2() {
        }
    
        public void generateFile(String templateFileName, String type, Map data) {
            try {
                String e = data.get("entityPackage").toString();
                String entityName = data.get("entityName").toString();
                String fileNamePath = this.getCodePath(type, e, entityName);
                String fileDir = StringUtils.substringBeforeLast(fileNamePath, "/");
                Template template = this.getConfiguration().getTemplate(templateFileName);
                FileUtils.forceMkdir(new File(fileDir + "/"));
                OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(fileNamePath), CodeResourceUtil.SYSTEM_ENCODING);
                template.process(data, out);
                out.close();
            } catch (TemplateException var10) {
                var10.printStackTrace();
            } catch (IOException var11) {
                var11.printStackTrace();
            }
    
        }
    
        public static String getProjectPath() {
            String path = System.getProperty("user.dir").replace("\", "/") + "/";
            return path;
        }
    
        public String getClassPath() {
            String path = Thread.currentThread().getContextClassLoader().getResource("./").getPath();
            return path;
        }
    
        public static void main(String[] args) {
            System.out.println(getProjectPath());
        }
    
        public String getTemplatePath() {
            String path = this.getClassPath() + CodeResourceUtil.TEMPLATEPATH;
            return path;
        }
    
        public String getCodePath(String type, String entityPackage, String entityName) {
            String path = getProjectPath();
            StringBuilder str = new StringBuilder();
            if(!StringUtils.isNotBlank(type)) {
                throw new IllegalArgumentException("type is null");
            } else {
                String codeType = ((CodeFactory2.CodeType)Enum.valueOf(CodeFactory2.CodeType.class, type)).getValue();
                str.append(path);
                if(!"jsp".equals(type) && !"jspList".equals(type)) {
                    str.append(CodeResourceUtil.CODEPATH);
                } else {
                    str.append(CodeResourceUtil.JSPPATH);
                }
                String[] packs = entityPackage.split("\.");
    
                for (String pack : packs)
                {
                    str.append(StringUtils.lowerCase(pack));
                    str.append("/");
                }
    
                if("Action".equalsIgnoreCase(codeType)) {
                    str.append(StringUtils.lowerCase("action"));
                } else if("ServiceImpl".equalsIgnoreCase(codeType)) {
                    str.append(StringUtils.lowerCase("service"));
                } else if("ServiceI".equalsIgnoreCase(codeType)) {
                    str.append(StringUtils.lowerCase("service"));
                } else if(!"List".equalsIgnoreCase(codeType)) {
                    str.append(StringUtils.lowerCase(codeType));
                }
    
                str.append("/");
                if ("sql".equals(type))
                {
                    str.append("sql/");
                    str.append(StringUtils.capitalize(entityName));
                    str.append("Dao_getAllEntities");
                    str.append(".sql");
                }
                else if(!"jsp".equals(type) && !"jspList".equals(type)) {
                    str.append(StringUtils.capitalize(entityName));
                    str.append(codeType);
                    str.append(".java");
                }
                else
                {
                    String jspName = StringUtils.capitalize(entityName);
                    str.append(CodeStringUtils.getInitialSmall(jspName));
                    str.append(codeType);
                    str.append(".jsp");
                }
    
                return str.toString();
            }
        }
    
        public void invoke(String templateFileName, String type) {
            new HashMap();
            Map data = this.callBack.execute();
            this.generateFile(templateFileName, type, data);
        }
    
        public ICallBack getCallBack() {
            return this.callBack;
        }
    
        public void setCallBack(ICallBack callBack) {
            this.callBack = callBack;
        }
    
        public static enum CodeType {
            serviceImpl("Service"),
            service("ServiceI"),
            controller("Controller"),
            entity("Entity"),
            jsp(""),
            jspList("List"),
            dao("Dao"),
            sql("");
    
            private String type;
    
            private CodeType(String type) {
                this.type = type;
            }
    
            public String getValue() {
                return this.type;
            }
        }
    }
    除了写代码还会干什么
  • 相关阅读:
    xshell常用命令
    linux传输文件命令: rz 和 sz
    使用openssh-clients的scp命令来传输文件
    RabbitMQ初学之二:直接发送消息到队列
    [App]华为P6设置与Xamarin Studio连通测试
    [Boost]图形处理库Boost::Polygon
    [App]Taste VS2015 && Android Studio
    [Linux&Vim]输入输出流
    [SSD大法好]神舟K480-I5-D3鸟枪换炮M6S
    [IoLanguage]Io Tutorial[转]
  • 原文地址:https://www.cnblogs.com/zyx-/p/6905286.html
Copyright © 2011-2022 走看看