优化: 生成全部的文件

master
曹世达 6 months ago
parent d7751083b6
commit 606528d116

@ -0,0 +1,39 @@
package space.caoshd.otone.builder;
import space.caoshd.otone.entity.OutputInfo;
import space.caoshd.otone.entity.TableInfo;
import java.util.List;
public class OutputBuilder {
private final OutputInfo outputInfo = new OutputInfo();
public OutputBuilder setTableInfoList(List<TableInfo> tableInfoList) {
this.outputInfo.setTableInfoList(tableInfoList);
return this;
}
public OutputBuilder setTemplatePath(String templatePath) {
this.outputInfo.setTemplatePath(templatePath);
return this;
}
public OutputBuilder setPackagePath(String packagePath) {
this.outputInfo.setPackagePath(packagePath);
return this;
}
public OutputBuilder setNameSuffix(String nameSuffix) {
this.outputInfo.setNameSuffix(nameSuffix);
return this;
}
public OutputInfo build() {
return outputInfo;
}
}

@ -5,13 +5,11 @@ import org.slf4j.LoggerFactory;
import space.caoshd.otone.entity.OutputInfo;
import space.caoshd.otone.entity.TableInfo;
import space.caoshd.otone.tool.PropTools;
import space.caoshd.otone.util.CfgConsts;
import space.caoshd.otone.util.CfgUtils;
import space.caoshd.otone.util.FileUtils;
import space.caoshd.otone.util.PathConsts;
import space.caoshd.otone.util.VelocityUtils;
import java.nio.file.Paths;
public class SourceBuilder {
private static final Logger LOGGER = LoggerFactory.getLogger(SourceBuilder.class);
@ -30,18 +28,22 @@ public class SourceBuilder {
// 创建数据文件夹
FileUtils.mkdir(outputInfo.getPackagePath());
// 获取输出文件路径
String outputPath = getOutputPath(tableInfo.getBeanName());
String outputPath = CfgUtils.getOutputPath(
outputInfo.getPackagePath(),
tableInfo.getBeanName(),
outputInfo.getNameSuffix()
);
// 获取模板文件路径
String templatePath = outputInfo.getTemplatePath();
// 判断输出文件是否已存在
if (!FileUtils.exists(outputPath)) {
// 输出文件不存在 直接生成
VelocityUtils.render(CfgConsts.VALUE_TABLE, tableInfo, templatePath, outputPath);
VelocityUtils.render(CfgUtils.VALUE_TABLE, tableInfo, templatePath, outputPath);
}
// 输出文件存在 判断是否可以覆盖
if (CONFIG.getBoolean(CfgConsts.OUTPUT_COVER_IF_EXIST)) {
if (CONFIG.getBoolean(CfgUtils.OUTPUT_COVER_IF_EXIST)) {
// 配置可以执行覆盖 覆盖生成
VelocityUtils.render(CfgConsts.VALUE_TABLE, tableInfo, templatePath, outputPath);
VelocityUtils.render(CfgUtils.VALUE_TABLE, tableInfo, templatePath, outputPath);
} else {
// 配置不可以执行覆盖 提示错误消息
LOGGER.warn(
@ -54,13 +56,4 @@ public class SourceBuilder {
}
}
private String getOutputPath(String beanName) {
String filename = getOutputFilename(beanName);
return Paths.get(outputInfo.getPackagePath(), filename).toString();
}
private String getOutputFilename(String beanName) {
return beanName + outputInfo.getNameSuffix() + ".java";
}
}

@ -8,7 +8,7 @@ import space.caoshd.otone.entity.ColumnInfo;
import space.caoshd.otone.entity.IndexInfo;
import space.caoshd.otone.entity.TableInfo;
import space.caoshd.otone.tool.PropTools;
import space.caoshd.otone.util.CfgConsts;
import space.caoshd.otone.util.CfgUtils;
import space.caoshd.otone.util.DBUtils;
import space.caoshd.otone.util.JsonUtils;
import space.caoshd.otone.util.PathConsts;
@ -48,7 +48,7 @@ public class TableBuilder {
public List<TableInfo> build() {
List<TableInfo> result = new ArrayList<>();
List<String> schemaNames = CONFIG.getStrings(CfgConsts.DATABASE_NAME_SCHEMAS);
List<String> schemaNames = CONFIG.getStrings(CfgUtils.DATABASE_NAME_SCHEMAS);
if (schemaNames.isEmpty()) {
String sql = MYSQL_CONFIG.getString(SqlConsts.TABLE_SQL);
List<Map<String, String>> tables = DBUtils.list(sql);
@ -66,7 +66,7 @@ public class TableBuilder {
public List<TableInfo> build(String schemaName) {
List<TableInfo> result = new ArrayList<>();
List<String> tableNames = CONFIG.getStrings(CfgConsts.DATABASE_NAME_TABLES);
List<String> tableNames = CONFIG.getStrings(CfgUtils.DATABASE_NAME_TABLES);
if (tableNames.isEmpty()) {
String sql = MYSQL_CONFIG.getString(SqlConsts.TABLE_SQL_SCHEMA);
List<String> params = Collections.singletonList(schemaName);
@ -169,7 +169,7 @@ public class TableBuilder {
}
private String getTableNameWithoutPrefix(String tableNameWithoutPrefix) {
List<String> tablePrefixes = CONFIG.getStrings(CfgConsts.DATABASE_TABLE_PREFIXES);
List<String> tablePrefixes = CONFIG.getStrings(CfgUtils.DATABASE_TABLE_PREFIXES);
for (String tablePrefix : tablePrefixes) {
tableNameWithoutPrefix = StrUtils.removePrefix(tableNameWithoutPrefix, tablePrefix);

@ -12,9 +12,6 @@ import java.util.Objects;
import java.util.Optional;
import java.util.Properties;
/**
* properties
*/
public class PropTools {
private Map<String, String> propertyMap;
@ -50,6 +47,10 @@ public class PropTools {
return Optional.ofNullable(propertyMap.get(key)).orElse("");
}
public String getString(String key, String defaultValue) {
return Optional.ofNullable(propertyMap.get(key)).orElse(defaultValue);
}
public Integer getInt(String key) {
return Integer.valueOf(propertyMap.get(key));
}

@ -1,77 +0,0 @@
package space.caoshd.otone.util;
public class CfgConsts {
// 数据库配置
public static final String DATABASE_NAME_SCHEMAS = "database.name.schemas";
public static final String DATABASE_NAME_TABLES = "database.name.tables";
public static final String DATABASE_TABLE_PREFIXES = "database.table.prefixes";
// 输出配置
public static final String OUTPUT_COVER_IF_EXIST = "output.cover_if_exists";
// 项目配置
public static final String PROJECT_PATH_BASE = "project.path.base";
public static final String PROJECT_PATH_JAVA = "project.path.java";
public static final String PROJECT_PATH_RESOURCES = "project.path.resources";
// 包配置
public static final String PACKAGE_NAME_BASE = "package.name.base";
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_SERVICE = "package.name.service";
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_FORM = "package.name.form";
public static final String PACKAGE_NAME_VIEW = "package.name.view";
// 模块配置
public static final String MODULE_MULTIPLE = "module.multiple";
public static final String MODULE_NAME_AS_PACKAGE_BASE = "module.name.as_package_base";
public static final String MODULE_NAME_CONTROLLER = "module.name.controller";
public static final String MODULE_NAME_SERVICE = "module.name.service";
public static final String MODULE_NAME_REPOSITORY = "module.name.repository";
// JAVA 配置
public static final String JAVA_NAME_SUFFIX_PO = "java.name.suffix.po";
public static final String JAVA_NAME_SUFFIX_MAPPER = "java.name.suffix.mapper";
public static final String JAVA_NAME_SUFFIX_SERVICE = "java.name.suffix.service";
public static final String JAVA_NAME_SUFFIX_QUERY = "java.name.suffix.query";
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_CONTROLLER = "java.name.suffix.controller";
// 常量配置
public static final String VALUE_TABLE = "table";
// JAVA 工程默认值配置
public static final String DEFAULT_PROJECT_PATH_JAVA = "src/main/java";
public static final String DEFAULT_PROJECT_PATH_RESOURCES = "src/main/resources";
// 包名默认值配置
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_SERVICE = "service";
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_VIEW = "controller.view";
public static final String DEFAULT_PACKAGE_NAME_CONTROLLER = "controller";
// 模块名默认值配置
public static final String DEFAULT_MODULE_NAME_CONTROLLER = "controller";
public static final String DEFAULT_MODULE_NAME_SERVICE = "service";
public static final String DEFAULT_MODULE_NAME_REPOSITORY = "repository";
// JAVA文件名后缀默认值配置
public static final String DEFAULT_JAVA_NAME_SUFFIX_PO = "";
public static final String DEFAULT_JAVA_NAME_SUFFIX_MAPPER = "Mapper";
public static final String DEFAULT_JAVA_NAME_SUFFIX_SERVICE = "Service";
public static final String DEFAULT_JAVA_NAME_SUFFIX_QUERY = "Query";
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_CONTROLLER = "Controller";
// 私有化构造器
private CfgConsts() {}
}

@ -0,0 +1,357 @@
package space.caoshd.otone.util;
import space.caoshd.otone.tool.PropTools;
import java.nio.file.Paths;
public class CfgUtils {
// 数据库配置
public static final String DATABASE_NAME_SCHEMAS = "database.name.schemas";
public static final String DATABASE_NAME_TABLES = "database.name.tables";
public static final String DATABASE_TABLE_PREFIXES = "database.table.prefixes";
// 输出配置
public static final String OUTPUT_COVER_IF_EXIST = "output.cover_if_exists";
// 项目配置
public static final String PROJECT_PATH_BASE = "project.path.base";
public static final String PROJECT_PATH_JAVA = "project.path.java";
public static final String PROJECT_PATH_RESOURCES = "project.path.resources";
// 包配置
public static final String PACKAGE_NAME_BASE = "package.name.base";
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_SERVICE = "package.name.service";
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_FORM = "package.name.form";
public static final String PACKAGE_NAME_VIEW = "package.name.view";
// 模块配置
public static final String MODULE_MULTIPLE = "module.multiple";
public static final String MODULE_NAME_AS_PACKAGE_BASE = "module.name.as_package_base";
public static final String MODULE_NAME_CONTROLLER = "module.name.controller";
public static final String MODULE_NAME_SERVICE = "module.name.service";
public static final String MODULE_NAME_REPOSITORY = "module.name.repository";
// JAVA 配置
public static final String JAVA_NAME_SUFFIX_PO = "java.name.suffix.po";
public static final String JAVA_NAME_SUFFIX_MAPPER = "java.name.suffix.mapper";
public static final String JAVA_NAME_SUFFIX_SERVICE = "java.name.suffix.service";
public static final String JAVA_NAME_SUFFIX_QUERY = "java.name.suffix.query";
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_CONTROLLER = "java.name.suffix.controller";
// 模版路径配置
public static final String TEMPLATE_PATH_PO = "template.path.po";
public static final String TEMPLATE_PATH_VIEW = "template.path.view";
public static final String TEMPLATE_PATH_FORM = "template.path.form";
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_SERVICE = "template.path.service";
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_XML = "template.path.mapper_xml";
// 常量配置
public static final String VALUE_TABLE = "table";
// JAVA 工程默认值配置
public static final String DEFAULT_PROJECT_PATH_JAVA = "src/main/java";
public static final String DEFAULT_PROJECT_PATH_RESOURCES = "src/main/resources";
// 包名默认值配置
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_SERVICE = "service";
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_VIEW = "controller.view";
public static final String DEFAULT_PACKAGE_NAME_CONTROLLER = "controller";
// 模块名默认值配置
public static final String DEFAULT_MODULE_NAME_CONTROLLER = "controller";
public static final String DEFAULT_MODULE_NAME_SERVICE = "service";
public static final String DEFAULT_MODULE_NAME_REPOSITORY = "repository";
// JAVA文件名后缀默认值配置
public static final String DEFAULT_JAVA_NAME_SUFFIX_PO = "";
public static final String DEFAULT_JAVA_NAME_SUFFIX_MAPPER = "Mapper";
public static final String DEFAULT_JAVA_NAME_SUFFIX_SERVICE = "Service";
public static final String DEFAULT_JAVA_NAME_SUFFIX_QUERY = "Query";
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_CONTROLLER = "Controller";
// 模板文件路径默认值配置
public static final String DEFAULT_TEMPLATE_PATH_PO = "template/po.vm";
public static final String DEFAULT_TEMPLATE_PATH_VIEW = "template/view.vm";
public static final String DEFAULT_TEMPLATE_PATH_FORM = "template/form.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_SERVICE = "template/service.vm";
public static final String DEFAULT_TEMPLATE_PATH_SERVICE_INTERFACE = "service.interface/po.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";
private static final PropTools CONFIG = new PropTools(PathConsts.CONFIG_PROPERTIES_PATH);
private static final String JAVA_FILE_SUFFIX = ".java";
// 私有化构造器
private CfgUtils() {}
public static String getProjectBasePath() {
return CONFIG.getString(PROJECT_PATH_BASE).replaceAll("\\\\", "/");
}
public static String getProjectName() {
return StrUtils.getSuffix(getProjectBasePath(), "/");
}
public static String getProjectPath(String moduleName) {
String projectBasePath = getProjectBasePath();
if (!isMultiModule()) {
return projectBasePath;
} else {
return projectBasePath + "/" + getProjectName() + "-" + moduleName;
}
}
public static boolean isMultiModule() {
return CONFIG.getBoolean(MODULE_MULTIPLE);
}
public static boolean moduleNameAsPackageBase() {
return CONFIG.getBoolean(MODULE_NAME_AS_PACKAGE_BASE);
}
public static String getJavaPath(String moduleName) {
String projectPath = getProjectPath(moduleName);
String projectPathJava = CONFIG.getString(PROJECT_PATH_JAVA, DEFAULT_PROJECT_PATH_JAVA);
return Paths.get(projectPath, projectPathJava).toString();
}
private static String packageToPath(String packageName) {
return packageName.replaceAll("\\.", "/");
}
public static String getPackageBasePath(String moduleName) {
String javaPath = getJavaPath(moduleName);
String packageName = CONFIG.getString(PACKAGE_NAME_BASE);
String packagePath = packageToPath(packageName);
if (moduleNameAsPackageBase()) {
return Paths.get(javaPath, packagePath, moduleName).toString();
} else {
return Paths.get(javaPath, packagePath).toString();
}
}
public static String getPathBasedPackage(
String moduleName, String configName
) {
String basePath = getPackageBasePath(moduleName);
String packagePath = packageToPath(configName);
return Paths.get(basePath, packagePath).toString();
}
public static String getRepositoryModuleName() {
return CONFIG.getString(MODULE_NAME_REPOSITORY, DEFAULT_MODULE_NAME_REPOSITORY);
}
public static String getServiceModuleName() {
return CONFIG.getString(MODULE_NAME_SERVICE, DEFAULT_MODULE_NAME_SERVICE);
}
public static String getControllerModuleName() {
return CONFIG.getString(MODULE_NAME_CONTROLLER, DEFAULT_MODULE_NAME_CONTROLLER);
}
public static String getServicePackagePath() {
String moduleName = getServiceModuleName();
String configName = CONFIG.getString(PACKAGE_NAME_SERVICE, DEFAULT_PACKAGE_NAME_MAPPER);
return getPathBasedPackage(moduleName, configName);
}
public static String getControllerPackagePath() {
String moduleName = getControllerModuleName();
String configName = CONFIG.getString(PACKAGE_NAME_CONTROLLER,
DEFAULT_PACKAGE_NAME_CONTROLLER
);
return getPathBasedPackage(moduleName, configName);
}
public static String getViewPackagePath() {
String moduleName = getControllerModuleName();
String configName = CONFIG.getString(PACKAGE_NAME_VIEW, DEFAULT_PACKAGE_NAME_VIEW);
return getPathBasedPackage(moduleName, configName);
}
public static String getFormPackagePath() {
String moduleName = getControllerModuleName();
String configName = CONFIG.getString(PACKAGE_NAME_FORM, DEFAULT_PACKAGE_NAME_FORM);
return getPathBasedPackage(moduleName, configName);
}
public static String getQueryPackagePath() {
String moduleName = getControllerModuleName();
String configName = CONFIG.getString(PACKAGE_NAME_QUERY, DEFAULT_PACKAGE_NAME_QUERY);
return getPathBasedPackage(moduleName, configName);
}
public static String getPoPackagePath() {
String moduleName = getRepositoryModuleName();
String configName = CONFIG.getString(PACKAGE_NAME_PO, DEFAULT_PACKAGE_NAME_PO);
return getPathBasedPackage(moduleName, configName);
}
public static String getMapperPackagePath() {
String moduleName = getRepositoryModuleName();
String configName = CONFIG.getString(PACKAGE_NAME_MAPPER, DEFAULT_PACKAGE_NAME_MAPPER);
return getPathBasedPackage(moduleName, configName);
}
private static String getFilename(String className, String suffix) {
return className + suffix + JAVA_FILE_SUFFIX;
}
public static String getPoJavaPath(String className) {
String poPackagePath = getPoPackagePath();
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) {
String mapperPackagePath = getMapperPackagePath();
String suffix = CONFIG.getString(JAVA_NAME_SUFFIX_MAPPER, DEFAULT_JAVA_NAME_SUFFIX_MAPPER);
String filename = getFilename(className, suffix);
return Paths.get(mapperPackagePath, filename).toString();
}
public static String getServiceJavaPath(String className) {
String servicePackagePath = getServicePackagePath();
String suffix = CONFIG.getString(JAVA_NAME_SUFFIX_SERVICE,
DEFAULT_JAVA_NAME_SUFFIX_SERVICE
);
String filename = getFilename(className, suffix);
return Paths.get(servicePackagePath, filename).toString();
}
public static String getControllerJavaPath(String className) {
String controllerPackagePath = getControllerPackagePath();
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 getFormJavaPath(String className) {
String formPackagePath = getFormPackagePath();
String suffix = CONFIG.getString(JAVA_NAME_SUFFIX_CONTROLLER,
DEFAULT_JAVA_NAME_SUFFIX_CONTROLLER
);
String filename = getFilename(className, suffix);
return Paths.get(formPackagePath, filename).toString();
}
public static String getQueryJavaPath(String className) {
String basePath = getQueryPackagePath();
String suffix = CONFIG.getString(JAVA_NAME_SUFFIX_QUERY, DEFAULT_JAVA_NAME_SUFFIX_QUERY);
String filename = getFilename(className, suffix);
return Paths.get(basePath, filename).toString();
}
public static String getViewJavaPath(String className) {
String viewPackagePath = getViewPackagePath();
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() {
return CONFIG.getString(JAVA_NAME_SUFFIX_VIEW, DEFAULT_JAVA_NAME_SUFFIX_VIEW);
}
public static String getPoNameSuffix() {
return CONFIG.getString(JAVA_NAME_SUFFIX_PO, DEFAULT_JAVA_NAME_SUFFIX_PO);
}
public static String getQueryNameSuffix() {
return CONFIG.getString(JAVA_NAME_SUFFIX_QUERY, DEFAULT_JAVA_NAME_SUFFIX_QUERY);
}
public static String getFormNameSuffix() {
return CONFIG.getString(JAVA_NAME_SUFFIX_FORM, DEFAULT_JAVA_NAME_SUFFIX_FORM);
}
public static String getControllerNameSuffix() {
return CONFIG.getString(JAVA_NAME_SUFFIX_CONTROLLER, DEFAULT_JAVA_NAME_SUFFIX_CONTROLLER);
}
public static String getServiceNameSuffix() {
return CONFIG.getString(JAVA_NAME_SUFFIX_SERVICE, DEFAULT_JAVA_NAME_SUFFIX_SERVICE);
}
public static String getMapperNameSuffix() {
return CONFIG.getString(JAVA_NAME_SUFFIX_MAPPER, DEFAULT_JAVA_NAME_SUFFIX_MAPPER);
}
public static String getPoTemplatePath() {
return CONFIG.getString(TEMPLATE_PATH_PO, DEFAULT_TEMPLATE_PATH_PO);
}
public static String getViewTemplatePath() {
return CONFIG.getString(TEMPLATE_PATH_VIEW, DEFAULT_TEMPLATE_PATH_VIEW);
}
public static String getFormTemplatePath() {
return CONFIG.getString(TEMPLATE_PATH_FORM, DEFAULT_TEMPLATE_PATH_FORM);
}
public static String getQueryTemplatePath() {
return CONFIG.getString(TEMPLATE_PATH_QUERY, DEFAULT_TEMPLATE_PATH_QUERY);
}
public static String getControllerTemplatePath() {
return CONFIG.getString(TEMPLATE_PATH_CONTROLLER, DEFAULT_TEMPLATE_PATH_CONTROLLER);
}
public static String getServiceTemplatePath() {
return CONFIG.getString(TEMPLATE_PATH_SERVICE, DEFAULT_TEMPLATE_PATH_SERVICE);
}
public static String getServiceInterfaceTemplatePath() {
return CONFIG.getString(TEMPLATE_PATH_SERVICE_INTERFACE,
DEFAULT_TEMPLATE_PATH_SERVICE_INTERFACE
);
}
public static String getMapperTemplatePath() {
return CONFIG.getString(TEMPLATE_PATH_MAPPER, DEFAULT_TEMPLATE_PATH_MAPPER);
}
public static String getMapperXmlTemplatePath() {
return CONFIG.getString(TEMPLATE_PATH_MAPPER_XML, DEFAULT_TEMPLATE_PATH_MAPPER_XML);
}
public static String getOutputFilename(String beanName, String nameSuffix) {
return beanName + nameSuffix + JAVA_FILE_SUFFIX;
}
public static String getOutputPath(String packagePath, String beanName, String nameSuffix) {
String filename = CfgUtils.getOutputFilename(beanName, nameSuffix);
return Paths.get(packagePath, filename).toString();
}
}

@ -9,17 +9,6 @@ public class PathConsts {
public static final String VELOCITY_PROPERTIES_PATH = "config/velocity.properties";
public static final String RESOURCES_PATH = "config/velocity.properties";
// 模板文件路径
public static final String PO_TEMPLATE_PATH = "template/po.vm";
public static final String VIEW_TEMPLATE_PATH = "template/view.vm";
public static final String FORM_TEMPLATE_PATH = "template/form.vm";
public static final String QUERY_TEMPLATE_PATH = "template/query.vm";
public static final String CONTROLLER_TEMPLATE_PATH = "template/controller.vm";
public static final String SERVICE_TEMPLATE_PATH = "template/service.vm";
public static final String SERVICE_INTERFACE_TEMPLATE_PATH = "service.interface/po.vm";
public static final String MAPPER_TEMPLATE_PATH = "template/mapper.vm";
public static final String MAPPER_XML_TEMPLATE_PATH = "template/mapper.xml.vm";
public PathConsts() {}

@ -1,211 +0,0 @@
package space.caoshd.otone.util;
import space.caoshd.otone.tool.PropTools;
import java.nio.file.Paths;
public class PathUtils {
private static final PropTools CONFIG = new PropTools(PathConsts.CONFIG_PROPERTIES_PATH);
private static final String JAVA_FILE_SUFFIX = ".java";
public static String getProjectBasePath() {
return CONFIG.getString(CfgConsts.PROJECT_PATH_BASE).replaceAll("\\\\", "/");
}
public static String getProjectName() {
return StrUtils.getSuffix(getProjectBasePath(), "/");
}
public static String getProjectPath(String moduleName) {
String projectBasePath = getProjectBasePath();
if (!isMultiModule()) {
return projectBasePath;
} else {
return projectBasePath + "/" + getProjectName() + "-" + moduleName;
}
}
public static boolean isMultiModule() {
return CONFIG.getBoolean(CfgConsts.MODULE_MULTIPLE);
}
public static boolean moduleNameAsPackageBase() {
return CONFIG.getBoolean(CfgConsts.MODULE_NAME_AS_PACKAGE_BASE);
}
public static String getJavaPath(String moduleName) {
String basePath = getProjectPath(moduleName);
String configPath = CONFIG.getString(CfgConsts.PROJECT_PATH_JAVA);
String defaultPath = CfgConsts.DEFAULT_PROJECT_PATH_JAVA;
String path = StrUtils.defaultIfBlank(configPath, defaultPath);
return Paths.get(basePath, path).toString();
}
private static String packageToPath(String packageName) {
return packageName.replaceAll("\\.", "/");
}
public static String getPackageBasePath(String moduleName) {
String javaPath = getJavaPath(moduleName);
String packageName = CONFIG.getString(CfgConsts.PACKAGE_NAME_BASE);
String packagePath = packageToPath(packageName);
if (moduleNameAsPackageBase()) {
return Paths.get(javaPath, packagePath, moduleName).toString();
} else {
return Paths.get(javaPath, packagePath).toString();
}
}
public static String getPathBasedPackage(
String moduleName, String configName, String defaultName
) {
String basePath = getPackageBasePath(moduleName);
String packageName = StrUtils.defaultIfBlank(configName, defaultName);
String packagePath = packageToPath(packageName);
return Paths.get(basePath, packagePath).toString();
}
public static String getModuleName(String configModuleName, String defaultModuleName) {
return isMultiModule() ? StrUtils.defaultIfBlank(configModuleName, defaultModuleName) : "";
}
public static String getRepositoryModuleName() {
String configName = CONFIG.getString(CfgConsts.MODULE_NAME_REPOSITORY);
String defaultName = CfgConsts.DEFAULT_MODULE_NAME_REPOSITORY;
return getModuleName(configName, defaultName);
}
public static String getServiceModuleName() {
String configName = CONFIG.getString(CfgConsts.MODULE_NAME_SERVICE);
String defaultName = CfgConsts.DEFAULT_MODULE_NAME_SERVICE;
return getModuleName(configName, defaultName);
}
public static String getControllerModuleName() {
String configName = CONFIG.getString(CfgConsts.MODULE_NAME_CONTROLLER);
String defaultName = CfgConsts.DEFAULT_MODULE_NAME_CONTROLLER;
return getModuleName(configName, defaultName);
}
public static String getServicePackagePath() {
String moduleName = getServiceModuleName();
String configName = CONFIG.getString(CfgConsts.PACKAGE_NAME_SERVICE);
String defaultName = CfgConsts.DEFAULT_PACKAGE_NAME_MAPPER;
return getPathBasedPackage(moduleName, configName, defaultName);
}
public static String getControllerPackagePath() {
String moduleName = getControllerModuleName();
String configName = CONFIG.getString(CfgConsts.PACKAGE_NAME_CONTROLLER);
String defaultName = CfgConsts.DEFAULT_PACKAGE_NAME_CONTROLLER;
return getPathBasedPackage(moduleName, configName, defaultName);
}
public static String getViewPackagePath() {
String moduleName = getControllerModuleName();
String configName = CONFIG.getString(CfgConsts.PACKAGE_NAME_VIEW);
String defaultName = CfgConsts.DEFAULT_PACKAGE_NAME_VIEW;
return getPathBasedPackage(moduleName, configName, defaultName);
}
public static String getFormPackagePath() {
String moduleName = getControllerModuleName();
String configName = CONFIG.getString(CfgConsts.PACKAGE_NAME_FORM);
String defaultName = CfgConsts.DEFAULT_PACKAGE_NAME_FORM;
return getPathBasedPackage(moduleName, configName, defaultName);
}
public static String getQueryPackagePath() {
String moduleName = getControllerModuleName();
String configName = CONFIG.getString(CfgConsts.PACKAGE_NAME_QUERY);
String defaultName = CfgConsts.DEFAULT_PACKAGE_NAME_QUERY;
return getPathBasedPackage(moduleName, configName, defaultName);
}
public static String getPoPackagePath() {
String moduleName = getRepositoryModuleName();
String configName = CONFIG.getString(CfgConsts.PACKAGE_NAME_PO);
String defaultName = CfgConsts.DEFAULT_PACKAGE_NAME_PO;
return getPathBasedPackage(moduleName, configName, defaultName);
}
public static String getMapperPackagePath() {
String moduleName = getRepositoryModuleName();
String configName = CONFIG.getString(CfgConsts.PACKAGE_NAME_MAPPER);
String defaultName = CfgConsts.DEFAULT_PACKAGE_NAME_MAPPER;
return getPathBasedPackage(moduleName, configName, defaultName);
}
private static String getFilename(String className, String suffix) {
return className + suffix + JAVA_FILE_SUFFIX;
}
public static String getPoJavaPath(String className) {
String basePath = getPoPackagePath();
String configSuffix = CONFIG.getString(CfgConsts.JAVA_NAME_SUFFIX_PO);
String defaultSuffix = CfgConsts.DEFAULT_JAVA_NAME_SUFFIX_PO;
String suffix = StrUtils.defaultIfBlank(configSuffix, defaultSuffix);
String filename = getFilename(className, defaultSuffix);
return Paths.get(basePath, filename).toString();
}
public static String getMapperJavaPath(String className) {
String basePath = getMapperPackagePath();
String configSuffix = CONFIG.getString(CfgConsts.JAVA_NAME_SUFFIX_MAPPER);
String defaultSuffix = CfgConsts.DEFAULT_JAVA_NAME_SUFFIX_MAPPER;
String suffix = StrUtils.defaultIfBlank(configSuffix, defaultSuffix);
String filename = getFilename(className, suffix);
return Paths.get(basePath, filename).toString();
}
public static String getServiceJavaPath(String className) {
String basePath = getServicePackagePath();
String configSuffix = CONFIG.getString(CfgConsts.JAVA_NAME_SUFFIX_SERVICE);
String defaultSuffix = CfgConsts.DEFAULT_JAVA_NAME_SUFFIX_SERVICE;
String suffix = StrUtils.defaultIfBlank(configSuffix, defaultSuffix);
String filename = getFilename(className, suffix);
return Paths.get(basePath, filename).toString();
}
public static String getControllerJavaPath(String className) {
String basePath = getControllerPackagePath();
String configSuffix = CONFIG.getString(CfgConsts.JAVA_NAME_SUFFIX_CONTROLLER);
String defaultSuffix = CfgConsts.DEFAULT_JAVA_NAME_SUFFIX_CONTROLLER;
String suffix = StrUtils.defaultIfBlank(configSuffix, defaultSuffix);
String filename = getFilename(className, suffix);
return Paths.get(basePath, filename).toString();
}
public static String getFormJavaPath(String className) {
String basePath = getFormPackagePath();
String configSuffix = CONFIG.getString(CfgConsts.JAVA_NAME_SUFFIX_CONTROLLER);
String defaultSuffix = CfgConsts.DEFAULT_JAVA_NAME_SUFFIX_CONTROLLER;
String suffix = StrUtils.defaultIfBlank(configSuffix, defaultSuffix);
String filename = getFilename(className, suffix);
return Paths.get(basePath, filename).toString();
}
public static String getQueryJavaPath(String className) {
String basePath = getQueryPackagePath();
String configSuffix = CONFIG.getString(CfgConsts.JAVA_NAME_SUFFIX_QUERY);
String defaultSuffix = CfgConsts.DEFAULT_JAVA_NAME_SUFFIX_QUERY;
String suffix = StrUtils.defaultIfBlank(configSuffix, defaultSuffix);
String filename = getFilename(className, suffix);
return Paths.get(basePath, filename).toString();
}
public static String getViewJavaPath(String className) {
String basePath = getViewPackagePath();
String configSuffix = CONFIG.getString(CfgConsts.JAVA_NAME_SUFFIX_VIEW);
String defaultSuffix = CfgConsts.DEFAULT_JAVA_NAME_SUFFIX_VIEW;
String suffix = StrUtils.defaultIfBlank(configSuffix, defaultSuffix);
String filename = getFilename(className, suffix);
return Paths.get(basePath, filename).toString();
}
}

@ -1,44 +1,86 @@
package space.caoshd.otone.builder;
import org.junit.jupiter.api.Test;
import space.caoshd.otone.entity.OutputInfo;
import space.caoshd.otone.entity.TableInfo;
import space.caoshd.otone.tool.PropTools;
import space.caoshd.otone.util.CfgUtils;
import space.caoshd.otone.util.PathConsts;
import space.caoshd.otone.util.PathUtils;
import java.util.List;
class SourceBuilderTest {
private static final PropTools CONFIG = new PropTools(PathConsts.MYSQL_PROPERTIES_PATH);
@Test
void build() {
String[] templates = {
PathConsts.VIEW_TEMPLATE_PATH,
PathConsts.FORM_TEMPLATE_PATH,
PathConsts.QUERY_TEMPLATE_PATH,
PathConsts.CONTROLLER_TEMPLATE_PATH,
PathConsts.SERVICE_TEMPLATE_PATH,
PathConsts.SERVICE_INTERFACE_TEMPLATE_PATH,
PathConsts.MAPPER_TEMPLATE_PATH,
PathConsts.MAPPER_XML_TEMPLATE_PATH,
PathConsts.PO_TEMPLATE_PATH,
};
TableBuilder tableBuilder = new TableBuilder();
List<TableInfo> tableInfoList = tableBuilder.build();
// OutputInfo poOutputInfo = new OutputInfo();
// poOutputInfo.setTableInfoList(tableInfoList);
// poOutputInfo.setTemplatePath(PathConsts.PO_TEMPLATE_PATH);
// poOutputInfo.setPackagePath(PathUtils.getPoPackagePath());
// new OutputBuilder(poOutputInfo).build();
OutputInfo voOutputInfo = new OutputInfo();
voOutputInfo.setTableInfoList(tableInfoList);
voOutputInfo.setNameSuffix("View");
voOutputInfo.setTemplatePath(PathConsts.VIEW_TEMPLATE_PATH);
voOutputInfo.setPackagePath(PathUtils.getViewPackagePath());
new SourceBuilder(voOutputInfo).build();
List<TableInfo> tableInfo = new TableBuilder().build();
new SourceBuilder(
new OutputBuilder()
.setTableInfoList(tableInfo)
.setNameSuffix(CfgUtils.getViewNameSuffix())
.setTemplatePath(CfgUtils.getViewTemplatePath())
.setPackagePath(CfgUtils.getViewPackagePath())
.build()
).build();
new SourceBuilder(
new OutputBuilder()
.setTableInfoList(tableInfo)
.setNameSuffix(CfgUtils.getMapperNameSuffix())
.setTemplatePath(CfgUtils.getMapperTemplatePath())
.setPackagePath(CfgUtils.getMapperPackagePath())
.build()
).build();
new SourceBuilder(
new OutputBuilder()
.setTableInfoList(tableInfo)
.setNameSuffix(CfgUtils.getServiceNameSuffix())
.setTemplatePath(CfgUtils.getServiceTemplatePath())
.setPackagePath(CfgUtils.getServicePackagePath())
.build()
).build();
new SourceBuilder(
new OutputBuilder()
.setTableInfoList(tableInfo)
.setNameSuffix(CfgUtils.getControllerNameSuffix())
.setTemplatePath(CfgUtils.getControllerTemplatePath())
.setPackagePath(CfgUtils.getControllerPackagePath())
.build()
).build();
new SourceBuilder(
new OutputBuilder()
.setTableInfoList(tableInfo)
.setNameSuffix(CfgUtils.getViewNameSuffix())
.setTemplatePath(CfgUtils.getViewPackagePath())
.setPackagePath(CfgUtils.getViewPackagePath())
.build()
).build();
new SourceBuilder(
new OutputBuilder()
.setTableInfoList(tableInfo)
.setNameSuffix(CfgUtils.getFormNameSuffix())
.setTemplatePath(CfgUtils.getFormTemplatePath())
.setPackagePath(CfgUtils.getFormPackagePath())
.build()
).build();
new SourceBuilder(
new OutputBuilder()
.setTableInfoList(tableInfo)
.setNameSuffix(CfgUtils.getQueryNameSuffix())
.setTemplatePath(CfgUtils.getQueryTemplatePath())
.setPackagePath(CfgUtils.getQueryPackagePath())
.build()
).build();
}

@ -2,7 +2,7 @@ package space.caoshd.otone.tool;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import space.caoshd.otone.util.CfgConsts;
import space.caoshd.otone.util.CfgUtils;
import space.caoshd.otone.util.PathConsts;
import space.caoshd.otone.util.ResUtils;
@ -26,7 +26,7 @@ class PropToolsTest {
void getStrings() {
InputStream fileStream = ResUtils.getClassPathFileStream(PathConsts.CONFIG_PROPERTIES_PATH);
PropTools configProperties = new PropTools(fileStream);
List<String> strings = configProperties.getStrings(CfgConsts.DATABASE_TABLE_PREFIXES);
List<String> strings = configProperties.getStrings(CfgUtils.DATABASE_TABLE_PREFIXES);
System.out.println(strings);
}

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

@ -16,8 +16,8 @@ class DBUtilsTest {
String sql = sqlProperties.getString(SqlConsts.TABLE_SQL_SCHEMA_TABLE);
PropTools configProperties =
new PropTools(PathConsts.CONFIG_PROPERTIES_PATH);
List<String> schemas = configProperties.getStrings(CfgConsts.DATABASE_NAME_SCHEMAS);
List<String> tables = configProperties.getStrings(CfgConsts.DATABASE_NAME_TABLES);
List<String> schemas = configProperties.getStrings(CfgUtils.DATABASE_NAME_SCHEMAS);
List<String> tables = configProperties.getStrings(CfgUtils.DATABASE_NAME_TABLES);
List<Object> params = Arrays.asList(schemas.get(0), tables.get(0));
List<Map<String, String>> maps = DBUtils.list(sql, params);
Assertions.assertFalse(maps.isEmpty());

@ -1,46 +0,0 @@
package space.caoshd.otone.util;
import org.junit.jupiter.api.Test;
class PathUtilsTest {
@Test
void getProjectPath() {
String projectPath = PathUtils.getProjectBasePath();
System.out.println(projectPath);
}
@Test
void getProjectName() {
String projectName = PathUtils.getProjectName();
System.out.println(projectName);
}
@Test
void getJavaPath(){
String javaPath = PathUtils.getJavaPath("data");
System.out.println(javaPath);
}
@Test
void getPackagePath() {
String packagePath = PathUtils.getPackageBasePath("service");
System.out.println(packagePath);
}
@Test
void getRepositoryModuleName() {
String repositoryModuleName = PathUtils.getRepositoryModuleName();
System.out.println(repositoryModuleName);
}
@Test
void getRepositoryPackageName() {
String poPackagePath = PathUtils.getPoPackagePath();
System.out.println(poPackagePath);
String viewPackagePath = PathUtils.getViewPackagePath();
System.out.println(viewPackagePath);
}
}

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

Loading…
Cancel
Save