GenerateEntity.java 3.24 KB
package com.taover.db;

import java.io.File;
import java.io.StringWriter;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import com.taover.base.template.model.po.ColumnModel;
import com.taover.base.template.model.po.PoModel;
import com.taover.base.template.model.po.TableModel;

import com.taover.ui.UiUtils;
import freemarker.template.Configuration;
import freemarker.template.Template;

public class GenerateEntity {
	public static void generateEntity(String sOutputPath, String sDBPackagePath, Vector<TableColumn> ColumnsInTable) throws Exception {

		String sJavaBeanName = ColumnsInTable.get(0).getTableBeanUName();
		String sTableName = ColumnsInTable.get(0).getTableName();
		String sPackagePath = sDBPackagePath;
		
		TableModel tm = createEntityModel(ColumnsInTable);
		StringWriter out = new StringWriter();
		
		PoModel cif = new PoModel();
		cif.setPackages(sPackagePath.toLowerCase() + ";");
		cif.setUsers("taover.com");
		cif.setVersion("1.0");
		cif.setName(sJavaBeanName);
		cif.setToStringMethodBody(getPOToString(ColumnsInTable));
		cif.setTablemodel(tm);
		
		File f = new File(UiUtils.getProjectRoot() + Constants.TEMPATE_PATH);
		Configuration cfg = new Configuration();
		cfg.setDirectoryForTemplateLoading(f);
		cfg.setDefaultEncoding("utf-8");
		Template template = cfg.getTemplate(Constants.TEMPATE_ENTITYNAME);
		template.process(cif, out);
		Tools.createFile(sOutputPath.toLowerCase(), sJavaBeanName + "Entity.java", out.toString());
	}
	public static TableModel createEntityModel(Vector<TableColumn> ColumnsInTable) throws Exception {
		TableModel tm = new TableModel();
		List<ColumnModel> clist = new ArrayList<ColumnModel>();
		int len = ColumnsInTable.size();
		for (int i = 0; i < len; i++) {
			TableColumn colum = ColumnsInTable.get(i);
			ColumnModel cm = new ColumnModel();
			String sColumnBeanName = colum.getColumBeanLName();
			String sSetColumnBeanName = colum.getColumBeanUName();
			cm.setColumnName(sColumnBeanName);
			cm.setColumnUName(colum.getColumnName());
			cm.setColumnMethodName(sSetColumnBeanName);
			cm.setColumnRemarks(colum.getRemarks());
			cm.setColumnJAVAType(colum.getJAVADataType());
			cm.setPrimaryKey(colum.isPrimaryKey());
			clist.add(cm);
		}
		tm.setColumnlist(clist);
		tm.setTableName(ColumnsInTable.get(0).getTableName());
		return tm;
	}
	
	public static String getPOToString(Vector<TableColumn> ColumnsInTable) throws SQLException {
		StringBuffer returnbuffer = new StringBuffer();
		returnbuffer.append("[");
		int iLen = ColumnsInTable.size() - 1;
		for (int i = 0; i <= iLen; i++) {
			TableColumn colum = ColumnsInTable.get(i);
			String tempName = colum.getColumBeanLName();
			if (i == iLen) {
				if (i == 0) {
					returnbuffer.append(tempName).append("=").append("\"").append("+").append(tempName);
				}else{
					returnbuffer.append("\",").append(tempName).append("=").append("\"").append("+").append(tempName);
				}

			} else {
				if (i == 0) {
					returnbuffer.append(tempName).append("=").append("\"").append("+").append(tempName).append("+");
				}else{
					returnbuffer.append("\",").append(tempName).append("=").append("\"").append("+").append(tempName).append("+");
				}
			}
		}
		returnbuffer.append("+\"]\"");
		return returnbuffer.toString();
	}
}