Search in sources :

Example 1 with DSFactory

use of cn.hutool.db.ds.DSFactory in project Jpom by dromara.

the class InitDb method silenceDestroy.

private void silenceDestroy() {
    DbConfig.getInstance().close();
    try {
        DSFactory dsFactory = GlobalDSFactory.get();
        GlobalDSFactory.set(null);
        dsFactory.destroy();
        Console.log("h2 db destroy");
    } catch (Throwable throwable) {
        System.err.println(throwable.getMessage());
    }
}
Also used : DSFactory(cn.hutool.db.ds.DSFactory) GlobalDSFactory(cn.hutool.db.ds.GlobalDSFactory)

Example 2 with DSFactory

use of cn.hutool.db.ds.DSFactory in project Jpom by dromara.

the class H2ToolTest method initDataSource.

/**
 * 初始化数据源
 *
 * @return
 */
private DataSource initDataSource(String url, String user, String pass) {
    // 数据源配置
    Setting setting = new Setting();
    setting.set("url", url);
    setting.set("user", user);
    setting.set("pass", pass);
    // 配置连接池大小
    setting.set("maxActive", "50");
    setting.set("initialSize", "1");
    setting.set("maxWait", "10");
    setting.set("minIdle", "1");
    // show sql
    setting.set(SqlLog.KEY_SHOW_SQL, "true");
    setting.set(SqlLog.KEY_SQL_LEVEL, "DEBUG");
    setting.set(SqlLog.KEY_SHOW_PARAMS, "true");
    Console.log("start load h2 db");
    // 创建连接
    DSFactory dsFactory = DSFactory.create(setting);
    return dsFactory.getDataSource();
}
Also used : Setting(cn.hutool.setting.Setting) DSFactory(cn.hutool.db.ds.DSFactory)

Example 3 with DSFactory

use of cn.hutool.db.ds.DSFactory in project Jpom by dromara.

the class InitDb method init.

@PreLoadMethod(value = Integer.MIN_VALUE)
private static void init() {
    // 
    DbConfig instance = DbConfig.getInstance();
    ServerExtConfigBean serverExtConfigBean = ServerExtConfigBean.getInstance();
    DbExtConfig dbExtConfig = SpringUtil.getBean(DbExtConfig.class);
    // 
    Setting setting = new Setting();
    String dbUrl = instance.getDbUrl();
    setting.set("url", dbUrl);
    setting.set("user", dbExtConfig.getUserName());
    setting.set("pass", dbExtConfig.getUserPwd());
    // 配置连接池大小
    setting.set("maxActive", dbExtConfig.getMaxActive() + "");
    setting.set("initialSize", dbExtConfig.getInitialSize() + "");
    setting.set("maxWait", dbExtConfig.getMaxWait() + "");
    setting.set("minIdle", dbExtConfig.getMinIdle() + "");
    // 调试模式显示sql 信息
    if (dbExtConfig.getShowSql()) {
        setting.set(SqlLog.KEY_SHOW_SQL, "true");
        /*
			  @author Hotstrip
			  sql log only show when it's needed,
			  if you want to check init sql,
			  set the [sqlLevel] from [DEBUG] to [INFO]
			 */
        setting.set(SqlLog.KEY_SQL_LEVEL, "DEBUG");
        setting.set(SqlLog.KEY_SHOW_PARAMS, "true");
    }
    Console.log("start load h2 db");
    String sqlFileNow = StrUtil.EMPTY;
    try {
        // 创建连接
        DSFactory dsFactory = DSFactory.create(setting);
        // 先执行恢复数据
        instance.executeRecoverDbSql(dsFactory);
        /*
			  @author Hotstrip
			  add another sql init file, if there are more sql file,
			  please add it with same way
			 */
        PathMatchingResourcePatternResolver pathMatchingResourcePatternResolver = new PathMatchingResourcePatternResolver();
        Resource[] resources = pathMatchingResourcePatternResolver.getResources("classpath:/sql/*.sql");
        // 加载 sql 变更记录,避免重复执行
        Set<String> executeSqlLog = instance.loadExecuteSqlLog();
        // 过滤 temp sql
        List<Resource> resourcesList = Arrays.stream(resources).sorted((o1, o2) -> StrUtil.compare(o1.getFilename(), o2.getFilename(), true)).filter(resource -> !StrUtil.containsIgnoreCase(resource.getFilename(), "temp")).collect(Collectors.toList());
        // 遍历
        for (Resource resource : resourcesList) {
            try (InputStream inputStream = resource.getInputStream()) {
                String sql = IoUtil.read(inputStream, CharsetUtil.CHARSET_UTF_8);
                String sha1 = SecureUtil.sha1(sql);
                if (executeSqlLog.contains(sha1)) {
                    // 已经执行过啦,不再执行
                    continue;
                }
                sqlFileNow = resource.getFilename();
                int rows = Db.use(dsFactory.getDataSource()).execute(sql);
                DefaultSystemLog.getLog().info("exec init SQL file: {} complete, and affected rows is: {}", sqlFileNow, rows);
                executeSqlLog.add(sha1);
            } catch (IOException ignored) {
            }
        }
        instance.saveExecuteSqlLog(executeSqlLog);
        GlobalDSFactory.set(dsFactory);
    // 
    } catch (Exception e) {
        DefaultSystemLog.getLog().error("初始化数据库失败 {}", sqlFileNow, e);
        System.exit(0);
        return;
    }
    instance.initOk();
    // json load to db
    InitDb.loadJsonToDb();
    Console.log("h2 db Successfully loaded, url is 【{}】", dbUrl);
    if (JpomManifest.getInstance().isDebug()) {
    // 
    } else {
        if (serverExtConfigBean.isH2ConsoleEnabled() && StrUtil.equals(dbExtConfig.getUserName(), DbConfig.DEFAULT_USER_OR_AUTHORIZATION) && StrUtil.equals(dbExtConfig.getUserPwd(), DbConfig.DEFAULT_USER_OR_AUTHORIZATION)) {
            Console.error("【安全警告】数据库账号密码使用默认的情况下不建议开启 h2 数据 web 控制台");
            System.exit(-2);
        }
    }
}
Also used : SignalHandler(sun.misc.SignalHandler) SecureUtil(cn.hutool.crypto.SecureUtil) Arrays(java.util.Arrays) DSFactory(cn.hutool.db.ds.DSFactory) DefaultSystemLog(cn.jiangzeyin.common.DefaultSystemLog) DbExtConfig(io.jpom.system.extconf.DbExtConfig) InitializingBean(org.springframework.beans.factory.InitializingBean) PathMatchingResourcePatternResolver(org.springframework.core.io.support.PathMatchingResourcePatternResolver) SQLException(java.sql.SQLException) PreLoadMethod(cn.jiangzeyin.common.PreLoadMethod) Map(java.util.Map) GlobalDSFactory(cn.hutool.db.ds.GlobalDSFactory) Signal(sun.misc.Signal) Setting(cn.hutool.setting.Setting) BaseGroupService(io.jpom.service.h2db.BaseGroupService) Resource(org.springframework.core.io.Resource) IoUtil(cn.hutool.core.io.IoUtil) DbConfig(io.jpom.system.db.DbConfig) WorkspaceService(io.jpom.service.system.WorkspaceService) Set(java.util.Set) IOException(java.io.IOException) Console(cn.hutool.core.lang.Console) BaseNodeService(io.jpom.service.h2db.BaseNodeService) SpringUtil(cn.jiangzeyin.common.spring.SpringUtil) Collectors(java.util.stream.Collectors) Db(cn.hutool.db.Db) SqlLog(cn.hutool.db.sql.SqlLog) PreLoadClass(cn.jiangzeyin.common.PreLoadClass) Configuration(org.springframework.context.annotation.Configuration) StrUtil(cn.hutool.core.util.StrUtil) Slf4j(lombok.extern.slf4j.Slf4j) List(java.util.List) JpomManifest(io.jpom.common.JpomManifest) DisposableBean(org.springframework.beans.factory.DisposableBean) CharsetUtil(cn.hutool.core.util.CharsetUtil) UserModel(io.jpom.model.data.UserModel) BaseServerController(io.jpom.common.BaseServerController) ServerExtConfigBean(io.jpom.system.ServerExtConfigBean) InputStream(java.io.InputStream) ServerExtConfigBean(io.jpom.system.ServerExtConfigBean) InputStream(java.io.InputStream) Setting(cn.hutool.setting.Setting) Resource(org.springframework.core.io.Resource) DSFactory(cn.hutool.db.ds.DSFactory) GlobalDSFactory(cn.hutool.db.ds.GlobalDSFactory) IOException(java.io.IOException) SQLException(java.sql.SQLException) IOException(java.io.IOException) DbExtConfig(io.jpom.system.extconf.DbExtConfig) DbConfig(io.jpom.system.db.DbConfig) PathMatchingResourcePatternResolver(org.springframework.core.io.support.PathMatchingResourcePatternResolver) PreLoadMethod(cn.jiangzeyin.common.PreLoadMethod)

Example 4 with DSFactory

use of cn.hutool.db.ds.DSFactory in project Jpom by dromara.

the class LoadBuildJsonToDB method insertToDB.

/**
 * exec insert SQL to DB
 *
 * @param sql SQL for insert
 */
private void insertToDB(String sql) {
    DSFactory dsFactory = GlobalDSFactory.get();
    int rows = 0;
    try {
        rows = Db.use(dsFactory.getDataSource()).execute(sql);
    } catch (SQLException e) {
        DefaultSystemLog.getLog().warn("exec SQL: {} failed", sql, e);
    }
    DefaultSystemLog.getLog().info("exec SQL: {} complete, and affected rows is: {}", sql, rows);
}
Also used : SQLException(java.sql.SQLException) DSFactory(cn.hutool.db.ds.DSFactory) GlobalDSFactory(cn.hutool.db.ds.GlobalDSFactory)

Aggregations

DSFactory (cn.hutool.db.ds.DSFactory)4 GlobalDSFactory (cn.hutool.db.ds.GlobalDSFactory)3 Setting (cn.hutool.setting.Setting)2 SQLException (java.sql.SQLException)2 IoUtil (cn.hutool.core.io.IoUtil)1 Console (cn.hutool.core.lang.Console)1 CharsetUtil (cn.hutool.core.util.CharsetUtil)1 StrUtil (cn.hutool.core.util.StrUtil)1 SecureUtil (cn.hutool.crypto.SecureUtil)1 Db (cn.hutool.db.Db)1 SqlLog (cn.hutool.db.sql.SqlLog)1 DefaultSystemLog (cn.jiangzeyin.common.DefaultSystemLog)1 PreLoadClass (cn.jiangzeyin.common.PreLoadClass)1 PreLoadMethod (cn.jiangzeyin.common.PreLoadMethod)1 SpringUtil (cn.jiangzeyin.common.spring.SpringUtil)1 BaseServerController (io.jpom.common.BaseServerController)1 JpomManifest (io.jpom.common.JpomManifest)1 UserModel (io.jpom.model.data.UserModel)1 BaseGroupService (io.jpom.service.h2db.BaseGroupService)1 BaseNodeService (io.jpom.service.h2db.BaseNodeService)1