org.test4j.module.database.proxy.DataSourceMariaDb4jCreator Maven / Gradle / Ivy
package org.test4j.module.database.proxy;
import ch.vorburger.exec.ManagedProcessException;
import ch.vorburger.mariadb4j.DB;
import ch.vorburger.mariadb4j.DBConfigurationBuilder;
import org.apache.commons.dbcp2.BasicDataSource;
import org.test4j.module.database.config.DbConfig;
import org.test4j.tools.commons.DateHelper;
import org.test4j.tools.commons.StringHelper;
import org.test4j.tools.config.ConfigHelper;
import javax.sql.DataSource;
import static ch.vorburger.mariadb4j.DB.newEmbeddedDB;
import static ch.vorburger.mariadb4j.DBConfigurationBuilder.newBuilder;
import static org.test4j.Logger.warn;
/**
* MariaDb4j数据源创建
*/
public class DataSourceMariaDb4jCreator {
/**
* MariaDb4j数据源创建
*
* @param dataSourceName data source name-
* @return Test4JDataSource
*/
public static Test4JDataSource createTest4JDataSource(String dataSourceName) {
try {
DataSource dataSource = createDb(dataSourceName);
return new Test4JDataSource(dataSourceName, dataSource);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* MariaDb4j数据源创建
*
* @param dataSourceName data source name-
* @return BasicDataSource
*/
static BasicDataSource createDb(String dataSourceName) throws ManagedProcessException {
String schema = DbConfig.instance().dbSchema(dataSourceName);
String username = DbConfig.instance().dbUsername(dataSourceName);
String password = DbConfig.instance().dbPassword(dataSourceName);
String driver = DbConfig.instance().dbDriver(dataSourceName);
warn("begin to start MariaDB4j: " + DateHelper.currDateTimeStr());
int port = ConfigHelper.getInteger("dataSource.mariaDB4j.port", 0);
DBConfigurationBuilder config = newBuilder().setPort(port);
addArgs(config);
DB mariaDB = newEmbeddedDB(config.build());
mariaDB.start();
String url = config.getURL(schema);
warn("MariaDB4j driver[ " + driver + " ], url[ " + url + " ], username[ " + username + " ], password[ " + password + " ].");
warn("end of start MariaDB4j:" + DateHelper.currDateTimeStr());
BasicDataSource dataSource = new BasicDataSource();
{
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
}
return dataSource;
}
private static void addArgs(DBConfigurationBuilder config) {
String args = ConfigHelper.getString("dataSource.mariaDB4j.args");
if (StringHelper.isBlank(args)) {
return;
}
String[] items = args.split(";");
for (String item : items) {
if (StringHelper.isBlank(item)) {
continue;
}
config.addArg(item);
}
}
}