/**
* Created at 2008-01-28.
*/
package com.allinpay.generator.ibatis.generator;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.allinpay.frameworkdao.ibatis.metadata.TableMetaData;
import com.allinpay.util.StringUtil;
import com.ibm.db2.jcc.DB2Driver;
/**
* @author pony
* 如果有任何对代码的修改,请按下面的格式注明修改的内容.
* 序号 时间 作者 修改内容
* 1. 2008-1-28 pony created this class.
*/
public class MetaDataCodeGenerator extends AbstractCodeGenerator {
public MetaDataCodeGenerator() {
setTemplateFile("metadata.html");
setModuleFilePath("model/src/main/java/");
}
/* (non-Javadoc)
* @see com.allinpay.generator.ibatis.generator.AbstractCodeGenerator#createEmptyGeneratedFile(java.lang.String)
*/
@Override
public File createEmptyGeneratedFile(String fileName) {
String metadata = (String) getModel().get("metadata");
String pkgDir = getPackageDir();
pkgDir = getGeneratedFilePath() + File.separator + getModuleFilePath() + File.separator + pkgDir;
new File(pkgDir).mkdirs();
String filepath = pkgDir + File.separator + "Meta" + metadata + ".java";
File file = new File(filepath);
return file;
}
/* (non-Javadoc)
* @see com.allinpay.generator.ibatis.generator.AbstractCodeGenerator#getPackageIdentifier()
*/
@Override
public String getPackageIdentifier() {
return "metadata";
}
/* (non-Javadoc)
* @see com.allinpay.generator.ibatis.ICodeGenerator#getName()
*/
public String getName() {
return "MetaDataCodeGenerator";
}
/* (non-Javadoc)
* @see com.allinpay.generator.ibatis.generator.AbstractCodeGenerator#generate(java.util.Map)
*/
@Override
public void generate(Map model) {
TableMetaData table = (TableMetaData) model.get("tmd");
if (table.getTableName().equals("sys_meta_data_type")) {
try {
generateMetaDataType();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/* (non-Javadoc)
* @see com.allinpay.generator.ibatis.generator.AbstractCodeGenerator#getRealPackageName()
*/
@Override
protected String getRealPackageName() {
String pkg = (String) getModel().get("prefixPackage") ;
if (!StringUtil.isEmpty(getPackageIdentifier())) {
pkg += "." + getPackageIdentifier();
}
return pkg;
}
private void generateMetaDataType() throws Exception {
Class.forName("com.ibm.db2.jcc.DB2Driver");
DriverManager.registerDriver(new DB2Driver());
Connection conn_1 = DriverManager.getConnection(
"jdbc:db2://192.168.31.128:50000/etsgw?user=db2inst1&password=abcdefg");
String sql = "select * from sys_meta_data_type";
Statement stmt = conn_1.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
int typeValue = rs.getInt(1);
String name = rs.getString(2);
String description = rs.getString(3);
model.put("metadata", StringUtil.capFirst(
StringUtil.replace_AndLowercaseWithCapital(name)));
model.put("description", description);
Connection conn_2 = DriverManager.getConnection(
"jdbc:mysql://192.168.66.128:3306/oa?user=root&password=abcdefg1");
sql = "select * from sys_type_meta_data where meta_data_type = " + typeValue
+ " union "
+ "select * from sys_status_meta_data where meta_data_type = " + typeValue;
Statement stmt_2 = conn_2.createStatement();
ResultSet rs_2 = stmt_2.executeQuery(sql);
List types = new ArrayList();
model.put("types", types);
while(rs_2.next()) {
int value = rs_2.getInt(1);
String typeName = rs_2.getString(3);
String typeDesc = rs_2.getString(4);
TypeMetaData type = new TypeMetaData();
type.setType(value);
type.setName(StringUtil.capFirst(
StringUtil.replace_AndLowercaseWithCapital(typeName)));
type.setDescription(typeDesc);
type.setMetaDataType(typeValue);
types.add(type);
}
rs_2.close();
stmt_2.close();
conn_2.close();
if (types.size() > 0) {
super.generate(model);
}
}
rs.close();
stmt.close();
conn_1.close();
}
}