package com.nortal.jroad.typegen.database;
import java.io.IOException;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import com.nortal.jroad.typegen.FileUtil;
import com.nortal.jroad.typegen.TypeGen;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
/**
* @author Roman Tekhov
*/
public class DatabaseGenerator {
private static final String DATABASE_TEMPLATE_FILE = "DatabaseTemplate.txt";
private static final String DATABASE_IMPL_TEMPLATE_FILE = "DatabaseImplTemplate.txt";
public static void generate(DatabaseClasses classes, String outputdir) throws IOException, TemplateException {
Configuration cfg = new Configuration();
cfg.setClassForTemplateLoading(TypeGen.class, "/");
cfg.setObjectWrapper(new DefaultObjectWrapper());
Template interfaceTemp = cfg.getTemplate(DATABASE_TEMPLATE_FILE);
Template implTemp = cfg.getTemplate(DATABASE_IMPL_TEMPLATE_FILE);
for (DatabaseClass databaseClass : classes.getClasses().values()) {
Map<String, DatabaseClass> root = new HashMap<String, DatabaseClass>();
root.put("databaseClass", databaseClass);
Writer out = FileUtil.createAndGetOutputStream(databaseClass.getQualifiedInterfaceName(), outputdir);
interfaceTemp.process(root, out);
out.flush();
out = FileUtil.createAndGetOutputStream(databaseClass.getQualifiedImplementationName(), outputdir);
implTemp.process(root, out);
out.flush();
}
}
}