Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
后端镜像
java镜像
Smart Generator
提交
1495ef9d
S
Smart Generator
项目概览
后端镜像
/
java镜像
/
Smart Generator
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Smart Generator
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1495ef9d
编写于
9月 27, 2013
作者:
黄
黄勇
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
【I】使用 Builder 模式进行代码重构
上级
275af1b3
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
172 addition
and
98 deletion
+172
-98
src/main/java/com/smart/generator/Generator.java
src/main/java/com/smart/generator/Generator.java
+10
-98
src/main/java/com/smart/generator/builder/Builder.java
src/main/java/com/smart/generator/builder/Builder.java
+23
-0
src/main/java/com/smart/generator/builder/EntityBuilder.java
src/main/java/com/smart/generator/builder/EntityBuilder.java
+109
-0
src/main/java/com/smart/generator/builder/SQLBuilder.java
src/main/java/com/smart/generator/builder/SQLBuilder.java
+30
-0
未找到文件。
src/main/java/com/smart/generator/Generator.java
浏览文件 @
1495ef9d
...
...
@@ -4,13 +4,12 @@ import com.smart.framework.util.ClassUtil;
import
com.smart.framework.util.FileUtil
;
import
com.smart.framework.util.StringUtil
;
import
com.smart.generator.bean.Column
;
import
com.smart.generator.bean.Field
;
import
com.smart.generator.bean.Table
;
import
com.smart.generator.util.VelocityUtil
;
import
com.smart.generator.builder.Builder
;
import
com.smart.generator.builder.EntityBuilder
;
import
com.smart.generator.builder.SQLBuilder
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -28,36 +27,6 @@ public class Generator {
private
static
final
String
TABLE_VM
=
"vm/table.vm"
;
private
static
final
String
ENTITY_VM
=
"vm/entity.vm"
;
private
static
List
<
String
>
keywordList
=
new
ArrayList
<
String
>();
private
static
Map
<
String
,
String
>
typeMap
=
new
HashMap
<
String
,
String
>();
static
{
keywordList
=
Arrays
.
asList
(
"abstract"
,
"assert"
,
"boolean"
,
"break"
,
"byte"
,
"case"
,
"catch"
,
"char"
,
"class"
,
"continue"
,
"default"
,
"do"
,
"double"
,
"else"
,
"enum"
,
"extends"
,
"final"
,
"finally"
,
"float"
,
"for"
,
"if"
,
"implements"
,
"import"
,
"instanceof"
,
"int"
,
"interface"
,
"long"
,
"native"
,
"new"
,
"package"
,
"private"
,
"protected"
,
"public"
,
"return"
,
"strictfp"
,
"short"
,
"static"
,
"super"
,
"switch"
,
"synchronized"
,
"this"
,
"throw"
,
"throws"
,
"transient"
,
"try"
,
"void"
,
"volatile"
,
"while"
);
typeMap
.
put
(
"bigint"
,
"long"
);
typeMap
.
put
(
"varchar"
,
"String"
);
typeMap
.
put
(
"char"
,
"String"
);
typeMap
.
put
(
"int"
,
"int"
);
typeMap
.
put
(
"text"
,
"String"
);
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
new
Generator
().
generator
();
}
...
...
@@ -69,8 +38,13 @@ public class Generator {
Map
<
Table
,
List
<
Column
>>
tableMap
=
createTableMap
(
inputPath
);
generateSQL
(
tableMap
,
outputPath
);
generateJava
(
tableMap
,
packageName
,
outputPath
);
Builder
sqlBuilder
=
new
SQLBuilder
(
outputPath
,
TABLE_VM
,
tableMap
);
sqlBuilder
.
createFile
();
sqlBuilder
.
generateCode
();
Builder
entityBuilder
=
new
EntityBuilder
(
outputPath
,
ENTITY_VM
,
tableMap
,
packageName
);
entityBuilder
.
createFile
();
entityBuilder
.
generateCode
();
}
private
Map
<
Table
,
List
<
Column
>>
createTableMap
(
String
inputPath
)
{
...
...
@@ -105,66 +79,4 @@ public class Generator {
}
return
tableMap
;
}
private
void
generateSQL
(
Map
<
Table
,
List
<
Column
>>
tableMap
,
String
outputPath
)
{
String
sqlPath
=
outputPath
+
"/sql"
;
FileUtil
.
createPath
(
sqlPath
);
Map
<
String
,
Object
>
dataMap
=
new
HashMap
<
String
,
Object
>();
dataMap
.
put
(
"tableMap"
,
tableMap
);
VelocityUtil
.
mergeTemplate
(
TABLE_VM
,
dataMap
,
sqlPath
+
"/schema.sql"
);
}
private
void
generateJava
(
Map
<
Table
,
List
<
Column
>>
tableMap
,
String
packageName
,
String
outputPath
)
{
String
javaPath
=
outputPath
+
"/java"
;
FileUtil
.
createPath
(
javaPath
);
for
(
Map
.
Entry
<
Table
,
List
<
Column
>>
entry
:
tableMap
.
entrySet
())
{
Table
table
=
entry
.
getKey
();
String
tableName
=
table
.
getName
();
String
entityName
=
StringUtil
.
firstToUpper
(
StringUtil
.
toCamelhump
(
tableName
));
List
<
Column
>
columnList
=
entry
.
getValue
();
List
<
Field
>
fieldList
=
transformFieldList
(
columnList
);
Map
<
String
,
Object
>
dataMap
=
new
HashMap
<
String
,
Object
>();
dataMap
.
put
(
"packageName"
,
packageName
);
dataMap
.
put
(
"entityName"
,
entityName
);
dataMap
.
put
(
"fieldList"
,
fieldList
);
dataMap
.
put
(
"StringUtil"
,
new
StringUtil
());
VelocityUtil
.
mergeTemplate
(
ENTITY_VM
,
dataMap
,
javaPath
+
"/"
+
entityName
+
".java"
);
}
}
private
List
<
Field
>
transformFieldList
(
List
<
Column
>
columnList
)
{
List
<
Field
>
fieldList
=
new
ArrayList
<
Field
>(
columnList
.
size
());
for
(
Column
column
:
columnList
)
{
String
fieldName
=
this
.
transformFieldName
(
column
.
getName
());
String
fieldType
=
this
.
transformFieldType
(
column
.
getType
());
String
fieldComment
=
column
.
getComment
();
fieldList
.
add
(
new
Field
(
fieldName
,
fieldType
,
fieldComment
));
}
return
fieldList
;
}
private
String
transformFieldName
(
String
columnName
)
{
String
fieldName
;
if
(
keywordList
.
contains
(
columnName
))
{
fieldName
=
columnName
+
"_"
;
}
else
{
fieldName
=
columnName
;
}
return
StringUtil
.
toCamelhump
(
fieldName
);
}
private
String
transformFieldType
(
String
columnType
)
{
String
fieldType
;
if
(
typeMap
.
containsKey
(
columnType
))
{
fieldType
=
typeMap
.
get
(
columnType
);
}
else
{
fieldType
=
"String"
;
}
return
fieldType
;
}
}
src/main/java/com/smart/generator/builder/Builder.java
0 → 100644
浏览文件 @
1495ef9d
package
com.smart.generator.builder
;
import
com.smart.generator.bean.Column
;
import
com.smart.generator.bean.Table
;
import
java.util.List
;
import
java.util.Map
;
public
abstract
class
Builder
{
protected
String
outputPath
;
protected
String
vmPath
;
protected
Map
<
Table
,
List
<
Column
>>
tableMap
;
public
Builder
(
String
outputPath
,
String
vmPath
,
Map
<
Table
,
List
<
Column
>>
tableMap
)
{
this
.
outputPath
=
outputPath
;
this
.
vmPath
=
vmPath
;
this
.
tableMap
=
tableMap
;
}
public
abstract
void
createFile
();
public
abstract
void
generateCode
();
}
src/main/java/com/smart/generator/builder/EntityBuilder.java
0 → 100644
浏览文件 @
1495ef9d
package
com.smart.generator.builder
;
import
com.smart.framework.util.FileUtil
;
import
com.smart.framework.util.StringUtil
;
import
com.smart.generator.bean.Column
;
import
com.smart.generator.bean.Field
;
import
com.smart.generator.bean.Table
;
import
com.smart.generator.util.VelocityUtil
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
public
class
EntityBuilder
extends
Builder
{
private
static
List
<
String
>
keywordList
=
new
ArrayList
<
String
>();
private
static
Map
<
String
,
String
>
typeMap
=
new
HashMap
<
String
,
String
>();
static
{
keywordList
=
Arrays
.
asList
(
"abstract"
,
"assert"
,
"boolean"
,
"break"
,
"byte"
,
"case"
,
"catch"
,
"char"
,
"class"
,
"continue"
,
"default"
,
"do"
,
"double"
,
"else"
,
"enum"
,
"extends"
,
"final"
,
"finally"
,
"float"
,
"for"
,
"if"
,
"implements"
,
"import"
,
"instanceof"
,
"int"
,
"interface"
,
"long"
,
"native"
,
"new"
,
"package"
,
"private"
,
"protected"
,
"public"
,
"return"
,
"strictfp"
,
"short"
,
"static"
,
"super"
,
"switch"
,
"synchronized"
,
"this"
,
"throw"
,
"throws"
,
"transient"
,
"try"
,
"void"
,
"volatile"
,
"while"
);
typeMap
.
put
(
"bigint"
,
"long"
);
typeMap
.
put
(
"varchar"
,
"String"
);
typeMap
.
put
(
"char"
,
"String"
);
typeMap
.
put
(
"int"
,
"int"
);
typeMap
.
put
(
"text"
,
"String"
);
}
private
String
packageName
;
public
EntityBuilder
(
String
outputPath
,
String
vmPath
,
Map
<
Table
,
List
<
Column
>>
tableMap
,
String
packageName
)
{
super
(
outputPath
,
vmPath
,
tableMap
);
this
.
packageName
=
packageName
;
}
@Override
public
void
createFile
()
{
String
javaPath
=
outputPath
+
"/java"
;
FileUtil
.
createPath
(
javaPath
);
}
@Override
public
void
generateCode
()
{
for
(
Map
.
Entry
<
Table
,
List
<
Column
>>
entry
:
tableMap
.
entrySet
())
{
Table
table
=
entry
.
getKey
();
String
tableName
=
table
.
getName
();
String
entityName
=
StringUtil
.
firstToUpper
(
StringUtil
.
toCamelhump
(
tableName
));
List
<
Column
>
columnList
=
entry
.
getValue
();
List
<
Field
>
fieldList
=
transformFieldList
(
columnList
);
Map
<
String
,
Object
>
dataMap
=
new
HashMap
<
String
,
Object
>();
dataMap
.
put
(
"packageName"
,
packageName
);
dataMap
.
put
(
"entityName"
,
entityName
);
dataMap
.
put
(
"fieldList"
,
fieldList
);
dataMap
.
put
(
"StringUtil"
,
new
StringUtil
());
VelocityUtil
.
mergeTemplate
(
vmPath
,
dataMap
,
outputPath
+
"/java/"
+
entityName
+
".java"
);
}
}
private
List
<
Field
>
transformFieldList
(
List
<
Column
>
columnList
)
{
List
<
Field
>
fieldList
=
new
ArrayList
<
Field
>(
columnList
.
size
());
for
(
Column
column
:
columnList
)
{
String
fieldName
=
this
.
transformFieldName
(
column
.
getName
());
String
fieldType
=
this
.
transformFieldType
(
column
.
getType
());
String
fieldComment
=
column
.
getComment
();
fieldList
.
add
(
new
Field
(
fieldName
,
fieldType
,
fieldComment
));
}
return
fieldList
;
}
private
String
transformFieldName
(
String
columnName
)
{
String
fieldName
;
if
(
keywordList
.
contains
(
columnName
))
{
fieldName
=
columnName
+
"_"
;
}
else
{
fieldName
=
columnName
;
}
return
StringUtil
.
toCamelhump
(
fieldName
);
}
private
String
transformFieldType
(
String
columnType
)
{
String
fieldType
;
if
(
typeMap
.
containsKey
(
columnType
))
{
fieldType
=
typeMap
.
get
(
columnType
);
}
else
{
fieldType
=
"String"
;
}
return
fieldType
;
}
}
src/main/java/com/smart/generator/builder/SQLBuilder.java
0 → 100644
浏览文件 @
1495ef9d
package
com.smart.generator.builder
;
import
com.smart.framework.util.FileUtil
;
import
com.smart.generator.bean.Column
;
import
com.smart.generator.bean.Table
;
import
com.smart.generator.util.VelocityUtil
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
public
class
SQLBuilder
extends
Builder
{
public
SQLBuilder
(
String
outputPath
,
String
vmPath
,
Map
<
Table
,
List
<
Column
>>
tableMap
)
{
super
(
outputPath
,
vmPath
,
tableMap
);
}
@Override
public
void
createFile
()
{
String
sqlPath
=
outputPath
+
"/sql"
;
FileUtil
.
createPath
(
sqlPath
);
}
@Override
public
void
generateCode
()
{
Map
<
String
,
Object
>
dataMap
=
new
HashMap
<
String
,
Object
>();
dataMap
.
put
(
"tableMap"
,
tableMap
);
VelocityUtil
.
mergeTemplate
(
vmPath
,
dataMap
,
outputPath
+
"/sql/schema.sql"
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录