优化: 填充生成信息

master
曹世达 6 months ago
parent d34076ec0c
commit f16f2642e6

@ -24,7 +24,7 @@
<dependency> <dependency>
<groupId>ch.qos.logback</groupId> <groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId> <artifactId>logback-classic</artifactId>
<version>1.4.14</version> <version>1.3.14</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.velocity</groupId> <groupId>org.apache.velocity</groupId>
@ -36,13 +36,13 @@
<artifactId>fastjson</artifactId> <artifactId>fastjson</artifactId>
<version>2.0.48</version> <version>2.0.48</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.junit.jupiter</groupId> <groupId>junit</groupId>
<artifactId>junit-jupiter</artifactId> <artifactId>junit</artifactId>
<version>RELEASE</version> <version>4.13.1</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>

@ -1,9 +0,0 @@
package space.caoshd.otone.aware;
import space.caoshd.otone.entity.ColumnInfo;
import java.util.Map;
public interface ColumnCreateAware {
void addon(ColumnInfo tableInfo, Map<String, Object> addInfo);
}

@ -1,9 +0,0 @@
package space.caoshd.otone.aware;
import space.caoshd.otone.entity.TableInfo;
import java.util.Map;
public interface TableCreateAware {
void addon(TableInfo tableInfo, Map<String, Object> addInfo);
}

@ -2,7 +2,6 @@ package space.caoshd.otone.builder;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import space.caoshd.otone.aware.ColumnCreateAware;
import space.caoshd.otone.entity.ColumnInfo; import space.caoshd.otone.entity.ColumnInfo;
import space.caoshd.otone.tool.PropTools; import space.caoshd.otone.tool.PropTools;
import space.caoshd.otone.util.DBUtils; import space.caoshd.otone.util.DBUtils;
@ -21,23 +20,16 @@ public class ColumnBuilder {
private static final Logger LOGGER = LoggerFactory.getLogger(ColumnBuilder.class); private static final Logger LOGGER = LoggerFactory.getLogger(ColumnBuilder.class);
private static final PropTools CONFIG = private static final PropTools CONFIG = new PropTools(PathConsts.MYSQL_PROPERTIES_PATH);
new PropTools(PathConsts.MYSQL_PROPERTIES_PATH);
private final String schemaName; private final String schemaName;
private final String tableName; private final String tableName;
private final List<ColumnCreateAware> columnCreateAwares = new ArrayList<>();
public ColumnBuilder(String schemaName, String tableName) { public ColumnBuilder(String schemaName, String tableName) {
this.schemaName = schemaName; this.schemaName = schemaName;
this.tableName = tableName; this.tableName = tableName;
} }
public ColumnBuilder addColumnAddonAble(ColumnCreateAware columnCreateAware) {
this.columnCreateAwares.add(columnCreateAware);
return this;
}
public List<ColumnInfo> build() { public List<ColumnInfo> build() {
String sql = CONFIG.getString(SqlConsts.COLUMN_SQL_SCHEMA_TABLE); String sql = CONFIG.getString(SqlConsts.COLUMN_SQL_SCHEMA_TABLE);
List<String> params = Arrays.asList(schemaName, tableName); List<String> params = Arrays.asList(schemaName, tableName);
@ -65,10 +57,6 @@ public class ColumnBuilder {
String extra = CONFIG.getString(SqlConsts.LABEL_EXTRA); String extra = CONFIG.getString(SqlConsts.LABEL_EXTRA);
result.setAutoIncrement(column.get(extra).contains(SqlConsts.VALUE_AUTO_INCREMENT)); result.setAutoIncrement(column.get(extra).contains(SqlConsts.VALUE_AUTO_INCREMENT));
for (ColumnCreateAware columnCreateAware : columnCreateAwares) {
columnCreateAware.addon(result, result.getAddonInfo());
}
LOGGER.debug(JsonUtils.toJson(result)); LOGGER.debug(JsonUtils.toJson(result));
return result; return result;
} }

@ -14,13 +14,11 @@ public class OutputBuilder {
return this; return this;
} }
public OutputBuilder setTemplatePath(String templatePath) { public OutputBuilder setTemplatePath(String templatePath) {
this.outputInfo.setTemplatePath(templatePath); this.outputInfo.setTemplatePath(templatePath);
return this; return this;
} }
public OutputBuilder setPackagePath(String packagePath) { public OutputBuilder setPackagePath(String packagePath) {
this.outputInfo.setPackagePath(packagePath); this.outputInfo.setPackagePath(packagePath);
return this; return this;
@ -31,6 +29,16 @@ public class OutputBuilder {
return this; return this;
} }
public OutputBuilder setNamePrefix(String namePrefix) {
this.outputInfo.setNamePrefix(namePrefix);
return this;
}
public OutputBuilder setPackageName(String packageName) {
this.outputInfo.setPackageName(packageName);
return this;
}
public OutputInfo build() { public OutputInfo build() {
return outputInfo; return outputInfo;
} }

@ -12,7 +12,9 @@ import space.caoshd.otone.util.VelocityUtils;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
public class SourceBuilder { public class SourceBuilder {
@ -28,6 +30,8 @@ public class SourceBuilder {
private List<OutputInfo> outputInfoList; private List<OutputInfo> outputInfoList;
private final Map<String, Object> extra = new HashMap<>();
public SourceBuilder setTableInfo(TableInfo tableInfo) { public SourceBuilder setTableInfo(TableInfo tableInfo) {
this.tableInfo = tableInfo; this.tableInfo = tableInfo;
return this; return this;
@ -48,6 +52,16 @@ public class SourceBuilder {
return this; return this;
} }
public SourceBuilder setExtra(Map<String, Object> extra) {
this.extra.putAll(extra);
return this;
}
public SourceBuilder addExtra(String key, Object data) {
this.extra.put(key, data);
return this;
}
public void build() { public void build() {
if (tableInfo != null) { if (tableInfo != null) {
// 设定单个表 则不使用全部表 // 设定单个表 则不使用全部表
@ -75,14 +89,23 @@ public class SourceBuilder {
} }
private void build(TableInfo tableInfo, OutputInfo outputInfo) { private void build(TableInfo tableInfo, OutputInfo outputInfo) {
// 获取表信息 配置信息
String beanName = tableInfo.getClassName();
String nameSuffix = outputInfo.getNameSuffix();
String namePrefix = outputInfo.getNamePrefix();
String packagePath = outputInfo.getPackagePath();
String packageName = outputInfo.getPackageName();
// 添加附加信息
tableInfo.setExtra(extra);
tableInfo.setClassNameSuffix(nameSuffix);
tableInfo.setClassNamePrefix(namePrefix);
tableInfo.setPackageName(packageName);
// 创建数据文件夹 // 创建数据文件夹
FileUtils.mkdir(outputInfo.getPackagePath()); FileUtils.mkdir(packagePath);
// 获取输出文件路径 // 获取输出文件路径
String outputPath = CfgUtils.getOutputPath( String outputPath = CfgUtils.getJavaFilePath(packagePath, beanName, nameSuffix, namePrefix);
outputInfo.getPackagePath(),
tableInfo.getBeanName(),
outputInfo.getNameSuffix()
);
// 获取模板文件路径 // 获取模板文件路径
String templatePath = outputInfo.getTemplatePath(); String templatePath = outputInfo.getTemplatePath();
// 判断输出文件是否已存在 // 判断输出文件是否已存在
@ -96,9 +119,7 @@ public class SourceBuilder {
VelocityUtils.render(CfgUtils.VALUE_TABLE, tableInfo, templatePath, outputPath); VelocityUtils.render(CfgUtils.VALUE_TABLE, tableInfo, templatePath, outputPath);
} else { } else {
// 配置不可以执行覆盖 提示错误消息 // 配置不可以执行覆盖 提示错误消息
LOGGER.warn( LOGGER.warn("output file already exists: {}, " + "please remove it or enable auto " + "cover exist file,"
"output file already exists: {}, " + "please remove it or enable auto "
+ "cover exist file,"
+ " config.properties should like [output.cover_if_exists=true]", + " config.properties should like [output.cover_if_exists=true]",
outputPath outputPath
); );
@ -119,36 +140,50 @@ public class SourceBuilder {
new OutputBuilder().setNameSuffix(CfgUtils.getPoNameSuffix()) new OutputBuilder().setNameSuffix(CfgUtils.getPoNameSuffix())
.setTemplatePath(CfgUtils.getPoTemplatePath()) .setTemplatePath(CfgUtils.getPoTemplatePath())
.setPackagePath(CfgUtils.getPoPackagePath()) .setPackagePath(CfgUtils.getPoPackagePath())
.setPackageName(CfgUtils.getPoPackageName())
.build(), .build(),
// MAPPER // MAPPER
new OutputBuilder().setNameSuffix(CfgUtils.getMapperNameSuffix()) new OutputBuilder().setNameSuffix(CfgUtils.getMapperNameSuffix())
.setTemplatePath(CfgUtils.getMapperTemplatePath()) .setTemplatePath(CfgUtils.getMapperTemplatePath())
.setPackagePath(CfgUtils.getMapperPackagePath()) .setPackagePath(CfgUtils.getMapperPackagePath())
.setPackageName(CfgUtils.getMapperPackageName())
.build(), .build(),
// SERVICE // SERVICE
new OutputBuilder().setNameSuffix(CfgUtils.getServiceNameSuffix()) new OutputBuilder().setNameSuffix(CfgUtils.getServiceNameSuffix())
.setTemplatePath(CfgUtils.getServiceTemplatePath()) .setTemplatePath(CfgUtils.getServiceTemplatePath())
.setPackagePath(CfgUtils.getServicePackagePath()) .setPackagePath(CfgUtils.getServicePackagePath())
.setPackageName(CfgUtils.getServicePackageName())
.build(),
// SERVICE INTERFACE
new OutputBuilder().setNameSuffix(CfgUtils.getServiceNameSuffix())
.setNamePrefix(CfgUtils.getServiceInterfacePrefix())
.setTemplatePath(CfgUtils.getServiceInterfaceTemplatePath())
.setPackagePath(CfgUtils.getServiceInterfacePackagePath())
.setPackageName(CfgUtils.getServiceInterfacePackageName())
.build(), .build(),
// CONTROLLER // CONTROLLER
new OutputBuilder().setNameSuffix(CfgUtils.getControllerNameSuffix()) new OutputBuilder().setNameSuffix(CfgUtils.getControllerNameSuffix())
.setTemplatePath(CfgUtils.getControllerTemplatePath()) .setTemplatePath(CfgUtils.getControllerTemplatePath())
.setPackagePath(CfgUtils.getControllerPackagePath()) .setPackagePath(CfgUtils.getControllerPackagePath())
.setPackageName(CfgUtils.getControllerPackageName())
.build(), .build(),
// VIEW // VIEW
new OutputBuilder().setNameSuffix(CfgUtils.getViewNameSuffix()) new OutputBuilder().setNameSuffix(CfgUtils.getViewNameSuffix())
.setTemplatePath(CfgUtils.getViewTemplatePath()) .setTemplatePath(CfgUtils.getViewTemplatePath())
.setPackagePath(CfgUtils.getViewPackagePath()) .setPackagePath(CfgUtils.getViewPackagePath())
.setPackageName(CfgUtils.getViewPackageName())
.build(), .build(),
// FORM // FORM
new OutputBuilder().setNameSuffix(CfgUtils.getFormNameSuffix()) new OutputBuilder().setNameSuffix(CfgUtils.getFormNameSuffix())
.setTemplatePath(CfgUtils.getFormTemplatePath()) .setTemplatePath(CfgUtils.getFormTemplatePath())
.setPackagePath(CfgUtils.getFormPackagePath()) .setPackagePath(CfgUtils.getFormPackagePath())
.setPackageName(CfgUtils.getFormPackageName())
.build(), .build(),
// QUERY // QUERY
new OutputBuilder().setNameSuffix(CfgUtils.getQueryNameSuffix()) new OutputBuilder().setNameSuffix(CfgUtils.getQueryNameSuffix())
.setTemplatePath(CfgUtils.getQueryTemplatePath()) .setTemplatePath(CfgUtils.getQueryTemplatePath())
.setPackagePath(CfgUtils.getQueryPackagePath()) .setPackagePath(CfgUtils.getQueryPackagePath())
.setPackageName(CfgUtils.getQueryPackageName())
.build() .build()
); );
} }

@ -2,8 +2,6 @@ package space.caoshd.otone.builder;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import space.caoshd.otone.aware.ColumnCreateAware;
import space.caoshd.otone.aware.TableCreateAware;
import space.caoshd.otone.entity.ColumnInfo; import space.caoshd.otone.entity.ColumnInfo;
import space.caoshd.otone.entity.IndexInfo; import space.caoshd.otone.entity.IndexInfo;
import space.caoshd.otone.entity.TableInfo; import space.caoshd.otone.entity.TableInfo;
@ -24,7 +22,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
public class TableBuilder { public class TableBuilder {
private static final Logger LOGGER = LoggerFactory.getLogger(TableBuilder.class); private static final Logger LOGGER = LoggerFactory.getLogger(TableBuilder.class);
@ -33,19 +30,6 @@ public class TableBuilder {
private static final PropTools CONFIG = new PropTools(PathConsts.CONFIG_PROPERTIES_PATH); private static final PropTools CONFIG = new PropTools(PathConsts.CONFIG_PROPERTIES_PATH);
private final List<TableCreateAware> tableCreateAwares = new ArrayList<>();
private final List<ColumnCreateAware> columnCreateAwares = new ArrayList<>();
public TableBuilder addTableAddonAble(TableCreateAware tableCreateAware) {
this.tableCreateAwares.add(tableCreateAware);
return this;
}
public TableBuilder addColumnAddonAble(ColumnCreateAware columnCreateAware) {
this.columnCreateAwares.add(columnCreateAware);
return this;
}
public List<TableInfo> build() { public List<TableInfo> build() {
List<TableInfo> result = new ArrayList<>(); List<TableInfo> result = new ArrayList<>();
List<String> schemaNames = CONFIG.getStrings(CfgUtils.DATABASE_NAME_SCHEMAS); List<String> schemaNames = CONFIG.getStrings(CfgUtils.DATABASE_NAME_SCHEMAS);
@ -113,13 +97,14 @@ public class TableBuilder {
String tableNameWithoutPrefix = getTableNameWithoutPrefix(result.getTableName()); String tableNameWithoutPrefix = getTableNameWithoutPrefix(result.getTableName());
String beanName = StrUtils.toCamelCase(tableNameWithoutPrefix, true); String beanName = StrUtils.toCamelCase(tableNameWithoutPrefix, true);
result.setBeanName(beanName); result.setClassName(beanName);
List<ColumnInfo> columnInfo = loadColumnInfo(tableSchema, tableName); List<ColumnInfo> columnInfo = loadColumnInfo(tableSchema, tableName);
result.setColumnInfo(columnInfo); result.setColumns(columnInfo);
result.setDateExists(columnInfo.stream() result.setDateExists(columnInfo.stream()
.anyMatch(column -> TypeUtils.JAVA_TYPE_DATE.equals(column.getJavaDataType()))); .anyMatch(column -> TypeUtils.JAVA_TYPE_DATE.equals(column.getJavaDataType())));
result.setDecimalExists(columnInfo.stream() result.setDecimalExists(columnInfo.stream()
.anyMatch(column -> TypeUtils.JAVA_TYPE_DECIMAL.equals(column.getJavaDataType()))); .anyMatch(column -> TypeUtils.JAVA_TYPE_DECIMAL.equals(column.getJavaDataType())));
@ -141,22 +126,14 @@ public class TableBuilder {
indexColumnInfoList.add(columnInfoByColumnName); indexColumnInfoList.add(columnInfoByColumnName);
}); });
result.setIndexInfo(indexInfo); result.setIndexes(indexInfo);
for (TableCreateAware tableCreateAware : tableCreateAwares) {
tableCreateAware.addon(result, result.getAddonInfo());
}
LOGGER.debug(JsonUtils.toJson(result)); LOGGER.debug(JsonUtils.toJson(result));
return result; return result;
} }
private List<ColumnInfo> loadColumnInfo(String tableSchema, String tableName) { private List<ColumnInfo> loadColumnInfo(String tableSchema, String tableName) {
ColumnBuilder columnBuilder = new ColumnBuilder(tableSchema, tableName); return new ColumnBuilder(tableSchema, tableName).build();
for (ColumnCreateAware columnCreateAware : columnCreateAwares) {
columnBuilder.addColumnAddonAble(columnCreateAware);
}
return columnBuilder.build();
} }
private ColumnInfo getColumnInfoByColumnName( private ColumnInfo getColumnInfoByColumnName(

@ -1,11 +1,7 @@
package space.caoshd.otone.entity; package space.caoshd.otone.entity;
import java.util.HashMap;
import java.util.Map;
public class ColumnInfo { public class ColumnInfo {
private final Map<String, Object> addonInfo = new HashMap<>();
private String columnName; private String columnName;
private String propertyName; private String propertyName;
private String sqlDataType; private String sqlDataType;
@ -60,8 +56,4 @@ public class ColumnInfo {
public void setAutoIncrement(Boolean autoIncrement) { public void setAutoIncrement(Boolean autoIncrement) {
this.autoIncrement = autoIncrement; this.autoIncrement = autoIncrement;
} }
public Map<String, Object> getAddonInfo() {
return addonInfo;
}
} }

@ -8,9 +8,13 @@ public class OutputInfo {
private String templatePath; private String templatePath;
private String packageName;
private String packagePath; private String packagePath;
private String nameSuffix; private String nameSuffix = "";
private String namePrefix = "";
public List<TableInfo> getTableInfoList() { public List<TableInfo> getTableInfoList() {
return tableInfoList; return tableInfoList;
@ -28,6 +32,14 @@ public class OutputInfo {
this.templatePath = templatePath; this.templatePath = templatePath;
} }
public String getPackageName() {
return packageName;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public String getPackagePath() { public String getPackagePath() {
return packagePath; return packagePath;
} }
@ -44,4 +56,11 @@ public class OutputInfo {
this.nameSuffix = nameSuffix; this.nameSuffix = nameSuffix;
} }
public String getNamePrefix() {
return namePrefix;
}
public void setNamePrefix(String namePrefix) {
this.namePrefix = namePrefix;
}
} }

@ -8,15 +8,18 @@ import java.util.Map;
public class TableInfo { public class TableInfo {
private final Map<String, Object> addonInfo = new HashMap<>();
private String comment; private String comment;
private String tableSchema; private String tableSchema;
private String tableName; private String tableName;
private String beanName; private String packageName;
private String className;
private String classNameSuffix;
private String classNamePrefix;
private Boolean dateExists; private Boolean dateExists;
private Boolean decimalExists; private Boolean decimalExists;
private List<ColumnInfo> columnInfo = new ArrayList<>(); private List<ColumnInfo> columns = new ArrayList<>();
private Map<String, List<ColumnInfo>> indexInfo = new LinkedHashMap<>(); private Map<String, List<ColumnInfo>> indexes = new LinkedHashMap<>();
private Map<String, Object> extra = new HashMap<>();
public String getComment() { public String getComment() {
return comment; return comment;
@ -42,12 +45,36 @@ public class TableInfo {
this.tableName = tableName; this.tableName = tableName;
} }
public String getBeanName() { public String getPackageName() {
return beanName; return packageName;
} }
public void setBeanName(String beanName) { public void setPackageName(String packageName) {
this.beanName = beanName; this.packageName = packageName;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public String getClassNamePrefix() {
return classNamePrefix;
}
public void setClassNamePrefix(String classNamePrefix) {
this.classNamePrefix = classNamePrefix;
}
public String getClassNameSuffix() {
return classNameSuffix;
}
public void setClassNameSuffix(String classNameSuffix) {
this.classNameSuffix = classNameSuffix;
} }
public Boolean getDateExists() { public Boolean getDateExists() {
@ -66,23 +93,27 @@ public class TableInfo {
this.decimalExists = decimalExists; this.decimalExists = decimalExists;
} }
public List<ColumnInfo> getColumnInfo() { public List<ColumnInfo> getColumns() {
return columnInfo; return columns;
}
public void setColumns(List<ColumnInfo> columns) {
this.columns = columns;
} }
public void setColumnInfo(List<ColumnInfo> columnInfo) { public Map<String, List<ColumnInfo>> getIndexes() {
this.columnInfo = columnInfo; return indexes;
} }
public Map<String, List<ColumnInfo>> getIndexInfo() { public void setIndexes(Map<String, List<ColumnInfo>> indexes) {
return indexInfo; this.indexes = indexes;
} }
public void setIndexInfo(Map<String, List<ColumnInfo>> indexInfo) { public Map<String, Object> getExtra() {
this.indexInfo = indexInfo; return extra;
} }
public Map<String, Object> getAddonInfo() { public void setExtra(Map<String, Object> extra) {
return addonInfo; this.extra = extra;
} }
} }

@ -24,6 +24,7 @@ public class CfgUtils {
public static final String PACKAGE_NAME_PO = "package.name.po"; public static final String PACKAGE_NAME_PO = "package.name.po";
public static final String PACKAGE_NAME_MAPPER = "package.name.mapper"; public static final String PACKAGE_NAME_MAPPER = "package.name.mapper";
public static final String PACKAGE_NAME_SERVICE = "package.name.service"; public static final String PACKAGE_NAME_SERVICE = "package.name.service";
public static final String PACKAGE_NAME_SERVICE_INTERFACE = "package.name.service.interface";
public static final String PACKAGE_NAME_CONTROLLER = "package.name.controller"; public static final String PACKAGE_NAME_CONTROLLER = "package.name.controller";
public static final String PACKAGE_NAME_QUERY = "package.name.query"; public static final String PACKAGE_NAME_QUERY = "package.name.query";
public static final String PACKAGE_NAME_FORM = "package.name.form"; public static final String PACKAGE_NAME_FORM = "package.name.form";
@ -44,6 +45,8 @@ public class CfgUtils {
public static final String JAVA_NAME_SUFFIX_FORM = "java.name.suffix.form"; public static final String JAVA_NAME_SUFFIX_FORM = "java.name.suffix.form";
public static final String JAVA_NAME_SUFFIX_VIEW = "java.name.suffix.view"; public static final String JAVA_NAME_SUFFIX_VIEW = "java.name.suffix.view";
public static final String JAVA_NAME_SUFFIX_CONTROLLER = "java.name.suffix.controller"; public static final String JAVA_NAME_SUFFIX_CONTROLLER = "java.name.suffix.controller";
public static final String JAVA_NAME_PREFIX_SERVICE_INTERFACE = "java.name.prefix.service"
+ ".interface";
// 模版路径配置 // 模版路径配置
public static final String TEMPLATE_PATH_PO = "template.path.po"; public static final String TEMPLATE_PATH_PO = "template.path.po";
@ -52,9 +55,9 @@ public class CfgUtils {
public static final String TEMPLATE_PATH_QUERY = "template.path.query"; public static final String TEMPLATE_PATH_QUERY = "template.path.query";
public static final String TEMPLATE_PATH_CONTROLLER = "template.path.controller"; public static final String TEMPLATE_PATH_CONTROLLER = "template.path.controller";
public static final String TEMPLATE_PATH_SERVICE = "template.path.service"; public static final String TEMPLATE_PATH_SERVICE = "template.path.service";
public static final String TEMPLATE_PATH_SERVICE_INTERFACE = "template.path.service_interface"; public static final String TEMPLATE_PATH_SERVICE_INTERFACE = "template.path.service.interface";
public static final String TEMPLATE_PATH_MAPPER = "template.path.mapper"; public static final String TEMPLATE_PATH_MAPPER = "template.path.mapper";
public static final String TEMPLATE_PATH_MAPPER_XML = "template.path.mapper_xml"; public static final String TEMPLATE_PATH_MAPPER_XML = "template.path.mapper.xml";
// 常量配置 // 常量配置
public static final String VALUE_TABLE = "table"; public static final String VALUE_TABLE = "table";
@ -66,7 +69,8 @@ public class CfgUtils {
// 包名默认值配置 // 包名默认值配置
public static final String DEFAULT_PACKAGE_NAME_PO = "repository.po"; public static final String DEFAULT_PACKAGE_NAME_PO = "repository.po";
public static final String DEFAULT_PACKAGE_NAME_MAPPER = "repository.mapper"; public static final String DEFAULT_PACKAGE_NAME_MAPPER = "repository.mapper";
public static final String DEFAULT_PACKAGE_NAME_SERVICE = "service"; public static final String DEFAULT_PACKAGE_NAME_SERVICE_INTERFACE = "service";
public static final String DEFAULT_PACKAGE_NAME_SERVICE = "service.impl";
public static final String DEFAULT_PACKAGE_NAME_QUERY = "controller.query"; public static final String DEFAULT_PACKAGE_NAME_QUERY = "controller.query";
public static final String DEFAULT_PACKAGE_NAME_FORM = "controller.form"; public static final String DEFAULT_PACKAGE_NAME_FORM = "controller.form";
public static final String DEFAULT_PACKAGE_NAME_VIEW = "controller.view"; public static final String DEFAULT_PACKAGE_NAME_VIEW = "controller.view";
@ -85,6 +89,7 @@ public class CfgUtils {
public static final String DEFAULT_JAVA_NAME_SUFFIX_FORM = "Form"; public static final String DEFAULT_JAVA_NAME_SUFFIX_FORM = "Form";
public static final String DEFAULT_JAVA_NAME_SUFFIX_VIEW = "View"; public static final String DEFAULT_JAVA_NAME_SUFFIX_VIEW = "View";
public static final String DEFAULT_JAVA_NAME_SUFFIX_CONTROLLER = "Controller"; public static final String DEFAULT_JAVA_NAME_SUFFIX_CONTROLLER = "Controller";
public static final String DEFAULT_JAVA_NAME_PREFIX_SERVICE_INTERFACE = "I";
// 模板文件路径默认值配置 // 模板文件路径默认值配置
public static final String DEFAULT_TEMPLATE_PATH_PO = "template/po.vm"; public static final String DEFAULT_TEMPLATE_PATH_PO = "template/po.vm";
@ -93,7 +98,8 @@ public class CfgUtils {
public static final String DEFAULT_TEMPLATE_PATH_QUERY = "template/query.vm"; public static final String DEFAULT_TEMPLATE_PATH_QUERY = "template/query.vm";
public static final String DEFAULT_TEMPLATE_PATH_CONTROLLER = "template/controller.vm"; public static final String DEFAULT_TEMPLATE_PATH_CONTROLLER = "template/controller.vm";
public static final String DEFAULT_TEMPLATE_PATH_SERVICE = "template/service.vm"; public static final String DEFAULT_TEMPLATE_PATH_SERVICE = "template/service.vm";
public static final String DEFAULT_TEMPLATE_PATH_SERVICE_INTERFACE = "service.interface/po.vm"; public static final String DEFAULT_TEMPLATE_PATH_SERVICE_INTERFACE = "template/service"
+ ".interface.vm";
public static final String DEFAULT_TEMPLATE_PATH_MAPPER = "template/mapper.vm"; public static final String DEFAULT_TEMPLATE_PATH_MAPPER = "template/mapper.vm";
public static final String DEFAULT_TEMPLATE_PATH_MAPPER_XML = "template/mapper.xml.vm"; public static final String DEFAULT_TEMPLATE_PATH_MAPPER_XML = "template/mapper.xml.vm";
private static final PropTools CONFIG = new PropTools(PathConsts.CONFIG_PROPERTIES_PATH); private static final PropTools CONFIG = new PropTools(PathConsts.CONFIG_PROPERTIES_PATH);
@ -112,14 +118,14 @@ public class CfgUtils {
public static String getProjectPath(String moduleName) { public static String getProjectPath(String moduleName) {
String projectBasePath = getProjectBasePath(); String projectBasePath = getProjectBasePath();
if (!isMultiModule()) { if (!isMultipleModule()) {
return projectBasePath; return projectBasePath;
} else { } else {
return projectBasePath + "/" + getProjectName() + "-" + moduleName; return projectBasePath + "/" + getProjectName() + "-" + moduleName;
} }
} }
public static boolean isMultiModule() { public static boolean isMultipleModule() {
return CONFIG.getBoolean(MODULE_MULTIPLE); return CONFIG.getBoolean(MODULE_MULTIPLE);
} }
@ -127,212 +133,271 @@ public class CfgUtils {
return CONFIG.getBoolean(MODULE_NAME_AS_PACKAGE_BASE); return CONFIG.getBoolean(MODULE_NAME_AS_PACKAGE_BASE);
} }
public static String getJavaPath(String moduleName) { public static String getMainJavaPath(String moduleName) {
String projectPath = getProjectPath(moduleName); String projectPath = getProjectPath(moduleName);
String projectPathJava = CONFIG.getString(PROJECT_PATH_JAVA, DEFAULT_PROJECT_PATH_JAVA); String projectPathJava = CONFIG.getString(PROJECT_PATH_JAVA, DEFAULT_PROJECT_PATH_JAVA);
return Paths.get(projectPath, projectPathJava).toString(); return Paths.get(projectPath, projectPathJava).toString();
} }
private static String packageToPath(String packageName) { private static String packageNameToPath(String packageName) {
return packageName.replaceAll("\\.", "/"); return packageName.replaceAll("\\.", "/");
} }
public static String getPackageBasePath(String moduleName) { public static String getPackageName(String moduleName, String packageName) {
String javaPath = getJavaPath(moduleName); String packageNameBase = CONFIG.getString(PACKAGE_NAME_BASE);
String packageName = CONFIG.getString(PACKAGE_NAME_BASE);
String packagePath = packageToPath(packageName);
if (moduleNameAsPackageBase()) { if (moduleNameAsPackageBase()) {
return Paths.get(javaPath, packagePath, moduleName).toString(); return packageNameBase + "." + moduleName + "." + packageName;
} else { } else {
return Paths.get(javaPath, packagePath).toString(); return packageNameBase + "." + packageName;
} }
} }
public static String getPathBasedPackage( public static String getPackagePath(String moduleName, String packageName) {
String moduleName, String configName String javaPath = getMainJavaPath(moduleName);
) { String packagePath = packageNameToPath(packageName);
String basePath = getPackageBasePath(moduleName); return Paths.get(javaPath, packagePath).toString();
String packagePath = packageToPath(configName);
return Paths.get(basePath, packagePath).toString();
} }
public static String getRepositoryModuleName() { public static String getJavaFilename(String className, String nameSuffix, String prefix) {
return CONFIG.getString(MODULE_NAME_REPOSITORY, DEFAULT_MODULE_NAME_REPOSITORY); return prefix + className + nameSuffix + JAVA_FILE_SUFFIX;
} }
public static String getServiceModuleName() { public static String getJavaFilename(String className, String nameSuffix) {
return CONFIG.getString(MODULE_NAME_SERVICE, DEFAULT_MODULE_NAME_SERVICE); return getJavaFilename(className, nameSuffix, "");
}
public static String getJavaFilePath(
String packagePath, String className, String nameSuffix, String namePrefix
) {
String filename = CfgUtils.getJavaFilename(className, nameSuffix, namePrefix);
return Paths.get(packagePath, filename).toString();
} }
public static String getControllerModuleName() { public static String getControllerModuleName() {
return CONFIG.getString(MODULE_NAME_CONTROLLER, DEFAULT_MODULE_NAME_CONTROLLER); return CONFIG.getString(MODULE_NAME_CONTROLLER, DEFAULT_MODULE_NAME_CONTROLLER);
} }
public static String getServicePackagePath() { public static String getControllerNameSuffix() {
return CONFIG.getString(JAVA_NAME_SUFFIX_CONTROLLER, DEFAULT_JAVA_NAME_SUFFIX_CONTROLLER);
}
public static String getControllerTemplatePath() {
return CONFIG.getString(TEMPLATE_PATH_CONTROLLER, DEFAULT_TEMPLATE_PATH_CONTROLLER);
}
public static String getControllerPackageName() {
String moduleName = getServiceModuleName(); String moduleName = getServiceModuleName();
String configName = CONFIG.getString(PACKAGE_NAME_SERVICE, DEFAULT_PACKAGE_NAME_MAPPER); String packageName = CONFIG.getString(
return getPathBasedPackage(moduleName, configName); PACKAGE_NAME_CONTROLLER,
DEFAULT_PACKAGE_NAME_CONTROLLER
);
return getPackageName(moduleName, packageName);
} }
public static String getControllerPackagePath() { public static String getControllerPackagePath() {
String moduleName = getControllerModuleName(); String moduleName = getControllerModuleName();
String configName = CONFIG.getString(PACKAGE_NAME_CONTROLLER, String packageName = getControllerPackageName();
DEFAULT_PACKAGE_NAME_CONTROLLER return getPackagePath(moduleName, packageName);
}
public static String getControllerFilePath(String className) {
String controllerPackagePath = getControllerPackagePath();
String suffix = CONFIG.getString(
JAVA_NAME_SUFFIX_CONTROLLER,
DEFAULT_JAVA_NAME_SUFFIX_CONTROLLER
); );
return getPathBasedPackage(moduleName, configName); String filename = getJavaFilename(className, suffix);
return Paths.get(controllerPackagePath, filename).toString();
} }
public static String getViewPackagePath() { public static String getViewNameSuffix() {
String moduleName = getControllerModuleName(); return CONFIG.getString(JAVA_NAME_SUFFIX_VIEW, DEFAULT_JAVA_NAME_SUFFIX_VIEW);
String configName = CONFIG.getString(PACKAGE_NAME_VIEW, DEFAULT_PACKAGE_NAME_VIEW);
return getPathBasedPackage(moduleName, configName);
} }
public static String getFormPackagePath() { public static String getViewTemplatePath() {
String moduleName = getControllerModuleName(); return CONFIG.getString(TEMPLATE_PATH_VIEW, DEFAULT_TEMPLATE_PATH_VIEW);
String configName = CONFIG.getString(PACKAGE_NAME_FORM, DEFAULT_PACKAGE_NAME_FORM);
return getPathBasedPackage(moduleName, configName);
} }
public static String getQueryPackagePath() { public static String getViewPackageName() {
String moduleName = getControllerModuleName(); String moduleName = getControllerModuleName();
String configName = CONFIG.getString(PACKAGE_NAME_QUERY, DEFAULT_PACKAGE_NAME_QUERY); String packageName = CONFIG.getString(PACKAGE_NAME_VIEW, DEFAULT_PACKAGE_NAME_VIEW);
return getPathBasedPackage(moduleName, configName); return getPackageName(moduleName, packageName);
} }
public static String getPoPackagePath() { public static String getViewPackagePath() {
String moduleName = getRepositoryModuleName(); String moduleName = getControllerModuleName();
String configName = CONFIG.getString(PACKAGE_NAME_PO, DEFAULT_PACKAGE_NAME_PO); String packageName = getViewPackageName();
return getPathBasedPackage(moduleName, configName); return getPackagePath(moduleName, packageName);
} }
public static String getMapperPackagePath() { public static String getViewFilePath(String className) {
String moduleName = getRepositoryModuleName(); String viewPackagePath = getViewPackagePath();
String configName = CONFIG.getString(PACKAGE_NAME_MAPPER, DEFAULT_PACKAGE_NAME_MAPPER); String suffix = CONFIG.getString(JAVA_NAME_SUFFIX_VIEW, DEFAULT_JAVA_NAME_SUFFIX_VIEW);
return getPathBasedPackage(moduleName, configName); String filename = getJavaFilename(className, suffix);
return Paths.get(viewPackagePath, filename).toString();
} }
private static String getFilename(String className, String suffix) { public static String getFormNameSuffix() {
return className + suffix + JAVA_FILE_SUFFIX; return CONFIG.getString(JAVA_NAME_SUFFIX_FORM, DEFAULT_JAVA_NAME_SUFFIX_FORM);
} }
public static String getPoJavaPath(String className) { public static String getFormTemplatePath() {
String poPackagePath = getPoPackagePath(); return CONFIG.getString(TEMPLATE_PATH_FORM, DEFAULT_TEMPLATE_PATH_FORM);
String suffix = CONFIG.getString(JAVA_NAME_SUFFIX_PO, DEFAULT_JAVA_NAME_SUFFIX_PO);
String filename = getFilename(className, suffix);
return Paths.get(poPackagePath, filename).toString();
} }
public static String getMapperJavaPath(String className) { public static String getFormPackageName() {
String mapperPackagePath = getMapperPackagePath(); String moduleName = getControllerModuleName();
String suffix = CONFIG.getString(JAVA_NAME_SUFFIX_MAPPER, DEFAULT_JAVA_NAME_SUFFIX_MAPPER); String packageName = CONFIG.getString(PACKAGE_NAME_FORM, DEFAULT_PACKAGE_NAME_FORM);
return getPackageName(moduleName, packageName);
String filename = getFilename(className, suffix);
return Paths.get(mapperPackagePath, filename).toString();
} }
public static String getServiceJavaPath(String className) { public static String getFormPackagePath() {
String servicePackagePath = getServicePackagePath(); String moduleName = getControllerModuleName();
String suffix = CONFIG.getString(JAVA_NAME_SUFFIX_SERVICE, String packageName = getFormPackageName();
DEFAULT_JAVA_NAME_SUFFIX_SERVICE return getPackagePath(moduleName, packageName);
);
String filename = getFilename(className, suffix);
return Paths.get(servicePackagePath, filename).toString();
} }
public static String getFormFilePath(String className) {
String formPackagePath = getFormPackagePath();
String suffix = CONFIG.getString(JAVA_NAME_SUFFIX_FORM, DEFAULT_JAVA_NAME_SUFFIX_FORM);
String filename = getJavaFilename(className, suffix);
return Paths.get(formPackagePath, filename).toString();
}
public static String getControllerJavaPath(String className) { public static String getQueryNameSuffix() {
String controllerPackagePath = getControllerPackagePath(); return CONFIG.getString(JAVA_NAME_SUFFIX_QUERY, DEFAULT_JAVA_NAME_SUFFIX_QUERY);
String suffix = CONFIG.getString(JAVA_NAME_SUFFIX_CONTROLLER,
DEFAULT_JAVA_NAME_SUFFIX_CONTROLLER
);
String filename = getFilename(className, suffix);
return Paths.get(controllerPackagePath, filename).toString();
} }
public static String getQueryTemplatePath() {
return CONFIG.getString(TEMPLATE_PATH_QUERY, DEFAULT_TEMPLATE_PATH_QUERY);
}
public static String getFormJavaPath(String className) { public static String getQueryPackageName() {
String formPackagePath = getFormPackagePath(); String moduleName = getControllerModuleName();
String suffix = CONFIG.getString(JAVA_NAME_SUFFIX_CONTROLLER, String configName = CONFIG.getString(PACKAGE_NAME_QUERY, DEFAULT_PACKAGE_NAME_QUERY);
DEFAULT_JAVA_NAME_SUFFIX_CONTROLLER return getPackageName(moduleName, configName);
);
String filename = getFilename(className, suffix);
return Paths.get(formPackagePath, filename).toString();
} }
public static String getQueryPackagePath() {
String moduleName = getControllerModuleName();
String configName = getQueryPackageName();
return getPackagePath(moduleName, configName);
}
public static String getQueryJavaPath(String className) { public static String getQueryFilePath(String className) {
String basePath = getQueryPackagePath(); String basePath = getQueryPackagePath();
String suffix = CONFIG.getString(JAVA_NAME_SUFFIX_QUERY, DEFAULT_JAVA_NAME_SUFFIX_QUERY); String suffix = CONFIG.getString(JAVA_NAME_SUFFIX_QUERY, DEFAULT_JAVA_NAME_SUFFIX_QUERY);
String filename = getFilename(className, suffix); String filename = getJavaFilename(className, suffix);
return Paths.get(basePath, filename).toString(); return Paths.get(basePath, filename).toString();
} }
public static String getViewJavaPath(String className) { public static String getServiceModuleName() {
String viewPackagePath = getViewPackagePath(); return CONFIG.getString(MODULE_NAME_SERVICE, DEFAULT_MODULE_NAME_SERVICE);
String suffix = CONFIG.getString(JAVA_NAME_SUFFIX_VIEW, DEFAULT_JAVA_NAME_SUFFIX_VIEW);
String filename = getFilename(className, suffix);
return Paths.get(viewPackagePath, filename).toString();
} }
public static String getViewNameSuffix() { public static String getServiceNameSuffix() {
return CONFIG.getString(JAVA_NAME_SUFFIX_VIEW, DEFAULT_JAVA_NAME_SUFFIX_VIEW); return CONFIG.getString(JAVA_NAME_SUFFIX_SERVICE, DEFAULT_JAVA_NAME_SUFFIX_SERVICE);
} }
public static String getPoNameSuffix() { public static String getServiceTemplatePath() {
return CONFIG.getString(JAVA_NAME_SUFFIX_PO, DEFAULT_JAVA_NAME_SUFFIX_PO); return CONFIG.getString(TEMPLATE_PATH_SERVICE, DEFAULT_TEMPLATE_PATH_SERVICE);
} }
public static String getQueryNameSuffix() { public static String getServicePackageName() {
return CONFIG.getString(JAVA_NAME_SUFFIX_QUERY, DEFAULT_JAVA_NAME_SUFFIX_QUERY); String moduleName = getServiceModuleName();
String packageName = CONFIG.getString(PACKAGE_NAME_SERVICE, DEFAULT_PACKAGE_NAME_SERVICE);
return getPackageName(moduleName, packageName);
} }
public static String getFormNameSuffix() { public static String getServicePackagePath() {
return CONFIG.getString(JAVA_NAME_SUFFIX_FORM, DEFAULT_JAVA_NAME_SUFFIX_FORM); String moduleName = getServiceModuleName();
String packageName = getServicePackageName();
return getPackagePath(moduleName, packageName);
} }
public static String getControllerNameSuffix() { public static String getServiceFilePath(String className) {
return CONFIG.getString(JAVA_NAME_SUFFIX_CONTROLLER, DEFAULT_JAVA_NAME_SUFFIX_CONTROLLER); String servicePackagePath = getServicePackagePath();
String suffix = CONFIG.getString(
JAVA_NAME_SUFFIX_SERVICE,
DEFAULT_JAVA_NAME_SUFFIX_SERVICE
);
String filename = getJavaFilename(className, suffix);
return Paths.get(servicePackagePath, filename).toString();
} }
public static String getServiceNameSuffix() {
return CONFIG.getString(JAVA_NAME_SUFFIX_SERVICE, DEFAULT_JAVA_NAME_SUFFIX_SERVICE); public static String getServiceInterfacePrefix() {
return CONFIG.getString(
JAVA_NAME_PREFIX_SERVICE_INTERFACE,
DEFAULT_JAVA_NAME_PREFIX_SERVICE_INTERFACE
);
} }
public static String getMapperNameSuffix() { public static String getServiceInterfaceTemplatePath() {
return CONFIG.getString(JAVA_NAME_SUFFIX_MAPPER, DEFAULT_JAVA_NAME_SUFFIX_MAPPER); return CONFIG.getString(
TEMPLATE_PATH_SERVICE_INTERFACE,
DEFAULT_TEMPLATE_PATH_SERVICE_INTERFACE
);
} }
public static String getPoTemplatePath() { public static String getServiceInterfacePackageName() {
return CONFIG.getString(TEMPLATE_PATH_PO, DEFAULT_TEMPLATE_PATH_PO); String moduleName = getServiceModuleName();
String packageName = CONFIG.getString(
PACKAGE_NAME_SERVICE_INTERFACE,
DEFAULT_PACKAGE_NAME_SERVICE_INTERFACE
);
return getPackageName(moduleName, packageName);
} }
public static String getViewTemplatePath() { public static String getServiceInterfacePackagePath() {
return CONFIG.getString(TEMPLATE_PATH_VIEW, DEFAULT_TEMPLATE_PATH_VIEW); String moduleName = getServiceModuleName();
String packageName = getServiceInterfacePackageName();
return getPackagePath(moduleName, packageName);
} }
public static String getServiceInterfaceFilePath(String className) {
String servicePackagePath = getServicePackagePath();
String prefix = CONFIG.getString(
JAVA_NAME_PREFIX_SERVICE_INTERFACE,
DEFAULT_JAVA_NAME_PREFIX_SERVICE_INTERFACE
);
String filename = getJavaFilename(className, "", prefix);
return Paths.get(servicePackagePath, filename).toString();
}
public static String getFormTemplatePath() { public static String getRepositoryModuleName() {
return CONFIG.getString(TEMPLATE_PATH_FORM, DEFAULT_TEMPLATE_PATH_FORM); return CONFIG.getString(MODULE_NAME_REPOSITORY, DEFAULT_MODULE_NAME_REPOSITORY);
} }
public static String getPoNameSuffix() {
return CONFIG.getString(JAVA_NAME_SUFFIX_PO, DEFAULT_JAVA_NAME_SUFFIX_PO);
}
public static String getQueryTemplatePath() { public static String getPoTemplatePath() {
return CONFIG.getString(TEMPLATE_PATH_QUERY, DEFAULT_TEMPLATE_PATH_QUERY); return CONFIG.getString(TEMPLATE_PATH_PO, DEFAULT_TEMPLATE_PATH_PO);
} }
public static String getControllerTemplatePath() { public static String getPoPackageName() {
return CONFIG.getString(TEMPLATE_PATH_CONTROLLER, DEFAULT_TEMPLATE_PATH_CONTROLLER); String moduleName = getRepositoryModuleName();
String packageName = CONFIG.getString(PACKAGE_NAME_PO, DEFAULT_PACKAGE_NAME_PO);
return getPackageName(moduleName, packageName);
} }
public static String getServiceTemplatePath() { public static String getPoPackagePath() {
return CONFIG.getString(TEMPLATE_PATH_SERVICE, DEFAULT_TEMPLATE_PATH_SERVICE); String moduleName = getRepositoryModuleName();
String packageName = getPoPackageName();
return getPackagePath(moduleName, packageName);
} }
public static String getServiceInterfaceTemplatePath() { public static String getPoJavaPath(String className) {
return CONFIG.getString(TEMPLATE_PATH_SERVICE_INTERFACE, String poPackagePath = getPoPackagePath();
DEFAULT_TEMPLATE_PATH_SERVICE_INTERFACE String suffix = CONFIG.getString(JAVA_NAME_SUFFIX_PO, DEFAULT_JAVA_NAME_SUFFIX_PO);
); String filename = getJavaFilename(className, suffix);
return Paths.get(poPackagePath, filename).toString();
}
public static String getMapperNameSuffix() {
return CONFIG.getString(JAVA_NAME_SUFFIX_MAPPER, DEFAULT_JAVA_NAME_SUFFIX_MAPPER);
} }
public static String getMapperTemplatePath() { public static String getMapperTemplatePath() {
@ -343,15 +408,24 @@ public class CfgUtils {
return CONFIG.getString(TEMPLATE_PATH_MAPPER_XML, DEFAULT_TEMPLATE_PATH_MAPPER_XML); return CONFIG.getString(TEMPLATE_PATH_MAPPER_XML, DEFAULT_TEMPLATE_PATH_MAPPER_XML);
} }
public static String getMapperPackageName() {
public static String getOutputFilename(String beanName, String nameSuffix) { String moduleName = getRepositoryModuleName();
return beanName + nameSuffix + JAVA_FILE_SUFFIX; String packageName = CONFIG.getString(PACKAGE_NAME_MAPPER, DEFAULT_PACKAGE_NAME_MAPPER);
return getPackageName(moduleName, packageName);
} }
public static String getOutputPath(String packagePath, String beanName, String nameSuffix) { public static String getMapperPackagePath() {
String filename = CfgUtils.getOutputFilename(beanName, nameSuffix); String moduleName = getRepositoryModuleName();
return Paths.get(packagePath, filename).toString(); String packageName = getMapperPackageName();
return getPackagePath(moduleName, packageName);
} }
public static String getMapperFilePath(String className) {
String mapperPackagePath = getMapperPackagePath();
String suffix = CONFIG.getString(JAVA_NAME_SUFFIX_MAPPER, DEFAULT_JAVA_NAME_SUFFIX_MAPPER);
String filename = getJavaFilename(className, suffix);
return Paths.get(mapperPackagePath, filename).toString();
}
} }

@ -3,6 +3,9 @@ package space.caoshd.otone.util;
import org.apache.velocity.Template; import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext; import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity; import org.apache.velocity.app.Velocity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import space.caoshd.otone.builder.TableBuilder;
import space.caoshd.otone.tool.PropTools; import space.caoshd.otone.tool.PropTools;
import java.io.FileWriter; import java.io.FileWriter;
@ -12,6 +15,8 @@ import java.util.Properties;
public class VelocityUtils { public class VelocityUtils {
private static final Logger LOGGER = LoggerFactory.getLogger(TableBuilder.class);
public static void render( public static void render(
String beanName, Object bean, String templatePath, String outputPath String beanName, Object bean, String templatePath, String outputPath
) { ) {
@ -20,10 +25,12 @@ public class VelocityUtils {
Velocity.init(properties); Velocity.init(properties);
VelocityContext context = new VelocityContext(); VelocityContext context = new VelocityContext();
context.put(beanName, bean); context.put("context", bean);
Template template = Velocity.getTemplate(templatePath, StandardCharsets.UTF_8.name()); Template template = Velocity.getTemplate(templatePath, StandardCharsets.UTF_8.name());
try (FileWriter fw = new FileWriter(outputPath)) { try (FileWriter fw = new FileWriter(outputPath)) {
LOGGER.info("generate file: {}", outputPath);
LOGGER.info("context info: {}", JsonUtils.toJson(bean));
template.merge(context, fw); template.merge(context, fw);
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);

@ -1,10 +1,11 @@
package space.caoshd.otone.builder; package space.caoshd.otone.builder;
import org.junit.jupiter.api.Test;
class ColumnBuilderTest { import org.junit.Test;
public class ColumnBuilderTest {
@Test @Test
void loadColumnInfo() { public void loadColumnInfo() {
} }
} }

@ -1,16 +1,18 @@
package space.caoshd.otone.builder; package space.caoshd.otone.builder;
import org.junit.jupiter.api.Test; import org.junit.Test;
import space.caoshd.otone.tool.PropTools; import space.caoshd.otone.tool.PropTools;
import space.caoshd.otone.util.PathConsts; import space.caoshd.otone.util.PathConsts;
class SourceBuilderTest { public class SourceBuilderTest {
private static final PropTools CONFIG = new PropTools(PathConsts.MYSQL_PROPERTIES_PATH); private static final PropTools CONFIG = new PropTools(PathConsts.MYSQL_PROPERTIES_PATH);
@Test @Test
void build() { public void build() {
new SourceBuilder().build(); new SourceBuilder()
.addExtra("author", "caoshd")
.build();
} }
} }

@ -1,18 +1,14 @@
package space.caoshd.otone.builder; package space.caoshd.otone.builder;
import org.junit.jupiter.api.Test; import org.junit.Test;
import space.caoshd.otone.entity.TableInfo; import space.caoshd.otone.entity.TableInfo;
import java.util.List; import java.util.List;
class TableBuilderTest { public class TableBuilderTest {
@Test @Test
void loadTableInfo() { public void loadTableInfo() {
List<TableInfo> tableInfoList = new TableBuilder().addTableAddonAble(( List<TableInfo> tableInfoList = new TableBuilder().build();
tableInfo, addonInfo
) -> addonInfo.put("author", "caoshd"))
.addColumnAddonAble((columnInfo, addonInfo) -> System.out.println(addonInfo))
.build();
} }
} }

@ -1,29 +1,30 @@
package space.caoshd.otone.tool; package space.caoshd.otone.tool;
import org.junit.jupiter.api.Assertions; import org.junit.Assert;
import org.junit.jupiter.api.Test; import org.junit.Test;
import space.caoshd.otone.util.CfgUtils; import space.caoshd.otone.util.CfgUtils;
import space.caoshd.otone.util.PathConsts; import space.caoshd.otone.util.PathConsts;
import space.caoshd.otone.util.ResUtils; import space.caoshd.otone.util.ResUtils;
import java.io.*; import java.io.InputStream;
import java.util.List; import java.util.List;
class PropToolsTest { public class PropToolsTest {
@Test @Test
void loadProperties() { public void loadProperties() {
InputStream fileStream = ResUtils.getClassPathFileStream(PathConsts.DATASOURCE_PROPERTIES_PATH); InputStream fileStream =
ResUtils.getClassPathFileStream(PathConsts.DATASOURCE_PROPERTIES_PATH);
PropTools propTools = new PropTools(fileStream); PropTools propTools = new PropTools(fileStream);
Assertions.assertNotNull(propTools); Assert.assertNotNull(propTools);
} }
@Test @Test
void getString() { public void getString() {
} }
@Test @Test
void getStrings() { public void getStrings() {
InputStream fileStream = ResUtils.getClassPathFileStream(PathConsts.CONFIG_PROPERTIES_PATH); InputStream fileStream = ResUtils.getClassPathFileStream(PathConsts.CONFIG_PROPERTIES_PATH);
PropTools configProperties = new PropTools(fileStream); PropTools configProperties = new PropTools(fileStream);
List<String> strings = configProperties.getStrings(CfgUtils.DATABASE_TABLE_PREFIXES); List<String> strings = configProperties.getStrings(CfgUtils.DATABASE_TABLE_PREFIXES);
@ -31,10 +32,10 @@ class PropToolsTest {
} }
@Test @Test
void getInt() { public void getInt() {
} }
@Test @Test
void getLong() { public void getLong() {
} }
} }

@ -1,41 +1,42 @@
package space.caoshd.otone.util; package space.caoshd.otone.util;
import org.junit.jupiter.api.Test;
import org.junit.Test;
public class CfgUtilsTest { public class CfgUtilsTest {
@Test @Test
void getProjectPath() { public void getProjectPath() {
String projectPath = CfgUtils.getProjectBasePath(); String projectPath = CfgUtils.getProjectBasePath();
System.out.println(projectPath); System.out.println(projectPath);
} }
@Test @Test
void getProjectName() { public void getProjectName() {
String projectName = CfgUtils.getProjectName(); String projectName = CfgUtils.getProjectName();
System.out.println(projectName); System.out.println(projectName);
} }
@Test @Test
void getJavaPath() { public void getJavaPath() {
String javaPath = CfgUtils.getJavaPath("data"); String javaPath = CfgUtils.getMainJavaPath("data");
System.out.println(javaPath); System.out.println(javaPath);
} }
@Test @Test
void getPackagePath() { public void getPackagePath() {
String packagePath = CfgUtils.getPackageBasePath("service"); String packagePath = CfgUtils.getPackagePath("service", "aaa");
System.out.println(packagePath); System.out.println(packagePath);
} }
@Test @Test
void getRepositoryModuleName() { public void getRepositoryModuleName() {
String repositoryModuleName = CfgUtils.getRepositoryModuleName(); String repositoryModuleName = CfgUtils.getRepositoryModuleName();
System.out.println(repositoryModuleName); System.out.println(repositoryModuleName);
} }
@Test @Test
void getRepositoryPackageName() { public void getRepositoryPackageName() {
String poPackagePath = CfgUtils.getPoPackagePath(); String poPackagePath = CfgUtils.getPoPackagePath();
System.out.println(poPackagePath); System.out.println(poPackagePath);
@ -44,7 +45,7 @@ public class CfgUtilsTest {
} }
@Test @Test
void getViewNameSuffix() { public void getViewNameSuffix() {
String viewNameSuffix = CfgUtils.getViewNameSuffix(); String viewNameSuffix = CfgUtils.getViewNameSuffix();
System.out.println(viewNameSuffix); System.out.println(viewNameSuffix);
} }

@ -1,17 +1,17 @@
package space.caoshd.otone.util; package space.caoshd.otone.util;
import org.junit.jupiter.api.Assertions; import org.junit.Assert;
import org.junit.jupiter.api.Test; import org.junit.Test;
import space.caoshd.otone.tool.PropTools; import space.caoshd.otone.tool.PropTools;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
class DBUtilsTest { public class DBUtilsTest {
@Test @Test
void executeQuery() { public void executeQuery() {
PropTools sqlProperties = new PropTools(PathConsts.MYSQL_PROPERTIES_PATH); PropTools sqlProperties = new PropTools(PathConsts.MYSQL_PROPERTIES_PATH);
String sql = sqlProperties.getString(SqlConsts.TABLE_SQL_SCHEMA_TABLE); String sql = sqlProperties.getString(SqlConsts.TABLE_SQL_SCHEMA_TABLE);
PropTools configProperties = PropTools configProperties =
@ -20,6 +20,6 @@ class DBUtilsTest {
List<String> tables = configProperties.getStrings(CfgUtils.DATABASE_NAME_TABLES); List<String> tables = configProperties.getStrings(CfgUtils.DATABASE_NAME_TABLES);
List<Object> params = Arrays.asList(schemas.get(0), tables.get(0)); List<Object> params = Arrays.asList(schemas.get(0), tables.get(0));
List<Map<String, String>> maps = DBUtils.list(sql, params); List<Map<String, String>> maps = DBUtils.list(sql, params);
Assertions.assertFalse(maps.isEmpty()); Assert.assertFalse(maps.isEmpty());
} }
} }

@ -1,18 +1,18 @@
package space.caoshd.otone.util; package space.caoshd.otone.util;
import org.junit.jupiter.api.Test; import org.junit.Test;
import java.io.File; import java.io.File;
class ResUtilsTest { public class ResUtilsTest {
@Test @Test
void getClassPathFile() { public void getClassPathFile() {
File file = ResUtils.getClassPathFile("datasource.properties"); File file = ResUtils.getClassPathFile("datasource.properties");
System.out.println(file); System.out.println(file);
} }
@Test @Test
void getClassPathFileStream() { public void getClassPathFileStream() {
} }
} }

@ -1,27 +1,30 @@
package space.caoshd.otone.util; package space.caoshd.otone.util;
import org.junit.jupiter.api.Test;
class StrUtilsTest { import org.junit.Test;
public class StrUtilsTest {
@Test @Test
void last() { public void last() {
} }
@Test @Test
void first() { public void first() {
} }
@Test @Test
void removePrefix(){ public void removePrefix() {
String username = StrUtils.removePrefix("t_user_name", "t_"); String username = StrUtils.removePrefix("t_user_name", "t_");
System.out.println(username); System.out.println(username);
} }
@Test @Test
void toCamelCase() { public void toCamelCase() {
String userName = StrUtils.toCamelCase("user_name", false); String userName = StrUtils.toCamelCase("user_name", false);
String className = StrUtils.toCamelCase("class_name", true); String className = StrUtils.toCamelCase("class_name", true);
System.out.println(userName); System.out.println(userName);
System.out.println(className); System.out.println(className);
} }
} }

@ -1,44 +1,37 @@
project.path.base=D:/workspace/otono-debug/ project.path.base=D:/workspace/otono-debug/
#project.path.java=src/main/java #project.path.java=src/main/java
#project.path.resources=src/main/resources #project.path.resources=src/main/resources
package.name.base=space.caoshd.navigator package.name.base=space.caoshd.navigator
package.name.po=repository.po #package.name.po=repository.po
package.name.mapper=repository.mapper #package.name.mapper=repository.mapper
package.name.service=service package.name.service=service.impl
package.name.query=controller.query package.name.service.interface=service
package.name.form=controller.form #package.name.query=controller.query
package.name.view=controller.view #package.name.form=controller.form
package.name.controller=controller #package.name.view=controller.view
#package.name.controller=controller
module.multiple=false #module.multiple=false
module.name.as_package_base=false #module.name.as_package_base=false
module.name.controller=controller #module.name.controller=controller
module.name.repository=data #module.name.repository=data
module.name.service=cmpt #module.name.service=cmpt
#java.name.suffix.service=Service
java.name.suffix.service=Service #java.name.suffix.controller=Controller
java.name.suffix.controller=Controller #java.name.suffix.view=View
java.name.suffix.view=View #java.name.suffix.form=Form
java.name.suffix.form=Form #java.name.suffix.query=Query
java.name.suffix.query=Query #java.name.suffix.mapper=Mapper
java.name.suffix.mapper=Mapper #java.name.suffix.po=
java.name.suffix.po=
#database.name.schemas=otone #database.name.schemas=otone
#database.name.tables= #database.name.tables=
database.table.prefixes=t_,m_ database.table.prefixes=t_,m_
#template.path.po=template/po.vm
template.path.po=template/po.vm #template.path.view=template/view.vm
template.path.view=template/view.vm #template.path.form=template/form.vm
template.path.form=template/form.vm #template.path.query=template/query.vm
template.path.query=template/query.vm #template.path.controller=template/controller.vm
template.path.controller=template/controller.vm #template.path.service=template/service.vm
template.path.service=template/service.vm #template.path.service.interface=template/service.interface/po.vm
template.path.service_interface=template/service.interface/po.vm #template.path.mapper=template/mapper.vm
template.path.mapper=template/mapper.vm #template.path.mapper.xml=template/mapper.xml.vm
template.path.mapper_xml=template/mapper.xml.vm output.cover_if_exists=true
output.cover_if_exists=false

@ -0,0 +1,4 @@
package ${context.packageName};
public class ${context.className}$!{context.classNameSuffix} {
}

@ -0,0 +1,4 @@
package ${context.packageName};
public class ${context.className}$!{context.classNameSuffix} {
}

@ -0,0 +1,4 @@
package ${context.packageName};
public class ${context.className}$!{context.classNameSuffix} {
}

@ -1 +1,4 @@
${table.beanName} package ${context.packageName};
public class ${context.className}$!{context.classNameSuffix} {
}

@ -0,0 +1,4 @@
package ${context.packageName};
public class ${context.className}$!{context.classNameSuffix} {
}

@ -0,0 +1,4 @@
package ${context.packageName};
public class $!{context.classNamePrefix}${context.className}$!{context.classNameSuffix} {
}

@ -0,0 +1,4 @@
package ${context.packageName};
public class ${context.className}$!{context.classNameSuffix} {
}

@ -1 +1,4 @@
${table.beanName} package ${context.packageName};
public class ${context.className}$!{context.classNameSuffix} {
}
Loading…
Cancel
Save