提交 a392cdcb 编写于 作者: 黄勇

【I】优化代码

上级 c2887938
package com.smart.generator.command;
package com.smart.generator;
import com.smart.framework.util.ArrayUtil;
import com.smart.framework.util.ObjectUtil;
import com.smart.generator.command.Command;
public class Invoker {
......
package com.smart.generator.command.impl.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 Map<Table, List<Column>> tableMap;
public Builder(String outputPath, Map<Table, List<Column>> tableMap) {
this.outputPath = outputPath;
this.tableMap = tableMap;
}
public abstract void build();
}
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 Map<Table, List<Column>> tableMap;
public Builder(String outputPath, Map<Table, List<Column>> tableMap) {
this.outputPath = outputPath;
this.tableMap = tableMap;
}
public abstract void build();
}
package com.smart.generator.command.impl.builder.impl;
import com.smart.framework.util.StringUtil;
import com.smart.framework.util.VelocityUtil;
import com.smart.generator.bean.Column;
import com.smart.generator.bean.Field;
import com.smart.generator.bean.Table;
import com.smart.generator.command.impl.builder.Builder;
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, Map<Table, List<Column>> tableMap, String packageName) {
super(outputPath, tableMap);
this.packageName = packageName;
}
@Override
public void build() {
for (Map.Entry<Table, List<Column>> entry : tableMap.entrySet()) {
Table table = entry.getKey();
String tableName = table.getName();
String entityNamePascal = StringUtil.toPascalStyle(tableName, "-");
List<Column> columnList = entry.getValue();
List<Field> fieldList = transformFieldList(columnList);
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("app_package", packageName);
dataMap.put("entity_name_p", entityNamePascal);
dataMap.put("field_list", fieldList);
dataMap.put("SU", new StringUtil());
String vmPath = "load-dict/entity_java.vm";
String filePath = outputPath + "/" + entityNamePascal + ".java";
VelocityUtil.mergeTemplateIntoFile(vmPath, dataMap, filePath);
}
}
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.underlineToCamelhump(fieldName);
}
private String transformFieldType(String columnType) {
String fieldType;
if (typeMap.containsKey(columnType)) {
fieldType = typeMap.get(columnType);
} else {
fieldType = "String";
}
return fieldType;
}
}
package com.smart.generator.builder.impl;
import com.smart.framework.util.StringUtil;
import com.smart.framework.util.VelocityUtil;
import com.smart.generator.bean.Column;
import com.smart.generator.bean.Field;
import com.smart.generator.bean.Table;
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, Map<Table, List<Column>> tableMap, String packageName) {
super(outputPath, tableMap);
this.packageName = packageName;
}
@Override
public void build() {
for (Map.Entry<Table, List<Column>> entry : tableMap.entrySet()) {
Table table = entry.getKey();
String tableName = table.getName();
String entityNamePascal = StringUtil.toPascalStyle(tableName, "-");
List<Column> columnList = entry.getValue();
List<Field> fieldList = transformFieldList(columnList);
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("app_package", packageName);
dataMap.put("entity_name_p", entityNamePascal);
dataMap.put("field_list", fieldList);
dataMap.put("SU", new StringUtil());
String vmPath = "load-dict/entity_java.vm";
String filePath = outputPath + "/" + entityNamePascal + ".java";
VelocityUtil.mergeTemplateIntoFile(vmPath, dataMap, filePath);
}
}
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.underlineToCamelhump(fieldName);
}
private String transformFieldType(String columnType) {
String fieldType;
if (typeMap.containsKey(columnType)) {
fieldType = typeMap.get(columnType);
} else {
fieldType = "String";
}
return fieldType;
}
}
package com.smart.generator.command.impl.builder.impl;
import com.smart.framework.util.VelocityUtil;
import com.smart.generator.bean.Column;
import com.smart.generator.bean.Table;
import com.smart.generator.command.impl.builder.Builder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SQLBuilder extends Builder {
private String appName;
public SQLBuilder(String outputPath, Map<Table, List<Column>> tableMap, String appName) {
super(outputPath, tableMap);
this.appName = appName;
}
@Override
public void build() {
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("table_map", tableMap);
String vmPath = "load-dict/table_sql.vm";
String filePath = outputPath + "/" + appName + ".sql";
VelocityUtil.mergeTemplateIntoFile(vmPath, dataMap, filePath);
}
}
package com.smart.generator.builder.impl;
import com.smart.framework.util.VelocityUtil;
import com.smart.generator.bean.Column;
import com.smart.generator.bean.Table;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SQLBuilder extends Builder {
private String appName;
public SQLBuilder(String outputPath, Map<Table, List<Column>> tableMap, String appName) {
super(outputPath, tableMap);
this.appName = appName;
}
@Override
public void build() {
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("table_map", tableMap);
String vmPath = "load-dict/table_sql.vm";
String filePath = outputPath + "/" + appName + ".sql";
VelocityUtil.mergeTemplateIntoFile(vmPath, dataMap, filePath);
}
}
......@@ -4,9 +4,9 @@ import com.smart.framework.util.StringUtil;
import com.smart.generator.bean.Column;
import com.smart.generator.bean.Table;
import com.smart.generator.command.Command;
import com.smart.generator.command.impl.builder.Builder;
import com.smart.generator.command.impl.builder.impl.EntityBuilder;
import com.smart.generator.command.impl.builder.impl.SQLBuilder;
import com.smart.generator.builder.Builder;
import com.smart.generator.builder.impl.EntityBuilder;
import com.smart.generator.builder.impl.SQLBuilder;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
......
......@@ -2,7 +2,7 @@ package com.smart.generator.test;
import com.smart.framework.OrderedRunner;
import com.smart.framework.annotation.Order;
import com.smart.generator.command.Invoker;
import com.smart.generator.Invoker;
import com.smart.generator.command.impl.CreateActionCommand;
import com.smart.generator.command.impl.CreateAppCommand;
import com.smart.generator.command.impl.CreateCRUDCommand;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册