diff --git a/windchat-storage/src/main/java/com/windchat/im/storage/DataSourceManager.java b/windchat-storage/src/main/java/com/windchat/im/storage/DataSourceManager.java index 0e4b8a9..7935e50 100755 --- a/windchat-storage/src/main/java/com/windchat/im/storage/DataSourceManager.java +++ b/windchat-storage/src/main/java/com/windchat/im/storage/DataSourceManager.java @@ -1,17 +1,17 @@ -/** +/** * Copyright 2018-2028 Akaxin Group - * + *
* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + *
+ * http://www.apache.org/licenses/LICENSE-2.0 + *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
- * limitations under the License.
+ * limitations under the License.
*/
package com.windchat.im.storage;
@@ -43,101 +43,101 @@ import com.windchat.im.storage.util.MigrateUtils;
/**
* 数据源初始化管理,不做具体操作对外提供方法
- *
+ *
* @author Sam{@link an.guoyue254@gmail.com}
* @since 2018-01-31 12:15:15
*/
public class DataSourceManager {
- private static final Logger logger = LoggerFactory.getLogger(DataSourceManager.class);
+ private static final Logger logger = LoggerFactory.getLogger(DataSourceManager.class);
- private static final String OPENZALY_DATABASE_CONFIG = "openzaly-server.config";
+ private static final String WINDCHAT_DATABASE_CONFIG = "windchat-server.config";
- private DataSourceManager() {
- }
+ private DataSourceManager() {
+ }
- // server启动,初始化数据库
- public static void init(DBConfig config)
- throws InitDatabaseException, UpgradeDatabaseException, NeedInitMysqlException {
- try {
- DBType dbType = DBType.PERSONAL;
- Properties pro = loadDatabaseConfig(OPENZALY_DATABASE_CONFIG);
- if (pro != null && pro.size() > 0) {
- // get edition from config file
- String edition = MysqlManager.trimToNull(pro, JdbcConst.OPENZALY_EDITION);
- if (StringUtils.isNotEmpty(edition)) {
- dbType = DBType.getDBType(edition);
- }
- }
- config.setDb(dbType);
- logger.info("load database config finish databaseType:{}", dbType);
+ // server启动,初始化数据库
+ public static void init(DBConfig config)
+ throws InitDatabaseException, UpgradeDatabaseException, NeedInitMysqlException {
+ try {
+ DBType dbType = DBType.PERSONAL;
+ Properties pro = loadDatabaseConfig(WINDCHAT_DATABASE_CONFIG);
+ if (pro != null && pro.size() > 0) {
+ // get edition from config file
+ String edition = MysqlManager.trimToNull(pro, JdbcConst.WINDCHAT_EDITION);
+ if (StringUtils.isNotEmpty(edition)) {
+ dbType = DBType.getDBType(edition);
+ }
+ }
+ config.setDb(dbType);
+ logger.info("load database config finish databaseType:{}", dbType);
- switch (dbType) {
- case PERSONAL:
- System.setProperty("database", dbType.getName());
- SQLiteJDBCManager.initSqliteDB(config);
- PrepareSiteConfigData.init(config);// 初始化数据库中初始数据
- break;
- case TEAM:
- System.setProperty("database", dbType.getName());
- MysqlManager.initMysqlDB(pro); // 初始化数据库以及数据库连接
- PrepareSiteConfigData.init(config);// 初始化数据库中初始数据
- break;
- }
- } catch (SQLException e) {
- throw new InitDatabaseException("init database error", e);
- }
- }
+ switch (dbType) {
+ case PERSONAL:
+ System.setProperty("database", dbType.getName());
+ SQLiteJDBCManager.initSqliteDB(config);
+ PrepareSiteConfigData.init(config);// 初始化数据库中初始数据
+ break;
+ case TEAM:
+ System.setProperty("database", dbType.getName());
+ MysqlManager.initMysqlDB(pro); // 初始化数据库以及数据库连接
+ PrepareSiteConfigData.init(config);// 初始化数据库中初始数据
+ break;
+ }
+ } catch (SQLException e) {
+ throw new InitDatabaseException("init database error", e);
+ }
+ }
- // 初始化,生成mysql的配置文件
- public static void initMysqlConfig() throws FileNotFoundException, IOException {
- // 生成配置文件
- File configFile = new File(OPENZALY_DATABASE_CONFIG);
- if (!configFile.exists()) {
- FileUtils.writeResourceToFile("/" + OPENZALY_DATABASE_CONFIG, configFile);
- }
- }
+ // 初始化,生成mysql的配置文件
+ public static void initMysqlConfig() throws FileNotFoundException, IOException {
+ // 生成配置文件
+ File configFile = new File(WINDCHAT_DATABASE_CONFIG);
+ if (!configFile.exists()) {
+ FileUtils.writeResourceToFile("/" + WINDCHAT_DATABASE_CONFIG, configFile);
+ }
+ }
- // 手动升级数据库
- public static int upgradeDB(DBConfig config) throws UpgradeDatabaseException {
- try {
- switch (config.getDb()) {
- case PERSONAL:
- return SQLiteUpgrade.doUpgrade(config, true);
- case TEAM:
- throw new UpgradeDatabaseException("database upgrade can't support mysql");
- }
- } catch (SQLException e) {
- throw new UpgradeDatabaseException("upgrade database error", e);
- }
- return 0;
- }
+ // 手动升级数据库
+ public static int upgradeDB(DBConfig config) throws UpgradeDatabaseException {
+ try {
+ switch (config.getDb()) {
+ case PERSONAL:
+ return SQLiteUpgrade.doUpgrade(config, true);
+ case TEAM:
+ throw new UpgradeDatabaseException("database upgrade can't support mysql");
+ }
+ } catch (SQLException e) {
+ throw new UpgradeDatabaseException("upgrade database error", e);
+ }
+ return 0;
+ }
- // 迁移数据库,把sqlite迁移至mysql数据库
- public static void migrateDB() throws MigrateDatabaseException, NeedInitMysqlException {
- // 加载配置文件中的数据库配置
- Properties prop = loadDatabaseConfig(OPENZALY_DATABASE_CONFIG);
- MigrateUtils.sqlite2Mysql(prop);
- }
+ // 迁移数据库,把sqlite迁移至mysql数据库
+ public static void migrateDB() throws MigrateDatabaseException, NeedInitMysqlException {
+ // 加载配置文件中的数据库配置
+ Properties prop = loadDatabaseConfig(WINDCHAT_DATABASE_CONFIG);
+ MigrateUtils.sqlite2Mysql(prop);
+ }
- public static Properties loadDatabaseConfig(String configPath) {
- Properties properties = null;
- InputStream inputStream = null;
- try {
- properties = new Properties();
- inputStream = new FileInputStream(configPath);
- properties.load(inputStream);
- } catch (Exception e) {
- logger.error("load database config fail,openzaly will use sqlite database,cause={}", e.getMessage());
- } finally {
- try {
- if (inputStream != null) {
- inputStream.close();
- }
- } catch (IOException e) {
- logger.error("close db config inputstream error", e);
- }
- }
- return properties;
- }
+ public static Properties loadDatabaseConfig(String configPath) {
+ Properties properties = null;
+ InputStream inputStream = null;
+ try {
+ properties = new Properties();
+ inputStream = new FileInputStream(configPath);
+ properties.load(inputStream);
+ } catch (Exception e) {
+ logger.error("load database config fail,WindChat will use sqlite database,cause={}", e.getMessage());
+ } finally {
+ try {
+ if (inputStream != null) {
+ inputStream.close();
+ }
+ } catch (IOException e) {
+ logger.error("close db config inputstream error", e);
+ }
+ }
+ return properties;
+ }
}
diff --git a/windchat-storage/src/main/java/com/windchat/im/storage/dao/config/JdbcConst.java b/windchat-storage/src/main/java/com/windchat/im/storage/dao/config/JdbcConst.java
index cf4694b..dbb5127 100755
--- a/windchat-storage/src/main/java/com/windchat/im/storage/dao/config/JdbcConst.java
+++ b/windchat-storage/src/main/java/com/windchat/im/storage/dao/config/JdbcConst.java
@@ -8,39 +8,39 @@ package com.windchat.im.storage.dao.config;
*/
public interface JdbcConst {
- String OPENZALY_EDITION = "openzaly.edition";
+ String WINDCHAT_EDITION = "windchat.edition";
- String SQLITE_URL = "openzaly.sqlite.url";
+ String SQLITE_URL = "windchat.sqlite.url";
// ----------------------MASTER--------------------
- String MYSQL_HOST = "openzaly.mysql.host";
- String MYSQL_PORT = "openzaly.mysql.port";
- String MYSQL_DB = "openzaly.mysql.database";
+ String MYSQL_HOST = "windchat.mysql.host";
+ String MYSQL_PORT = "windchat.mysql.port";
+ String MYSQL_DB = "windchat.mysql.database";
- String MYSQL_USER_NAME = "openzaly.mysql.username";
- String MYSQL_PASSWORD = "openzaly.mysql.password";
- String MYSQL_INITIAL_SIZE = "openzaly.mysql.initial-size";
- String MYSQL_MAX_SIZE = "openzaly.mysql.max-size";
- String MYSQL_MAX_IDLE = "openzaly.mysql.max-idle";
+ String MYSQL_USER_NAME = "windchat.mysql.username";
+ String MYSQL_PASSWORD = "windchat.mysql.password";
+ String MYSQL_INITIAL_SIZE = "windchat.mysql.initial-size";
+ String MYSQL_MAX_SIZE = "windchat.mysql.max-size";
+ String MYSQL_MAX_IDLE = "windchat.mysql.max-idle";
- String MYSQL_USE_UNICODE = "openzaly.mysql.useUnicode";
- String MYSQL_CHARACTER_ENCODING = "openzaly.mysql.characterEncoding";
- String MYSQL_VERIFY_SERVER_CERTIFICATE = "openzaly.mysql.verifyServerCertificate";
- String MYSQL_USE_SSL = "openzaly.mysql.useSSL";
+ String MYSQL_USE_UNICODE = "windchat.mysql.useUnicode";
+ String MYSQL_CHARACTER_ENCODING = "windchat.mysql.characterEncoding";
+ String MYSQL_VERIFY_SERVER_CERTIFICATE = "windchat.mysql.verifyServerCertificate";
+ String MYSQL_USE_SSL = "windchat.mysql.useSSL";
// ----------------------SLAVE--------------------
- String MYSQL_SLAVE_HOST = "openzaly.mysql.slave.host";
- String MYSQL_SLAVE_PORT = "openzaly.mysql.slave.port";
- String MYSQL_SLAVE_DB = "openzaly.mysql.slave.database";
+ String MYSQL_SLAVE_HOST = "windchat.mysql.slave.host";
+ String MYSQL_SLAVE_PORT = "windchat.mysql.slave.port";
+ String MYSQL_SLAVE_DB = "windchat.mysql.slave.database";
- String MYSQL_SLAVE_USER_NAME = "openzaly.mysql.slave.username";
- String MYSQL_SLAVE_PASSWORD = "openzaly.mysql.slave.password";
- String MYSQL_SLAVE_INITIAL_SIZE = "openzaly.mysql.slave.initial-size";
- String MYSQL_SLAVE_MAX_SIZE = "openzaly.mysql.slave.max-size";
- String MYSQL_SLAVE_MAX_IDLE = "openzaly.mysql.slave.max-idle";
+ String MYSQL_SLAVE_USER_NAME = "windchat.mysql.slave.username";
+ String MYSQL_SLAVE_PASSWORD = "windchat.mysql.slave.password";
+ String MYSQL_SLAVE_INITIAL_SIZE = "windchat.mysql.slave.initial-size";
+ String MYSQL_SLAVE_MAX_SIZE = "windchat.mysql.slave.max-size";
+ String MYSQL_SLAVE_MAX_IDLE = "windchat.mysql.slave.max-idle";
- String MYSQL_SLAVE_USE_UNICODE = "openzaly.mysql.slave.useUnicode";
- String MYSQL_SLAVE_CHARACTER_ENCODING = "openzaly.mysql.slave.characterEncoding";
- String MYSQL_SLAVE_VERIFY_SERVER_CERTIFICATE = "openzaly.mysql.slave.verifyServerCertificate";
- String MYSQL_SLAVE_USE_SSL = "openzaly.mysql.slave.useSSL";
+ String MYSQL_SLAVE_USE_UNICODE = "windchat.mysql.slave.useUnicode";
+ String MYSQL_SLAVE_CHARACTER_ENCODING = "windchat.mysql.slave.characterEncoding";
+ String MYSQL_SLAVE_VERIFY_SERVER_CERTIFICATE = "windchat.mysql.slave.verifyServerCertificate";
+ String MYSQL_SLAVE_USE_SSL = "windchat.mysql.slave.useSSL";
}
diff --git a/windchat-storage/src/main/java/com/windchat/im/storage/dao/mysql/manager/C3P0PoolManager.java b/windchat-storage/src/main/java/com/windchat/im/storage/dao/mysql/manager/C3P0PoolManager.java
index 680225b..3acf05d 100755
--- a/windchat-storage/src/main/java/com/windchat/im/storage/dao/mysql/manager/C3P0PoolManager.java
+++ b/windchat-storage/src/main/java/com/windchat/im/storage/dao/mysql/manager/C3P0PoolManager.java
@@ -36,7 +36,7 @@ public class C3P0PoolManager extends AbstractPoolManager {
int maxIdle = Integer.valueOf(trimToNull(pro, JdbcConst.MYSQL_MAX_IDLE, "60"));
cpds.setMaxIdleTime(maxIdle);// 最大空闲时间
- SqlLog.info("openzaly init mysql master connection pool cpds={}", cpds);
+ SqlLog.info("windchat init mysql master connection pool cpds={}", cpds);
}
public static java.sql.Connection getConnection() throws SQLException {
diff --git a/windchat-storage/src/main/java/com/windchat/im/storage/dao/mysql/manager/C3P0PoolSlaveManager.java b/windchat-storage/src/main/java/com/windchat/im/storage/dao/mysql/manager/C3P0PoolSlaveManager.java
index 6bf30a5..ad0fde3 100755
--- a/windchat-storage/src/main/java/com/windchat/im/storage/dao/mysql/manager/C3P0PoolSlaveManager.java
+++ b/windchat-storage/src/main/java/com/windchat/im/storage/dao/mysql/manager/C3P0PoolSlaveManager.java
@@ -54,7 +54,7 @@ public class C3P0PoolSlaveManager extends AbstractPoolManager {
cpdsList.add(cpds);
- SqlLog.info("openzaly init mysql slave connection pool cpds={}", cpds.toString());
+ SqlLog.info("windchat init mysql slave connection pool cpds={}", cpds.toString());
}
}
diff --git a/windchat-storage/src/main/java/com/windchat/im/storage/dao/mysql/manager/InitDatabaseConnection.java b/windchat-storage/src/main/java/com/windchat/im/storage/dao/mysql/manager/InitDatabaseConnection.java
index 95a2728..c7b5547 100755
--- a/windchat-storage/src/main/java/com/windchat/im/storage/dao/mysql/manager/InitDatabaseConnection.java
+++ b/windchat-storage/src/main/java/com/windchat/im/storage/dao/mysql/manager/InitDatabaseConnection.java
@@ -18,96 +18,97 @@ import com.windchat.im.storage.util.SqlLog;
/**
* 启动mysql的情形下,需要获取一个连接建数据库,建表操作,只有在初始化数据库情况下才使用
- *
+ *
* @author Sam{@link an.guoyue254@gmail.com}
* @since 2018-06-07 16:18:11
*/
public class InitDatabaseConnection extends AbstractPoolManager {
- private static final String OPENZALY_MYSQL_SQL = "openzaly-mysql.sql";
- private static Connection conn;
+ private static final String WINDCHAT_MYSQL_SQL = "windchat-mysql.sql";
+ private static Connection conn;
- public static void init(Properties prop) throws Exception {
- try {
- initAndGetConnection(prop);
- } finally {
- closeInitConnection();
- }
- }
+ public static void init(Properties prop) throws Exception {
+ try {
+ initAndGetConnection(prop);
+ } finally {
+ closeInitConnection();
+ }
+ }
- public static Connection initAndGetConnection(Properties prop) throws Exception {
- Connection conn = initConnection(prop);
- String dbName = trimToNull(prop, JdbcConst.MYSQL_DB);
- createAndUseDatabase(conn, dbName);
- initDatabaseTable(conn);
- return conn;
- }
+ public static Connection initAndGetConnection(Properties prop) throws Exception {
+ Connection conn = initConnection(prop);
+ String dbName = trimToNull(prop, JdbcConst.MYSQL_DB);
+ createAndUseDatabase(conn, dbName);
+ initDatabaseTable(conn);
+ return conn;
+ }
- private static Connection initConnection(Properties pro) throws Exception {
- // "com.mysql.cj.jdbc.Driver"
- String jdbcUrl = getJdbcUrlWithoutDBName(pro);
- String userName = trimToNull(pro, JdbcConst.MYSQL_USER_NAME);
- String password = trimToNull(pro, JdbcConst.MYSQL_PASSWORD);
- Class.forName(MYSQL_JDBC_DRIVER);
- conn = DriverManager.getConnection(jdbcUrl, userName, password);
- conn.prepareStatement("SET NAMES utf8mb4;").executeUpdate();
- return conn;
- }
+ private static Connection initConnection(Properties pro) throws Exception {
+ // "com.mysql.cj.jdbc.Driver"
+ String jdbcUrl = getJdbcUrlWithoutDBName(pro);
+ String userName = trimToNull(pro, JdbcConst.MYSQL_USER_NAME);
+ String password = trimToNull(pro, JdbcConst.MYSQL_PASSWORD);
+ Class.forName(MYSQL_JDBC_DRIVER);
+ conn = DriverManager.getConnection(jdbcUrl, userName, password);
+ conn.prepareStatement("SET NAMES utf8mb4;").executeUpdate();
+ return conn;
+ }
- // 获取单独一个连接,迁移数据库使用
- public static Connection getConnection(Properties pro) throws Exception {
- // "com.mysql.cj.jdbc.Driver"
- String jdbcUrl = getJdbcUrl(pro);
- String userName = trimToNull(pro, JdbcConst.MYSQL_USER_NAME);
- String password = trimToNull(pro, JdbcConst.MYSQL_PASSWORD);
- Class.forName(MYSQL_JDBC_DRIVER);
- conn = DriverManager.getConnection(jdbcUrl, userName, password);
- conn.prepareStatement("SET NAMES utf8mb4;").executeUpdate();
- return conn;
- }
+ // 获取单独一个连接,迁移数据库使用
+ public static Connection getConnection(Properties pro) throws Exception {
+ // "com.mysql.cj.jdbc.Driver"
+ String jdbcUrl = getJdbcUrl(pro);
+ String userName = trimToNull(pro, JdbcConst.MYSQL_USER_NAME);
+ String password = trimToNull(pro, JdbcConst.MYSQL_PASSWORD);
+ Class.forName(MYSQL_JDBC_DRIVER);
+ conn = DriverManager.getConnection(jdbcUrl, userName, password);
+ conn.prepareStatement("SET NAMES utf8mb4;").executeUpdate();
+ return conn;
+ }
- public static void closeInitConnection() {
- try {
- if (conn != null)
- conn.close();
- } catch (Exception e) {
- SqlLog.error("close mysql init connection error", e);
- }
- }
+ public static void closeInitConnection() {
+ try {
+ if (conn != null) {
+ conn.close();
+ }
+ } catch (Exception e) {
+ SqlLog.error("close mysql init connection error", e);
+ }
+ }
- private static void createAndUseDatabase(Connection conn, String dbName) throws SQLException {
- if (StringUtils.isEmpty(dbName)) {
- throw new SQLException("openzaly team need designated database name,but now it's " + dbName);
- }
- String createSql = "CREATE DATABASE IF NOT EXISTS " + dbName + " CHARACTER SET utf8mb4;";
- String useSql = "use " + dbName;
- conn.prepareStatement(createSql).executeUpdate();
- conn.prepareStatement(useSql).executeUpdate();
- }
+ private static void createAndUseDatabase(Connection conn, String dbName) throws SQLException {
+ if (StringUtils.isEmpty(dbName)) {
+ throw new SQLException("windchat team need designated database name,but now it's " + dbName);
+ }
+ String createSql = "CREATE DATABASE IF NOT EXISTS " + dbName + " CHARACTER SET utf8mb4;";
+ String useSql = "use " + dbName;
+ conn.prepareStatement(createSql).executeUpdate();
+ conn.prepareStatement(useSql).executeUpdate();
+ }
- private static void initDatabaseTable(Connection conn) throws SQLException {
- try {
- // 生成临时sql文件加载数据库sql执行脚本,
- File sqlFile = new File(OPENZALY_MYSQL_SQL);
- if (!sqlFile.exists()) {
- FileUtils.writeResourceToFile("/" + OPENZALY_MYSQL_SQL, sqlFile);
- }
+ private static void initDatabaseTable(Connection conn) throws SQLException {
+ try {
+ // 生成临时sql文件加载数据库sql执行脚本,
+ File sqlFile = new File(WINDCHAT_MYSQL_SQL);
+ if (!sqlFile.exists()) {
+ FileUtils.writeResourceToFile("/" + WINDCHAT_MYSQL_SQL, sqlFile);
+ }
- // 初始化数据库表
- File file = new File(OPENZALY_MYSQL_SQL);
- if (!file.exists()) {
- throw new FileNotFoundException("init mysql with sql script file is not exists");
- }
+ // 初始化数据库表
+ File file = new File(WINDCHAT_MYSQL_SQL);
+ if (!file.exists()) {
+ throw new FileNotFoundException("init mysql with sql script file is not exists");
+ }
- FileSystemResource rc = new FileSystemResource(file);
- EncodedResource encodeRes = new EncodedResource(rc, "GBK");
- ScriptUtils.executeSqlScript(conn, encodeRes);
- SqlLog.info("openzaly init mysql database with sql-script finish");
+ FileSystemResource rc = new FileSystemResource(file);
+ EncodedResource encodeRes = new EncodedResource(rc, "GBK");
+ ScriptUtils.executeSqlScript(conn, encodeRes);
+ SqlLog.info("windchat init mysql database with sql-script finish");
- file.delete();
- } catch (Exception e) {
- throw new SQLException(e);
- }
- }
+ file.delete();
+ } catch (Exception e) {
+ throw new SQLException(e);
+ }
+ }
}
diff --git a/windchat-storage/src/main/java/com/windchat/im/storage/dao/sqlite/manager/SQLiteJDBCManager.java b/windchat-storage/src/main/java/com/windchat/im/storage/dao/sqlite/manager/SQLiteJDBCManager.java
index f4263dc..ac4fdab 100755
--- a/windchat-storage/src/main/java/com/windchat/im/storage/dao/sqlite/manager/SQLiteJDBCManager.java
+++ b/windchat-storage/src/main/java/com/windchat/im/storage/dao/sqlite/manager/SQLiteJDBCManager.java
@@ -47,7 +47,7 @@ public class SQLiteJDBCManager {
private static int SITE_DB_VERSION = SQLConst.SITE_DB_VERSION_10;
private static String sqliteDriverName = "org.sqlite.JDBC";
private static Connection sqlitConnection = null;
- private static final String DB_FILE_PATH = "openzalyDB.sqlite3";
+ private static final String DB_FILE_PATH = "windchatDB.sqlite3";
private SQLiteJDBCManager() {
@@ -61,7 +61,7 @@ public class SQLiteJDBCManager {
loadDatabaseDriver(config.getDbDir());
if (getDbVersion() < SITE_DB_VERSION) {
- throw new UpgradeDatabaseException("openzaly-server need to upgrade before run it");
+ throw new UpgradeDatabaseException("windchat-server need to upgrade before run it");
}
}
diff --git a/windchat-storage/src/main/java/com/windchat/im/storage/dao/sqlite/manager/SQLiteUpgrade.java b/windchat-storage/src/main/java/com/windchat/im/storage/dao/sqlite/manager/SQLiteUpgrade.java
index dc7ce68..cf5691f 100755
--- a/windchat-storage/src/main/java/com/windchat/im/storage/dao/sqlite/manager/SQLiteUpgrade.java
+++ b/windchat-storage/src/main/java/com/windchat/im/storage/dao/sqlite/manager/SQLiteUpgrade.java
@@ -29,297 +29,297 @@ import com.windchat.im.storage.util.SqlLog;
/**
* sqlite 数据库升级
- *
+ *
* @author Sam{@link an.guoyue254@gmail.com}
* @since 2018-06-28 11:47:07
*/
public class SQLiteUpgrade {
- private static final Logger logger = LoggerFactory.getLogger(SQLiteUpgrade.class);
+ private static final Logger logger = LoggerFactory.getLogger(SQLiteUpgrade.class);
- private static final String DB_FILE_PATH = "openzalyDB.sqlite3";
- private static final String OPENZALY_SQLITE_SQL = "openzaly-sqlite.sql";
+ private static final String DB_FILE_PATH = "windchatDB.sqlite3";
+ private static final String WINDCHAT_SQLITE_SQL = "windchat-sqlite.sql";
- private SQLiteUpgrade() {
- }
+ private SQLiteUpgrade() {
+ }
- public static int doUpgrade(DBConfig config) throws SQLException, UpgradeDatabaseException {
- return upgradeSqliteDB(config, false);
- }
+ public static int doUpgrade(DBConfig config) throws SQLException, UpgradeDatabaseException {
+ return upgradeSqliteDB(config, false);
+ }
- public static int doUpgrade(DBConfig config, boolean clear) throws SQLException, UpgradeDatabaseException {
- return upgradeSqliteDB(config, clear);
- }
+ public static int doUpgrade(DBConfig config, boolean clear) throws SQLException, UpgradeDatabaseException {
+ return upgradeSqliteDB(config, clear);
+ }
- // upgrade db,return current db user-version
- private static int upgradeSqliteDB(DBConfig config, boolean clear) throws SQLException, UpgradeDatabaseException {
- // 数据库文件
- File file = new File(config.getDbDir(), DB_FILE_PATH);
+ // upgrade db,return current db user-version
+ private static int upgradeSqliteDB(DBConfig config, boolean clear) throws SQLException, UpgradeDatabaseException {
+ // 数据库文件
+ File file = new File(config.getDbDir(), DB_FILE_PATH);
- if (!file.exists()) {
- SqlLog.info("openzaly start with first init sqlite database");
- SQLiteJDBCManager.loadDatabaseDriver(config.getDbDir());
- doInitWork(SQLiteJDBCManager.getConnection());
- SQLiteJDBCManager.setDbVersion(SQLConst.SITE_DB_VERSION_11);
- } else {
- SQLiteJDBCManager.loadDatabaseDriver(config.getDbDir());
- if (clear) {
- SQLiteUnique.clearUnique(SQLiteJDBCManager.getConnection());
- }
- doUpgradeWork(config);
- }
+ if (!file.exists()) {
+ SqlLog.info("windchat start with first init sqlite database");
+ SQLiteJDBCManager.loadDatabaseDriver(config.getDbDir());
+ doInitWork(SQLiteJDBCManager.getConnection());
+ SQLiteJDBCManager.setDbVersion(SQLConst.SITE_DB_VERSION_11);
+ } else {
+ SQLiteJDBCManager.loadDatabaseDriver(config.getDbDir());
+ if (clear) {
+ SQLiteUnique.clearUnique(SQLiteJDBCManager.getConnection());
+ }
+ doUpgradeWork(config);
+ }
- return SQLiteJDBCManager.getDbVersion();
- }
+ return SQLiteJDBCManager.getDbVersion();
+ }
- /**
- * 通过sql脚本初始化数据库表
- *
- * @param conn
- * @throws SQLException
- */
- private static void doInitWork(Connection conn) throws SQLException {
- try {
- // 生成临时sql文件加载数据库sql执行脚本,
- File sqlFile = new File(OPENZALY_SQLITE_SQL);
- if (!sqlFile.exists()) {
- FileUtils.writeResourceToFile("/" + OPENZALY_SQLITE_SQL, sqlFile);
- }
+ /**
+ * 通过sql脚本初始化数据库表
+ *
+ * @param conn
+ * @throws SQLException
+ */
+ private static void doInitWork(Connection conn) throws SQLException {
+ try {
+ // 生成临时sql文件加载数据库sql执行脚本,
+ File sqlFile = new File(WINDCHAT_SQLITE_SQL);
+ if (!sqlFile.exists()) {
+ FileUtils.writeResourceToFile("/" + WINDCHAT_SQLITE_SQL, sqlFile);
+ }
- // 初始化数据库表
- File file = new File(OPENZALY_SQLITE_SQL);
- if (!file.exists()) {
- throw new FileNotFoundException("init mysql with sql script file is not exists");
- }
+ // 初始化数据库表
+ File file = new File(WINDCHAT_SQLITE_SQL);
+ if (!file.exists()) {
+ throw new FileNotFoundException("init mysql with sql script file is not exists");
+ }
- FileSystemResource rc = new FileSystemResource(file);
- EncodedResource encodeRes = new EncodedResource(rc, "GBK");
- ScriptUtils.executeSqlScript(conn, encodeRes);
- SqlLog.info("openzaly init sqlite with sql-script finish");
+ FileSystemResource rc = new FileSystemResource(file);
+ EncodedResource encodeRes = new EncodedResource(rc, "GBK");
+ ScriptUtils.executeSqlScript(conn, encodeRes);
+ SqlLog.info("windchat init sqlite with sql-script finish");
- file.delete();
- } catch (Exception e) {
- throw new SQLException(e);
- }
- }
+ file.delete();
+ } catch (Exception e) {
+ throw new SQLException(e);
+ }
+ }
- private static void doUpgradeWork(DBConfig config) throws UpgradeDatabaseException, SQLException {
- int times = 5;
- while (true) {
- // 做一个简单的频率控制,防止升级出现死循环
- if (times-- <= 0) {
- break;
- }
+ private static void doUpgradeWork(DBConfig config) throws UpgradeDatabaseException, SQLException {
+ int times = 5;
+ while (true) {
+ // 做一个简单的频率控制,防止升级出现死循环
+ if (times-- <= 0) {
+ break;
+ }
- int dbVersion = SQLiteJDBCManager.getDbVersion();
- if (dbVersion < 9) {
- // 1.首先备份
- String fileName = backupDatabaseFile(config.getDbDir(), dbVersion);
- if (StringUtils.isEmpty(fileName)) {
- throw new UpgradeDatabaseException("backup database file before upgrade error");
- }
- // 2.升级
- if (upgrade0_9(dbVersion)) {
- SQLiteJDBCManager.setDbVersion(SQLConst.SITE_DB_VERSION_9);
- } else {
- logger.error("upgrade user-version {} -> {} error.", dbVersion, SQLConst.SITE_DB_VERSION_9);
- // db rename to original db file
- restoreDatabase(fileName);
- }
- continue;
- } else if (dbVersion == 9) {
- // 0.9.5 upgrade from 9 to 10
- // 1.首先备份
- String fileName = backupDatabaseFile(config.getDbDir(), dbVersion);
- if (StringUtils.isEmpty(fileName)) {
- throw new UpgradeDatabaseException("backup database file before upgrade error");
- }
- if (StringUtils.isEmpty(fileName)) {
- throw new UpgradeDatabaseException("backup database file before upgrade error");
- }
- // 2.升级
- if (upgrade9_10(dbVersion)) {
- SQLiteJDBCManager.setDbVersion(SQLConst.SITE_DB_VERSION_10);
- } else {
- logger.error("upgrade user-version {} -> {} error.", dbVersion, SQLConst.SITE_DB_VERSION_10);
- // db rename to original db file
- restoreDatabase(fileName);
- }
+ int dbVersion = SQLiteJDBCManager.getDbVersion();
+ if (dbVersion < 9) {
+ // 1.首先备份
+ String fileName = backupDatabaseFile(config.getDbDir(), dbVersion);
+ if (StringUtils.isEmpty(fileName)) {
+ throw new UpgradeDatabaseException("backup database file before upgrade error");
+ }
+ // 2.升级
+ if (upgrade0_9(dbVersion)) {
+ SQLiteJDBCManager.setDbVersion(SQLConst.SITE_DB_VERSION_9);
+ } else {
+ logger.error("upgrade user-version {} -> {} error.", dbVersion, SQLConst.SITE_DB_VERSION_9);
+ // db rename to original db file
+ restoreDatabase(fileName);
+ }
+ continue;
+ } else if (dbVersion == 9) {
+ // 0.9.5 upgrade from 9 to 10
+ // 1.首先备份
+ String fileName = backupDatabaseFile(config.getDbDir(), dbVersion);
+ if (StringUtils.isEmpty(fileName)) {
+ throw new UpgradeDatabaseException("backup database file before upgrade error");
+ }
+ if (StringUtils.isEmpty(fileName)) {
+ throw new UpgradeDatabaseException("backup database file before upgrade error");
+ }
+ // 2.升级
+ if (upgrade9_10(dbVersion)) {
+ SQLiteJDBCManager.setDbVersion(SQLConst.SITE_DB_VERSION_10);
+ } else {
+ logger.error("upgrade user-version {} -> {} error.", dbVersion, SQLConst.SITE_DB_VERSION_10);
+ // db rename to original db file
+ restoreDatabase(fileName);
+ }
- } else if (dbVersion == 10) {
- doInitWork(SQLiteJDBCManager.getConnection());
- SQLiteJDBCManager.setDbVersion(SQLConst.SITE_DB_VERSION_11);
- }
+ } else if (dbVersion == 10) {
+ doInitWork(SQLiteJDBCManager.getConnection());
+ SQLiteJDBCManager.setDbVersion(SQLConst.SITE_DB_VERSION_11);
+ }
- break;
- }
- }
+ break;
+ }
+ }
- private static String backupDatabaseFile(String dbDir, int oldVersion) {
- String filePath = "./";
- try {
- String dbFileName = SQLiteJDBCManager.getDbFileName();
- if (StringUtils.isNotEmpty(dbDir)) {
- filePath = dbDir;
- }
- File file = new File(filePath, dbFileName);// original db file
- String bkFileName = dbFileName + ".backup." + oldVersion + "." + System.currentTimeMillis();
- File backupFile = new File(filePath, bkFileName);
- if (!backupFile.exists()) {
- new FileOutputStream(backupFile).close();
- }
- FileOutputStream fos = new FileOutputStream(backupFile);
- BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
- try {
- byte[] buffer = new byte[1024];
- int bytesLen = 0;
- while ((bytesLen = bis.read(buffer)) != -1) {
- fos.write(buffer, 0, bytesLen);
- }
- } finally {
- if (bis != null) {
- bis.close();
- }
- if (fos != null) {
- fos.close();
- }
- }
+ private static String backupDatabaseFile(String dbDir, int oldVersion) {
+ String filePath = "./";
+ try {
+ String dbFileName = SQLiteJDBCManager.getDbFileName();
+ if (StringUtils.isNotEmpty(dbDir)) {
+ filePath = dbDir;
+ }
+ File file = new File(filePath, dbFileName);// original db file
+ String bkFileName = dbFileName + ".backup." + oldVersion + "." + System.currentTimeMillis();
+ File backupFile = new File(filePath, bkFileName);
+ if (!backupFile.exists()) {
+ new FileOutputStream(backupFile).close();
+ }
+ FileOutputStream fos = new FileOutputStream(backupFile);
+ BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
+ try {
+ byte[] buffer = new byte[1024];
+ int bytesLen = 0;
+ while ((bytesLen = bis.read(buffer)) != -1) {
+ fos.write(buffer, 0, bytesLen);
+ }
+ } finally {
+ if (bis != null) {
+ bis.close();
+ }
+ if (fos != null) {
+ fos.close();
+ }
+ }
- return backupFile.getAbsolutePath();
- } catch (FileNotFoundException e) {
- logger.error("backup db file error,fileUrl=" + filePath, e);
- } catch (IOException e) {
- logger.error("backup db file IOException.fileUrl=" + filePath, e);
- }
+ return backupFile.getAbsolutePath();
+ } catch (FileNotFoundException e) {
+ logger.error("backup db file error,fileUrl=" + filePath, e);
+ } catch (IOException e) {
+ logger.error("backup db file IOException.fileUrl=" + filePath, e);
+ }
- return null;
- }
+ return null;
+ }
- private static boolean upgrade0_9(int oldVersion) {
- String sql1 = "alter table " + SQLConst.SITE_USER_PROFILE + " RENAME TO "
- + getTempTable(oldVersion, SQLConst.SITE_USER_PROFILE);
- String sql2 = "alter table " + SQLConst.SITE_USER_FRIEND + " RENAME TO "
- + getTempTable(oldVersion, SQLConst.SITE_USER_FRIEND);
- String sql3 = "alter table " + SQLConst.SITE_USER_DEVICE + " RENAME TO "
- + getTempTable(oldVersion, SQLConst.SITE_USER_DEVICE);
+ private static boolean upgrade0_9(int oldVersion) {
+ String sql1 = "alter table " + SQLConst.SITE_USER_PROFILE + " RENAME TO "
+ + getTempTable(oldVersion, SQLConst.SITE_USER_PROFILE);
+ String sql2 = "alter table " + SQLConst.SITE_USER_FRIEND + " RENAME TO "
+ + getTempTable(oldVersion, SQLConst.SITE_USER_FRIEND);
+ String sql3 = "alter table " + SQLConst.SITE_USER_DEVICE + " RENAME TO "
+ + getTempTable(oldVersion, SQLConst.SITE_USER_DEVICE);
- boolean result = false;
- List