/**
* @(#) GenerateTableCreateSql.java
* module : CodeGenerator
* version : 版本管理系统中的文件版本
* date : 2012-2-29
* name : nilomiao
*/
package com.allinpay.generator.sql;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.allinpay.util.StringUtil;
/**
* <pre>
* 如果有任何对代码的修改,请按下面的格式注明修改的内容.
* 序号 时间 作者 修改内容
* 1. 2012-2-29 nilomiao created this class.
* </pre>
*/
public class GenerateTableCreateSql {
public static final String paraFile = "D:/ITS非交易表数据库字典.xls";
private static String tableName = "SYS_CODES"; // 可在此指定表名生成脚本;为空时表示按目录生成所有表的脚本
/**
* @param args
*/
public static void main(String[] args) {
try {
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(paraFile));
if (StringUtil.isEmpty(tableName)) {
// 读取所有表
// Map map = new HashMap();
HSSFSheet sheet = workbook.getSheet("目录");
int rowCount = sheet.getLastRowNum() + 1; // 总行数
HSSFRow row = null;// 表头
for (int i = 3; i < rowCount; i++) {
row = sheet.getRow(i);
HSSFCell cell1 = row.getCell(1);
if (null == cell1) {
break;
}
// map.put(cell1.toString(), row.getCell(2).toString());
// System.out.println("generateSql(workbook.getSheet(\"" +
// cell1.toString() +"\"));");
generateSql(workbook.getSheet(cell1.toString()));
}
} else {
generateSql(workbook.getSheet(tableName));
}
// generateSql(workbook.getSheet("GW_PAYMENT_REQUEST"));
//generateSql(workbook.getSheet("GW_TRANSACTION_ROUTER"));
// generateSql(workbook.getSheet("GW_PAYMENT_ORDER"));
// generateSql(workbook.getSheet("GW_GATEWAY_ORDER"));
// generateSql(workbook.getSheet("GW_ACCTINFO_ORDER"));
// generateSql(workbook.getSheet("GW_CONTRACT"));
// generateSql(workbook.getSheet("GW_ACCOUNT_BALANCE"));
// generateSql(workbook.getSheet("GW_ACCOUNT_TX_DETAIL"));
// generateSql(workbook.getSheet("GW_TRANSACTION_REQUEST"));
// generateSql(workbook.getSheet("GW_TRANSACTION_RESPONSE"));
// generateSql(workbook.getSheet("GW_TRANSACTION_CHANNEL"));
// generateSql(workbook.getSheet("GW_TRANSACTION_CONNECTION"));
// generateSql(workbook.getSheet("GW_TRANSACTION_CONN_PARA"));
// generateSql(workbook.getSheet("GW_TRANSACTION_ROUTER"));
// generateSql(workbook.getSheet("GW_PAY_TYPE_CONFIG"));
// generateSql(workbook.getSheet("GW_PAY_TRANS_CONFIG"));
// generateSql(workbook.getSheet("GW_PAY_ISSUER_CONFIG"));
// generateSql(workbook.getSheet("GW_TRANSACTION_ROUTER_MAP"));
// generateSql(workbook.getSheet("GW_TRANSACTION_ROUTER_MAP_APPLY"));
// generateSql(workbook.getSheet("GW_PAYMENT_CONFIG"));
// generateSql(workbook.getSheet("GW_PAGE_CONFIG"));
// generateSql(workbook.getSheet("SYS_ORGNIZATION"));
// generateSql(workbook.getSheet("SYS_MESSAGE_REQUEST"));
// generateSql(workbook.getSheet("SYS_EXCHANGE_RATE"));
// generateSql(workbook.getSheet("SYS_MCHT_EXCHANGE_RATE"));
// generateSql(workbook.getSheet("SYS_CATEGORY"));
// generateSql(workbook.getSheet("SYS_CODES"));
// generateSql(workbook.getSheet("SYS_RISK_RULE"));
// generateSql(workbook.getSheet("SYS_RISK_LOG"));
// generateSql(workbook.getSheet("SYS_BLACKLIST"));
// generateSql(workbook.getSheet("SYS_PROPERTIES"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void generateSql(HSSFSheet sheet) {
try {
int rowCount = sheet.getLastRowNum() + 1;
// 表头
HSSFRow row = sheet.getRow(1);
String[] tableInfo = row.getCell(1).toString().split(":");
String tableName = tableInfo[1].trim().toUpperCase();
String tableDesc = tableInfo[0].trim();
StringBuffer buf = new StringBuffer();
buf.append("--==============================================================").append(
"\n");
buf.append("-- TABLE: \"").append(tableName).append("\"").append("\n");
buf.append("-- DESC: ").append(tableDesc).append("\n");
buf.append("--==============================================================").append(
"\n");
buf.append("CREATE TABLE ").append(tableName).append(" (").append("\n");
StringBuffer dbuf = new StringBuffer(); // 描述
dbuf.append("COMMENT ON TABLE ").append(tableName).append(" IS '").append(tableDesc)
.append("';").append("\n");
// 表字段
for (int i = 3; i < rowCount; i++) {
row = sheet.getRow(i);
HSSFCell cell1 = row.getCell(1);
if (null == cell1) {
continue;
}
String field = row.getCell(1).toString().toUpperCase();
String type = row.getCell(2).toString().toUpperCase();
String desc = row.getCell(3).toString();
buf.append(" ");
buf.append(field);
buf.append(" ");
buf.append(type);
if (i == 3) { // 首字段为主键
buf.append(" NOT NULL");
}
buf.append(",").append("\n");
dbuf.append("COMMENT ON COLUMN ").append(tableName).append(".").append(field)
.append(" IS '").append(desc).append("';").append("\n");
}
String pkColumn = sheet.getRow(3).getCell(1).toString().toUpperCase();
String pkType = sheet.getRow(3).getCell(2).toString().toUpperCase();
String pkLable = sheet.getRow(3).getCell(3).toString();
buf.append(" CONSTRAINT PK_").append(tableName).append("_ID PRIMARY KEY (")
.append(pkColumn).append(")").append("\n");
buf.append("); ").append("\n");
/**
* DB2的索引空间
buf.append(" IN \"DATSPACE02\" INDEX IN \"IDXSPACE01\";").append("\n \n");
*/
buf.append(dbuf.toString()).append("\n");
if (pkLable.indexOf("<seq>") != -1) {
/** db2 的序列
buf.append("CREATE SEQUENCE SEQ_").append(tableName).append("_").append(pkColumn)
.append(" AS ").append(pkType)
.append(" START WITH 1 INCREMENT BY 1 CACHE 20 NO CYCLE NO ORDER; \n");
*
*/
// oracle 的序列
buf.append("CREATE SEQUENCE ").append("SEQ_").append(tableName)
.append(" minvalue 1 maxvalue 9999999999999999999999999999 start with 100 increment by 1 cache 20; \n");
}
System.out.println(buf.toString());
System.out.println("");
} catch (Exception e) {
e.printStackTrace();
}
}
}