package com.cxsoft.action;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ResourceBundle;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.cxsoft.base.TableForm;
import com.cxsoft.common.DBConnection;
import com.cxsoft.common.DBFactory;
import com.cxsoft.tool.DBTool;
import com.cxsoft.tool.FormatTool;
import com.cxsoft.tool.StringUtil;
/**
* 文件生成器
* @author <a href= "mailto:chengzhiping@sinosoft.com.cn"> chengzhiping@sinosoft.com.cn</a>
* 上午11:03:55 2012-5-15
*/
/**
* @author <a href= "mailto:chengzhiping@sinosoft.com.cn"> chengzhiping@sinosoft.com.cn</a>
* 上午10:36:47 2012-5-20
*/
public class FileGenerateAction {
private static final Log log = LogFactory.getLog(FileGenerateAction.class);
/**
* 引擎入口
* @param tableForm
* @throws Exception
*/
public static void engineEntry(TableForm tableForm) throws Exception{
String basePath = StringUtil.replaceSlash(tableForm.getBasePath());
tableForm.setBasePath(basePath);
if(tableForm.isBeanBol()){
generateBean(tableForm);
}
if(tableForm.isServiceBol()){
generateService(tableForm);
}
if(tableForm.isJspBol()){
generateJsp(tableForm);
}
}
/**
* 生成Bean
* @param tableForm
* @throws Exception
*/
private static void generateBean(TableForm tableForm) throws Exception{
String writeFilePath = tableForm.getStorePath();
String tableName = tableForm.getSelecedTable();
String objectName = StringUtil.initialStrToUpper(tableName);
objectName = StringUtil.convertUnderLine(objectName);
String packageName = StringUtil.addPoint(tableForm.getBasePath(),"model;");
String fileName = StringUtil.addPoint(objectName,"java");
tableForm.setPackageName(packageName);
packageName = StringUtil.convertPoint(packageName);
tableForm.setSelecedTable(tableName);
tableForm.setObjectName(objectName);
tableForm.setFileName(fileName);
writeFilePath +="/"+ packageName+"/"+fileName;
tableForm.setWriteFilePath(writeFilePath);
readAndWriteFile("../codeBuilder/template/Bean.temp",tableForm);
}
/**
* 生成Service及其实现类
* @param tableForm
* @throws Exception
*/
private static void generateService(TableForm tableForm) throws Exception{
String writeFilePath = tableForm.getStorePath();
String tableName = tableForm.getSelecedTable();
String objectName = StringUtil.initialStrToUpper(tableName);
objectName = StringUtil.convertUnderLine(objectName);
String packageName = StringUtil.addPoint(tableForm.getBasePath(),"service;");//tableForm.getBasePath()+".service;";
String fileName = "I"+objectName+"Service.java";
// String rootPath = tableForm.getBasePath();
tableForm.setPackageName(packageName);
packageName = StringUtil.convertPoint(packageName);
tableForm.setSelecedTable(tableName);
tableForm.setObjectName(objectName);
tableForm.setFileName(fileName);
writeFilePath += "/"+packageName+"/"+fileName;
tableForm.setWriteFilePath(writeFilePath);
readAndWriteFile("../codeBuilder/template/Service.temp",tableForm);
{
String packageNameImple = StringUtil.addPoint(tableForm.getBasePath(),"service.imple;");//tableForm.getBasePath()+".service.imple;";
fileName = objectName + "ServiceImple.java";
tableForm.setPackageName(packageNameImple);
packageNameImple = StringUtil.convertPoint(packageNameImple);
tableForm.setSelecedTable(tableName);
tableForm.setFileName(fileName);
String writeFilePathImple = tableForm.getStorePath() +"/"+ packageNameImple+"/"+fileName;
tableForm.setWriteFilePath(writeFilePathImple);
readAndWriteFile("../codeBuilder/template/ServiceImple.temp",tableForm);
}
}
/**
* 生成Jsp页面
* @param tableForm
* @throws Exception
*/
private static void generateJsp(TableForm tableForm) throws Exception{
String writeFilePath = tableForm.getStorePath();
String tableName = tableForm.getSelecedTable();
String objectName = StringUtil.initialStrToUpper(tableName);
objectName = StringUtil.convertUnderLine(objectName);
String basePath = tableForm.getStorePath() ;
String fileName = "/"+objectName.toLowerCase()+"/"+"list.jsp";
tableForm.setSelecedTable(tableName);
tableForm.setObjectName(objectName);
tableForm.setFileName(fileName);
writeFilePath = basePath+fileName;
tableForm.setWriteFilePath(writeFilePath);
readAndWriteFile("../codeBuilder/template/list.temp",tableForm);
}
/**
* 根据不同模版生成所需文件
* @param readFilePath
* @param tableForm
* @throws Exception
*/
private static void readAndWriteFile(String readFilePath,TableForm tableForm) throws Exception{
try {
FileReader fr = new FileReader(readFilePath);// 创建FileReader对象,用来读取字符流
BufferedReader br = new BufferedReader(fr); // 缓冲指定文件的输入
String writeFilePath = tableForm.getWriteFilePath();
if(createFile(writeFilePath)){
FileWriter fw = new FileWriter(writeFilePath);// 创建FileWriter对象,用来写入字符流
BufferedWriter bw = new BufferedWriter(fw); // 将缓冲对文件的输出
String myreadline; // 定义一个String类型的变量,用来每次读取一行
while (br.ready()) {
myreadline = br.readLine();// 读取一行
if(tableForm.isBeanBol()){
if(!"".equals(myreadline)) myreadline = filteBeanFile(myreadline,tableForm);
}
if(tableForm.isServiceBol()){
if(!"".equals(myreadline)) myreadline = filteServiceFile(myreadline,tableForm);
}
if(tableForm.isJspBol()){
if(!"".equals(myreadline)) myreadline = filteJspFile(myreadline,tableForm);
}
bw.write(myreadline); // 写入文件
bw.newLine();
log.info(myreadline);// 在屏幕上输出
}
bw.flush(); // 刷新该流的缓冲
bw.close();
fw.close();
}
br.close();
fr.close();
} catch (IOException e) {
e.printStackTrace();
throw new Exception();
}
}
/**
* 过滤Service文件
* @param readLine
* @param tableForm
* @return
*/
private static String filteServiceFile(String readLine,TableForm tableForm){
return filterCommon(readLine,tableForm);
}
/**
* 过滤Bean文件
* @param readLine
* @param tableForm
* @return
* @throws Exception
*/
private static String filteBeanFile(String readLine,TableForm tableForm) throws Exception{
readLine = filterCommon(readLine,tableForm);
Object columns[] = tableForm.getRightAllValues();
StringBuffer sb = new StringBuffer();
if(readLine.contains("@fieldDeclare")){
for (int i = 0; i < columns.length; i++) {
String field = "";
String fieldDeclare = getField(columns[i].toString(),tableForm.getModel().getDBtype());
field += readLine.replaceAll("@fieldDeclare",fieldDeclare);
sb.append(field);
}
return sb.toString();
}else if(readLine.contains("@method")){
for (int i = 0; i < columns.length; i++) {
String columnType = columns[i].toString().split("-")[0];
String fieldType = translateToJavaType(tableForm.getModel().getDBtype(),columnType);
String fieldName = columns[i].toString().split("-")[1].toLowerCase();
StringBuffer method = new StringBuffer();
method.append(readLine.replaceAll("@method",getMethod(tableForm,fieldType,fieldName)+setMethod(tableForm.getObjectName(),fieldType,fieldName)));
sb.append(method);
}
return sb.toString();
}else{
return readLine;
}
}
/**
* 过滤Jsp文件
* @param readLine
* @param tableForm
* @return
* @throws SQLException
*/
private static String filteJspFile(String readLine,TableForm tableForm) throws SQLException{
readLi
没有合适的资源?快使用搜索试试~ 我知道了~
java写的代码生成工具源码
共58个文件
class:22个
java:16个
jar:5个
5星 · 超过95%的资源 需积分: 50 643 下载量 25 浏览量
2012-08-23
14:37:22
上传
评论 36
收藏 2.32MB RAR 举报
温馨提示
版权归本人所有,请勿商业使用! 目前该版本可以支持mysql,oracle数据库,生成的代码包含bean文件Service文件还有jsp文件 template文件夹里面有四个模版文件(可以修改生成你想要的代码)。 具体配置步骤如下: 一、配置数据库基本信息,如数据库类型,数据库链接URL,用户名,密码; 二、选择表,选中需要配置的字段; 三、根路径是项目中的包路径; 四、存储路径是生成的代码存储位置(生成到你本地的绝对路径)。 五、选中要生成的代码类型,点击“确定”按钮 便可生成你想要的代码啦。
资源推荐
资源详情
资源评论
收起资源包目录
codeBuilder.rar (58个子文件)
codeBuilder
bin
datatype.properties 686B
jdbc.properties 1KB
com
cxsoft
base
JEntryEngine.class 794B
TableForm.class 3KB
action
FileGenerateAction.class 12KB
model
TableFrame.class 10KB
ListFrame.class 4KB
TableFrame$1.class 833B
ListFrame$2.class 785B
MainFrame.class 5KB
TableFrame$4.class 833B
TableFrame$3.class 833B
ListFrame$3.class 785B
ListFrame$1.class 785B
TableFrame$5.class 833B
ListFrame$4.class 785B
TableFrame$2.class 833B
tool
DBTool.class 4KB
StringUtil.class 7KB
FormatTool.class 8KB
FrameItemTool.class 2KB
common
DBFactory.class 5KB
DBModel.class 1KB
DBConnection.class 3KB
template
使用说明书 448B
testtcom
cxsoft
model
Person.java 1KB
service
imple
Person
ServiceImple.java 1KB
IPersonService.java 539B
.settings
org.eclipse.core.resources.prefs 170B
org.eclipse.jdt.core.prefs 629B
src
datatype.properties 686B
jdbc.properties 1KB
com
cxsoft
base
JEntryEngine.java 549B
TableForm.java 2KB
action
FileGenerateAction.java 15KB
model
ListFrame.java 4KB
TableFrame.java 11KB
MainFrame.java 4KB
tool
StringUtil.java 8KB
FrameItemTool.java 2KB
FormatTool.java 12KB
DBTool.java 4KB
common
DBFactory.java 5KB
DBModel.java 1KB
DBConnection.java 4KB
template
.project 387B
builder.jardesc 1KB
testt
list.jsp 2KB
.classpath 500B
lib
commons-logging-1.1.1.jar 59KB
classes14.jar 1.12MB
mysql-connector-java-5.0.5-bin.jar 41KB
mysql-connector-java-5.0.5-bin_lib
commons-logging-1.1.1.jar 59KB
classes14.jar 1.12MB
template
Service.temp 530B
list.temp 2KB
Bean.temp 433B
ServiceImple.temp 1KB
共 58 条
- 1
NickCheng
- 粉丝: 91
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 2025继续教育公需课必修课试题(含答案).pptx
- 2025健康知识竞赛题库(含答案).pptx
- 2025继续教育考试题(含答案).pptx
- 公司中高层管理人员薪酬管理方案.doc
- 公司董事、高级管理人员薪酬考核制度.doc
- 高管人员薪酬方案.doc
- 高管薪酬管理制度.doc
- 高管薪酬设计方案.doc
- 中高层管理人员薪酬管理制度.doc
- 远大公司高层薪酬制度.doc
- 南航高管薪酬管理制度.docx
- 高级管理人员年薪制管理办法.docx
- 委派子公司高管绩效薪酬制度.docx
- 高管人员薪酬与绩效考核管理制度.docx
- 2025交管12123学法减分试题库(含参考答案).pptx
- 2025计算机网络技术考试题(含答案).doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页