Package cn.org.rapid_framework.generator.ext.tableconfig.model

Source Code of cn.org.rapid_framework.generator.ext.tableconfig.model.MetaTableTest

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.ext.tableconfig.model.TableConfig.Convert2SqlsProecssor;
import cn.org.rapid_framework.generator.ext.tableconfig.model.TableConfig.SqlConfig;
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;
import cn.org.rapid_framework.generator.util.test.GeneratorTestHelper;

public class MetaTableTest extends GeneratorTestCase {
   
    public void setUp() throws Exception {
        super.setUp();
        g.setOutRootDir("./target/temp/"+getClass().getSimpleName()+"/"+getName());
        GeneratorProperties.setProperty("appName", "rapid");
        GLogger.perfLogLevel = GLogger.INFO;
    }
   
    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/user_info.xml");
        TableConfig t = new TableConfigXmlBuilder().parseFromXML(new FileInputStream(file));
        GeneratorModel gm = newFromTable(t);
        g.generateBy(gm.templateModel, gm.filePathModel);
       
        g.setTemplateRootDir(FileHelper.getFileByClassLoader("for_generate_by_sql"));
        for(Sql sql : t.getSqls()) {
            GeneratorModel sqlGM = MetaTableTest.newFromSql(sql,t);
            g.generateBy(sqlGM.templateModel, sqlGM.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_generate_by_user_info_freemarker() throws Exception {
        g.setTemplateRootDir(FileHelper.getFileByClassLoader("for_generate_by_sql_config"));
        File file = FileHelper.getFileByClassLoader("cn/org/rapid_framework/generator/ext/tableconfig/user_info_freemarker.xml");
        TableConfig t = new TableConfigXmlBuilder().parseFromXML(new FileInputStream(file));
        GeneratorModel gm = newFromTable(t);
        g.generateBy(gm.templateModel, gm.filePathModel);
       
        g.setTemplateRootDir(FileHelper.getFileByClassLoader("for_generate_by_sql"));
        for(Sql sql : t.getSqls()) {
            GeneratorModel sqlGM = MetaTableTest.newFromSql(sql,t);
            g.generateBy(sqlGM.templateModel, sqlGM.filePathModel);
        }
    }
   
    public void testSetOperations() 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));
        GeneratorModel gm = newFromSql(new Convert2SqlsProecssor().toSql(t, getName()),t);
        g.generateBy(gm.templateModel, gm.filePathModel);
    }
   
    public void test_include_sql_by_refid() 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(file);
        System.out.println(t.getIncludeSqls());
        SqlConfig metaSql = t.getIncludeSqls().get(0);
        assertEquals(metaSql.sql.trim(),"<![CDATA[ USER_ID ,USERNAME ,PASSWORD ,BIRTH_DATE ,SEX ,AGE  ]]>");
    }

    public void test_generate_by_mybatis_user_info() throws Exception {
      g.setTemplateRootDir(FileHelper.getFileByClassLoader("for_generate_by_sql_config"));
        File file = FileHelper.getFileByClassLoader("cn/org/rapid_framework/generator/ext/tableconfig/mybatis_user_info.xml");
        TableConfig t = new TableConfigXmlBuilder().parseFromXML(file);
        GeneratorModel gm = newFromTable(t);
        g.generateBy(gm.templateModel, gm.filePathModel);
       
        g.setTemplateRootDir(FileHelper.getFileByClassLoader("for_generate_by_sql"));
        for(Sql sql : t.getSqls()) {
            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());
  }
 
   
  public static GeneratorModel newFromSql(Sql sql, TableConfig t) {
        Map templateModel = new HashMap();
        templateModel.putAll(GeneratorProperties.getProperties());
        templateModel.put("sql", sql);
        templateModel.put("tableConfig", t);
        setShareVars(templateModel);
       
        Map filePathModel = new HashMap();
        filePathModel.putAll(GeneratorProperties.getProperties());
        filePathModel.putAll(BeanHelper.describe(t));
        filePathModel.putAll(BeanHelper.describe(sql));
        setShareVars(filePathModel);
        GeneratorModel gm = new GeneratorModel(templateModel,filePathModel);
        return gm;
    }

    public static GeneratorModel newFromTable(TableConfig t) {
        t.setPackage("com.company.project");
        Map templateModel = new HashMap();
        templateModel.putAll(GeneratorProperties.getProperties());
        templateModel.put("tableConfig", t);
        setShareVars(templateModel);
       
        Map filePathModel = new HashMap();
        setShareVars(filePathModel);
        filePathModel.putAll(GeneratorProperties.getProperties());
        filePathModel.putAll(BeanHelper.describe(t));
        GeneratorModel gm = new GeneratorModel(templateModel,filePathModel);
        return gm;
    }
   
    public void test_gen_by_operation() throws Exception{
      File file = FileHelper.getFileByClassLoader("cn/org/rapid_framework/generator/ext/tableconfig/user_info.xml");
      TableConfig t = new TableConfigXmlBuilder().parseFromXML(new FileInputStream(file));
      g.addTemplateRootDir("classpath:generator/template/rapid/operation/dal/src/main");
      g.addTemplateRootDir("classpath:generator/template/rapid/share/dal");
      String content = GeneratorTestHelper.generateBy(g,new Helper().getMapBySql(t, "testIncludeWhere"));
      assertContains(content,"java/com/company/project/user_info/operation/userinfo/TestIncludeWhereQuery.java");
      assertContains(content, "package com.company.project.user_info.operation.userinfo;");
      assertContains(content, "/** 用户名 */");
      assertContains(content, "用户信息表");
      assertContains(content, "PageQuery");
     
      content = GeneratorTestHelper.generateBy(g,new Helper().getMapBySql(t, "testIncludeWhereWithNoPaging"));
      assertContains("java/com/company/project/user_info/operation/userinfo/TestIncludeWhereWithNoPagingQuery.java");
      assertContains(content, "/** 用户名 */");
      assertNotContains(content, " PageQuery");
      System.out.println(content);
    }
   
  public static void setShareVars(Map templateModel) {
      templateModel.putAll(GeneratorModelUtils.getShareVars());
      templateModel.put("StringHelper", new StringHelper());
      templateModel.put("basepackage", "com.company.project");
    }
}
TOP

Related Classes of cn.org.rapid_framework.generator.ext.tableconfig.model.MetaTableTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.