From 7553b636cb7342d27a9eb72dbc1ec87b2007f69f Mon Sep 17 00:00:00 2001 From: caoshd Date: Sat, 30 Mar 2024 13:02:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E:=20=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=96=87=E4=BB=B6=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 + .../ColumnCreateAware.java} | 4 +- .../TableCreateAware.java} | 4 +- .../caoshd/otone/builder/ColumnBuilder.java | 34 ++-- .../caoshd/otone/builder/IndexBuilder.java | 12 +- .../space/caoshd/otone/builder/PoBuilder.java | 52 +++++ .../caoshd/otone/builder/TableBuilder.java | 79 ++++---- .../space/caoshd/otone/entity/TableInfo.java | 10 - .../{PropertyTools.java => PropTools.java} | 44 +++-- .../space/caoshd/otone/util/CfgConsts.java | 89 +++++++++ .../space/caoshd/otone/util/ConfigConsts.java | 16 -- .../util/{DatabaseUtils.java => DBUtils.java} | 20 +- .../space/caoshd/otone/util/PathConsts.java | 20 ++ .../space/caoshd/otone/util/PathUtils.java | 180 ++++++++++++++++++ .../caoshd/otone/util/PropertiesConsts.java | 13 -- .../{ResourceUtils.java => ResUtils.java} | 8 +- .../util/{StringUtils.java => StrUtils.java} | 4 +- .../{DataTypeUtils.java => TypeUtils.java} | 2 +- .../caoshd/otone/util/VelocityUtils.java | 32 ++++ src/main/resources/config.properties | 4 - src/main/resources/mysql.properties | 13 -- .../caoshd/otone/builder/PoBuilderTest.java | 17 ++ .../caoshd/otone/tool/PropToolsTest.java | 40 ++++ .../caoshd/otone/tool/PropertyToolsTest.java | 40 ---- .../space/caoshd/otone/util/DBUtilsTest.java | 25 +++ .../caoshd/otone/util/DatabaseUtilsTest.java | 25 --- .../caoshd/otone/util/PathUtilsTest.java | 18 ++ ...sourceUtilsTest.java => ResUtilsTest.java} | 4 +- ...StringUtilsTest.java => StrUtilsTest.java} | 10 +- src/test/resources/config.properties | 4 - src/test/resources/config/config.properties | 23 +++ .../resources/config}/datasource.properties | 0 .../resources/{ => config}/mysql.properties | 0 src/test/resources/config/velocity.properties | 1 + src/test/resources/datasource.properties | 4 - src/test/resources/template/po.vm | 1 + 36 files changed, 615 insertions(+), 242 deletions(-) rename src/main/java/space/caoshd/otone/{extension/ColumnAddonAble.java => aware/ColumnCreateAware.java} (65%) rename src/main/java/space/caoshd/otone/{extension/TableAddonAble.java => aware/TableCreateAware.java} (65%) create mode 100644 src/main/java/space/caoshd/otone/builder/PoBuilder.java rename src/main/java/space/caoshd/otone/tool/{PropertyTools.java => PropTools.java} (59%) create mode 100644 src/main/java/space/caoshd/otone/util/CfgConsts.java delete mode 100644 src/main/java/space/caoshd/otone/util/ConfigConsts.java rename src/main/java/space/caoshd/otone/util/{DatabaseUtils.java => DBUtils.java} (82%) create mode 100644 src/main/java/space/caoshd/otone/util/PathConsts.java create mode 100644 src/main/java/space/caoshd/otone/util/PathUtils.java delete mode 100644 src/main/java/space/caoshd/otone/util/PropertiesConsts.java rename src/main/java/space/caoshd/otone/util/{ResourceUtils.java => ResUtils.java} (62%) rename src/main/java/space/caoshd/otone/util/{StringUtils.java => StrUtils.java} (96%) rename src/main/java/space/caoshd/otone/util/{DataTypeUtils.java => TypeUtils.java} (98%) create mode 100644 src/main/java/space/caoshd/otone/util/VelocityUtils.java delete mode 100644 src/main/resources/config.properties delete mode 100644 src/main/resources/mysql.properties create mode 100644 src/test/java/space/caoshd/otone/builder/PoBuilderTest.java create mode 100644 src/test/java/space/caoshd/otone/tool/PropToolsTest.java delete mode 100644 src/test/java/space/caoshd/otone/tool/PropertyToolsTest.java create mode 100644 src/test/java/space/caoshd/otone/util/DBUtilsTest.java delete mode 100644 src/test/java/space/caoshd/otone/util/DatabaseUtilsTest.java create mode 100644 src/test/java/space/caoshd/otone/util/PathUtilsTest.java rename src/test/java/space/caoshd/otone/util/{ResourceUtilsTest.java => ResUtilsTest.java} (68%) rename src/test/java/space/caoshd/otone/util/{StringUtilsTest.java => StrUtilsTest.java} (53%) delete mode 100644 src/test/resources/config.properties create mode 100644 src/test/resources/config/config.properties rename src/{main/resources => test/resources/config}/datasource.properties (100%) rename src/test/resources/{ => config}/mysql.properties (100%) create mode 100644 src/test/resources/config/velocity.properties delete mode 100644 src/test/resources/datasource.properties create mode 100644 src/test/resources/template/po.vm diff --git a/pom.xml b/pom.xml index 3eac14d..6ce335a 100644 --- a/pom.xml +++ b/pom.xml @@ -26,6 +26,11 @@ logback-classic 1.4.14 + + org.apache.velocity + velocity-engine-core + 2.3 + com.alibaba fastjson diff --git a/src/main/java/space/caoshd/otone/extension/ColumnAddonAble.java b/src/main/java/space/caoshd/otone/aware/ColumnCreateAware.java similarity index 65% rename from src/main/java/space/caoshd/otone/extension/ColumnAddonAble.java rename to src/main/java/space/caoshd/otone/aware/ColumnCreateAware.java index 17b2416..336615d 100644 --- a/src/main/java/space/caoshd/otone/extension/ColumnAddonAble.java +++ b/src/main/java/space/caoshd/otone/aware/ColumnCreateAware.java @@ -1,9 +1,9 @@ -package space.caoshd.otone.extension; +package space.caoshd.otone.aware; import space.caoshd.otone.entity.ColumnInfo; import java.util.Map; -public interface ColumnAddonAble { +public interface ColumnCreateAware { void addon(ColumnInfo tableInfo, Map addInfo); } diff --git a/src/main/java/space/caoshd/otone/extension/TableAddonAble.java b/src/main/java/space/caoshd/otone/aware/TableCreateAware.java similarity index 65% rename from src/main/java/space/caoshd/otone/extension/TableAddonAble.java rename to src/main/java/space/caoshd/otone/aware/TableCreateAware.java index b62cf57..3de567f 100644 --- a/src/main/java/space/caoshd/otone/extension/TableAddonAble.java +++ b/src/main/java/space/caoshd/otone/aware/TableCreateAware.java @@ -1,9 +1,9 @@ -package space.caoshd.otone.extension; +package space.caoshd.otone.aware; import space.caoshd.otone.entity.TableInfo; import java.util.Map; -public interface TableAddonAble { +public interface TableCreateAware { void addon(TableInfo tableInfo, Map addInfo); } diff --git a/src/main/java/space/caoshd/otone/builder/ColumnBuilder.java b/src/main/java/space/caoshd/otone/builder/ColumnBuilder.java index 7366a08..4473356 100644 --- a/src/main/java/space/caoshd/otone/builder/ColumnBuilder.java +++ b/src/main/java/space/caoshd/otone/builder/ColumnBuilder.java @@ -3,14 +3,14 @@ package space.caoshd.otone.builder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import space.caoshd.otone.entity.ColumnInfo; -import space.caoshd.otone.extension.ColumnAddonAble; -import space.caoshd.otone.tool.PropertyTools; -import space.caoshd.otone.util.DataTypeUtils; -import space.caoshd.otone.util.DatabaseUtils; +import space.caoshd.otone.aware.ColumnCreateAware; +import space.caoshd.otone.tool.PropTools; +import space.caoshd.otone.util.TypeUtils; +import space.caoshd.otone.util.DBUtils; import space.caoshd.otone.util.JsonUtils; -import space.caoshd.otone.util.PropertiesConsts; +import space.caoshd.otone.util.PathConsts; import space.caoshd.otone.util.SqlConsts; -import space.caoshd.otone.util.StringUtils; +import space.caoshd.otone.util.StrUtils; import java.util.ArrayList; import java.util.Arrays; @@ -21,8 +21,8 @@ public class ColumnBuilder { private static final Logger LOGGER = LoggerFactory.getLogger(ColumnBuilder.class); - private static final PropertyTools sqlProperties = - new PropertyTools(PropertiesConsts.MYSQL_PROPERTIES_PATH); + private static final PropTools sqlProperties = + new PropTools(PathConsts.MYSQL_PROPERTIES_PATH); private final String schemaName; private final String tableName; @@ -32,18 +32,16 @@ public class ColumnBuilder { this.tableName = tableName; } - private final List columnAddonAbles = new ArrayList<>(); - - public ColumnBuilder addColumnAddonAble(ColumnAddonAble columnAddonAble) { - this.columnAddonAbles.add(columnAddonAble); + private final List columnCreateAwares = new ArrayList<>(); + public ColumnBuilder addColumnAddonAble(ColumnCreateAware columnCreateAware) { + this.columnCreateAwares.add(columnCreateAware); return this; } public List build() { - String sql = sqlProperties.getString(SqlConsts.COLUMN_SQL_SCHEMA_TABLE); List params = Arrays.asList(schemaName, tableName); - List> columns = DatabaseUtils.list(sql, params); + List> columns = DBUtils.list(sql, params); List result = new ArrayList<>(); for (Map column : columns) { @@ -58,17 +56,17 @@ public class ColumnBuilder { result.setComment(column.get(columnComment)); String columnName = sqlProperties.getString(SqlConsts.LABEL_COLUMN_NAME); result.setColumnName(column.get(columnName)); - String propertyName = StringUtils.toCamelCase(result.getColumnName(), false); + String propertyName = StrUtils.toCamelCase(result.getColumnName(), false); result.setPropertyName(propertyName); String sqlDataType = sqlProperties.getString(SqlConsts.LABEL_DATA_TYPE); result.setSqlDataType(column.get(sqlDataType)); - String javaDataType = DataTypeUtils.toJavaDataType(result.getSqlDataType()); + String javaDataType = TypeUtils.toJavaDataType(result.getSqlDataType()); result.setJavaDataType(javaDataType); String extra = sqlProperties.getString(SqlConsts.LABEL_EXTRA); result.setAutoIncrement(column.get(extra).contains(SqlConsts.VALUE_AUTO_INCREMENT)); - for (ColumnAddonAble columnAddonAble : columnAddonAbles) { - columnAddonAble.addon(result, result.getAddonInfo()); + for (ColumnCreateAware columnCreateAware : columnCreateAwares) { + columnCreateAware.addon(result, result.getAddonInfo()); } LOGGER.debug(JsonUtils.toJson(result)); diff --git a/src/main/java/space/caoshd/otone/builder/IndexBuilder.java b/src/main/java/space/caoshd/otone/builder/IndexBuilder.java index 28fb2f8..8d15339 100644 --- a/src/main/java/space/caoshd/otone/builder/IndexBuilder.java +++ b/src/main/java/space/caoshd/otone/builder/IndexBuilder.java @@ -3,10 +3,10 @@ package space.caoshd.otone.builder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import space.caoshd.otone.entity.IndexInfo; -import space.caoshd.otone.tool.PropertyTools; -import space.caoshd.otone.util.DatabaseUtils; +import space.caoshd.otone.tool.PropTools; +import space.caoshd.otone.util.DBUtils; import space.caoshd.otone.util.JsonUtils; -import space.caoshd.otone.util.PropertiesConsts; +import space.caoshd.otone.util.PathConsts; import space.caoshd.otone.util.SqlConsts; import java.util.ArrayList; @@ -18,14 +18,14 @@ public class IndexBuilder { private static final Logger LOGGER = LoggerFactory.getLogger(IndexBuilder.class); - private static final PropertyTools sqlProperties = - new PropertyTools(PropertiesConsts.MYSQL_PROPERTIES_PATH); + private static final PropTools sqlProperties = + new PropTools(PathConsts.MYSQL_PROPERTIES_PATH); public static List loadIndexInfo(String schemaName, String tableName) { String sql = sqlProperties.getString(SqlConsts.INDEX_SQL_SCHEMA_TABLE); List params = Arrays.asList(schemaName, tableName); - List> indexes = DatabaseUtils.list(sql, params); + List> indexes = DBUtils.list(sql, params); List result = new ArrayList<>(); for (Map index : indexes) { diff --git a/src/main/java/space/caoshd/otone/builder/PoBuilder.java b/src/main/java/space/caoshd/otone/builder/PoBuilder.java new file mode 100644 index 0000000..3e8d2ed --- /dev/null +++ b/src/main/java/space/caoshd/otone/builder/PoBuilder.java @@ -0,0 +1,52 @@ +package space.caoshd.otone.builder; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import space.caoshd.otone.entity.TableInfo; +import space.caoshd.otone.tool.PropTools; +import space.caoshd.otone.util.CfgConsts; +import space.caoshd.otone.util.PathConsts; +import space.caoshd.otone.util.VelocityUtils; + +import java.nio.file.Paths; +import java.util.List; + +public class PoBuilder { + + private static final Logger LOGGER = LoggerFactory.getLogger(TableBuilder.class); + + private static final PropTools propTools = new PropTools(PathConsts.CONFIG_PROPERTIES_PATH); + + private final List tableInfoList; + + private String templatePath = PathConsts.PO_TEMPLATE_PATH; + private String outputBase = propTools.getString(CfgConsts.OUTPUT_BASE); + private String outputPo = propTools.getString(CfgConsts.OUTPUT_PO); + + public PoBuilder(List tableInfoList) { + this.tableInfoList = tableInfoList; + } + + public PoBuilder setTemplatePath(String templatePath) { + this.templatePath = templatePath; + return this; + } + + public PoBuilder setOutputBase(String outputBase) { + this.outputBase = outputBase; + return this; + } + + public PoBuilder setOutputPo(String outputPo) { + this.outputPo = outputPo; + return this; + } + + public void build() { + for (TableInfo tableInfo : tableInfoList) { + String beanName = tableInfo.getBeanName(); + String outputPath = Paths.get(outputBase, outputPo, beanName + ".java").toString(); + VelocityUtils.render(CfgConsts.VALUE_TABLE, tableInfo, templatePath, outputPath); + } + } +} diff --git a/src/main/java/space/caoshd/otone/builder/TableBuilder.java b/src/main/java/space/caoshd/otone/builder/TableBuilder.java index d911e31..4a3fbee 100644 --- a/src/main/java/space/caoshd/otone/builder/TableBuilder.java +++ b/src/main/java/space/caoshd/otone/builder/TableBuilder.java @@ -5,16 +5,16 @@ import org.slf4j.LoggerFactory; import space.caoshd.otone.entity.ColumnInfo; import space.caoshd.otone.entity.IndexInfo; import space.caoshd.otone.entity.TableInfo; -import space.caoshd.otone.extension.ColumnAddonAble; -import space.caoshd.otone.extension.TableAddonAble; -import space.caoshd.otone.tool.PropertyTools; -import space.caoshd.otone.util.ConfigConsts; -import space.caoshd.otone.util.DataTypeUtils; -import space.caoshd.otone.util.DatabaseUtils; +import space.caoshd.otone.aware.ColumnCreateAware; +import space.caoshd.otone.aware.TableCreateAware; +import space.caoshd.otone.tool.PropTools; +import space.caoshd.otone.util.CfgConsts; +import space.caoshd.otone.util.TypeUtils; +import space.caoshd.otone.util.DBUtils; import space.caoshd.otone.util.JsonUtils; -import space.caoshd.otone.util.PropertiesConsts; +import space.caoshd.otone.util.PathConsts; import space.caoshd.otone.util.SqlConsts; -import space.caoshd.otone.util.StringUtils; +import space.caoshd.otone.util.StrUtils; import java.util.ArrayList; import java.util.Arrays; @@ -29,32 +29,31 @@ public class TableBuilder { private static final Logger LOGGER = LoggerFactory.getLogger(TableBuilder.class); - private static final PropertyTools sqlProperties = - new PropertyTools(PropertiesConsts.MYSQL_PROPERTIES_PATH); + private static final PropTools sqlProperties = new PropTools(PathConsts.MYSQL_PROPERTIES_PATH); - private static final PropertyTools configProperties = - new PropertyTools(PropertiesConsts.CONFIG_PROPERTIES_PATH); + private static final PropTools configProperties = + new PropTools(PathConsts.CONFIG_PROPERTIES_PATH); - private final List tableAddonAbles = new ArrayList<>(); + private final List tableCreateAwares = new ArrayList<>(); - public TableBuilder addTableAddonAble(TableAddonAble tableAddonAble) { - this.tableAddonAbles.add(tableAddonAble); + public TableBuilder addTableAddonAble(TableCreateAware tableCreateAware) { + this.tableCreateAwares.add(tableCreateAware); return this; } - private final List columnAddonAbles = new ArrayList<>(); + private final List columnCreateAwares = new ArrayList<>(); - public TableBuilder addColumnAddonAble(ColumnAddonAble columnAddonAble) { - this.columnAddonAbles.add(columnAddonAble); + public TableBuilder addColumnAddonAble(ColumnCreateAware columnCreateAware) { + this.columnCreateAwares.add(columnCreateAware); return this; } public List build() { List result = new ArrayList<>(); - List schemaNames = configProperties.getStrings(ConfigConsts.SCHEMA_NAMES); + List schemaNames = configProperties.getStrings(CfgConsts.SCHEMA_NAMES); if (schemaNames.isEmpty()) { String sql = sqlProperties.getString(SqlConsts.TABLE_SQL); - List> tables = DatabaseUtils.list(sql); + List> tables = DBUtils.list(sql); for (Map table : tables) { result.add(createTableInfo(table)); } @@ -69,11 +68,11 @@ public class TableBuilder { public List build(String schemaName) { List result = new ArrayList<>(); - List tableNames = configProperties.getStrings(ConfigConsts.TABLE_NAMES); + List tableNames = configProperties.getStrings(CfgConsts.TABLE_NAMES); if (tableNames.isEmpty()) { String sql = sqlProperties.getString(SqlConsts.TABLE_SQL_SCHEMA); List params = Collections.singletonList(schemaName); - List> tables = DatabaseUtils.list(sql, params); + List> tables = DBUtils.list(sql, params); for (Map table : tables) { result.add(createTableInfo(table)); } @@ -91,7 +90,7 @@ public class TableBuilder { public TableInfo build(String schemaName, String tableName) { String sql = sqlProperties.getString(SqlConsts.TABLE_SQL_SCHEMA_TABLE); List params = Arrays.asList(schemaName, tableName); - Map table = DatabaseUtils.one(sql, params); + Map table = DBUtils.one(sql, params); if (Objects.isNull(table)) { LOGGER.warn("table: [{}] not exists", tableName); return null; @@ -115,35 +114,27 @@ public class TableBuilder { result.setTableName(tableName); String tableNameWithoutPrefix = getTableNameWithoutPrefix(result.getTableName()); - String beanName = StringUtils.toCamelCase(tableNameWithoutPrefix, true); + String beanName = StrUtils.toCamelCase(tableNameWithoutPrefix, true); result.setBeanName(beanName); - String suffix = - StringUtils.defaultIfBlank( - configProperties.getString(ConfigConsts.BEAN_SUFFIX), - ConfigConsts.VALUE_BEAN_SUFFIX - ); - result.setQueryBeanName(beanName + suffix); + List columnInfo = loadColumnInfo(tableSchema, tableName); result.setColumnInfo(columnInfo); result.setDateExists(columnInfo.stream() - .anyMatch(column -> DataTypeUtils.JAVA_TYPE_DATE.equals(column.getJavaDataType()))); + .anyMatch(column -> TypeUtils.JAVA_TYPE_DATE.equals(column.getJavaDataType()))); result.setDecimalExists(columnInfo.stream() - .anyMatch(column -> DataTypeUtils.JAVA_TYPE_DECIMAL.equals(column.getJavaDataType()))); + .anyMatch(column -> TypeUtils.JAVA_TYPE_DECIMAL.equals(column.getJavaDataType()))); - List indexInfoList = IndexBuilder.loadIndexInfo( - result.getTableSchema(), + List indexInfoList = IndexBuilder.loadIndexInfo(result.getTableSchema(), result.getTableName() ); Map> indexInfo = new HashMap<>(); indexInfoList.forEach(index -> { - List indexColumnInfoList = indexInfo.computeIfAbsent( - index.getIndexName(), + List indexColumnInfoList = indexInfo.computeIfAbsent(index.getIndexName(), k -> new ArrayList<>() ); - ColumnInfo columnInfoByColumnName = getColumnInfoByColumnName( - columnInfo, + ColumnInfo columnInfoByColumnName = getColumnInfoByColumnName(columnInfo, index.getColumnName() ); indexColumnInfoList.add(columnInfoByColumnName); @@ -151,8 +142,8 @@ public class TableBuilder { result.setIndexInfo(indexInfo); - for (TableAddonAble tableAddonAble : tableAddonAbles) { - tableAddonAble.addon(result, result.getAddonInfo()); + for (TableCreateAware tableCreateAware : tableCreateAwares) { + tableCreateAware.addon(result, result.getAddonInfo()); } LOGGER.debug(JsonUtils.toJson(result)); @@ -161,8 +152,8 @@ public class TableBuilder { private List loadColumnInfo(String tableSchema, String tableName) { ColumnBuilder columnBuilder = new ColumnBuilder(tableSchema, tableName); - for (ColumnAddonAble columnAddonAble : columnAddonAbles) { - columnBuilder.addColumnAddonAble(columnAddonAble); + for (ColumnCreateAware columnCreateAware : columnCreateAwares) { + columnBuilder.addColumnAddonAble(columnCreateAware); } return columnBuilder.build(); } @@ -177,10 +168,10 @@ public class TableBuilder { } private String getTableNameWithoutPrefix(String tableNameWithoutPrefix) { - List tablePrefixes = configProperties.getStrings(ConfigConsts.TABLE_PREFIXIES); + List tablePrefixes = configProperties.getStrings(CfgConsts.TABLE_PREFIXIES); for (String tablePrefix : tablePrefixes) { - tableNameWithoutPrefix = StringUtils.removePrefix(tableNameWithoutPrefix, tablePrefix); + tableNameWithoutPrefix = StrUtils.removePrefix(tableNameWithoutPrefix, tablePrefix); } return tableNameWithoutPrefix; } diff --git a/src/main/java/space/caoshd/otone/entity/TableInfo.java b/src/main/java/space/caoshd/otone/entity/TableInfo.java index 3110d3e..8c009a3 100644 --- a/src/main/java/space/caoshd/otone/entity/TableInfo.java +++ b/src/main/java/space/caoshd/otone/entity/TableInfo.java @@ -16,8 +16,6 @@ public class TableInfo { private String beanName; - private String queryBeanName; - private Boolean dateExists; private Boolean decimalExists; @@ -60,14 +58,6 @@ public class TableInfo { this.beanName = beanName; } - public String getQueryBeanName() { - return queryBeanName; - } - - public void setQueryBeanName(String queryBeanName) { - this.queryBeanName = queryBeanName; - } - public Boolean getDateExists() { return dateExists; } diff --git a/src/main/java/space/caoshd/otone/tool/PropertyTools.java b/src/main/java/space/caoshd/otone/tool/PropTools.java similarity index 59% rename from src/main/java/space/caoshd/otone/tool/PropertyTools.java rename to src/main/java/space/caoshd/otone/tool/PropTools.java index 655dd66..db9f4e3 100644 --- a/src/main/java/space/caoshd/otone/tool/PropertyTools.java +++ b/src/main/java/space/caoshd/otone/tool/PropTools.java @@ -1,15 +1,10 @@ package space.caoshd.otone.tool; -import space.caoshd.otone.util.ResourceUtils; +import space.caoshd.otone.util.ResUtils; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; -import java.nio.file.Files; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -20,30 +15,37 @@ import java.util.Properties; /** * properties 加载类 */ -public class PropertyTools { +public class PropTools { - Map propertyMap; + private Map propertyMap; - public PropertyTools(InputStream stream) { - propertyMap = loadProperties(stream); + private Properties properties; + + public PropTools(InputStream stream) { + loadProperties(stream); + parseProperties(); } - public PropertyTools(String filename) { - this(ResourceUtils.getClassPathFileStream(filename)); + public PropTools(String filename) { + this(ResUtils.getClassPathFileStream(filename)); } - public Map loadProperties(InputStream stream) { + private void loadProperties(InputStream stream) { + Properties properties = new Properties(); try { - Properties properties = new Properties(); properties.load(stream); - Map result = new HashMap<>(); - properties.forEach((k, v) -> result.put((String) k, (String) v)); - return result; + this.properties = properties; } catch (IOException e) { throw new RuntimeException(e); } } + public void parseProperties() { + Map result = new HashMap<>(); + properties.forEach((k, v) -> result.put((String) k, (String) v)); + propertyMap = result; + } + public String getString(String key) { return Optional.ofNullable(propertyMap.get(key)).orElse(""); } @@ -72,4 +74,12 @@ public class PropertyTools { return result; } + public Map getPropertyMap() { + return propertyMap; + } + + public Properties getProperties() { + return properties; + } + } diff --git a/src/main/java/space/caoshd/otone/util/CfgConsts.java b/src/main/java/space/caoshd/otone/util/CfgConsts.java new file mode 100644 index 0000000..615f58b --- /dev/null +++ b/src/main/java/space/caoshd/otone/util/CfgConsts.java @@ -0,0 +1,89 @@ +package space.caoshd.otone.util; + +public class CfgConsts { + + private CfgConsts() {} + + public static final String SCHEMA_NAMES = "database.schemas"; + + public static final String TABLE_NAMES = "table.names"; + + public static final String TABLE_PREFIXIES = "table.prefixes"; + + public static final String BEAN_SUFFIX = "bean.suffix"; + + public static final String OUTPUT_BASE = "output.base"; + + public static final String OUTPUT_PO = "output.po"; + + 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_BASE = "package.base"; + + public static final String PACKAGE_PO = "package.po"; + + public static final String PACKAGE_MAPPER = "package.mapper"; + + public static final String PACKAGE_SERVICE = "package.service"; + + public static final String PACKAGE_CONTROLLER = "package.controller"; + + public static final String PACKAGE_QUERY = "package.query"; + + public static final String PACKAGE_FORM = "package.form"; + + public static final String PACKAGE_VIEW = "package.view"; + + public static final String CLASS_NAME_SUFFIX_PO = "classname.suffix.po"; + + public static final String CLASS_NAME_SUFFIX_MAPPER = "classname.suffix.mapper"; + + public static final String CLASS_NAME_SUFFIX_SERVICE = "classname.suffix.service"; + + public static final String CLASS_NAME_SUFFIX_QUERY = "classname.suffix.query"; + + public static final String CLASS_NAME_SUFFIX_FORM = "classname.suffix.form"; + + public static final String CLASS_NAME_SUFFIX_VIEW = "classname.suffix.view"; + + public static final String CLASS_NAME_SUFFIX_CONTROLLER = "classname.suffix.controller"; + + public static final String VALUE_TABLE = "table"; + + 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_PO = "repository.po"; + + public static final String DEFAULT_PACKAGE_MAPPER = "repository.mapper"; + + public static final String DEFAULT_PACKAGE_SERVICE = "service"; + + public static final String DEFAULT_PACKAGE_QUERY = "controller.query"; + + public static final String DEFAULT_PACKAGE_FORM = "controller.form"; + + public static final String DEFAULT_PACKAGE_VIEW = "controller.view"; + + public static final String DEFAULT_PACKAGE_CONTROLLER = "controller"; + + public static final String DEFAULT_CLASS_NAME_SUFFIX_PO = ""; + + public static final String DEFAULT_CLASS_NAME_SUFFIX_MAPPER = "Mapper"; + + public static final String DEFAULT_CLASS_NAME_SUFFIX_SERVICE = "Service"; + + public static final String DEFAULT_CLASS_NAME_SUFFIX_QUERY = "Query"; + + public static final String DEFAULT_CLASS_NAME_SUFFIX_FORM = "Form"; + + public static final String DEFAULT_CLASS_NAME_SUFFIX_VIEW = "View"; + + public static final String DEFAULT_CLASS_NAME_SUFFIX_CONTROLLER = "Controller"; + +} diff --git a/src/main/java/space/caoshd/otone/util/ConfigConsts.java b/src/main/java/space/caoshd/otone/util/ConfigConsts.java deleted file mode 100644 index 0d48460..0000000 --- a/src/main/java/space/caoshd/otone/util/ConfigConsts.java +++ /dev/null @@ -1,16 +0,0 @@ -package space.caoshd.otone.util; - -public class ConfigConsts { - - private ConfigConsts() {} - - public static final String SCHEMA_NAMES = "database.schemas"; - - public static final String TABLE_NAMES = "table.names"; - - public static final String TABLE_PREFIXIES = "table.prefixes"; - - public static final String BEAN_SUFFIX = "bean.suffix"; - - public static final String VALUE_BEAN_SUFFIX = "Query"; -} diff --git a/src/main/java/space/caoshd/otone/util/DatabaseUtils.java b/src/main/java/space/caoshd/otone/util/DBUtils.java similarity index 82% rename from src/main/java/space/caoshd/otone/util/DatabaseUtils.java rename to src/main/java/space/caoshd/otone/util/DBUtils.java index 552f05b..4c3a741 100644 --- a/src/main/java/space/caoshd/otone/util/DatabaseUtils.java +++ b/src/main/java/space/caoshd/otone/util/DBUtils.java @@ -1,6 +1,6 @@ package space.caoshd.otone.util; -import space.caoshd.otone.tool.PropertyTools; +import space.caoshd.otone.tool.PropTools; import java.io.InputStream; import java.sql.Connection; @@ -13,19 +13,19 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class DatabaseUtils { - private DatabaseUtils() {} +public class DBUtils { + private DBUtils() {} public static Connection getConnection() { try { - InputStream datasourcePropertiesStream = ResourceUtils.getClassPathFileStream( - PropertiesConsts.DATASOURCE_PROPERTIES_PATH); - PropertyTools propertyTools = new PropertyTools(datasourcePropertiesStream); - String username = propertyTools.getString("username"); - String password = propertyTools.getString("password"); - String driverClassName = propertyTools.getString("driver-class-name"); - String url = propertyTools.getString("url"); + InputStream datasourcePropertiesStream = ResUtils.getClassPathFileStream( + PathConsts.DATASOURCE_PROPERTIES_PATH); + PropTools propTools = new PropTools(datasourcePropertiesStream); + String username = propTools.getString("username"); + String password = propTools.getString("password"); + String driverClassName = propTools.getString("driver-class-name"); + String url = propTools.getString("url"); Class.forName(driverClassName); return DriverManager.getConnection(url, username, password); } catch (Exception e) { diff --git a/src/main/java/space/caoshd/otone/util/PathConsts.java b/src/main/java/space/caoshd/otone/util/PathConsts.java new file mode 100644 index 0000000..de28696 --- /dev/null +++ b/src/main/java/space/caoshd/otone/util/PathConsts.java @@ -0,0 +1,20 @@ +package space.caoshd.otone.util; + +public class PathConsts { + + public PathConsts() {} + + public static final String DATASOURCE_PROPERTIES_PATH = "config/datasource.properties"; + + public static final String CONFIG_PROPERTIES_PATH = "config/config.properties"; + + public static final String MYSQL_PROPERTIES_PATH = "config/mysql.properties"; + + 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"; + + +} diff --git a/src/main/java/space/caoshd/otone/util/PathUtils.java b/src/main/java/space/caoshd/otone/util/PathUtils.java new file mode 100644 index 0000000..8220e76 --- /dev/null +++ b/src/main/java/space/caoshd/otone/util/PathUtils.java @@ -0,0 +1,180 @@ +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 getProjectPath() { + return CONFIG.getString(CfgConsts.PROJECT_PATH_BASE); + } + + public static String getJavaSrcPath() { + String basePath = getProjectPath(); + 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(); + } + + public static String getPackagePath() { + String basePath = getJavaSrcPath(); + String name = CONFIG.getString(CfgConsts.PACKAGE_BASE); + String path = name.replaceAll("\\.", "/"); + return Paths.get(basePath, path).toString(); + } + + public static String getPathBasedPackage(String configPath, String defaultPath) { + String basePath = getPackagePath(); + String path = StrUtils.defaultIfBlank(configPath, defaultPath); + return Paths.get(basePath, path).toString(); + } + + public static String getServicePath(String className) { + String configPath = CONFIG.getString(CfgConsts.PACKAGE_SERVICE); + String defaultPath = CfgConsts.DEFAULT_PACKAGE_MAPPER; + return getPathBasedPackage(configPath, defaultPath); + } + + public static String getControllerPath(String className) { + String configPath = CONFIG.getString(CfgConsts.PACKAGE_CONTROLLER); + String defaultPath = CfgConsts.DEFAULT_PACKAGE_CONTROLLER; + return getPathBasedPackage(configPath, defaultPath); + } + + public static String getViewPath(String className) { + String configPath = CONFIG.getString(CfgConsts.PACKAGE_VIEW); + String defaultPath = CfgConsts.DEFAULT_PACKAGE_VIEW; + return getPathBasedPackage(configPath, defaultPath); + } + + public static String getFormPath(String className) { + String configPath = CONFIG.getString(CfgConsts.PACKAGE_FORM); + String defaultPath = CfgConsts.DEFAULT_PACKAGE_FORM; + return getPathBasedPackage(configPath, defaultPath); + } + + public static String getQueryPath(String className) { + String configPath = CONFIG.getString(CfgConsts.PACKAGE_QUERY); + String defaultPath = CfgConsts.DEFAULT_PACKAGE_QUERY; + return getPathBasedPackage(configPath, defaultPath); + } + + public static String getPoPath() { + String configPath = CONFIG.getString(CfgConsts.PACKAGE_PO); + String defaultPath = CfgConsts.DEFAULT_PACKAGE_PO; + return getPathBasedPackage(configPath, defaultPath); + } + + public static String getMapperPath() { + String configPath = CONFIG.getString(CfgConsts.PACKAGE_MAPPER); + String defaultPath = CfgConsts.DEFAULT_PACKAGE_MAPPER; + return getPathBasedPackage(configPath, defaultPath); + } + + public static String getServicePath() { + String configPath = CONFIG.getString(CfgConsts.PACKAGE_SERVICE); + String defaultPath = CfgConsts.DEFAULT_PACKAGE_MAPPER; + return getPathBasedPackage(configPath, defaultPath); + } + + public static String getControllerPath() { + String configPath = CONFIG.getString(CfgConsts.PACKAGE_CONTROLLER); + String defaultPath = CfgConsts.DEFAULT_PACKAGE_CONTROLLER; + return getPathBasedPackage(configPath, defaultPath); + } + + public static String getViewPath() { + String configPath = CONFIG.getString(CfgConsts.PACKAGE_VIEW); + String defaultPath = CfgConsts.DEFAULT_PACKAGE_VIEW; + return getPathBasedPackage(configPath, defaultPath); + } + + public static String getFormPath() { + String configPath = CONFIG.getString(CfgConsts.PACKAGE_FORM); + String defaultPath = CfgConsts.DEFAULT_PACKAGE_FORM; + return getPathBasedPackage(configPath, defaultPath); + } + + public static String getQueryPath() { + String configPath = CONFIG.getString(CfgConsts.PACKAGE_QUERY); + String defaultPath = CfgConsts.DEFAULT_PACKAGE_QUERY; + return getPathBasedPackage(configPath, defaultPath); + } + + private static String getFilename(String className, String suffix) { + return className + suffix + JAVA_FILE_SUFFIX; + } + + public static String getPoJavaPath(String className) { + String basePath = getPoPath(); + String configSuffix = CONFIG.getString(CfgConsts.CLASS_NAME_SUFFIX_PO); + String defaultSuffix = CfgConsts.DEFAULT_CLASS_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 = getMapperPath(); + String configSuffix = CONFIG.getString(CfgConsts.CLASS_NAME_SUFFIX_MAPPER); + String defaultSuffix = CfgConsts.DEFAULT_CLASS_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 = getServicePath(); + String configSuffix = CONFIG.getString(CfgConsts.CLASS_NAME_SUFFIX_SERVICE); + String defaultSuffix = CfgConsts.DEFAULT_CLASS_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 = getControllerPath(); + String configSuffix = CONFIG.getString(CfgConsts.CLASS_NAME_SUFFIX_CONTROLLER); + String defaultSuffix = CfgConsts.DEFAULT_CLASS_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 = getFormPath(); + String configSuffix = CONFIG.getString(CfgConsts.CLASS_NAME_SUFFIX_CONTROLLER); + String defaultSuffix = CfgConsts.DEFAULT_CLASS_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 = getQueryPath(); + String configSuffix = CONFIG.getString(CfgConsts.CLASS_NAME_SUFFIX_QUERY); + String defaultSuffix = CfgConsts.DEFAULT_CLASS_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 = getViewPath(); + String configSuffix = CONFIG.getString(CfgConsts.CLASS_NAME_SUFFIX_VIEW); + String defaultSuffix = CfgConsts.DEFAULT_CLASS_NAME_SUFFIX_VIEW; + String suffix = StrUtils.defaultIfBlank(configSuffix, defaultSuffix); + String filename = getFilename(className, suffix); + return Paths.get(basePath, filename).toString(); + } + +} diff --git a/src/main/java/space/caoshd/otone/util/PropertiesConsts.java b/src/main/java/space/caoshd/otone/util/PropertiesConsts.java deleted file mode 100644 index 6904e46..0000000 --- a/src/main/java/space/caoshd/otone/util/PropertiesConsts.java +++ /dev/null @@ -1,13 +0,0 @@ -package space.caoshd.otone.util; - -public class PropertiesConsts { - - public PropertiesConsts() {} - - public static final String DATASOURCE_PROPERTIES_PATH = "datasource.properties"; - - public static final String CONFIG_PROPERTIES_PATH = "config.properties"; - - public static final String MYSQL_PROPERTIES_PATH = "mysql.properties"; - -} diff --git a/src/main/java/space/caoshd/otone/util/ResourceUtils.java b/src/main/java/space/caoshd/otone/util/ResUtils.java similarity index 62% rename from src/main/java/space/caoshd/otone/util/ResourceUtils.java rename to src/main/java/space/caoshd/otone/util/ResUtils.java index 5965e6c..d78db70 100644 --- a/src/main/java/space/caoshd/otone/util/ResourceUtils.java +++ b/src/main/java/space/caoshd/otone/util/ResUtils.java @@ -4,14 +4,16 @@ import java.io.File; import java.io.InputStream; import java.net.URL; -public class ResourceUtils { +public class ResUtils { + public static InputStream getClassPathFileStream(String filename) { - return ResourceUtils.class.getClassLoader().getResourceAsStream(filename); + return ResUtils.class.getClassLoader().getResourceAsStream(filename); } public static File getClassPathFile(String filename) { - URL resource = ResourceUtils.class.getClassLoader().getResource(filename); + URL resource = ResUtils.class.getClassLoader().getResource(filename); assert resource != null; return new File(resource.getFile()); } + } diff --git a/src/main/java/space/caoshd/otone/util/StringUtils.java b/src/main/java/space/caoshd/otone/util/StrUtils.java similarity index 96% rename from src/main/java/space/caoshd/otone/util/StringUtils.java rename to src/main/java/space/caoshd/otone/util/StrUtils.java index 0f6127f..263c207 100644 --- a/src/main/java/space/caoshd/otone/util/StringUtils.java +++ b/src/main/java/space/caoshd/otone/util/StrUtils.java @@ -1,8 +1,8 @@ package space.caoshd.otone.util; -public class StringUtils { +public class StrUtils { - private StringUtils() {} + private StrUtils() {} public static String last(String str, String regex) { String[] split = str.split(regex); diff --git a/src/main/java/space/caoshd/otone/util/DataTypeUtils.java b/src/main/java/space/caoshd/otone/util/TypeUtils.java similarity index 98% rename from src/main/java/space/caoshd/otone/util/DataTypeUtils.java rename to src/main/java/space/caoshd/otone/util/TypeUtils.java index 13fe769..e8d9d17 100644 --- a/src/main/java/space/caoshd/otone/util/DataTypeUtils.java +++ b/src/main/java/space/caoshd/otone/util/TypeUtils.java @@ -4,7 +4,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -public class DataTypeUtils { +public class TypeUtils { public static final List SQL_TYPE_DATE_TIME = Arrays.asList("datetime", "timestamp"); diff --git a/src/main/java/space/caoshd/otone/util/VelocityUtils.java b/src/main/java/space/caoshd/otone/util/VelocityUtils.java new file mode 100644 index 0000000..1480fcd --- /dev/null +++ b/src/main/java/space/caoshd/otone/util/VelocityUtils.java @@ -0,0 +1,32 @@ +package space.caoshd.otone.util; + +import org.apache.velocity.Template; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.Velocity; +import space.caoshd.otone.tool.PropTools; + +import java.io.FileWriter; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Properties; + +public class VelocityUtils { + + public static void render( + String beanName, Object bean, String templatePath, String outputPath + ) { + PropTools propTools = new PropTools(PathConsts.VELOCITY_PROPERTIES_PATH); + Properties properties = propTools.getProperties(); + Velocity.init(properties); + + VelocityContext context = new VelocityContext(); + context.put(beanName, bean); + + Template template = Velocity.getTemplate(templatePath, StandardCharsets.UTF_8.name()); + try (FileWriter fw = new FileWriter(outputPath)) { + template.merge(context, fw); + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/resources/config.properties b/src/main/resources/config.properties deleted file mode 100644 index 309fc75..0000000 --- a/src/main/resources/config.properties +++ /dev/null @@ -1,4 +0,0 @@ -#database.schemas=otone -#table.names=t_file_export_instance,t_file_export_path,t_file_export_type_text,t_file_export_workspace -table.prefixes=t_,m_ -bean.suffix=Query \ No newline at end of file diff --git a/src/main/resources/mysql.properties b/src/main/resources/mysql.properties deleted file mode 100644 index d1a8216..0000000 --- a/src/main/resources/mysql.properties +++ /dev/null @@ -1,13 +0,0 @@ -table.sql=select * from information_schema.tables where TABLE_SCHEMA not in ('mysql', 'information_schema', 'performance_schema', 'sys') -table.sql.schema=select * from information_schema.tables where table_schema = ? -table.sql.schema.table=select * from information_schema.tables where table_schema = ? and table_name = ? - -column.sql.schema.table=select * from information_schema.columns where TABLE_SCHEMA = ? and table_name = ? - - -label.table_schema=TABLE_SCHEMA -label.table_name=TABLE_NAME -label.table_comment=TABLE_COMMENT -label.column_name=COLUMN_NAME -label.column_comment=COLUMN_COMMENT -label.data_type=DATA_TYPE diff --git a/src/test/java/space/caoshd/otone/builder/PoBuilderTest.java b/src/test/java/space/caoshd/otone/builder/PoBuilderTest.java new file mode 100644 index 0000000..a4dccad --- /dev/null +++ b/src/test/java/space/caoshd/otone/builder/PoBuilderTest.java @@ -0,0 +1,17 @@ +package space.caoshd.otone.builder; + +import org.junit.jupiter.api.Test; +import space.caoshd.otone.entity.TableInfo; + +import java.util.List; + +class PoBuilderTest { + + @Test + void build() { + TableBuilder tableBuilder = new TableBuilder(); + List tableInfoList = tableBuilder.build(); + PoBuilder poBuilder = new PoBuilder(tableInfoList); + poBuilder.build(); + } +} \ No newline at end of file diff --git a/src/test/java/space/caoshd/otone/tool/PropToolsTest.java b/src/test/java/space/caoshd/otone/tool/PropToolsTest.java new file mode 100644 index 0000000..27c9db1 --- /dev/null +++ b/src/test/java/space/caoshd/otone/tool/PropToolsTest.java @@ -0,0 +1,40 @@ +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.PathConsts; +import space.caoshd.otone.util.ResUtils; + +import java.io.*; +import java.util.List; + +class PropToolsTest { + + @Test + void loadProperties() { + InputStream fileStream = ResUtils.getClassPathFileStream(PathConsts.DATASOURCE_PROPERTIES_PATH); + PropTools propTools = new PropTools(fileStream); + Assertions.assertNotNull(propTools); + } + + @Test + void getString() { + } + + @Test + void getStrings() { + InputStream fileStream = ResUtils.getClassPathFileStream(PathConsts.CONFIG_PROPERTIES_PATH); + PropTools configProperties = new PropTools(fileStream); + List strings = configProperties.getStrings(CfgConsts.TABLE_PREFIXIES); + System.out.println(strings); + } + + @Test + void getInt() { + } + + @Test + void getLong() { + } +} \ No newline at end of file diff --git a/src/test/java/space/caoshd/otone/tool/PropertyToolsTest.java b/src/test/java/space/caoshd/otone/tool/PropertyToolsTest.java deleted file mode 100644 index b9648a1..0000000 --- a/src/test/java/space/caoshd/otone/tool/PropertyToolsTest.java +++ /dev/null @@ -1,40 +0,0 @@ -package space.caoshd.otone.tool; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import space.caoshd.otone.util.ConfigConsts; -import space.caoshd.otone.util.PropertiesConsts; -import space.caoshd.otone.util.ResourceUtils; - -import java.io.*; -import java.util.List; - -class PropertyToolsTest { - - @Test - void loadProperties() { - InputStream fileStream = ResourceUtils.getClassPathFileStream(PropertiesConsts.DATASOURCE_PROPERTIES_PATH); - PropertyTools propertyTools = new PropertyTools(fileStream); - Assertions.assertNotNull(propertyTools); - } - - @Test - void getString() { - } - - @Test - void getStrings() { - InputStream fileStream = ResourceUtils.getClassPathFileStream(PropertiesConsts.CONFIG_PROPERTIES_PATH); - PropertyTools configProperties = new PropertyTools(fileStream); - List strings = configProperties.getStrings(ConfigConsts.TABLE_PREFIXIES); - System.out.println(strings); - } - - @Test - void getInt() { - } - - @Test - void getLong() { - } -} \ No newline at end of file diff --git a/src/test/java/space/caoshd/otone/util/DBUtilsTest.java b/src/test/java/space/caoshd/otone/util/DBUtilsTest.java new file mode 100644 index 0000000..bd93053 --- /dev/null +++ b/src/test/java/space/caoshd/otone/util/DBUtilsTest.java @@ -0,0 +1,25 @@ +package space.caoshd.otone.util; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import space.caoshd.otone.tool.PropTools; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +class DBUtilsTest { + + @Test + void executeQuery() { + PropTools sqlProperties = new PropTools(PathConsts.MYSQL_PROPERTIES_PATH); + String sql = sqlProperties.getString(SqlConsts.TABLE_SQL_SCHEMA_TABLE); + PropTools configProperties = + new PropTools(PathConsts.CONFIG_PROPERTIES_PATH); + List schemas = configProperties.getStrings(CfgConsts.SCHEMA_NAMES); + List tables = configProperties.getStrings(CfgConsts.TABLE_NAMES); + List params = Arrays.asList(schemas.get(0), tables.get(0)); + List> maps = DBUtils.list(sql, params); + Assertions.assertFalse(maps.isEmpty()); + } +} \ No newline at end of file diff --git a/src/test/java/space/caoshd/otone/util/DatabaseUtilsTest.java b/src/test/java/space/caoshd/otone/util/DatabaseUtilsTest.java deleted file mode 100644 index 2aa5815..0000000 --- a/src/test/java/space/caoshd/otone/util/DatabaseUtilsTest.java +++ /dev/null @@ -1,25 +0,0 @@ -package space.caoshd.otone.util; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import space.caoshd.otone.tool.PropertyTools; - -import java.util.Arrays; -import java.util.List; -import java.util.Map; - -class DatabaseUtilsTest { - - @Test - void executeQuery() { - PropertyTools sqlProperties = new PropertyTools(PropertiesConsts.MYSQL_PROPERTIES_PATH); - String sql = sqlProperties.getString(SqlConsts.TABLE_SQL_SCHEMA_TABLE); - PropertyTools configProperties = - new PropertyTools(PropertiesConsts.CONFIG_PROPERTIES_PATH); - List schemas = configProperties.getStrings(ConfigConsts.SCHEMA_NAMES); - List tables = configProperties.getStrings(ConfigConsts.TABLE_NAMES); - List params = Arrays.asList(schemas.get(0), tables.get(0)); - List> maps = DatabaseUtils.list(sql, params); - Assertions.assertFalse(maps.isEmpty()); - } -} \ No newline at end of file diff --git a/src/test/java/space/caoshd/otone/util/PathUtilsTest.java b/src/test/java/space/caoshd/otone/util/PathUtilsTest.java new file mode 100644 index 0000000..7ee0df4 --- /dev/null +++ b/src/test/java/space/caoshd/otone/util/PathUtilsTest.java @@ -0,0 +1,18 @@ +package space.caoshd.otone.util; + +import org.junit.jupiter.api.Test; + +class PathUtilsTest { + + @Test + void getProjectPath() { + String projectPath = PathUtils.getProjectPath(); + System.out.println(projectPath); + } + + @Test + void getPackagePath() { + String packagePath = PathUtils.getPackagePath(); + System.out.println(packagePath); + } +} \ No newline at end of file diff --git a/src/test/java/space/caoshd/otone/util/ResourceUtilsTest.java b/src/test/java/space/caoshd/otone/util/ResUtilsTest.java similarity index 68% rename from src/test/java/space/caoshd/otone/util/ResourceUtilsTest.java rename to src/test/java/space/caoshd/otone/util/ResUtilsTest.java index ddc65ca..b4a17bd 100644 --- a/src/test/java/space/caoshd/otone/util/ResourceUtilsTest.java +++ b/src/test/java/space/caoshd/otone/util/ResUtilsTest.java @@ -4,11 +4,11 @@ import org.junit.jupiter.api.Test; import java.io.File; -class ResourceUtilsTest { +class ResUtilsTest { @Test void getClassPathFile() { - File file = ResourceUtils.getClassPathFile("datasource.properties"); + File file = ResUtils.getClassPathFile("datasource.properties"); System.out.println(file); } diff --git a/src/test/java/space/caoshd/otone/util/StringUtilsTest.java b/src/test/java/space/caoshd/otone/util/StrUtilsTest.java similarity index 53% rename from src/test/java/space/caoshd/otone/util/StringUtilsTest.java rename to src/test/java/space/caoshd/otone/util/StrUtilsTest.java index e82880e..f73b489 100644 --- a/src/test/java/space/caoshd/otone/util/StringUtilsTest.java +++ b/src/test/java/space/caoshd/otone/util/StrUtilsTest.java @@ -2,9 +2,7 @@ package space.caoshd.otone.util; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - -class StringUtilsTest { +class StrUtilsTest { @Test void last() { @@ -16,13 +14,13 @@ class StringUtilsTest { @Test void removePrefix(){ - String username = StringUtils.removePrefix("t_user_name", "t_"); + String username = StrUtils.removePrefix("t_user_name", "t_"); System.out.println(username); } @Test void toCamelCase() { - String userName = StringUtils.toCamelCase("user_name", false); - String className = StringUtils.toCamelCase("class_name", true); + String userName = StrUtils.toCamelCase("user_name", false); + String className = StrUtils.toCamelCase("class_name", true); System.out.println(userName); System.out.println(className); } diff --git a/src/test/resources/config.properties b/src/test/resources/config.properties deleted file mode 100644 index 29182c6..0000000 --- a/src/test/resources/config.properties +++ /dev/null @@ -1,4 +0,0 @@ -#database.schemas=otone -#table.names=t_file_export_instance,t_file_export_path,t_file_export_type_text,t_file_export_workspace -#bean.suffix=Query -table.prefixes=t_,m_ diff --git a/src/test/resources/config/config.properties b/src/test/resources/config/config.properties new file mode 100644 index 0000000..de4ddc6 --- /dev/null +++ b/src/test/resources/config/config.properties @@ -0,0 +1,23 @@ +project.path.base=D:/workspace/otono-debug/ +package.base=space.caoshd.navigator + +#database.schemas=otone +#table.names= +#table.prefixes= +#project.path.java=src/main/java +#project.path.resources=src/main/resources +#project.path.mapper= +#package.po=repository.po +#package.mapper=repository.mapper +#package.service=service +#package.query=controller.query +#package.form=controller.form +#package.view=controller.view +#package.controller=controller +#classname.suffix.service=Service +#classname.suffix.Controller=Controller +#classname.suffix.view=View +#classname.suffix.form=Form +#classname.suffix.query=Query +#classname.suffix.mapper=Mapper +#classname.suffix.po= diff --git a/src/main/resources/datasource.properties b/src/test/resources/config/datasource.properties similarity index 100% rename from src/main/resources/datasource.properties rename to src/test/resources/config/datasource.properties diff --git a/src/test/resources/mysql.properties b/src/test/resources/config/mysql.properties similarity index 100% rename from src/test/resources/mysql.properties rename to src/test/resources/config/mysql.properties diff --git a/src/test/resources/config/velocity.properties b/src/test/resources/config/velocity.properties new file mode 100644 index 0000000..c6af721 --- /dev/null +++ b/src/test/resources/config/velocity.properties @@ -0,0 +1 @@ +file.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader \ No newline at end of file diff --git a/src/test/resources/datasource.properties b/src/test/resources/datasource.properties deleted file mode 100644 index a7957d9..0000000 --- a/src/test/resources/datasource.properties +++ /dev/null @@ -1,4 +0,0 @@ -username=root -password=123456 -url=jdbc:mysql://192.168.0.100:3306/otone?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai -driver-class-name=com.mysql.cj.jdbc.Driver \ No newline at end of file diff --git a/src/test/resources/template/po.vm b/src/test/resources/template/po.vm new file mode 100644 index 0000000..8e4f1a7 --- /dev/null +++ b/src/test/resources/template/po.vm @@ -0,0 +1 @@ +${table.beanName} \ No newline at end of file