GenerateVCSDP.java 4.4 KB
package com.taover.business;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.Vector;

import com.taover.base.template.model.bussiness.EnvironmentModel;
import com.taover.db.GenerateDao;
import com.taover.db.GeneratePO;
import com.taover.db.TableColumn;
import com.taover.db.Tools;
import com.taover.tools.StringUtil;

public class GenerateVCSDP {
	
	public static void main(String[] args) {
		try {
			generate();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void generate() throws Exception{
		//读取配置文件
		Properties properties = Tools.getProperties();
		//取数据库连接
		Connection conn = Tools.getConnection(properties);
		//初始化要生成的表列表
		List<String> tableNameList = new ArrayList<String>();

		//读取基本信息
		String outputPath   = properties.getProperty("OutputPath");
		String schameName   = properties.getProperty("SchameName");
		String dbLikeStr    = properties.getProperty("DBLikeStr");
		String dbType       = properties.getProperty("dbtype");   
		String dbPackagePath    = properties.getProperty("packageName");
		String tableName    = properties.getProperty("TableName");
		
		//读取配置文件信息-Controller、Service层需要
		String modulePackageInfo   = properties.getProperty("modulePackageInfo");
		String moduleFilePath   = properties.getProperty("moduleFilePath");
		String dbPackageInfo   = properties.getProperty("dbPackageInfo");
		
		//如果文件已存在是否覆盖
		boolean coverWhenFileExists = false;
		if(properties.getProperty("coverWhenFileExists") != null){
			coverWhenFileExists = Boolean.valueOf(properties.getProperty("coverWhenFileExists"));
		}
		
		//读取配置文件信息-HTML、JS需要
		String webRootPath = properties.getProperty("WebRootPath");
		
		if("mysql".equalsIgnoreCase(dbType)){
			schameName = schameName.toUpperCase();					
		}
		
		if (!dbPackagePath.substring(dbPackagePath.length()-1).equals("."))
			dbPackagePath += "."; 

		if ("ALL".equalsIgnoreCase(tableName) ) {
			
			String sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '"+schameName+"'";
			ResultSet rs = Tools.executeQuery(Tools.createStmt(conn), sql);
		        if (null == rs)
		              return ;
		        try {
		            while (rs.next()) {
		            	tableNameList.add(rs.getString("Table_name"));
		            }
		        } catch (SQLException e) {
		            e.printStackTrace();
		        }
		        Tools.close(rs);
		} else {
			if("mysql".equalsIgnoreCase(dbType)){
//				tableName = tableName.toUpperCase();
			}
			String[] TableNameArr = tableName.split(",");
			for (int i = 0; i < TableNameArr.length; i++)
				tableNameList.add(TableNameArr[i]);
		}

		for (int i = 0; i < tableNameList.size(); i++) {
			
			String tableNameCurr = (String) tableNameList.get(i);
			
			// 取得表中所有列
			Vector<TableColumn> columnsInTable = TableColumn.GetTableInfo(conn, schameName, tableNameCurr, dbLikeStr, dbType);
			if (columnsInTable == null || columnsInTable.size() == 0) {
				System.out.println(tableNameCurr + " : 生成失败,得不到表中列明");
				continue;
			}
			TableColumn pkcolum = TableColumn.getPKColum(columnsInTable);	
			if (pkcolum == null) {
				System.out.println(tableNameCurr + " : 生成失败,未设置主键");
				continue;
			}

			// 生成po类
			GeneratePO.generatePO(outputPath, dbPackagePath, columnsInTable);
			// 生成Dao
			GenerateDao.table2dao(outputPath, dbPackagePath, columnsInTable, dbType);
	
			String beanClassName = StringUtil.formatBeanNameFirstUpper(tableNameCurr);
			String poPackageInfo = dbPackageInfo + "." + beanClassName.toLowerCase();
			
			String moduleName = tableNameCurr.split("_")[0];
			EnvironmentModel envir = EnvironmentModel.createEnvironmentModel(modulePackageInfo, moduleFilePath, poPackageInfo, beanClassName, moduleName);
			//生成Controller层
			GenerateController.generateController(envir, coverWhenFileExists, columnsInTable);
			//生成Service层
			GenerateService.generateService(envir, coverWhenFileExists);			
			//生成view
			GenerateView.generateView(webRootPath, tableNameCurr, columnsInTable, coverWhenFileExists, moduleName);
			
			System.out.println(tableNameCurr + " : 生成结束");
		}
		conn.close();
		System.out.println("全部结束");
	}
}