1
0
Files
mineplex-crepe/Mineplexer/Mineplex.ServerData/src/mineplex/serverdata/database/DBPool.java
2021-05-16 10:42:40 +07:00

180 lines
5.2 KiB
Java

package mineplex.serverdata.database;
import javax.sql.DataSource;
import java.io.File;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.sql.Connection;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.dbcp2.BasicDataSource;
public final class DBPool
{
private static DataSource ACCOUNT;
private static DataSource QUEUE;
private static DataSource MINEPLEX;
private static DataSource MINEPLEX_STATS;
private static DataSource PLAYER_STATS;
private static DataSource SERVER_STATS;
private static DataSource MSSQL_MOCK;
private static DataSource openDataSource(String url, String username, String password)
{
BasicDataSource source = new BasicDataSource();
source.addConnectionProperty("autoReconnect", "true");
source.addConnectionProperty("allowMultiQueries", "true");
source.addConnectionProperty("zeroDateTimeBehavior", "convertToNull");
source.setDefaultTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
source.setDriverClassName("com.mysql.jdbc.Driver");
source.setUrl(url);
source.setUsername(username);
source.setPassword(password);
source.setMaxTotal(5);
source.setMaxIdle(5);
source.setTimeBetweenEvictionRunsMillis(180 * 1000);
source.setSoftMinEvictableIdleTimeMillis(180 * 1000);
return source;
}
public static DataSource getMssqlMock()
{
if (MSSQL_MOCK == null)
loadDataSources();
return MSSQL_MOCK;
}
public static DataSource getAccount()
{
if (ACCOUNT == null)
loadDataSources();
return ACCOUNT;
}
public static DataSource getQueue()
{
if (QUEUE == null)
loadDataSources();
return QUEUE;
}
public static DataSource getMineplex()
{
if (MINEPLEX == null)
loadDataSources();
return MINEPLEX;
}
public static DataSource getMineplexStats()
{
if (MINEPLEX_STATS == null)
loadDataSources();
return MINEPLEX_STATS;
}
public static DataSource getPlayerStats()
{
if (PLAYER_STATS == null)
loadDataSources();
return PLAYER_STATS;
}
public static DataSource getServerStats()
{
if (SERVER_STATS == null)
loadDataSources();
return SERVER_STATS;
}
private static void loadDataSources()
{
try
{
File configFile = new File("database-config.dat");
if (configFile.exists())
{
List<String> lines = Files.readAllLines(configFile.toPath(), Charset.defaultCharset());
for (String line : lines)
{
deserializeConnection(line);
}
}
else
{
System.out.println("database-config.dat not found at " + configFile.toPath().toString());
}
}
catch (Exception exception)
{
exception.printStackTrace();
System.out.println("---Unable To Parse DBPOOL Configuration File---");
}
}
private static void deserializeConnection(String line)
{
String[] args = line.split(" ");
if (args.length == 3)
{
String dbHost = args[0];
String userName = args[1];
String password = args[2];
ACCOUNT = openDataSource("jdbc:mysql://" + dbHost + "/account", userName, password);
QUEUE = openDataSource("jdbc:mysql://" + dbHost + "/queue", userName, password);
MINEPLEX = openDataSource("jdbc:mysql://" + dbHost + "/mineplex", userName, password);
MINEPLEX_STATS = openDataSource("jdbc:mysql://" + dbHost + "/mineplex_stats", userName, password);
PLAYER_STATS = openDataSource("jdbc:mysql://" + dbHost + "/player_stats", userName, password);
SERVER_STATS = openDataSource("jdbc:mysql://" + dbHost + "/server_stats", userName, password);
}
/*
String[] args = line.split(" ");
if (args.length == 4)
{
String dbHost = args[0];
String userName = args[1];
String password = args[2];
System.out.println(userName.toString());
System.out.println(dbHost.toString());
System.out.println(password.toString());
ACCOUNT = openDataSource("jdbc:mysql://" + dbHost, userName, password);
QUEUE = openDataSource("jdbc:mysql://" + dbHost, userName, password);
MINEPLEX = openDataSource("jdbc:mysql://" + dbHost, userName, password);
MINEPLEX_STATS = openDataSource("jdbc:mysql://" + dbHost, userName, password);
PLAYER_STATS = openDataSource("jdbc:mysql://" + dbHost, userName, password);
SERVER_STATS = openDataSource("jdbc:mysql://" + dbHost, userName, password);
MSSQL_MOCK = openDataSource("jdbc:mysql://" + dbHost, userName, password);
if (dbSource.toUpperCase().equalsIgnoreCase("ACCOUNT"))
ACCOUNT = openDataSource("jdbc:mysql://" + dbHost, userName, password);
else if (dbSource.toUpperCase().equalsIgnoreCase("QUEUE"))
QUEUE = openDataSource("jdbc:mysql://" + dbHost, userName, password);
else if (dbSource.toUpperCase().equalsIgnoreCase("MINEPLEX"))
MINEPLEX = openDataSource("jdbc:mysql://" + dbHost, userName, password);
else if (dbSource.toUpperCase().equalsIgnoreCase("MINEPLEX_STATS"))
MINEPLEX_STATS = openDataSource("jdbc:mysql://" + dbHost, userName, password);
else if (dbSource.toUpperCase().equalsIgnoreCase("PLAYER_STATS"))
PLAYER_STATS = openDataSource("jdbc:mysql://" + dbHost, userName, password);
else if (dbSource.toUpperCase().equalsIgnoreCase("SERVER_STATS"))
SERVER_STATS = openDataSource("jdbc:mysql://" + dbHost, userName, password);
else if (dbSource.toUpperCase().equalsIgnoreCase("MSSQL_MOCK"))
MSSQL_MOCK = openDataSource("jdbc:mysql://" + dbHost, userName, password);
}
*/
}
}