diff --git a/src/main/java/space/caoshd/otone/entity/TableInfo.java b/src/main/java/space/caoshd/otone/entity/TableInfo.java new file mode 100644 index 0000000..55887ae --- /dev/null +++ b/src/main/java/space/caoshd/otone/entity/TableInfo.java @@ -0,0 +1,69 @@ +package space.caoshd.otone.entity; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +public class TableInfo { + + private String comment; + + private String tableName; + + private String beanName; + + private String beanParamName; + + private List fieldInfoList = new ArrayList<>(); + + private Map> indexMap = new LinkedHashMap<>(); + + private Boolean booleanExists; + + private Boolean dateExists; + + private Boolean dateTimeExists; + + private Boolean bigDecimalExists; + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public String getBeanName() { + return beanName; + } + + public void setBeanName(String beanName) { + this.beanName = beanName; + } + + public String getBeanParamName() { + return beanParamName; + } + + public void setBeanParamName(String beanParamName) { + this.beanParamName = beanParamName; + } + + public List getFieldInfoList() { + return fieldInfoList; + } + + public void setFieldInfoList(List fieldInfoList) { + this.fieldInfoList = fieldInfoList; + } +} diff --git a/src/main/java/space/caoshd/otone/tool/PropertyTools.java b/src/main/java/space/caoshd/otone/tool/PropertyTools.java index 2d798dd..655dd66 100644 --- a/src/main/java/space/caoshd/otone/tool/PropertyTools.java +++ b/src/main/java/space/caoshd/otone/tool/PropertyTools.java @@ -1,9 +1,20 @@ package space.caoshd.otone.tool; +import space.caoshd.otone.util.ResourceUtils; + +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; +import java.util.Objects; +import java.util.Optional; import java.util.Properties; /** @@ -17,6 +28,10 @@ public class PropertyTools { propertyMap = loadProperties(stream); } + public PropertyTools(String filename) { + this(ResourceUtils.getClassPathFileStream(filename)); + } + public Map loadProperties(InputStream stream) { try { Properties properties = new Properties(); @@ -30,15 +45,31 @@ public class PropertyTools { } public String getString(String key) { - return propertyMap.get(key); + return Optional.ofNullable(propertyMap.get(key)).orElse(""); } public Integer getInt(String key) { return Integer.valueOf(propertyMap.get(key)); } + public Boolean getBoolean(String key) { + return Boolean.valueOf(propertyMap.get(key)); + } + public Long getLong(String key) { return Long.valueOf(propertyMap.get(key)); } + public List getStrings(String key) { + List result = new ArrayList<>(); + String values = propertyMap.get(key); + if (Objects.isNull(values)) { + return result; + } + for (String value : values.split(",")) { + result.add(value.trim()); + } + return result; + } + } diff --git a/src/main/java/space/caoshd/otone/util/ConfigConstants.java b/src/main/java/space/caoshd/otone/util/ConfigConstants.java new file mode 100644 index 0000000..2986ab6 --- /dev/null +++ b/src/main/java/space/caoshd/otone/util/ConfigConstants.java @@ -0,0 +1,12 @@ +package space.caoshd.otone.util; + +public class ConfigConstants { + + public static final String SCHEMA_NAMES = "database.schemas"; + + public static final String TABLE_NAMES = "table.names"; + + public static final String TABLE_PREFIXIES = "table.prefixes"; + + +} diff --git a/src/main/java/space/caoshd/otone/util/Constants.java b/src/main/java/space/caoshd/otone/util/Constants.java deleted file mode 100644 index 70d26dc..0000000 --- a/src/main/java/space/caoshd/otone/util/Constants.java +++ /dev/null @@ -1,11 +0,0 @@ -package space.caoshd.otone.util; - -public class Constants { - public Constants() { - } - - public static final String DATASOURCE_PATH = "datasource.properties"; - - public static final String CONFIG_PATH = "config.properties"; - -} diff --git a/src/main/java/space/caoshd/otone/util/PropertiesConstants.java b/src/main/java/space/caoshd/otone/util/PropertiesConstants.java new file mode 100644 index 0000000..d0a61ec --- /dev/null +++ b/src/main/java/space/caoshd/otone/util/PropertiesConstants.java @@ -0,0 +1,13 @@ +package space.caoshd.otone.util; + +public class PropertiesConstants { + + public PropertiesConstants() {} + + 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/resources/config.properties b/src/main/resources/config.properties index e69de29..5ade2cc 100644 --- a/src/main/resources/config.properties +++ b/src/main/resources/config.properties @@ -0,0 +1,3 @@ +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_ \ No newline at end of file diff --git a/src/main/resources/datasource.properties b/src/main/resources/datasource.properties index 36c70db..a7957d9 100644 --- a/src/main/resources/datasource.properties +++ b/src/main/resources/datasource.properties @@ -1,4 +1,4 @@ username=root password=123456 -url=jdbc:mysql://localhost:3306/otone?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai +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/main/resources/mysql.properties b/src/main/resources/mysql.properties new file mode 100644 index 0000000..076bd6a --- /dev/null +++ b/src/main/resources/mysql.properties @@ -0,0 +1,5 @@ +table.detail.sql=select * from information_schema.tables +table.detail.sql.schema=select * from information_schema.tables where table_schema = ? +table.detail.sql.schema.table=select * from information_schema.tables where table_schema = ? and table_name = ? +table.detail.label.table-name=TABLE_NAME +table.detail.label.table-comment=TABLE_COMMENT \ 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 index 2484459..2f44548 100644 --- a/src/test/java/space/caoshd/otone/tool/PropertyToolsTest.java +++ b/src/test/java/space/caoshd/otone/tool/PropertyToolsTest.java @@ -2,20 +2,18 @@ package space.caoshd.otone.tool; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import space.caoshd.otone.util.Constants; +import space.caoshd.otone.util.ConfigConstants; +import space.caoshd.otone.util.PropertiesConstants; import space.caoshd.otone.util.ResourceUtils; import java.io.*; -import java.nio.file.Files; -import java.nio.file.Paths; - -import static org.junit.jupiter.api.Assertions.*; +import java.util.List; class PropertyToolsTest { @Test void loadProperties() { - InputStream fileStream = ResourceUtils.getClassPathFileStream(Constants.DATASOURCE_PATH); + InputStream fileStream = ResourceUtils.getClassPathFileStream(PropertiesConstants.DATASOURCE_PROPERTIES_PATH); PropertyTools propertyTools = new PropertyTools(fileStream); Assertions.assertNotNull(propertyTools); } @@ -24,6 +22,14 @@ class PropertyToolsTest { void getString() { } + @Test + void getStrings() { + InputStream fileStream = ResourceUtils.getClassPathFileStream(PropertiesConstants.CONFIG_PROPERTIES_PATH); + PropertyTools configProperties = new PropertyTools(fileStream); + List strings = configProperties.getStrings(ConfigConstants.TABLE_PREFIXIES); + System.out.println(strings); + } + @Test void getInt() { } diff --git a/src/test/java/space/caoshd/otone/util/DatabaseUtilsTest.java b/src/test/java/space/caoshd/otone/util/DatabaseUtilsTest.java new file mode 100644 index 0000000..945ccf8 --- /dev/null +++ b/src/test/java/space/caoshd/otone/util/DatabaseUtilsTest.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.PropertyTools; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +class DatabaseUtilsTest { + + @Test + void executeQuery() { + PropertyTools sqlProperties = new PropertyTools(PropertiesConstants.MYSQL_PROPERTIES_PATH); + String sql = sqlProperties.getString(SqlConstants.TABLE_DETAIL_SQL_SCHEMA_TABLE); + PropertyTools configProperties = + new PropertyTools(PropertiesConstants.CONFIG_PROPERTIES_PATH); + List schemas = configProperties.getStrings(ConfigConstants.SCHEMA_NAMES); + List tables = configProperties.getStrings(ConfigConstants.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/resources/config.properties b/src/test/resources/config.properties index e69de29..5ade2cc 100644 --- a/src/test/resources/config.properties +++ b/src/test/resources/config.properties @@ -0,0 +1,3 @@ +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_ \ No newline at end of file diff --git a/src/test/resources/datasource.properties b/src/test/resources/datasource.properties index 36c70db..a7957d9 100644 --- a/src/test/resources/datasource.properties +++ b/src/test/resources/datasource.properties @@ -1,4 +1,4 @@ username=root password=123456 -url=jdbc:mysql://localhost:3306/otone?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai +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/mysql.properties b/src/test/resources/mysql.properties new file mode 100644 index 0000000..076bd6a --- /dev/null +++ b/src/test/resources/mysql.properties @@ -0,0 +1,5 @@ +table.detail.sql=select * from information_schema.tables +table.detail.sql.schema=select * from information_schema.tables where table_schema = ? +table.detail.sql.schema.table=select * from information_schema.tables where table_schema = ? and table_name = ? +table.detail.label.table-name=TABLE_NAME +table.detail.label.table-comment=TABLE_COMMENT \ No newline at end of file