package cn.org.rapid_framework.generator.ext.tableconfig.model;
import java.io.File;
import java.io.FileInputStream;
import java.util.HashMap;
import java.util.Map;
import cn.org.rapid_framework.generator.GeneratorConstants;
import cn.org.rapid_framework.generator.GeneratorProperties;
import cn.org.rapid_framework.generator.GeneratorTestCase;
import cn.org.rapid_framework.generator.Generator.GeneratorModel;
import cn.org.rapid_framework.generator.GeneratorFacade.GeneratorModelUtils;
import cn.org.rapid_framework.generator.ext.tableconfig.builder.TableConfigXmlBuilder;
import cn.org.rapid_framework.generator.provider.db.sql.model.Sql;
import cn.org.rapid_framework.generator.util.BeanHelper;
import cn.org.rapid_framework.generator.util.FileHelper;
import cn.org.rapid_framework.generator.util.GLogger;
import cn.org.rapid_framework.generator.util.StringHelper;
public class OracleTableConfigTest extends GeneratorTestCase {
public void setUp() throws Exception {
super.setUp();
GLogger.perfLogLevel = GLogger.DEBUG;
GLogger.logLevel = GLogger.DEBUG;
GeneratorProperties.setProperty(GeneratorConstants.GG_IS_OVERRIDE.code, "true");
GeneratorProperties.setProperty(GeneratorConstants.JDBC_URL, "jdbc:oracle:thin:@localhost:1521:xe");
GeneratorProperties.setProperty(GeneratorConstants.JDBC_DRIVER, "oracle.jdbc.driver.OracleDriver");
GeneratorProperties.setProperty(GeneratorConstants.JDBC_USERNAME, "test");
GeneratorProperties.setProperty(GeneratorConstants.JDBC_PASSWORD, "123456");
GeneratorProperties.setProperty(GeneratorConstants.JDBC_SCHEMA, "TEST");
GeneratorProperties.setProperty(GeneratorConstants.JDBC_CATALOG, "");
try {
runSqlScripts("oracle_generator_test_table.sql");
}catch(Exception e) {
if(e.getMessage().contains("ORA-00955")) {
}else {
e.printStackTrace();
}
}
g.setOutRootDir("./target/temp/generate_by_sql_config");
GeneratorProperties.setProperty("appName", "rapid");
}
public void test_genereate_by_sql_config() throws Exception {
g.setTemplateRootDir(FileHelper.getFileByClassLoader("for_generate_by_sql_config"));
File file = FileHelper.getFileByClassLoader("cn/org/rapid_framework/generator/ext/tableconfig/oracle_user_info.xml");
TableConfig t = new TableConfigXmlBuilder().parseFromXML(new FileInputStream(file));
GeneratorModel gm = newFromTable(t);
g.generateBy(gm.templateModel, gm.filePathModel);
}
public void test_generate_by_oracle_user_info() throws Exception {
g.setTemplateRootDir(FileHelper.getFileByClassLoader("for_generate_by_sql"));
File file = FileHelper.getFileByClassLoader("cn/org/rapid_framework/generator/ext/tableconfig/oracle_user_info.xml");
TableConfig t = new TableConfigXmlBuilder().parseFromXML(new FileInputStream(file));
for(Sql sql : t.getSqls()) {
GeneratorModel gm = newFromSql(sql,t);
g.generateBy(gm.templateModel, gm.filePathModel);
}
}
public void test_generate_by_user_info() throws Exception {
g.setTemplateRootDir(FileHelper.getFileByClassLoader("for_generate_by_sql"));
File file = FileHelper.getFileByClassLoader("cn/org/rapid_framework/generator/ext/tableconfig/user_info.xml");
TableConfig t = new TableConfigXmlBuilder().parseFromXML(new FileInputStream(file));
for(Sql sql : t.getSqls()) {
GeneratorModel gm = newFromSql(sql,t);
g.generateBy(gm.templateModel, gm.filePathModel);
}
}
public void test_remove_table_prefix() {
GeneratorProperties.setProperty(GeneratorConstants.TABLE_REMOVE_PREFIXES, "t_,v_");
TableConfig tc = new TableConfig();
tc.setSqlName("t_user_info");
assertEquals("UserInfo",tc.getClassName());
tc.setSqlName("v_user");
assertEquals("User",tc.getClassName());
tc.setSqlName("diy_user");
assertEquals("DiyUser",tc.getClassName());
}
private GeneratorModel newFromSql(Sql sql, TableConfig t) {
Map templateModel = new HashMap();
templateModel.putAll(GeneratorProperties.getProperties());
templateModel.put("sql", sql);
templateModel.put("tableConfig", t);
templateModel.put("basepackage", "com.oracletest");
setShareVars(templateModel);
Map filePathModel = new HashMap();
filePathModel.putAll(GeneratorProperties.getProperties());
filePathModel.putAll(BeanHelper.describe(t));
filePathModel.putAll(BeanHelper.describe(sql));
filePathModel.put("basepackage", "com.oracletest");
setShareVars(filePathModel);
GeneratorModel gm = new GeneratorModel(templateModel,filePathModel);
return gm;
}
private GeneratorModel newFromTable(TableConfig t) {
t.setPackage("com.company.project");
Map templateModel = new HashMap();
templateModel.putAll(GeneratorProperties.getProperties());
templateModel.put("tableConfig", t);
templateModel.put("basepackage", t.getBasepackage());
setShareVars(templateModel);
Map filePathModel = new HashMap();
filePathModel.putAll(GeneratorProperties.getProperties());
filePathModel.putAll(BeanHelper.describe(t));
setShareVars(filePathModel);
GeneratorModel gm = new GeneratorModel(templateModel,filePathModel);
return gm;
}
private static void setShareVars(Map templateModel) {
templateModel.putAll(GeneratorModelUtils.getShareVars());
templateModel.put("StringHelper", new StringHelper());
}
}