<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小魚的空氣

    記錄我所思

    用FreeMarker自動(dòng)生成代碼或配置文件

    FreeMarker是一個(gè)很有用的模板工具,使用也很簡單。
    可以用來自動(dòng)生成代碼或配置文件。下面的類是我以前用來產(chǎn)生Action類的工具,當(dāng)然后來不用了,只一個(gè)基類就OK。要產(chǎn)生其它文件原理一樣,僅當(dāng)拋磚。

    package com.gdsoftpark.common.core.util;

    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.Writer;
    import java.util.HashMap;
    import java.util.Locale;
    import java.util.Map;

    import org.apache.commons.lang.StringUtils;

    import freemarker.template.Configuration;
    import freemarker.template.Template;
    import freemarker.template.TemplateException;

    /**
     * Action代碼產(chǎn)生器,根據(jù)Action類模板用FreeMarker產(chǎn)生Action代碼.
     * <br>模板例子請參照config目錄下的action.ftl
     * 
    @author HuangYu
     
    */

    public class ActionCodeGenerator {

        
    private Configuration cfg;
        
    private String templateDir = "C:/codegen/template";
        
    private String templateName = "action.ftl";
        
    private String outputDir = "C:/codegen/output";
        
        
    public ActionCodeGenerator() throws IOException{
            init();
        }


        
    public void setOutputDir(String outputDir) {
            
    this.outputDir = outputDir;
        }


        
    public void setTemplateDir(String templateDir) throws IOException {
            
    this.templateDir = templateDir;
            cfg.setDirectoryForTemplateLoading(
    new File(templateDir));
        }


        
    public void setTemplateName(String templateName) {
            
    this.templateName = templateName;
        }

        
        
    public void init() throws IOException {
            
    // Initialize the FreeMarker configuration;
            
    // - Create a configuration instance
            cfg = new Configuration();
            File templateDir 
    = new File(this.templateDir);
            cfg.setDirectoryForTemplateLoading(templateDir);
            cfg.setLocale(Locale.CHINA);
            cfg.setDefaultEncoding(
    "GBK");
        }

        
        
    /**
         * 根據(jù)Model類產(chǎn)生Action類代碼,如UserAction.java
         * 
    @param modelName Model類的名字,如:User
         
    */

        
    public void generate(String modelName) throws IOException{
            
    // Build the data-model
            Map<String, Object> data = new HashMap<String, Object>();
            data.put(
    "T", modelName);
            
            
    // Get the templat object
            Template template = cfg.getTemplate(templateName);
            
            org.apache.commons.io.FileUtils.forceMkdir(
    new File(outputDir));
            File output 
    = new File(outputDir, modelName + "Action.java");
            Writer writer 
    = new FileWriter(output);
            
            
    // Merge the data-model and the template
            try {
                template.process(data, writer);
            }
     catch (TemplateException e) {
                e.printStackTrace();
            }

        }

      
        
    /**
         * 測試,根據(jù)Model類生成相應(yīng)的Action
         
    */

        
    public static void main(String[] args) throws IOException {
            ActionCodeGenerator gen 
    = new ActionCodeGenerator();
            
            
    if(args.length>0){//產(chǎn)生一個(gè)類
                gen.generate(args[0]);
            }
     else {// 產(chǎn)生多個(gè)類
                File modelClassDir = new File("C:/codegen/model");
                String[] models 
    = modelClassDir.list();
                
    for (String model : models) {
                    String modelName 
    = StringUtils.substringBeforeLast(model, ".");
                    gen.generate(modelName);
                }

            }

            System.out.println(
    "代碼已生成,位置:"+gen.outputDir);
        }


    }

    posted on 2007-04-13 11:50 小魚 閱讀(3088) 評(píng)論(1)  編輯  收藏

    評(píng)論

    # re: 用FreeMarker自動(dòng)生成代碼或配置文件 2010-04-01 15:56 jordan shoes

    有些提單正面沒有預(yù)先印就的類似已裝上船的條款,這種提單便稱為備運(yùn)提單。備運(yùn)提單轉(zhuǎn)化為已裝船提單的方式有兩種:(1)在提單的空白處加“已裝船”批注或加蓋類似內(nèi)容的圖章。例如“Shipped on Board”,有的只加“On Board”,然后加裝船日期并加提單簽發(fā)的簽字或簡簽。所謂簡簽,是指簽字人以最簡單的簽字形式通常只簽本人姓名中的一個(gè)單詞或一個(gè)字母來代替正式簽字  回復(fù)  更多評(píng)論   


    只有注冊用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    <2010年4月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(3)

    我參與的團(tuán)隊(duì)

    隨筆檔案

    文章檔案

    搜索

    最新評(píng)論

    主站蜘蛛池模板: 毛片基地看看成人免费| 三年片在线观看免费西瓜视频| a在线视频免费观看在线视频三区| 黄色网址在线免费| 成人免费a级毛片无码网站入口| va亚洲va日韩不卡在线观看| 亚洲国产成人久久综合一| 一本色道久久88—综合亚洲精品| g0g0人体全免费高清大胆视频| 最近免费中文字幕大全高清大全1 最近免费中文字幕mv在线电影 | 亚洲免费在线播放| 精品免费久久久久久成人影院| 亚洲精品国产成人片| 亚洲色成人网站WWW永久四虎 | 亚洲日韩一区精品射精| 国产在线观a免费观看| 国内精品乱码卡1卡2卡3免费| 亚洲人成国产精品无码| 亚洲13又紧又嫩又水多| 黄色短视频免费看| 在线观看成人免费视频| 亚洲a在线视频视频| 国产亚洲精品美女久久久久久下载| 99久久综合精品免费| 亚洲av无码乱码在线观看野外| 亚洲最大中文字幕| 国产视频精品免费视频| 在线观看免费为成年视频| 亚洲avav天堂av在线不卡| 四虎一区二区成人免费影院网址| 在线a级毛片免费视频| 亚洲人成在线影院| 国产成人高清精品免费观看| 免费激情视频网站| 亚洲精品在线免费看| 丝袜捆绑调教视频免费区| 国产成人免费ā片在线观看| 亚洲中字慕日产2021| 国产精成人品日日拍夜夜免费| 免费a级毛片无码av| 亚洲中文精品久久久久久不卡|