ITPub博客

首页 > Linux操作系统 > Linux操作系统 > freemarker代码生成

freemarker代码生成

原创 Linux操作系统 作者:dengxm 时间:2009-07-09 18:06:38 0 删除 编辑

代码生成

用一事例讲解代码生成

1. 首先写一个类,如TitanPluginExporter 让其继承GenericExporter类。在该类中有一个init方法,该方法的作用是设置模板的路径和生成文件的类型。

public class TitanPluginExporter extends GenericExporter {

protected void setupContext() {

super.setupContext();

}

public void doStart() {

super.doStart();

}

protected void init() {

setTemplateName("templates/config/generation/titanplugin_xml.ftl");

setFilePattern("{package-name}/{class-name}.xml");

}

public TitanPluginExporter() {

init();

}

}

2. GenericExporter类继承了AbstractExporter类,在该类中有一个方法

protected void exportPOJO(Map additionalContext) {

TemplateProducer producer = new TemplateProducer(getTemplateHelper(),

getArtifactCollector());

WebprojectVO webprojectVO = StaitcVO.getWebprojectVO();

additionalContext.put("webproject", StaitcVO.getWebprojectVO());

if (templateName == "templates/config/generation/webproject_project.ftl") {

producer.produce(additionalContext, getTemplateName(), new File(

getOutputDirectory(), resolve("", "")), templateName);

}

if (templateName == "templates/config/generation/webproject_classpath.ftl") {

producer.produce(additionalContext, getTemplateName(), new File(

getOutputDirectory(), resolve("", "")), templateName);

}

if (templateName == "templates/config/generation/titanplugin_xml.ftl") {

producer.produce(additionalContext, getTemplateName(), new File(

getOutputDirectory(), resolve("titanplugin", "")), templateName);

}

}

该方法的作用是判断是否是所要生成文件所使用模板,如果是为所要生成的文件设置包名和文件名。

3. 按照freemarker的规则,去写templates/config/generation/titanplugin_xml.ftl模板

<#else> ${webproject.getDomainName()} "/>

4. 本例是结合了向导,所以在TitanNewWizard类的performFinish()中,写入

Exporter projectExporter = new ProjectExporter();

projectExporter.setOutputDirectory(folder);

webprojectVO.setWebprojectName(projectName);

webprojectVO.setDomainName(domainName);

Exporter classpathExporter = new ClasspathExporter();

classpathExporter.setOutputDirectory(folder);

Exporter titanpluginExporter = new TitanPluginExporter();

titanpluginExporter.setOutputDirectory(folder);

List exporters = new ArrayList();

exporters.add(0, projectExporter);

exporters.add(1, classpathExporter);

exporters.add(2, titanpluginExporter);

for (int i = 0; i < exporters.size(); i++) {

((Exporter) exporters.get(i)).start();

}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13726712/viewspace-608777/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 初来石家庄
请登录后发表评论 登录
全部评论

注册时间:2008-10-08

  • 博文量
    54
  • 访问量
    137416