From 61b90a38a6646e3b0e4eeb191dbf3a8fb55dd795 Mon Sep 17 00:00:00 2001 From: liu ze jian Date: Wed, 14 Mar 2018 20:53:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4tab=20=E9=80=80=E6=A0=BC?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/shardingjdbc/dbtest/StartTest.java | 124 +-- .../dbtest/common/ConfigRuntime.java | 196 ++-- .../dbtest/common/ConfigUtils.java | 44 +- .../dbtest/common/DatabaseTypeUtils.java | 18 +- .../dbtest/common/DatabaseUtils.java | 892 +++++++++--------- .../shardingjdbc/dbtest/common/FileUtils.java | 106 +-- .../shardingjdbc/dbtest/common/PathUtils.java | 62 +- .../shardingjdbc/dbtest/common/XMLUtil.java | 70 +- .../dbtest/config/AnalyzeConfig.java | 12 +- .../config/bean/ParameterDefinition.java | 1 - .../parseContext/AggregationSelectItem.java | 24 +- .../dbtest/data/AnalyzeDataset.java | 86 +- .../dbtest/data/DatasetDefinition.java | 16 +- .../dbtest/dataSource/DataSourceUtil.java | 60 +- .../dbtest/exception/DbTestException.java | 4 +- .../dbtest/init/InItCreateSchema.java | 322 +++---- 16 files changed, 1018 insertions(+), 1019 deletions(-) diff --git a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/StartTest.java b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/StartTest.java index 289afeb175..064c8f51e1 100644 --- a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/StartTest.java +++ b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/StartTest.java @@ -28,67 +28,67 @@ import io.shardingjdbc.dbtest.init.InItCreateSchema; @RunWith(value = Parameterized.class) public class StartTest { - private String path; - - private String id; - - public StartTest(final String path, final String id) { - this.path = path; - this.id = id; - } - - @Parameters - public static Collection getParams() { - - String assertPath = ConfigRuntime.getAssertPath(); - assertPath = PathUtils.getPath(assertPath); - List paths = FileUtils.getAllFilePaths(new File(assertPath), "assert-", "xml"); - List result = new ArrayList<>(); - - try { - for (String each : paths) { - AssertsDefinition assertsDefinition = AnalyzeConfig.analyze(each); - List asserts = assertsDefinition.getAsserts(); - List ls = new ArrayList<>(); - for (AssertDefinition eachAssertDefinition : asserts) { - if (ls.contains(eachAssertDefinition.getId())) { - throw new DbTestException("ID can't be repeated"); - } - result.add(new String[] { each, eachAssertDefinition.getId() }); - } - AssertEngine.addAssertDefinition(each, assertsDefinition); - } - } catch (IOException e) { - e.printStackTrace(); - } catch (JAXBException e) { - e.printStackTrace(); - } - - return result; - } - - @BeforeClass - public static void beforeClass() { - if (ConfigRuntime.isInitialized()) { - InItCreateSchema.createDatabase(); - InItCreateSchema.initTable(); - } - } - - @Test - public void test() { - try { - AssertEngine.runAssert(path, id); - } catch (Exception e) { - e.printStackTrace(); - } - } - - @AfterClass - public static void afterClass() { - if (ConfigRuntime.isInitialized()) { - InItCreateSchema.dropDatabase(); - } - } + private String path; + + private String id; + + public StartTest(final String path, final String id) { + this.path = path; + this.id = id; + } + + @Parameters + public static Collection getParams() { + + String assertPath = ConfigRuntime.getAssertPath(); + assertPath = PathUtils.getPath(assertPath); + List paths = FileUtils.getAllFilePaths(new File(assertPath), "assert-", "xml"); + List result = new ArrayList<>(); + + try { + for (String each : paths) { + AssertsDefinition assertsDefinition = AnalyzeConfig.analyze(each); + List asserts = assertsDefinition.getAsserts(); + List ls = new ArrayList<>(); + for (AssertDefinition eachAssertDefinition : asserts) { + if (ls.contains(eachAssertDefinition.getId())) { + throw new DbTestException("ID can't be repeated"); + } + result.add(new String[]{each, eachAssertDefinition.getId()}); + } + AssertEngine.addAssertDefinition(each, assertsDefinition); + } + } catch (IOException e) { + e.printStackTrace(); + } catch (JAXBException e) { + e.printStackTrace(); + } + + return result; + } + + @BeforeClass + public static void beforeClass() { + if (ConfigRuntime.isInitialized()) { + InItCreateSchema.createDatabase(); + InItCreateSchema.initTable(); + } + } + + @Test + public void test() { + try { + AssertEngine.runAssert(path, id); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @AfterClass + public static void afterClass() { + if (ConfigRuntime.isInitialized()) { + InItCreateSchema.dropDatabase(); + } + } } \ No newline at end of file diff --git a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/ConfigRuntime.java b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/ConfigRuntime.java index 38472e5046..cc1b04b3d2 100644 --- a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/ConfigRuntime.java +++ b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/ConfigRuntime.java @@ -9,110 +9,110 @@ import java.util.Set; public class ConfigRuntime { - public static Set getDbs() { - Map dbs = ConfigUtils.getDatas("database"); - Set result = new HashSet<>(); - for (Map.Entry each : dbs.entrySet()) { - String[] dbsts = each.getKey().split("\\."); - result.add(dbsts[1]); - } - return result; - } + public static Set getDbs() { + Map dbs = ConfigUtils.getDatas("database"); + Set result = new HashSet<>(); + for (Map.Entry each : dbs.entrySet()) { + String[] dbsts = each.getKey().split("\\."); + result.add(dbsts[1]); + } + return result; + } - private static String getJdbcConfig(final String key) { - return ConfigUtils.getString("database." + key, ""); - } + private static String getJdbcConfig(final String key) { + return ConfigUtils.getString("database." + key, ""); + } - public static String getDriverClassName(final DatabaseType type) { - switch (type) { - case H2: - return getJdbcConfig("h2.driver"); - case MySQL: - return getJdbcConfig("mysql.driver"); - case Oracle: - return getJdbcConfig("oracle.driver"); - case SQLServer: - return getJdbcConfig("sqlserver.driver"); - case PostgreSQL: - return getJdbcConfig("postgresql.driver"); - default: - return getJdbcConfig("h2.driver"); - } - } + public static String getDriverClassName(final DatabaseType type) { + switch (type) { + case H2: + return getJdbcConfig("h2.driver"); + case MySQL: + return getJdbcConfig("mysql.driver"); + case Oracle: + return getJdbcConfig("oracle.driver"); + case SQLServer: + return getJdbcConfig("sqlserver.driver"); + case PostgreSQL: + return getJdbcConfig("postgresql.driver"); + default: + return getJdbcConfig("h2.driver"); + } + } - public static String getURL(final DatabaseType type, final String dbName) { - switch (type) { - case H2: - return String.format(getJdbcConfig("h2.url"), dbName); - case MySQL: - return String.format(getJdbcConfig("mysql.url"), dbName); - case Oracle: - return String.format(getJdbcConfig("oracle.url"), dbName); - case SQLServer: - return String.format(getJdbcConfig("sqlserver.url"), dbName); - case PostgreSQL: - return String.format(getJdbcConfig("postgresql.url"), dbName); - default: - return String.format(getJdbcConfig("h2.url"), dbName); - } - } + public static String getURL(final DatabaseType type, final String dbName) { + switch (type) { + case H2: + return String.format(getJdbcConfig("h2.url"), dbName); + case MySQL: + return String.format(getJdbcConfig("mysql.url"), dbName); + case Oracle: + return String.format(getJdbcConfig("oracle.url"), dbName); + case SQLServer: + return String.format(getJdbcConfig("sqlserver.url"), dbName); + case PostgreSQL: + return String.format(getJdbcConfig("postgresql.url"), dbName); + default: + return String.format(getJdbcConfig("h2.url"), dbName); + } + } - public static String getUsername(final DatabaseType type) { - switch (type) { - case H2: - return getJdbcConfig("h2.username"); - case MySQL: - return getJdbcConfig("mysql.username"); - case Oracle: - return getJdbcConfig("oracle.username"); - case SQLServer: - return getJdbcConfig("sqlserver.username"); - case PostgreSQL: - return getJdbcConfig("postgresql.username"); - default: - return getJdbcConfig("h2.driver"); - } - } + public static String getUsername(final DatabaseType type) { + switch (type) { + case H2: + return getJdbcConfig("h2.username"); + case MySQL: + return getJdbcConfig("mysql.username"); + case Oracle: + return getJdbcConfig("oracle.username"); + case SQLServer: + return getJdbcConfig("sqlserver.username"); + case PostgreSQL: + return getJdbcConfig("postgresql.username"); + default: + return getJdbcConfig("h2.driver"); + } + } - public static String getPassword(final DatabaseType type) { - switch (type) { - case H2: - return getJdbcConfig("h2.password"); - case MySQL: - return getJdbcConfig("mysql.password"); - case Oracle: - return getJdbcConfig("oracle.password"); - case SQLServer: - return getJdbcConfig("sqlserver.password"); - case PostgreSQL: - return getJdbcConfig("postgresql.password"); - default: - return getJdbcConfig("h2.driver"); - } - } + public static String getPassword(final DatabaseType type) { + switch (type) { + case H2: + return getJdbcConfig("h2.password"); + case MySQL: + return getJdbcConfig("mysql.password"); + case Oracle: + return getJdbcConfig("oracle.password"); + case SQLServer: + return getJdbcConfig("sqlserver.password"); + case PostgreSQL: + return getJdbcConfig("postgresql.password"); + default: + return getJdbcConfig("h2.driver"); + } + } - public static String getDefualtdb(final DatabaseType type) { - switch (type) { - case H2: - return getJdbcConfig("h2.defualtdb"); - case MySQL: - return getJdbcConfig("mysql.defualtdb"); - case Oracle: - return getJdbcConfig("oracle.defualtdb"); - case SQLServer: - return getJdbcConfig("sqlserver.defualtdb"); - case PostgreSQL: - return getJdbcConfig("postgresql.defualtdb"); - default: - return getJdbcConfig("h2.defualtdb"); - } - } + public static String getDefualtdb(final DatabaseType type) { + switch (type) { + case H2: + return getJdbcConfig("h2.defualtdb"); + case MySQL: + return getJdbcConfig("mysql.defualtdb"); + case Oracle: + return getJdbcConfig("oracle.defualtdb"); + case SQLServer: + return getJdbcConfig("sqlserver.defualtdb"); + case PostgreSQL: + return getJdbcConfig("postgresql.defualtdb"); + default: + return getJdbcConfig("h2.defualtdb"); + } + } - public static String getAssertPath() { - return ConfigUtils.getString("assert.path", null); - } + public static String getAssertPath() { + return ConfigUtils.getString("assert.path", null); + } - public static boolean isInitialized() { - return Boolean.valueOf(ConfigUtils.getString("initialized", "false")); - } + public static boolean isInitialized() { + return Boolean.valueOf(ConfigUtils.getString("initialized", "false")); + } } diff --git a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/ConfigUtils.java b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/ConfigUtils.java index 170cb1b189..9919b88d97 100644 --- a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/ConfigUtils.java +++ b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/ConfigUtils.java @@ -6,30 +6,30 @@ import java.util.Properties; public class ConfigUtils { - private static Properties config = null; + private static Properties config = null; - static { - try { - config = new Properties(); - config.load(ConfigUtils.class.getClassLoader().getResourceAsStream("integrate/env.properties")); - } catch (Exception e) { - e.printStackTrace(); - } - } + static { + try { + config = new Properties(); + config.load(ConfigUtils.class.getClassLoader().getResourceAsStream("integrate/env.properties")); + } catch (Exception e) { + e.printStackTrace(); + } + } - public static String getString(final String key, final String defaultValue) { - return config.getProperty(key, defaultValue); - } + public static String getString(final String key, final String defaultValue) { + return config.getProperty(key, defaultValue); + } - public static Map getDatas(final String startKey) { - Map result = new HashMap<>(); - for (Map.Entry eachEntry : config.entrySet()) { - String key = (String) eachEntry.getKey(); - if (key.startsWith(startKey)) { - result.put(key, (String) eachEntry.getValue()); - } - } - return result; - } + public static Map getDatas(final String startKey) { + Map result = new HashMap<>(); + for (Map.Entry eachEntry : config.entrySet()) { + String key = (String) eachEntry.getKey(); + if (key.startsWith(startKey)) { + result.put(key, (String) eachEntry.getValue()); + } + } + return result; + } } diff --git a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/DatabaseTypeUtils.java b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/DatabaseTypeUtils.java index a85101a770..91c9e85382 100644 --- a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/DatabaseTypeUtils.java +++ b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/DatabaseTypeUtils.java @@ -4,15 +4,15 @@ import io.shardingjdbc.core.constant.DatabaseType; public class DatabaseTypeUtils { - public static DatabaseType getDatabaseType(final String type) { + public static DatabaseType getDatabaseType(final String type) { - DatabaseType[] databaseTypes = DatabaseType.values(); - for (DatabaseType each : databaseTypes) { - if (type.equalsIgnoreCase(each.name())) { - return each; - } - } - return DatabaseType.H2; - } + DatabaseType[] databaseTypes = DatabaseType.values(); + for (DatabaseType each : databaseTypes) { + if (type.equalsIgnoreCase(each.name())) { + return each; + } + } + return DatabaseType.H2; + } } diff --git a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/DatabaseUtils.java b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/DatabaseUtils.java index c9742dc207..fadeb78aa8 100644 --- a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/DatabaseUtils.java +++ b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/DatabaseUtils.java @@ -31,451 +31,451 @@ import io.shardingjdbc.dbtest.exception.DbTestException; public class DatabaseUtils { - /** - * Map - */ - public static String analyzeSql(final String table, final Map config) { - - List colsConfigs = new ArrayList<>(); - List valueConfigs = new ArrayList<>(); - for (Map.Entry stringStringEntry : config.entrySet()) { - colsConfigs.add(stringStringEntry.getKey()); - valueConfigs.add("?"); - } - - StringBuilder sbsql = new StringBuilder("insert into "); - sbsql.append(table); - sbsql.append(" ( "); - sbsql.append(StringUtils.join(colsConfigs, ",")); - sbsql.append(" )"); - sbsql.append(" values "); - sbsql.append(" ( "); - sbsql.append(StringUtils.join(valueConfigs, ",")); - sbsql.append(" )"); - - return sbsql.toString(); - } - - public static boolean insertUsePreparedStatement(final Connection conn, final String sql, - final List> datas, final Map config) - throws SQLException, ParseException { - try (PreparedStatement pstmt = conn.prepareStatement(sql);) { - for (Map data : datas) { - int index = 1; - for (Map.Entry stringStringEntry : data.entrySet()) { - String key = stringStringEntry.getKey(); - String datacol = stringStringEntry.getValue(); - String type = "String"; - if (config != null) { - type = config.get(key); - } - if (type == null) { - type = "String"; - } - switch (type) { - case "byte": - pstmt.setByte(index, Byte.valueOf(datacol)); - break; - case "short": - pstmt.setShort(index, Short.valueOf(datacol)); - break; - case "int": - pstmt.setInt(index, Integer.valueOf(datacol)); - break; - case "long": - pstmt.setLong(index, Long.valueOf(datacol)); - break; - case "float": - pstmt.setFloat(index, Float.valueOf(datacol)); - break; - case "double": - pstmt.setDouble(index, Double.valueOf(datacol)); - break; - case "boolean": - pstmt.setBoolean(index, Boolean.valueOf(datacol)); - break; - case "Date": - FastDateFormat fdf = FastDateFormat.getInstance("yyyy-MM-dd"); - pstmt.setDate(index, new Date(fdf.parse(datacol).getTime())); - break; - case "String": - pstmt.setString(index, datacol); - break; - default: - pstmt.setString(index, datacol); - break; - } - index++; - } - pstmt.executeUpdate(); - } - } - return true; - } - - public static void cleanAllUsePreparedStatement(final Connection conn, final String table) throws SQLException { - try (Statement pstmt = conn.createStatement();) { - pstmt.execute("DELETE from " + table); - } - } - - public static boolean isSelect(final String sql) { - String newSql = sql.trim(); - return newSql.startsWith("select"); - } - - public static boolean isInsertOrUpdateOrDelete(final String sql) { - String newSql = sql.trim(); - return newSql.startsWith("insert") || newSql.startsWith("update") || newSql.startsWith("delete"); - } - - public static int updateUseStatementToExecuteUpdate(final Connection conn, final String sql, - final ParametersDefinition parameters) throws SQLException, ParseException { - List parameter = parameters.getParameter(); - int result = 0; - try (Statement pstmt = conn.createStatement()) { - String newSql = sqlStatement(sql, parameter); - result = pstmt.executeUpdate(newSql); - } - return result; - } - - private static String sqlStatement(final String sql, final List parameter) { - String result = sql; - for (ParameterDefinition parameterDefinition : parameter) { - String type = parameterDefinition.getType(); - String datacol = parameterDefinition.getValue(); - switch (type) { - case "byte": - case "short": - case "int": - case "long": - case "float": - case "double": - result = Pattern.compile("%s", Pattern.LITERAL).matcher(result) - .replaceFirst((Matcher.quoteReplacement(datacol.toString()))); - break; - case "boolean": - result = Pattern.compile("%s", Pattern.LITERAL).matcher(result) - .replaceFirst((Matcher.quoteReplacement(Boolean.valueOf(datacol).toString()))); - break; - case "Date": - throw new DbTestException("Date type not supported for the time being"); - case "String": - result = Pattern.compile("%s", Pattern.LITERAL).matcher(result) - .replaceFirst((Matcher.quoteReplacement("'" + datacol + "'"))); - break; - default: - result = Pattern.compile("%s", Pattern.LITERAL).matcher(result) - .replaceFirst((Matcher.quoteReplacement("'" + datacol + "'"))); - break; - } - } - return result; - } - - public static boolean updateUseStatementToExecute(final Connection conn, final String sql, - final ParametersDefinition parameters) throws SQLException, ParseException { - List parameter = parameters.getParameter(); - try (Statement pstmt = conn.createStatement()) { - String newSql = sqlStatement(sql, parameter); - return pstmt.execute(newSql); - } - } - - public static int updateUsePreparedStatementToExecuteUpdate(final Connection conn, final String sql, - final ParametersDefinition parameters) throws SQLException, ParseException { - List parameter = parameters.getParameter(); - int result = 0; - String newSql = sql.replaceAll("\\%s", "?"); - try (PreparedStatement pstmt = conn.prepareStatement(newSql)) { - sqlPreparedStatement(parameter, pstmt); - result = pstmt.executeUpdate(); - } - return result; - } - - public static boolean updateUsePreparedStatementToExecute(final Connection conn, final String sql, - final ParametersDefinition parameters) throws SQLException, ParseException { - List parameter = parameters.getParameter(); - String newSql = sql.replaceAll("\\%s", "?"); - try (PreparedStatement pstmt = conn.prepareStatement(newSql)) { - sqlPreparedStatement(parameter, pstmt); - return pstmt.execute(); - } - } - - public static DatasetDatabase selectUsePreparedStatement(final Connection conn, final String sql, - ParametersDefinition parameters) throws SQLException, ParseException { - List parameter = parameters.getParameter(); - String newSql = sql.replaceAll("\\%s", "?"); - try (PreparedStatement pstmt = conn.prepareStatement(newSql)) { - sqlPreparedStatement(parameter, pstmt); - try (ResultSet resultSet = pstmt.executeQuery()) { - - ResultSetMetaData rsmd = resultSet.getMetaData(); - int colsint = rsmd.getColumnCount(); - Map cols = new LinkedHashMap<>(); - for (int i = 1; i < colsint + 1; i++) { - String name = rsmd.getColumnName(i); - String type = getDataType(rsmd.getColumnType(i), rsmd.getScale(i)); - cols.put(name, type); - } - - Map> configs = new HashMap<>(); - configs.put("data", cols); - - List> ls = new ArrayList<>(); - Map>> datas = new HashMap<>(); - datas.put("data", ls); - - while (resultSet.next()) { - Map data = new HashMap<>(); - for (Map.Entry stringStringEntry : cols.entrySet()) { - String name = stringStringEntry.getKey(); - String type = stringStringEntry.getValue(); - switch (type) { - case "int": - data.put(name, String.valueOf(resultSet.getInt(name))); - break; - case "long": - data.put(name, String.valueOf(resultSet.getLong(name))); - break; - case "float": - data.put(name, String.valueOf(resultSet.getFloat(name))); - break; - case "double": - data.put(name, String.valueOf(resultSet.getDouble(name))); - break; - case "boolean": - data.put(name, String.valueOf(resultSet.getBoolean(name))); - break; - case "char": - data.put(name, String.valueOf(resultSet.getString(name))); - break; - case "String": - data.put(name, String.valueOf(resultSet.getString(name))); - break; - case "Date": - data.put(name, DateFormatUtils.format(new java.util.Date(resultSet.getDate(name).getTime()), - "yyyy-MM-dd")); - break; - case "Blob": - data.put(name, String.valueOf(resultSet.getBlob(name))); - break; - default: - data.put(name, resultSet.getString(name)); - break; - } - } - ls.add(data); - } - DatasetDatabase result = new DatasetDatabase(); - result.setConfigs(configs); - result.setDatas(datas); - return result; - } - } - } - - public static DatasetDatabase selectUseStatement(final Connection conn, final String sql, final ParametersDefinition parameters) - throws SQLException, ParseException { - List parameter = parameters.getParameter(); - try (Statement pstmt = conn.createStatement()) { - String newSql = sqlStatement(sql, parameter); - try (ResultSet resultSet = pstmt.executeQuery(newSql)) { - ResultSetMetaData rsmd = resultSet.getMetaData(); - int colsint = rsmd.getColumnCount(); - Map cols = new LinkedHashMap<>(); - for (int i = 1; i < colsint + 1; i++) { - String name = rsmd.getColumnName(i); - String type = getDataType(rsmd.getColumnType(i), rsmd.getScale(i)); - cols.put(name, type); - } - - Map> configs = new HashMap<>(); - configs.put("data", cols); - - List> ls = new ArrayList<>(); - Map>> datas = new HashMap<>(); - datas.put("data", ls); - - while (resultSet.next()) { - Map data = new HashMap<>(); - for (Map.Entry stringStringEntry : cols.entrySet()) { - String name = stringStringEntry.getKey(); - String type = stringStringEntry.getValue(); - switch (type) { - case "int": - data.put(name, String.valueOf(resultSet.getInt(name))); - break; - case "long": - data.put(name, String.valueOf(resultSet.getLong(name))); - break; - case "float": - data.put(name, String.valueOf(resultSet.getFloat(name))); - break; - case "double": - data.put(name, String.valueOf(resultSet.getDouble(name))); - break; - case "boolean": - data.put(name, String.valueOf(resultSet.getBoolean(name))); - break; - case "char": - data.put(name, String.valueOf(resultSet.getString(name))); - break; - case "String": - data.put(name, String.valueOf(resultSet.getString(name))); - break; - case "Date": - data.put(name, DateFormatUtils.format(new java.util.Date(resultSet.getDate(name).getTime()), - "yyyy-MM-dd")); - break; - case "Blob": - data.put(name, String.valueOf(resultSet.getBlob(name))); - break; - default: - data.put(name, resultSet.getString(name)); - break; - } - } - ls.add(data); - } - DatasetDatabase result = new DatasetDatabase(); - result.setConfigs(configs); - result.setDatas(datas); - return result; - } - } - } - - private static void sqlPreparedStatement(final List parameter, final PreparedStatement pstmt) - throws SQLException, ParseException { - int index = 1; - for (ParameterDefinition parameterDefinition : parameter) { - String type = parameterDefinition.getType(); - String datacol = parameterDefinition.getValue(); - switch (type) { - case "byte": - pstmt.setByte(index, Byte.valueOf(datacol)); - break; - case "short": - pstmt.setShort(index, Short.valueOf(datacol)); - break; - case "int": - pstmt.setInt(index, Integer.valueOf(datacol)); - break; - case "long": - pstmt.setLong(index, Long.valueOf(datacol)); - break; - case "float": - pstmt.setFloat(index, Float.valueOf(datacol)); - break; - case "double": - pstmt.setDouble(index, Double.valueOf(datacol)); - break; - case "boolean": - pstmt.setBoolean(index, Boolean.valueOf(datacol)); - break; - case "Date": - FastDateFormat fdf = FastDateFormat.getInstance("yyyy-MM-dd"); - pstmt.setDate(index, new Date(fdf.parse(datacol).getTime())); - break; - case "String": - pstmt.setString(index, datacol); - break; - default: - pstmt.setString(index, datacol); - break; - } - index++; - } - } - - private static String getDataType(final int type, final int scale) { - String result = ""; - - switch (type) { - case Types.INTEGER: - result = "int"; - break; - case Types.LONGVARCHAR: - result = "long"; - break; - case Types.BIGINT: - result = "long"; - break; - case Types.FLOAT: - result = "float"; - break; - case Types.DOUBLE: - result = "double"; - break; - case Types.BOOLEAN: - result = "boolean"; - break; - case Types.CHAR: - result = "char"; - break; - case Types.NUMERIC: - switch (scale) { - case 0: - result = "double"; - break; - case -127: - result = "float"; - break; - default: - result = "double"; - } - break; - case Types.VARCHAR: - result = "String"; - break; - case Types.DATE: - result = "Date"; - break; - case Types.TIMESTAMP: - result = "Date"; - break; - case Types.BLOB: - result = "Blob"; - break; - default: - result = "String"; - } - return result; - } - - public static void assertDatas(final DatasetDefinition expected, final DatasetDatabase actual) { - Map> actualConfigs = actual.getConfigs(); - Map> expectedConfigs = expected.getConfigs(); - - for (Map.Entry> stringMapEntry : expectedConfigs.entrySet()) { - Map config = stringMapEntry.getValue(); - Map actualConfig = actualConfigs.get(stringMapEntry.getKey()); - assertTrue(actualConfig != null); - for (Map.Entry stringStringEntry : config.entrySet()) { - assertTrue(stringStringEntry.getValue().equals(actualConfig.get(stringStringEntry.getKey()))); - } - } - - Map>> actualDatass = actual.getDatas(); - Map>> expectDedatas = expected.getDatas(); - for (Map.Entry>> stringListEntry : expectDedatas.entrySet()) { - List> data = stringListEntry.getValue(); - List> actualDatas = actualDatass.get(stringListEntry.getKey()); - - for (int i = 0; i < data.size(); i++) { - Map expectData = data.get(i); - Map actualData = actualDatas.get(i); - for (Map.Entry stringStringEntry : expectData.entrySet()) { - assertTrue(stringStringEntry.getValue().equals(actualData.get(stringStringEntry.getKey()))); - } - - } - } - - } + /** + * Map + */ + public static String analyzeSql(final String table, final Map config) { + + List colsConfigs = new ArrayList<>(); + List valueConfigs = new ArrayList<>(); + for (Map.Entry stringStringEntry : config.entrySet()) { + colsConfigs.add(stringStringEntry.getKey()); + valueConfigs.add("?"); + } + + StringBuilder sbsql = new StringBuilder("insert into "); + sbsql.append(table); + sbsql.append(" ( "); + sbsql.append(StringUtils.join(colsConfigs, ",")); + sbsql.append(" )"); + sbsql.append(" values "); + sbsql.append(" ( "); + sbsql.append(StringUtils.join(valueConfigs, ",")); + sbsql.append(" )"); + + return sbsql.toString(); + } + + public static boolean insertUsePreparedStatement(final Connection conn, final String sql, + final List> datas, final Map config) + throws SQLException, ParseException { + try (PreparedStatement pstmt = conn.prepareStatement(sql);) { + for (Map data : datas) { + int index = 1; + for (Map.Entry stringStringEntry : data.entrySet()) { + String key = stringStringEntry.getKey(); + String datacol = stringStringEntry.getValue(); + String type = "String"; + if (config != null) { + type = config.get(key); + } + if (type == null) { + type = "String"; + } + switch (type) { + case "byte": + pstmt.setByte(index, Byte.valueOf(datacol)); + break; + case "short": + pstmt.setShort(index, Short.valueOf(datacol)); + break; + case "int": + pstmt.setInt(index, Integer.valueOf(datacol)); + break; + case "long": + pstmt.setLong(index, Long.valueOf(datacol)); + break; + case "float": + pstmt.setFloat(index, Float.valueOf(datacol)); + break; + case "double": + pstmt.setDouble(index, Double.valueOf(datacol)); + break; + case "boolean": + pstmt.setBoolean(index, Boolean.valueOf(datacol)); + break; + case "Date": + FastDateFormat fdf = FastDateFormat.getInstance("yyyy-MM-dd"); + pstmt.setDate(index, new Date(fdf.parse(datacol).getTime())); + break; + case "String": + pstmt.setString(index, datacol); + break; + default: + pstmt.setString(index, datacol); + break; + } + index++; + } + pstmt.executeUpdate(); + } + } + return true; + } + + public static void cleanAllUsePreparedStatement(final Connection conn, final String table) throws SQLException { + try (Statement pstmt = conn.createStatement();) { + pstmt.execute("DELETE from " + table); + } + } + + public static boolean isSelect(final String sql) { + String newSql = sql.trim(); + return newSql.startsWith("select"); + } + + public static boolean isInsertOrUpdateOrDelete(final String sql) { + String newSql = sql.trim(); + return newSql.startsWith("insert") || newSql.startsWith("update") || newSql.startsWith("delete"); + } + + public static int updateUseStatementToExecuteUpdate(final Connection conn, final String sql, + final ParametersDefinition parameters) throws SQLException, ParseException { + List parameter = parameters.getParameter(); + int result = 0; + try (Statement pstmt = conn.createStatement()) { + String newSql = sqlStatement(sql, parameter); + result = pstmt.executeUpdate(newSql); + } + return result; + } + + private static String sqlStatement(final String sql, final List parameter) { + String result = sql; + for (ParameterDefinition parameterDefinition : parameter) { + String type = parameterDefinition.getType(); + String datacol = parameterDefinition.getValue(); + switch (type) { + case "byte": + case "short": + case "int": + case "long": + case "float": + case "double": + result = Pattern.compile("%s", Pattern.LITERAL).matcher(result) + .replaceFirst((Matcher.quoteReplacement(datacol.toString()))); + break; + case "boolean": + result = Pattern.compile("%s", Pattern.LITERAL).matcher(result) + .replaceFirst((Matcher.quoteReplacement(Boolean.valueOf(datacol).toString()))); + break; + case "Date": + throw new DbTestException("Date type not supported for the time being"); + case "String": + result = Pattern.compile("%s", Pattern.LITERAL).matcher(result) + .replaceFirst((Matcher.quoteReplacement("'" + datacol + "'"))); + break; + default: + result = Pattern.compile("%s", Pattern.LITERAL).matcher(result) + .replaceFirst((Matcher.quoteReplacement("'" + datacol + "'"))); + break; + } + } + return result; + } + + public static boolean updateUseStatementToExecute(final Connection conn, final String sql, + final ParametersDefinition parameters) throws SQLException, ParseException { + List parameter = parameters.getParameter(); + try (Statement pstmt = conn.createStatement()) { + String newSql = sqlStatement(sql, parameter); + return pstmt.execute(newSql); + } + } + + public static int updateUsePreparedStatementToExecuteUpdate(final Connection conn, final String sql, + final ParametersDefinition parameters) throws SQLException, ParseException { + List parameter = parameters.getParameter(); + int result = 0; + String newSql = sql.replaceAll("\\%s", "?"); + try (PreparedStatement pstmt = conn.prepareStatement(newSql)) { + sqlPreparedStatement(parameter, pstmt); + result = pstmt.executeUpdate(); + } + return result; + } + + public static boolean updateUsePreparedStatementToExecute(final Connection conn, final String sql, + final ParametersDefinition parameters) throws SQLException, ParseException { + List parameter = parameters.getParameter(); + String newSql = sql.replaceAll("\\%s", "?"); + try (PreparedStatement pstmt = conn.prepareStatement(newSql)) { + sqlPreparedStatement(parameter, pstmt); + return pstmt.execute(); + } + } + + public static DatasetDatabase selectUsePreparedStatement(final Connection conn, final String sql, + ParametersDefinition parameters) throws SQLException, ParseException { + List parameter = parameters.getParameter(); + String newSql = sql.replaceAll("\\%s", "?"); + try (PreparedStatement pstmt = conn.prepareStatement(newSql)) { + sqlPreparedStatement(parameter, pstmt); + try (ResultSet resultSet = pstmt.executeQuery()) { + + ResultSetMetaData rsmd = resultSet.getMetaData(); + int colsint = rsmd.getColumnCount(); + Map cols = new LinkedHashMap<>(); + for (int i = 1; i < colsint + 1; i++) { + String name = rsmd.getColumnName(i); + String type = getDataType(rsmd.getColumnType(i), rsmd.getScale(i)); + cols.put(name, type); + } + + Map> configs = new HashMap<>(); + configs.put("data", cols); + + List> ls = new ArrayList<>(); + Map>> datas = new HashMap<>(); + datas.put("data", ls); + + while (resultSet.next()) { + Map data = new HashMap<>(); + for (Map.Entry stringStringEntry : cols.entrySet()) { + String name = stringStringEntry.getKey(); + String type = stringStringEntry.getValue(); + switch (type) { + case "int": + data.put(name, String.valueOf(resultSet.getInt(name))); + break; + case "long": + data.put(name, String.valueOf(resultSet.getLong(name))); + break; + case "float": + data.put(name, String.valueOf(resultSet.getFloat(name))); + break; + case "double": + data.put(name, String.valueOf(resultSet.getDouble(name))); + break; + case "boolean": + data.put(name, String.valueOf(resultSet.getBoolean(name))); + break; + case "char": + data.put(name, String.valueOf(resultSet.getString(name))); + break; + case "String": + data.put(name, String.valueOf(resultSet.getString(name))); + break; + case "Date": + data.put(name, DateFormatUtils.format(new java.util.Date(resultSet.getDate(name).getTime()), + "yyyy-MM-dd")); + break; + case "Blob": + data.put(name, String.valueOf(resultSet.getBlob(name))); + break; + default: + data.put(name, resultSet.getString(name)); + break; + } + } + ls.add(data); + } + DatasetDatabase result = new DatasetDatabase(); + result.setConfigs(configs); + result.setDatas(datas); + return result; + } + } + } + + public static DatasetDatabase selectUseStatement(final Connection conn, final String sql, + final ParametersDefinition parameters) throws SQLException, ParseException { + List parameter = parameters.getParameter(); + try (Statement pstmt = conn.createStatement()) { + String newSql = sqlStatement(sql, parameter); + try (ResultSet resultSet = pstmt.executeQuery(newSql)) { + ResultSetMetaData rsmd = resultSet.getMetaData(); + int colsint = rsmd.getColumnCount(); + Map cols = new LinkedHashMap<>(); + for (int i = 1; i < colsint + 1; i++) { + String name = rsmd.getColumnName(i); + String type = getDataType(rsmd.getColumnType(i), rsmd.getScale(i)); + cols.put(name, type); + } + + Map> configs = new HashMap<>(); + configs.put("data", cols); + + List> ls = new ArrayList<>(); + Map>> datas = new HashMap<>(); + datas.put("data", ls); + + while (resultSet.next()) { + Map data = new HashMap<>(); + for (Map.Entry stringStringEntry : cols.entrySet()) { + String name = stringStringEntry.getKey(); + String type = stringStringEntry.getValue(); + switch (type) { + case "int": + data.put(name, String.valueOf(resultSet.getInt(name))); + break; + case "long": + data.put(name, String.valueOf(resultSet.getLong(name))); + break; + case "float": + data.put(name, String.valueOf(resultSet.getFloat(name))); + break; + case "double": + data.put(name, String.valueOf(resultSet.getDouble(name))); + break; + case "boolean": + data.put(name, String.valueOf(resultSet.getBoolean(name))); + break; + case "char": + data.put(name, String.valueOf(resultSet.getString(name))); + break; + case "String": + data.put(name, String.valueOf(resultSet.getString(name))); + break; + case "Date": + data.put(name, DateFormatUtils.format(new java.util.Date(resultSet.getDate(name).getTime()), + "yyyy-MM-dd")); + break; + case "Blob": + data.put(name, String.valueOf(resultSet.getBlob(name))); + break; + default: + data.put(name, resultSet.getString(name)); + break; + } + } + ls.add(data); + } + DatasetDatabase result = new DatasetDatabase(); + result.setConfigs(configs); + result.setDatas(datas); + return result; + } + } + } + + private static void sqlPreparedStatement(final List parameter, final PreparedStatement pstmt) + throws SQLException, ParseException { + int index = 1; + for (ParameterDefinition parameterDefinition : parameter) { + String type = parameterDefinition.getType(); + String datacol = parameterDefinition.getValue(); + switch (type) { + case "byte": + pstmt.setByte(index, Byte.valueOf(datacol)); + break; + case "short": + pstmt.setShort(index, Short.valueOf(datacol)); + break; + case "int": + pstmt.setInt(index, Integer.valueOf(datacol)); + break; + case "long": + pstmt.setLong(index, Long.valueOf(datacol)); + break; + case "float": + pstmt.setFloat(index, Float.valueOf(datacol)); + break; + case "double": + pstmt.setDouble(index, Double.valueOf(datacol)); + break; + case "boolean": + pstmt.setBoolean(index, Boolean.valueOf(datacol)); + break; + case "Date": + FastDateFormat fdf = FastDateFormat.getInstance("yyyy-MM-dd"); + pstmt.setDate(index, new Date(fdf.parse(datacol).getTime())); + break; + case "String": + pstmt.setString(index, datacol); + break; + default: + pstmt.setString(index, datacol); + break; + } + index++; + } + } + + private static String getDataType(final int type, final int scale) { + String result = ""; + + switch (type) { + case Types.INTEGER: + result = "int"; + break; + case Types.LONGVARCHAR: + result = "long"; + break; + case Types.BIGINT: + result = "long"; + break; + case Types.FLOAT: + result = "float"; + break; + case Types.DOUBLE: + result = "double"; + break; + case Types.BOOLEAN: + result = "boolean"; + break; + case Types.CHAR: + result = "char"; + break; + case Types.NUMERIC: + switch (scale) { + case 0: + result = "double"; + break; + case -127: + result = "float"; + break; + default: + result = "double"; + } + break; + case Types.VARCHAR: + result = "String"; + break; + case Types.DATE: + result = "Date"; + break; + case Types.TIMESTAMP: + result = "Date"; + break; + case Types.BLOB: + result = "Blob"; + break; + default: + result = "String"; + } + return result; + } + + public static void assertDatas(final DatasetDefinition expected, final DatasetDatabase actual) { + Map> actualConfigs = actual.getConfigs(); + Map> expectedConfigs = expected.getConfigs(); + + for (Map.Entry> stringMapEntry : expectedConfigs.entrySet()) { + Map config = stringMapEntry.getValue(); + Map actualConfig = actualConfigs.get(stringMapEntry.getKey()); + assertTrue(actualConfig != null); + for (Map.Entry stringStringEntry : config.entrySet()) { + assertTrue(stringStringEntry.getValue().equals(actualConfig.get(stringStringEntry.getKey()))); + } + } + + Map>> actualDatass = actual.getDatas(); + Map>> expectDedatas = expected.getDatas(); + for (Map.Entry>> stringListEntry : expectDedatas.entrySet()) { + List> data = stringListEntry.getValue(); + List> actualDatas = actualDatass.get(stringListEntry.getKey()); + + for (int i = 0; i < data.size(); i++) { + Map expectData = data.get(i); + Map actualData = actualDatas.get(i); + for (Map.Entry stringStringEntry : expectData.entrySet()) { + assertTrue(stringStringEntry.getValue().equals(actualData.get(stringStringEntry.getKey()))); + } + + } + } + + } } diff --git a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/FileUtils.java b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/FileUtils.java index ffa97dca6f..8c0aee10c0 100644 --- a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/FileUtils.java +++ b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/FileUtils.java @@ -9,61 +9,61 @@ import java.util.List; */ public class FileUtils { - /** - * 查找某个目录下的所有文件 - * - * @param filePath - * @param prefixFile - * @return - */ - public static List getAllFilePaths(final File filePath, final String prefixFile, final String suffix) { - List result = new ArrayList<>(); - File[] files = filePath.listFiles(); - if (files == null) { - return result; - } - for (File each : files) { - if (each.isDirectory()) { - getSubFilePaths(each, result, prefixFile, suffix); - } else { - getFiles(prefixFile, suffix, result, each); + /** + * 查找某个目录下的所有文件 + * + * @param filePath + * @param prefixFile + * @return + */ + public static List getAllFilePaths(final File filePath, final String prefixFile, final String suffix) { + List result = new ArrayList<>(); + File[] files = filePath.listFiles(); + if (files == null) { + return result; + } + for (File each : files) { + if (each.isDirectory()) { + getSubFilePaths(each, result, prefixFile, suffix); + } else { + getFiles(prefixFile, suffix, result, each); - } - } - return result; - } + } + } + return result; + } - private static void getFiles(final String prefixFile, final String suffix, final List filePaths, final File f) { - if (prefixFile != null) { - if (f.getName().startsWith(prefixFile)) { - if (suffix != null) { - if (f.getName().endsWith("." + suffix)) { - filePaths.add(f.getPath()); - } - } else { - filePaths.add(f.getPath()); - } - } - } else { - filePaths.add(f.getPath()); - } - } + private static void getFiles(final String prefixFile, final String suffix, final List filePaths, final File f) { + if (prefixFile != null) { + if (f.getName().startsWith(prefixFile)) { + if (suffix != null) { + if (f.getName().endsWith("." + suffix)) { + filePaths.add(f.getPath()); + } + } else { + filePaths.add(f.getPath()); + } + } + } else { + filePaths.add(f.getPath()); + } + } - private static List getSubFilePaths(final File filePath, final List filePaths, final String prefixFile, - final String suffix) { - File[] files = filePath.listFiles(); - List result = filePaths; - if (files == null) { - return result; - } - for (File each : files) { - if (each.isDirectory()) { - getSubFilePaths(each, result, prefixFile, suffix); - } else { - getFiles(prefixFile, suffix, result, each); - } - } - return result; - } + private static List getSubFilePaths(final File filePath, final List filePaths, final String prefixFile, + final String suffix) { + File[] files = filePath.listFiles(); + List result = filePaths; + if (files == null) { + return result; + } + for (File each : files) { + if (each.isDirectory()) { + getSubFilePaths(each, result, prefixFile, suffix); + } else { + getFiles(prefixFile, suffix, result, each); + } + } + return result; + } } diff --git a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/PathUtils.java b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/PathUtils.java index da9767432e..18bb3a0a3d 100644 --- a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/PathUtils.java +++ b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/PathUtils.java @@ -4,39 +4,39 @@ import io.shardingjdbc.dbtest.exception.DbTestException; public class PathUtils { - private static final String BasePath = PathUtils.class.getClassLoader().getResource("").getPath(); + private static final String BasePath = PathUtils.class.getClassLoader().getResource("").getPath(); - /** - * 获取资源路径 - * - * @param path - * @return - */ - public static String getPath(final String path, final String parent) { - if (path == null) { - throw new DbTestException("路径不能为空"); - } + /** + * 获取资源路径 + * + * @param path + * @return + */ + public static String getPath(final String path, final String parent) { + if (path == null) { + throw new DbTestException("路径不能为空"); + } - String result = path; - if (result.startsWith("classpath:")) { - result = result.substring("classpath:".length()); - result = BasePath + result; - return result; - } - if (parent != null) { - return parent + result; - } - return result; - } + String result = path; + if (result.startsWith("classpath:")) { + result = result.substring("classpath:".length()); + result = BasePath + result; + return result; + } + if (parent != null) { + return parent + result; + } + return result; + } - /** - * 获取资源路径 - * - * @param path - * @return - */ - public static String getPath(final String path) { - return getPath(path, null); - } + /** + * 获取资源路径 + * + * @param path + * @return + */ + public static String getPath(final String path) { + return getPath(path, null); + } } diff --git a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/XMLUtil.java b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/XMLUtil.java index e816a45ab7..9a53144b2c 100644 --- a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/XMLUtil.java +++ b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/common/XMLUtil.java @@ -19,39 +19,39 @@ import org.xml.sax.SAXException; public class XMLUtil { - public static Document parseFile(final File file) throws ParserConfigurationException, IOException, SAXException { - DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - dbf.setValidating(false); - DocumentBuilder db = dbf.newDocumentBuilder(); - Document result = db.parse(file); - - return result; - } - - public static Document parseStream(final InputStream in) throws ParserConfigurationException, IOException, SAXException { - DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - dbf.setValidating(false); - DocumentBuilder db = dbf.newDocumentBuilder(); - Document result = db.parse(in); - return result; - } - - public static String getNodeValue(final Node node) { - return node.getTextContent(); - } - - public static NodeList getNodeList(final Node node, final String xpath) throws XPathExpressionException { - XPathFactory factory = XPathFactory.newInstance(); - XPath oXpath = factory.newXPath(); - NodeList result = (NodeList) oXpath.evaluate(xpath, node, XPathConstants.NODESET); - return result; - } - - public static Node getNode(final Node node, final String xpath) throws XPathExpressionException { - XPathFactory factory = XPathFactory.newInstance(); - XPath oXpath = factory.newXPath(); - Node result = (Node) oXpath.evaluate(xpath, node, XPathConstants.NODE); - - return result; - } + public static Document parseFile(final File file) throws ParserConfigurationException, IOException, SAXException { + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + dbf.setValidating(false); + DocumentBuilder db = dbf.newDocumentBuilder(); + Document result = db.parse(file); + + return result; + } + + public static Document parseStream(final InputStream in) throws ParserConfigurationException, IOException, SAXException { + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + dbf.setValidating(false); + DocumentBuilder db = dbf.newDocumentBuilder(); + Document result = db.parse(in); + return result; + } + + public static String getNodeValue(final Node node) { + return node.getTextContent(); + } + + public static NodeList getNodeList(final Node node, final String xpath) throws XPathExpressionException { + XPathFactory factory = XPathFactory.newInstance(); + XPath oXpath = factory.newXPath(); + NodeList result = (NodeList) oXpath.evaluate(xpath, node, XPathConstants.NODESET); + return result; + } + + public static Node getNode(final Node node, final String xpath) throws XPathExpressionException { + XPathFactory factory = XPathFactory.newInstance(); + XPath oXpath = factory.newXPath(); + Node result = (Node) oXpath.evaluate(xpath, node, XPathConstants.NODE); + + return result; + } } diff --git a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/config/AnalyzeConfig.java b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/config/AnalyzeConfig.java index 16747cbb1b..81be6283f3 100644 --- a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/config/AnalyzeConfig.java +++ b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/config/AnalyzeConfig.java @@ -11,13 +11,13 @@ import io.shardingjdbc.dbtest.config.bean.AssertsDefinition; public class AnalyzeConfig { - public static AssertsDefinition analyze(final String path) throws IOException, JAXBException { - JAXBContext context = JAXBContext.newInstance(AssertsDefinition.class); + public static AssertsDefinition analyze(final String path) throws IOException, JAXBException { + JAXBContext context = JAXBContext.newInstance(AssertsDefinition.class); - Unmarshaller unmarshal = context.createUnmarshaller(); - FileReader reader = new FileReader(path); - return (AssertsDefinition) unmarshal.unmarshal(reader); + Unmarshaller unmarshal = context.createUnmarshaller(); + FileReader reader = new FileReader(path); + return (AssertsDefinition) unmarshal.unmarshal(reader); - } + } } diff --git a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/config/bean/ParameterDefinition.java b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/config/bean/ParameterDefinition.java index 873752ef4c..2c4833cfc6 100644 --- a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/config/bean/ParameterDefinition.java +++ b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/config/bean/ParameterDefinition.java @@ -1,6 +1,5 @@ package io.shardingjdbc.dbtest.config.bean; - import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; diff --git a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/config/bean/parseContext/AggregationSelectItem.java b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/config/bean/parseContext/AggregationSelectItem.java index a3557def02..ab040a0869 100644 --- a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/config/bean/parseContext/AggregationSelectItem.java +++ b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/config/bean/parseContext/AggregationSelectItem.java @@ -33,21 +33,21 @@ import lombok.Setter; @XmlAccessorType(XmlAccessType.FIELD) public final class AggregationSelectItem { - @XmlAttribute(name = "inner-expression") - private String innerExpression; + @XmlAttribute(name = "inner-expression") + private String innerExpression; - @XmlAttribute(name = "aggregation-type") - private String aggregationType; + @XmlAttribute(name = "aggregation-type") + private String aggregationType; - @XmlAttribute - private String alias; + @XmlAttribute + private String alias; - @XmlAttribute - private String option; + @XmlAttribute + private String option; - @XmlAttribute - private Integer index; + @XmlAttribute + private Integer index; - @XmlElement(name = "derived-column") - private List derivedColumns = new ArrayList<>(2); + @XmlElement(name = "derived-column") + private List derivedColumns = new ArrayList<>(2); } diff --git a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/data/AnalyzeDataset.java b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/data/AnalyzeDataset.java index 8287e5bc49..fe65f8b4a0 100644 --- a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/data/AnalyzeDataset.java +++ b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/data/AnalyzeDataset.java @@ -21,54 +21,54 @@ import io.shardingjdbc.dbtest.common.XMLUtil; public class AnalyzeDataset { - public static DatasetDefinition analyze(final String path) - throws IOException, SAXException, ParserConfigurationException, XPathExpressionException { - return analyze(new File(path)); - } + public static DatasetDefinition analyze(final String path) + throws IOException, SAXException, ParserConfigurationException, XPathExpressionException { + return analyze(new File(path)); + } - public static DatasetDefinition analyze(final File file) - throws IOException, SAXException, ParserConfigurationException, XPathExpressionException { + public static DatasetDefinition analyze(final File file) + throws IOException, SAXException, ParserConfigurationException, XPathExpressionException { - Document doc = XMLUtil.parseFile(file); - Node rootNode = XMLUtil.getNode(doc, "/dataset"); - NodeList firstNodeList = rootNode.getChildNodes(); - DatasetDefinition result = new DatasetDefinition(); - for (int i = 0; i < firstNodeList.getLength(); i++) { - Node firstNode = firstNodeList.item(i); - if (firstNode.getNodeType() == Node.ELEMENT_NODE) { + Document doc = XMLUtil.parseFile(file); + Node rootNode = XMLUtil.getNode(doc, "/dataset"); + NodeList firstNodeList = rootNode.getChildNodes(); + DatasetDefinition result = new DatasetDefinition(); + for (int i = 0; i < firstNodeList.getLength(); i++) { + Node firstNode = firstNodeList.item(i); + if (firstNode.getNodeType() == Node.ELEMENT_NODE) { - if ("table-config".equals(firstNode.getNodeName())) { - analyzeTableConfig(result, firstNode); - } else { - Map>> datas = result.getDatas(); - String tableName = firstNode.getNodeName(); - List> datalists = datas.get(tableName); - if (datalists == null) { - datalists = new ArrayList<>(); - datas.put(tableName, datalists); - } + if ("table-config".equals(firstNode.getNodeName())) { + analyzeTableConfig(result, firstNode); + } else { + Map>> datas = result.getDatas(); + String tableName = firstNode.getNodeName(); + List> datalists = datas.get(tableName); + if (datalists == null) { + datalists = new ArrayList<>(); + datas.put(tableName, datalists); + } - NamedNodeMap attrMap = firstNode.getAttributes(); + NamedNodeMap attrMap = firstNode.getAttributes(); - Map datacols = new HashMap<>(); - datalists.add(datacols); - for (int j = 0; j < attrMap.getLength(); j++) { - Node nodeAttr = attrMap.item(j); - Attr attr = (Attr) nodeAttr; - String attrName = attr.getName(); - String attrValue = attr.getValue(); - datacols.put(attrName, attrValue); - } - } - } - } - return result; - } + Map datacols = new HashMap<>(); + datalists.add(datacols); + for (int j = 0; j < attrMap.getLength(); j++) { + Node nodeAttr = attrMap.item(j); + Attr attr = (Attr) nodeAttr; + String attrName = attr.getName(); + String attrValue = attr.getValue(); + datacols.put(attrName, attrValue); + } + } + } + } + return result; + } - private static void analyzeTableConfig(final DatasetDefinition datasetDefinition, final Node firstNode) { - NodeList secondNodeList = firstNode.getChildNodes(); - Map> configs = datasetDefinition.getConfigs(); - for (int j = 0; j < secondNodeList.getLength(); j++) { + private static void analyzeTableConfig(final DatasetDefinition datasetDefinition, final Node firstNode) { + NodeList secondNodeList = firstNode.getChildNodes(); + Map> configs = datasetDefinition.getConfigs(); + for (int j = 0; j < secondNodeList.getLength(); j++) { Node secondNode = secondNodeList.item(j); if (secondNode.getNodeType() == Node.ELEMENT_NODE) { Map maps = new HashMap<>(); @@ -82,6 +82,6 @@ public class AnalyzeDataset { } } } - } + } } diff --git a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/data/DatasetDefinition.java b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/data/DatasetDefinition.java index 5aa30f6a38..c822ad03b0 100644 --- a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/data/DatasetDefinition.java +++ b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/data/DatasetDefinition.java @@ -9,14 +9,14 @@ import lombok.Data; @Data public class DatasetDefinition { - /** - * Map> - */ - private Map> configs = new HashMap<>(); + /** + * Map> + */ + private Map> configs = new HashMap<>(); - /** - * Map>> - */ - private Map>> datas = new HashMap<>(); + /** + * Map>> + */ + private Map>> datas = new HashMap<>(); } diff --git a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/dataSource/DataSourceUtil.java b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/dataSource/DataSourceUtil.java index a67d04ca47..3d346512bb 100644 --- a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/dataSource/DataSourceUtil.java +++ b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/dataSource/DataSourceUtil.java @@ -18,35 +18,35 @@ import io.shardingjdbc.core.rule.ShardingRule; */ public class DataSourceUtil { - public static DataSource getDataSource(final String path) throws IOException, SQLException { - return ShardingDataSourceFactory.createDataSource(new File(path)); - } - - public static Map getDataSourceMap(final ShardingDataSource shardingDataSource) - throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { - ShardingContext shardingContext = getShardingContext(shardingDataSource); - return shardingContext.getShardingRule().getDataSourceMap(); - } - - public static ShardingRule getShardingRule(final ShardingDataSource shardingDataSource) - throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { - ShardingContext shardingContext = getShardingContext(shardingDataSource); - return shardingContext.getShardingRule(); - } - - public static ShardingContext getShardingContext(final ShardingDataSource shardingDataSource) - throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { - Field field = shardingDataSource.getClass().getDeclaredField("shardingContext"); - field.setAccessible(true); - return (ShardingContext) field.get(shardingDataSource); - } - - public static String getDatabaseName(final String dataSetFile) { - String fileName = new File(dataSetFile).getName(); - if (-1 == fileName.lastIndexOf(".")) { - return fileName; - } - return fileName.substring(0, fileName.lastIndexOf(".")); - } + public static DataSource getDataSource(final String path) throws IOException, SQLException { + return ShardingDataSourceFactory.createDataSource(new File(path)); + } + + public static Map getDataSourceMap(final ShardingDataSource shardingDataSource) + throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { + ShardingContext shardingContext = getShardingContext(shardingDataSource); + return shardingContext.getShardingRule().getDataSourceMap(); + } + + public static ShardingRule getShardingRule(final ShardingDataSource shardingDataSource) + throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { + ShardingContext shardingContext = getShardingContext(shardingDataSource); + return shardingContext.getShardingRule(); + } + + public static ShardingContext getShardingContext(final ShardingDataSource shardingDataSource) + throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { + Field field = shardingDataSource.getClass().getDeclaredField("shardingContext"); + field.setAccessible(true); + return (ShardingContext) field.get(shardingDataSource); + } + + public static String getDatabaseName(final String dataSetFile) { + String fileName = new File(dataSetFile).getName(); + if (-1 == fileName.lastIndexOf(".")) { + return fileName; + } + return fileName.substring(0, fileName.lastIndexOf(".")); + } } diff --git a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/exception/DbTestException.java b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/exception/DbTestException.java index f5815f94bc..1a817ad09f 100644 --- a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/exception/DbTestException.java +++ b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/exception/DbTestException.java @@ -2,9 +2,9 @@ package io.shardingjdbc.dbtest.exception; public class DbTestException extends RuntimeException { - private static final long serialVersionUID = 8269224755642356888L; + private static final long serialVersionUID = 8269224755642356888L; - public DbTestException(final String message){ + public DbTestException(final String message) { super(message); } diff --git a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/init/InItCreateSchema.java b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/init/InItCreateSchema.java index acf6ee1f6c..42e55657ea 100644 --- a/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/init/InItCreateSchema.java +++ b/sharding-jdbc-core/src/test/java/io/shardingjdbc/dbtest/init/InItCreateSchema.java @@ -17,166 +17,166 @@ import io.shardingjdbc.dbtest.common.DatabaseTypeUtils; public class InItCreateSchema { - /** - * 初始化数据库表 - */ - public static synchronized void initTable() { - for (String db : ConfigRuntime.getDbs()) { - DatabaseType databaseType = DatabaseTypeUtils.getDatabaseType(db); - createSchema(databaseType); - } - } - - /** - * 创建数据库 - */ - public static void createDatabase() { - Connection conn = null; - try { - for (String each : ConfigRuntime.getDbs()) { - DatabaseType databaseType = DatabaseTypeUtils.getDatabaseType(each); - - conn = initialConnection(null, databaseType); - String packing = "default"; - if (DatabaseType.Oracle == databaseType) { - packing = "oracle"; - } - RunScript.execute(conn, new InputStreamReader(InItCreateSchema.class.getClassLoader() - .getResourceAsStream("integrate/schema/" + packing + "/manual_schema_create.sql"))); - - } - } catch (SQLException e) { - e.printStackTrace(); - } finally { - if (conn != null) { - try { - conn.close(); - } catch (SQLException e) { - e.printStackTrace(); - } - } - - } - } - - /** - * 初始化数据库表 - */ - public static synchronized void dropDatabase() { - Connection conn = null; - try { - for (String each : ConfigRuntime.getDbs()) { - DatabaseType databaseType = DatabaseTypeUtils.getDatabaseType(each); - - conn = initialConnection(null, databaseType); - String packing = "default"; - if (DatabaseType.Oracle == databaseType) { - packing = "oracle"; - } - RunScript.execute(conn, new InputStreamReader(InItCreateSchema.class.getClassLoader() - .getResourceAsStream("integrate/schema/" + packing + "/manual_schema_drop.sql"))); - - } - } catch (SQLException e) { - e.printStackTrace(); - } finally { - if (conn != null) { - try { - conn.close(); - } catch (SQLException e) { - e.printStackTrace(); - } - } - - } - } - - public static void main(String[] args) { - initTable(); - } - - private static void createSchema(final DatabaseType dbType) { - createJdbcSchema(dbType); - createMasterSlaveOnlySchema(dbType); - createShardingSchema(dbType); - } - - private static void createShardingSchema(final DatabaseType dbType) { - try { - Connection conn; - for (int i = 0; i < 10; i++) { - for (String database : Arrays.asList("db", "dbtbl", "nullable", "master", "slave")) { - conn = initialConnection(database + "_" + i, dbType); - RunScript.execute(conn, new InputStreamReader(InItCreateSchema.class.getClassLoader() - .getResourceAsStream("integrate/schema/table/" + database + ".sql"))); - conn.close(); - } - } - conn = initialConnection("tbl", dbType); - RunScript.execute(conn, new InputStreamReader( - InItCreateSchema.class.getClassLoader().getResourceAsStream("integrate/schema/table/tbl.sql"))); - conn.close(); - } catch (final SQLException ex) { - ex.printStackTrace(); - } - } - - private static void createMasterSlaveOnlySchema(final DatabaseType dbType) { - try { - Connection conn; - for (String database : Arrays.asList("master_only", "slave_only")) { - conn = initialConnection(database, dbType); - RunScript.execute(conn, new InputStreamReader(InItCreateSchema.class.getClassLoader() - .getResourceAsStream("integrate/schema/table/" + database + ".sql"))); - conn.close(); - } - } catch (final SQLException ex) { - ex.printStackTrace(); - } - } - - private static void createJdbcSchema(final DatabaseType dbType) { - try { - Connection conn; - for (int i = 0; i < 2; i++) { - conn = initialConnection("jdbc_" + i, dbType); - RunScript.execute(conn, new InputStreamReader(InItCreateSchema.class.getClassLoader() - .getResourceAsStream("integrate/schema/table/jdbc.sql"))); - conn.close(); - } - } catch (final SQLException ex) { - ex.printStackTrace(); - } - } - - protected static String getDatabaseName(final String dataSetFile) { - String fileName = new File(dataSetFile).getName(); - if (-1 == fileName.lastIndexOf(".")) { - return fileName; - } - return fileName.substring(0, fileName.lastIndexOf(".")); - } - - private static BasicDataSource buildDataSource(final String dbName, final DatabaseType type) { - - String newDbName = dbName; - BasicDataSource result = new BasicDataSource(); - result.setDriverClassName(ConfigRuntime.getDriverClassName(type)); - if (newDbName == null) { - newDbName = ConfigRuntime.getDefualtdb(type); - } - result.setUrl(ConfigRuntime.getURL(type, newDbName)); - result.setUsername(ConfigRuntime.getUsername(type)); - result.setPassword(ConfigRuntime.getPassword(type)); - result.setMaxActive(1); - if (DatabaseType.Oracle == type) { - result.setConnectionInitSqls(Collections.singleton("ALTER SESSION SET CURRENT_SCHEMA = " + newDbName)); - } - return result; - } - - private static Connection initialConnection(final String dbName, final DatabaseType type) throws SQLException { - return buildDataSource(dbName, type).getConnection(); - } + /** + * 初始化数据库表 + */ + public static synchronized void initTable() { + for (String db : ConfigRuntime.getDbs()) { + DatabaseType databaseType = DatabaseTypeUtils.getDatabaseType(db); + createSchema(databaseType); + } + } + + /** + * 创建数据库 + */ + public static void createDatabase() { + Connection conn = null; + try { + for (String each : ConfigRuntime.getDbs()) { + DatabaseType databaseType = DatabaseTypeUtils.getDatabaseType(each); + + conn = initialConnection(null, databaseType); + String packing = "default"; + if (DatabaseType.Oracle == databaseType) { + packing = "oracle"; + } + RunScript.execute(conn, new InputStreamReader(InItCreateSchema.class.getClassLoader() + .getResourceAsStream("integrate/schema/" + packing + "/manual_schema_create.sql"))); + + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + } + } + + /** + * 初始化数据库表 + */ + public static synchronized void dropDatabase() { + Connection conn = null; + try { + for (String each : ConfigRuntime.getDbs()) { + DatabaseType databaseType = DatabaseTypeUtils.getDatabaseType(each); + + conn = initialConnection(null, databaseType); + String packing = "default"; + if (DatabaseType.Oracle == databaseType) { + packing = "oracle"; + } + RunScript.execute(conn, new InputStreamReader(InItCreateSchema.class.getClassLoader() + .getResourceAsStream("integrate/schema/" + packing + "/manual_schema_drop.sql"))); + + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + } + } + + public static void main(String[] args) { + initTable(); + } + + private static void createSchema(final DatabaseType dbType) { + createJdbcSchema(dbType); + createMasterSlaveOnlySchema(dbType); + createShardingSchema(dbType); + } + + private static void createShardingSchema(final DatabaseType dbType) { + try { + Connection conn; + for (int i = 0; i < 10; i++) { + for (String database : Arrays.asList("db", "dbtbl", "nullable", "master", "slave")) { + conn = initialConnection(database + "_" + i, dbType); + RunScript.execute(conn, new InputStreamReader(InItCreateSchema.class.getClassLoader() + .getResourceAsStream("integrate/schema/table/" + database + ".sql"))); + conn.close(); + } + } + conn = initialConnection("tbl", dbType); + RunScript.execute(conn, new InputStreamReader( + InItCreateSchema.class.getClassLoader().getResourceAsStream("integrate/schema/table/tbl.sql"))); + conn.close(); + } catch (final SQLException ex) { + ex.printStackTrace(); + } + } + + private static void createMasterSlaveOnlySchema(final DatabaseType dbType) { + try { + Connection conn; + for (String database : Arrays.asList("master_only", "slave_only")) { + conn = initialConnection(database, dbType); + RunScript.execute(conn, new InputStreamReader(InItCreateSchema.class.getClassLoader() + .getResourceAsStream("integrate/schema/table/" + database + ".sql"))); + conn.close(); + } + } catch (final SQLException ex) { + ex.printStackTrace(); + } + } + + private static void createJdbcSchema(final DatabaseType dbType) { + try { + Connection conn; + for (int i = 0; i < 2; i++) { + conn = initialConnection("jdbc_" + i, dbType); + RunScript.execute(conn, new InputStreamReader(InItCreateSchema.class.getClassLoader() + .getResourceAsStream("integrate/schema/table/jdbc.sql"))); + conn.close(); + } + } catch (final SQLException ex) { + ex.printStackTrace(); + } + } + + protected static String getDatabaseName(final String dataSetFile) { + String fileName = new File(dataSetFile).getName(); + if (-1 == fileName.lastIndexOf(".")) { + return fileName; + } + return fileName.substring(0, fileName.lastIndexOf(".")); + } + + private static BasicDataSource buildDataSource(final String dbName, final DatabaseType type) { + + String newDbName = dbName; + BasicDataSource result = new BasicDataSource(); + result.setDriverClassName(ConfigRuntime.getDriverClassName(type)); + if (newDbName == null) { + newDbName = ConfigRuntime.getDefualtdb(type); + } + result.setUrl(ConfigRuntime.getURL(type, newDbName)); + result.setUsername(ConfigRuntime.getUsername(type)); + result.setPassword(ConfigRuntime.getPassword(type)); + result.setMaxActive(1); + if (DatabaseType.Oracle == type) { + result.setConnectionInitSqls(Collections.singleton("ALTER SESSION SET CURRENT_SCHEMA = " + newDbName)); + } + return result; + } + + private static Connection initialConnection(final String dbName, final DatabaseType type) throws SQLException { + return buildDataSource(dbName, type).getConnection(); + } } -- GitLab