/**
* @(#) CodeGeneratorFactory.java
* module : CodeGenerator
* version : 版本管理系统中的文件版本
* date : 2009-8-5
* name : 马仁配
*/
package com.allinpay.generator.tp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.allinpay.generator.ibatis.ICodeGenerator;
import com.allinpay.generator.tp.generator.BuildFileGenerator;
import com.allinpay.generator.tp.generator.CommunicationServiceFileGenerator;
import com.allinpay.generator.tp.generator.ContextFileGenerator;
import com.allinpay.generator.tp.generator.OrderNoServiceFileGenerator;
import com.allinpay.generator.tp.generator.SecurityServiceFileGenerator;
import com.allinpay.generator.tp.generator.TPFileGenerator;
import com.allinpay.generator.tp.generator.TxParamsMessageServiceFileGenerator;
import com.allinpay.generator.tp.generator.TxXmlMessageServiceFileGenerator;
import com.allinpay.util.DateUtil;
/**
* 如果有任何对代码的修改,请按下面的格式注明修改的内容.
* 序号 时间 作者 修改内容
* 1. 2009-8-5 马仁配 created this class.
*/
public class CodeGeneratorFactory {
/**
* Singleton instance.
*/
private static CodeGeneratorFactory factory = new CodeGeneratorFactory();
/**
* Singleton method.
* @return
*/
public static CodeGeneratorFactory getFactory() {
return factory;
}
/**
* All regiested generators.
*/
private List <ICodeGenerator> generators = new ArrayList <ICodeGenerator> ();
/**
* 缺省的自动生成的文件保存目录.
*/
private String defaultDistDir;
public void register(ICodeGenerator generator) {
generators.add(generator);
generator.setGeneratedRootFilePath(getDefaultDistDir());
}
/**
* @return the defaultDistDir
*/
public String getDefaultDistDir() {
return defaultDistDir;
}
/**
* @param defaultDistDir the defaultDistDir to set
*/
public void setDefaultDistDir(String defaultDistDir) {
this.defaultDistDir = defaultDistDir;
}
public void generate(
String packageName,
String author,
String time,
String ebank,
String bankType) {
//set template model.
Map data = new HashMap ();
data.put("prefixPackage", packageName);
data.put("author", author);
data.put("time", time);
data.put("ebank", ebank);
data.put("ebankType", bankType);
//register meta data info.
Iterator it = generators.iterator();
while (it.hasNext()) {
ICodeGenerator generator = (ICodeGenerator) it.next();
generator.register(data);
}
//generate configure files.
it = generators.iterator();
while (it.hasNext()) {
ICodeGenerator generator = (ICodeGenerator) it.next();
generator.generate(data);
}
}
/**
* @param args
*/
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
CodeGeneratorFactory factory = CodeGeneratorFactory.getFactory();
factory.setDefaultDistDir("E:\\dev-workspace\\generated");
factory.register(new ContextFileGenerator());
factory.register(new OrderNoServiceFileGenerator());
factory.register(new SecurityServiceFileGenerator());
factory.register(new TPFileGenerator());
factory.register(new TxParamsMessageServiceFileGenerator());
factory.register(new TxXmlMessageServiceFileGenerator());
factory.register(new CommunicationServiceFileGenerator());
factory.register(new BuildFileGenerator());
factory.generate(
"com.allinpay.api",
"nilomiao",
DateUtil.formatCurrDateTime(DateUtil.DF_YYYY_MM_DD),
"abc",
"st");
}
}