优化: 优化 properties 获取工具

master
曹世达 6 months ago
parent 5cbfe7c9ca
commit ac64959b88

@ -3,7 +3,7 @@ package space.caoshd.otone.builder;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import space.caoshd.otone.entity.ColumnInfo; import space.caoshd.otone.entity.ColumnInfo;
import space.caoshd.otone.tool.PropTools; import space.caoshd.otone.helper.PropHelper;
import space.caoshd.otone.util.DBUtils; import space.caoshd.otone.util.DBUtils;
import space.caoshd.otone.util.JsonUtils; import space.caoshd.otone.util.JsonUtils;
import space.caoshd.otone.util.PathConsts; import space.caoshd.otone.util.PathConsts;
@ -20,7 +20,7 @@ public class ColumnBuilder {
private static final Logger LOGGER = LoggerFactory.getLogger(ColumnBuilder.class); private static final Logger LOGGER = LoggerFactory.getLogger(ColumnBuilder.class);
private static final PropTools CONFIG = new PropTools(PathConsts.MYSQL_PROPERTIES_PATH); private static final PropHelper CONFIG = new PropHelper(PathConsts.MYSQL_PROPERTIES_PATH);
private final String schemaName; private final String schemaName;
private final String tableName; private final String tableName;

@ -3,7 +3,7 @@ package space.caoshd.otone.builder;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import space.caoshd.otone.entity.IndexInfo; import space.caoshd.otone.entity.IndexInfo;
import space.caoshd.otone.tool.PropTools; import space.caoshd.otone.helper.PropHelper;
import space.caoshd.otone.util.DBUtils; import space.caoshd.otone.util.DBUtils;
import space.caoshd.otone.util.JsonUtils; import space.caoshd.otone.util.JsonUtils;
import space.caoshd.otone.util.PathConsts; import space.caoshd.otone.util.PathConsts;
@ -18,8 +18,8 @@ public class IndexBuilder {
private static final Logger LOGGER = LoggerFactory.getLogger(IndexBuilder.class); private static final Logger LOGGER = LoggerFactory.getLogger(IndexBuilder.class);
private static final PropTools CONFIG = private static final PropHelper CONFIG =
new PropTools(PathConsts.MYSQL_PROPERTIES_PATH); new PropHelper(PathConsts.MYSQL_PROPERTIES_PATH);
public static List<IndexInfo> loadIndexInfo(String schemaName, String tableName) { public static List<IndexInfo> loadIndexInfo(String schemaName, String tableName) {

@ -1,7 +1,7 @@
package space.caoshd.otone.builder; package space.caoshd.otone.builder;
import space.caoshd.otone.entity.ClassInfo; import space.caoshd.otone.entity.ClassInfo;
import space.caoshd.otone.tool.PropTools; import space.caoshd.otone.helper.PropHelper;
import space.caoshd.otone.util.CfgUtils; import space.caoshd.otone.util.CfgUtils;
import space.caoshd.otone.util.PathConsts; import space.caoshd.otone.util.PathConsts;
import space.caoshd.otone.util.StrUtils; import space.caoshd.otone.util.StrUtils;
@ -10,12 +10,12 @@ import java.util.List;
public class InfoClsBuilder { public class InfoClsBuilder {
private static final PropTools CONFIG = new PropTools(PathConsts.CONFIG_PROPERTIES_PATH); private static final PropHelper CONFIG = new PropHelper(PathConsts.CONFIG_PROPERTIES_PATH);
private final ClassInfo classInfo = new ClassInfo(); private final ClassInfo classInfo = new ClassInfo();
private String getTableNameWithoutPrefix(String tableNameWithoutPrefix) { private String getTableNameWithoutPrefix(String tableNameWithoutPrefix) {
List<String> tablePrefixes = CONFIG.getStrings(CfgUtils.DATABASE_TABLE_PREFIXES); List<String> tablePrefixes = CONFIG.getStringList(CfgUtils.DATABASE_TABLE_PREFIXES);
for (String tablePrefix : tablePrefixes) { for (String tablePrefix : tablePrefixes) {
tableNameWithoutPrefix = StrUtils.removePrefix(tableNameWithoutPrefix, tablePrefix); tableNameWithoutPrefix = StrUtils.removePrefix(tableNameWithoutPrefix, tablePrefix);
} }

@ -6,7 +6,7 @@ import space.caoshd.otone.entity.ClassInfo;
import space.caoshd.otone.entity.ContextInfo; import space.caoshd.otone.entity.ContextInfo;
import space.caoshd.otone.entity.OutputInfo; import space.caoshd.otone.entity.OutputInfo;
import space.caoshd.otone.entity.TableInfo; import space.caoshd.otone.entity.TableInfo;
import space.caoshd.otone.tool.PropTools; import space.caoshd.otone.helper.PropHelper;
import space.caoshd.otone.util.CfgUtils; import space.caoshd.otone.util.CfgUtils;
import space.caoshd.otone.util.FileUtils; import space.caoshd.otone.util.FileUtils;
import space.caoshd.otone.util.PathConsts; import space.caoshd.otone.util.PathConsts;
@ -22,7 +22,7 @@ public class SourceBuilder {
private static final Logger LOGGER = LoggerFactory.getLogger(SourceBuilder.class); private static final Logger LOGGER = LoggerFactory.getLogger(SourceBuilder.class);
private static final PropTools CONFIG = new PropTools(PathConsts.CONFIG_PROPERTIES_PATH); private static final PropHelper CONFIG = new PropHelper(PathConsts.CONFIG_PROPERTIES_PATH);
private final Map<String, Object> extra = new HashMap<>(); private final Map<String, Object> extra = new HashMap<>();
private TableInfo tableInfo; private TableInfo tableInfo;
private OutputInfo outputInfo; private OutputInfo outputInfo;

@ -5,7 +5,7 @@ import org.slf4j.LoggerFactory;
import space.caoshd.otone.entity.ColumnInfo; import space.caoshd.otone.entity.ColumnInfo;
import space.caoshd.otone.entity.IndexInfo; import space.caoshd.otone.entity.IndexInfo;
import space.caoshd.otone.entity.TableInfo; import space.caoshd.otone.entity.TableInfo;
import space.caoshd.otone.tool.PropTools; import space.caoshd.otone.helper.PropHelper;
import space.caoshd.otone.util.CfgUtils; import space.caoshd.otone.util.CfgUtils;
import space.caoshd.otone.util.DBUtils; import space.caoshd.otone.util.DBUtils;
import space.caoshd.otone.util.JsonUtils; import space.caoshd.otone.util.JsonUtils;
@ -25,13 +25,13 @@ public class TableBuilder {
private static final Logger LOGGER = LoggerFactory.getLogger(TableBuilder.class); private static final Logger LOGGER = LoggerFactory.getLogger(TableBuilder.class);
private static final PropTools MYSQL_CONFIG = new PropTools(PathConsts.MYSQL_PROPERTIES_PATH); private static final PropHelper MYSQL_CONFIG = new PropHelper(PathConsts.MYSQL_PROPERTIES_PATH);
private static final PropTools CONFIG = new PropTools(PathConsts.CONFIG_PROPERTIES_PATH); private static final PropHelper CONFIG = new PropHelper(PathConsts.CONFIG_PROPERTIES_PATH);
public List<TableInfo> build() { public List<TableInfo> build() {
List<TableInfo> result = new ArrayList<>(); List<TableInfo> result = new ArrayList<>();
List<String> schemaNames = CONFIG.getStrings(CfgUtils.DATABASE_NAME_SCHEMAS); List<String> schemaNames = CONFIG.getStringList(CfgUtils.DATABASE_NAME_SCHEMAS);
if (schemaNames.isEmpty()) { if (schemaNames.isEmpty()) {
String sql = MYSQL_CONFIG.getString(SqlConsts.TABLE_SQL); String sql = MYSQL_CONFIG.getString(SqlConsts.TABLE_SQL);
List<Map<String, String>> tables = DBUtils.list(sql); List<Map<String, String>> tables = DBUtils.list(sql);
@ -49,7 +49,7 @@ public class TableBuilder {
public List<TableInfo> build(String schemaName) { public List<TableInfo> build(String schemaName) {
List<TableInfo> result = new ArrayList<>(); List<TableInfo> result = new ArrayList<>();
List<String> tableNames = CONFIG.getStrings(CfgUtils.DATABASE_NAME_TABLES); List<String> tableNames = CONFIG.getStringList(CfgUtils.DATABASE_NAME_TABLES);
if (tableNames.isEmpty()) { if (tableNames.isEmpty()) {
String sql = MYSQL_CONFIG.getString(SqlConsts.TABLE_SQL_SCHEMA); String sql = MYSQL_CONFIG.getString(SqlConsts.TABLE_SQL_SCHEMA);
List<String> params = Collections.singletonList(schemaName); List<String> params = Collections.singletonList(schemaName);

@ -1,4 +1,4 @@
package space.caoshd.otone.tool; package space.caoshd.otone.helper;
import space.caoshd.otone.util.ResUtils; import space.caoshd.otone.util.ResUtils;
@ -12,18 +12,18 @@ import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.Properties; import java.util.Properties;
public class PropTools { public class PropHelper {
private Map<String, String> propertyMap; private Map<String, String> propertyMap;
private Properties properties; private Properties properties;
public PropTools(InputStream stream) { public PropHelper(InputStream stream) {
loadProperties(stream); loadProperties(stream);
parseProperties(); parseProperties();
} }
public PropTools(String filename) { public PropHelper(String filename) {
this(ResUtils.getClassPathFileStream(filename)); this(ResUtils.getClassPathFileStream(filename));
} }
@ -51,34 +51,58 @@ public class PropTools {
return Optional.ofNullable(propertyMap.get(key)).orElse(defaultValue); return Optional.ofNullable(propertyMap.get(key)).orElse(defaultValue);
} }
public Integer getInt(String key) { public Integer getInt(String key, Integer defaultInt) {
String value = propertyMap.get(key);
if (value == null || value.trim().isEmpty()) {
return defaultInt;
}
return Integer.valueOf(propertyMap.get(key)); return Integer.valueOf(propertyMap.get(key));
} }
public Boolean getBoolean(String key) { public Integer getInt(String key) {
return getInt(key, 0);
}
public Boolean getBoolean(String key, Boolean defaultBoolean) {
String value = propertyMap.get(key); String value = propertyMap.get(key);
if (value == null) { if (value == null || value.trim().isEmpty()) {
return Boolean.FALSE; return defaultBoolean;
} }
return Boolean.valueOf(value); return Boolean.valueOf(value);
} }
public Long getLong(String key) { public Boolean getBoolean(String key) {
return getBoolean(key, false);
}
public Long getLong(String key, Long defaultLong) {
String value = propertyMap.get(key);
if (value == null || value.trim().isEmpty()) {
return defaultLong;
}
return Long.valueOf(propertyMap.get(key)); return Long.valueOf(propertyMap.get(key));
} }
public List<String> getStrings(String key) { public Long getLong(String key) {
List<String> result = new ArrayList<>(); return getLong(key, 0L);
}
public List<String> getStringList(String key, List<String> defaultStringList) {
String values = propertyMap.get(key); String values = propertyMap.get(key);
if (Objects.isNull(values)) { if (Objects.isNull(values)) {
return result; return defaultStringList;
} }
List<String> result = new ArrayList<>();
for (String value : values.split(",")) { for (String value : values.split(",")) {
result.add(value.trim()); result.add(value.trim());
} }
return result; return result;
} }
public List<String> getStringList(String key) {
return getStringList(key, new ArrayList<>());
}
public Map<String, String> getPropertyMap() { public Map<String, String> getPropertyMap() {
return propertyMap; return propertyMap;
} }

@ -1,6 +1,6 @@
package space.caoshd.otone.util; package space.caoshd.otone.util;
import space.caoshd.otone.tool.PropTools; import space.caoshd.otone.helper.PropHelper;
import java.nio.file.Paths; import java.nio.file.Paths;
@ -102,7 +102,7 @@ public class CfgUtils {
+ ".interface.vm"; + ".interface.vm";
public static final String DEFAULT_TEMPLATE_PATH_MAPPER = "template/mapper.vm"; public static final String DEFAULT_TEMPLATE_PATH_MAPPER = "template/mapper.vm";
public static final String DEFAULT_TEMPLATE_PATH_MAPPER_XML = "template/mapper.xml.vm"; public static final String DEFAULT_TEMPLATE_PATH_MAPPER_XML = "template/mapper.xml.vm";
private static final PropTools CONFIG = new PropTools(PathConsts.CONFIG_PROPERTIES_PATH); private static final PropHelper CONFIG = new PropHelper(PathConsts.CONFIG_PROPERTIES_PATH);
private static final String JAVA_FILE_SUFFIX = ".java"; private static final String JAVA_FILE_SUFFIX = ".java";
// 私有化构造器 // 私有化构造器

@ -1,6 +1,6 @@
package space.caoshd.otone.util; package space.caoshd.otone.util;
import space.caoshd.otone.tool.PropTools; import space.caoshd.otone.helper.PropHelper;
import java.io.InputStream; import java.io.InputStream;
import java.sql.Connection; import java.sql.Connection;
@ -21,11 +21,11 @@ public class DBUtils {
try { try {
InputStream datasourcePropertiesStream = ResUtils.getClassPathFileStream( InputStream datasourcePropertiesStream = ResUtils.getClassPathFileStream(
PathConsts.DATASOURCE_PROPERTIES_PATH); PathConsts.DATASOURCE_PROPERTIES_PATH);
PropTools propTools = new PropTools(datasourcePropertiesStream); PropHelper propHelper = new PropHelper(datasourcePropertiesStream);
String username = propTools.getString("username"); String username = propHelper.getString("username");
String password = propTools.getString("password"); String password = propHelper.getString("password");
String driverClassName = propTools.getString("driver-class-name"); String driverClassName = propHelper.getString("driver-class-name");
String url = propTools.getString("url"); String url = propHelper.getString("url");
Class.forName(driverClassName); Class.forName(driverClassName);
return DriverManager.getConnection(url, username, password); return DriverManager.getConnection(url, username, password);
} catch (Exception e) { } catch (Exception e) {

@ -7,7 +7,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import space.caoshd.otone.builder.TableBuilder; import space.caoshd.otone.builder.TableBuilder;
import space.caoshd.otone.entity.ContextInfo; import space.caoshd.otone.entity.ContextInfo;
import space.caoshd.otone.tool.PropTools; import space.caoshd.otone.helper.PropHelper;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
@ -19,8 +19,8 @@ public class VelocityUtils {
private static final Logger LOGGER = LoggerFactory.getLogger(TableBuilder.class); private static final Logger LOGGER = LoggerFactory.getLogger(TableBuilder.class);
public static void render(String templatePath, String outputPath, ContextInfo ctx) { public static void render(String templatePath, String outputPath, ContextInfo ctx) {
PropTools propTools = new PropTools(PathConsts.VELOCITY_PROPERTIES_PATH); PropHelper propHelper = new PropHelper(PathConsts.VELOCITY_PROPERTIES_PATH);
Properties properties = propTools.getProperties(); Properties properties = propHelper.getProperties();
Velocity.init(properties); Velocity.init(properties);
VelocityContext context = new VelocityContext(); VelocityContext context = new VelocityContext();

@ -1,12 +1,12 @@
package space.caoshd.otone.builder; package space.caoshd.otone.builder;
import org.junit.Test; import org.junit.Test;
import space.caoshd.otone.tool.PropTools; import space.caoshd.otone.helper.PropHelper;
import space.caoshd.otone.util.PathConsts; import space.caoshd.otone.util.PathConsts;
public class SourceBuilderTest { public class SourceBuilderTest {
private static final PropTools CONFIG = new PropTools(PathConsts.MYSQL_PROPERTIES_PATH); private static final PropHelper CONFIG = new PropHelper(PathConsts.MYSQL_PROPERTIES_PATH);
@Test @Test
public void build() { public void build() {

@ -1,4 +1,4 @@
package space.caoshd.otone.tool; package space.caoshd.otone.helper;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
@ -9,14 +9,14 @@ import space.caoshd.otone.util.ResUtils;
import java.io.InputStream; import java.io.InputStream;
import java.util.List; import java.util.List;
public class PropToolsTest { public class PropHelperTest {
@Test @Test
public void loadProperties() { public void loadProperties() {
InputStream fileStream = InputStream fileStream =
ResUtils.getClassPathFileStream(PathConsts.DATASOURCE_PROPERTIES_PATH); ResUtils.getClassPathFileStream(PathConsts.DATASOURCE_PROPERTIES_PATH);
PropTools propTools = new PropTools(fileStream); PropHelper propHelper = new PropHelper(fileStream);
Assert.assertNotNull(propTools); Assert.assertNotNull(propHelper);
} }
@Test @Test
@ -26,8 +26,8 @@ public class PropToolsTest {
@Test @Test
public void getStrings() { public void getStrings() {
InputStream fileStream = ResUtils.getClassPathFileStream(PathConsts.CONFIG_PROPERTIES_PATH); InputStream fileStream = ResUtils.getClassPathFileStream(PathConsts.CONFIG_PROPERTIES_PATH);
PropTools configProperties = new PropTools(fileStream); PropHelper configProperties = new PropHelper(fileStream);
List<String> strings = configProperties.getStrings(CfgUtils.DATABASE_TABLE_PREFIXES); List<String> strings = configProperties.getStringList(CfgUtils.DATABASE_TABLE_PREFIXES);
System.out.println(strings); System.out.println(strings);
} }

@ -2,7 +2,7 @@ package space.caoshd.otone.util;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import space.caoshd.otone.tool.PropTools; import space.caoshd.otone.helper.PropHelper;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@ -12,12 +12,12 @@ public class DBUtilsTest {
@Test @Test
public void executeQuery() { public void executeQuery() {
PropTools sqlProperties = new PropTools(PathConsts.MYSQL_PROPERTIES_PATH); PropHelper sqlProperties = new PropHelper(PathConsts.MYSQL_PROPERTIES_PATH);
String sql = sqlProperties.getString(SqlConsts.TABLE_SQL_SCHEMA_TABLE); String sql = sqlProperties.getString(SqlConsts.TABLE_SQL_SCHEMA_TABLE);
PropTools configProperties = PropHelper configProperties =
new PropTools(PathConsts.CONFIG_PROPERTIES_PATH); new PropHelper(PathConsts.CONFIG_PROPERTIES_PATH);
List<String> schemas = configProperties.getStrings(CfgUtils.DATABASE_NAME_SCHEMAS); List<String> schemas = configProperties.getStringList(CfgUtils.DATABASE_NAME_SCHEMAS);
List<String> tables = configProperties.getStrings(CfgUtils.DATABASE_NAME_TABLES); List<String> tables = configProperties.getStringList(CfgUtils.DATABASE_NAME_TABLES);
List<Object> params = Arrays.asList(schemas.get(0), tables.get(0)); List<Object> params = Arrays.asList(schemas.get(0), tables.get(0));
List<Map<String, String>> maps = DBUtils.list(sql, params); List<Map<String, String>> maps = DBUtils.list(sql, params);
Assert.assertFalse(maps.isEmpty()); Assert.assertFalse(maps.isEmpty());

Loading…
Cancel
Save