mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-02-05 23:11:56 +01:00
Merge remote-tracking branch 'origin/4.0.0-BungeeCord-Support' into 4.0.0-BungeeCord-Support
# Conflicts: # Plan/src/main/java/com/djrapitops/plan/systems/listeners/PlanPlayerListener.java # Plan/src/main/java/com/djrapitops/plan/systems/processing/DBCommitProcessor.java # Plan/src/main/java/com/djrapitops/plan/systems/tasks/PeriodicDBCommitTask.java
This commit is contained in:
commit
c7ce74a78c
16
Plan/pom.xml
16
Plan/pom.xml
@ -31,6 +31,22 @@
|
|||||||
<version>2.0.4</version>
|
<version>2.0.4</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- Connection Pool-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-dbcp2</artifactId>
|
||||||
|
<version>2.1.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-pool2</artifactId>
|
||||||
|
<version>2.4.2</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-logging</groupId>
|
||||||
|
<artifactId>commons-logging</artifactId>
|
||||||
|
<version>1.2</version>
|
||||||
|
</dependency>
|
||||||
<!-- SoftDepended Plugins-->
|
<!-- SoftDepended Plugins-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.djrapitops</groupId>
|
<groupId>com.djrapitops</groupId>
|
||||||
|
@ -3,7 +3,9 @@ package main.java.com.djrapitops.plan.database;
|
|||||||
import main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.Plan;
|
||||||
import main.java.com.djrapitops.plan.data.UserInfo;
|
import main.java.com.djrapitops.plan.data.UserInfo;
|
||||||
import main.java.com.djrapitops.plan.database.tables.*;
|
import main.java.com.djrapitops.plan.database.tables.*;
|
||||||
|
import org.apache.commons.dbcp2.BasicDataSource;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@ -100,6 +102,8 @@ public abstract class Database {
|
|||||||
*/
|
*/
|
||||||
protected ServerTable serverTable;
|
protected ServerTable serverTable;
|
||||||
|
|
||||||
|
protected BasicDataSource dataSource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Super constructor.
|
* Super constructor.
|
||||||
*
|
*
|
||||||
@ -332,8 +336,6 @@ public abstract class Database {
|
|||||||
return serverTable;
|
return serverTable;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void commit() throws SQLException;
|
|
||||||
|
|
||||||
public ActionsTable getActionsTable() {
|
public ActionsTable getActionsTable() {
|
||||||
return actionsTable;
|
return actionsTable;
|
||||||
}
|
}
|
||||||
@ -341,4 +343,9 @@ public abstract class Database {
|
|||||||
public UserInfoTable getUserInfoTable() {
|
public UserInfoTable getUserInfoTable() {
|
||||||
return userInfoTable;
|
return userInfoTable;
|
||||||
}
|
}
|
||||||
|
public BasicDataSource getDataSource() {
|
||||||
|
return dataSource;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void commit(Connection connection) throws SQLException;
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,9 @@
|
|||||||
package main.java.com.djrapitops.plan.database.databases;
|
package main.java.com.djrapitops.plan.database.databases;
|
||||||
|
|
||||||
import main.java.com.djrapitops.plan.Log;
|
|
||||||
import main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.Plan;
|
||||||
import main.java.com.djrapitops.plan.locale.Locale;
|
import org.apache.commons.dbcp2.BasicDataSource;
|
||||||
import main.java.com.djrapitops.plan.locale.Msg;
|
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.DriverManager;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
@ -25,30 +19,32 @@ public class MySQLDB extends SQLDB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new connection to the database.
|
* Setups the {@link BasicDataSource}
|
||||||
*
|
|
||||||
* @return the new Connection.
|
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Connection getNewConnection() {
|
public void setupDataSource() {
|
||||||
FileConfiguration config = plugin.getConfig();
|
FileConfiguration config = plugin.getConfig();
|
||||||
|
|
||||||
try {
|
dataSource = new BasicDataSource();
|
||||||
Class.forName("com.mysql.jdbc.Driver");
|
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
|
||||||
|
|
||||||
String url = "jdbc:mysql://" + config.getString("mysql.host") + ":" + config.getString("mysql.port") + "/"
|
String host = config.getString("Database.MySQL.Host");
|
||||||
+ config.getString("mysql.database")
|
String port = config.getString("Database.MySQL.Port");
|
||||||
+ "?rewriteBatchedStatements=true";
|
String database = config.getString("Database.MySQL.Database");
|
||||||
|
|
||||||
return DriverManager.getConnection(url, config.getString("mysql.user"), config.getString("mysql.password"));
|
|
||||||
} catch (ClassNotFoundException | SQLException e) {
|
dataSource.setUrl("jdbc:mysql://" + host + ":" + port + "/" + database + "?rewriteBatchedStatements=true");
|
||||||
Log.error(Locale.get(Msg.ENABLE_FAIL_DB).parse(getConfigName(), e.getMessage()));
|
|
||||||
return null;
|
String username = config.getString("Database.MySQL.User");
|
||||||
}
|
String password = config.getString("Database.MySQL.Password");
|
||||||
|
|
||||||
|
dataSource.setUsername(username);
|
||||||
|
dataSource.setPassword(password);
|
||||||
|
dataSource.setMaxTotal(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return
|
* @return the name of the Database
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
package main.java.com.djrapitops.plan.database.databases;
|
package main.java.com.djrapitops.plan.database.databases;
|
||||||
|
|
||||||
import com.djrapitops.plugin.task.AbsRunnable;
|
|
||||||
import main.java.com.djrapitops.plan.Log;
|
import main.java.com.djrapitops.plan.Log;
|
||||||
import main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.Plan;
|
||||||
import main.java.com.djrapitops.plan.data.UserInfo;
|
import main.java.com.djrapitops.plan.data.UserInfo;
|
||||||
import main.java.com.djrapitops.plan.database.Database;
|
import main.java.com.djrapitops.plan.database.Database;
|
||||||
import main.java.com.djrapitops.plan.database.tables.*;
|
import main.java.com.djrapitops.plan.database.tables.*;
|
||||||
import main.java.com.djrapitops.plan.utilities.Benchmark;
|
import main.java.com.djrapitops.plan.utilities.Benchmark;
|
||||||
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
import org.apache.commons.dbcp2.BasicDataSource;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
@ -27,8 +26,6 @@ public abstract class SQLDB extends Database {
|
|||||||
|
|
||||||
private final boolean usingMySQL;
|
private final boolean usingMySQL;
|
||||||
|
|
||||||
private Connection connection;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param plugin
|
* @param plugin
|
||||||
*/
|
*/
|
||||||
@ -52,31 +49,6 @@ public abstract class SQLDB extends Database {
|
|||||||
killsTable = new KillsTable(this, usingMySQL);
|
killsTable = new KillsTable(this, usingMySQL);
|
||||||
worldTable = new WorldTable(this, usingMySQL);
|
worldTable = new WorldTable(this, usingMySQL);
|
||||||
worldTimesTable = new WorldTimesTable(this, usingMySQL);
|
worldTimesTable = new WorldTimesTable(this, usingMySQL);
|
||||||
|
|
||||||
startConnectionPingTask();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Starts repeating Async task that maintains the Database connection.
|
|
||||||
*/
|
|
||||||
public void startConnectionPingTask() {
|
|
||||||
// Maintains Connection.
|
|
||||||
plugin.getRunnableFactory().createNew(new AbsRunnable("DBConnectionPingTask " + getName()) {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
Statement statement = null;
|
|
||||||
try {
|
|
||||||
if (connection != null && !connection.isClosed()) {
|
|
||||||
statement = connection.createStatement();
|
|
||||||
statement.execute("/* ping */ SELECT 1");
|
|
||||||
}
|
|
||||||
} catch (SQLException e) {
|
|
||||||
connection = getNewConnection();
|
|
||||||
} finally {
|
|
||||||
MiscUtils.close(statement);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).runTaskTimerAsynchronously(60L * 20L, 60L * 20L);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -96,7 +68,9 @@ public abstract class SQLDB extends Database {
|
|||||||
String benchName = "Init " + getConfigName();
|
String benchName = "Init " + getConfigName();
|
||||||
Benchmark.start(benchName);
|
Benchmark.start(benchName);
|
||||||
try {
|
try {
|
||||||
if (!checkConnection()) {
|
setupDataSource();
|
||||||
|
|
||||||
|
if (!setupDatabase()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
clean();
|
clean();
|
||||||
@ -118,14 +92,7 @@ public abstract class SQLDB extends Database {
|
|||||||
* @return Is the connection usable?
|
* @return Is the connection usable?
|
||||||
* @throws SQLException
|
* @throws SQLException
|
||||||
*/
|
*/
|
||||||
public boolean checkConnection() throws SQLException {
|
public boolean setupDatabase() throws SQLException {
|
||||||
if (connection == null || connection.isClosed()) {
|
|
||||||
connection = getNewConnection();
|
|
||||||
|
|
||||||
if (connection == null || connection.isClosed()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean newDatabase = isNewDatabase();
|
boolean newDatabase = isNewDatabase();
|
||||||
|
|
||||||
if (!versionTable.createTable()) {
|
if (!versionTable.createTable()) {
|
||||||
@ -135,20 +102,19 @@ public abstract class SQLDB extends Database {
|
|||||||
|
|
||||||
if (newDatabase) {
|
if (newDatabase) {
|
||||||
Log.info("New Database created.");
|
Log.info("New Database created.");
|
||||||
setVersion(8);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!createTables()) {
|
if (!createTables()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!newDatabase && getVersion() < 8) {
|
if (newDatabase || getVersion() < 8) {
|
||||||
setVersion(8);
|
setVersion(8);
|
||||||
}
|
}
|
||||||
|
|
||||||
try (Statement statement = connection.createStatement()) {
|
try (Statement statement = getConnection().createStatement()) {
|
||||||
statement.execute("DROP TABLE IF EXISTS plan_locations");
|
statement.execute("DROP TABLE IF EXISTS plan_locations");
|
||||||
}
|
endTransaction(statement.getConnection());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -209,18 +175,16 @@ public abstract class SQLDB extends Database {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return
|
* Setups the {@link BasicDataSource}
|
||||||
*/
|
*/
|
||||||
public abstract Connection getNewConnection();
|
public abstract void setupDataSource();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @throws SQLException
|
* @throws SQLException
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void close() throws SQLException {
|
public void close() throws SQLException {
|
||||||
if (connection != null) {
|
dataSource.close();
|
||||||
connection.close();
|
|
||||||
}
|
|
||||||
setStatus("Closed");
|
setStatus("Closed");
|
||||||
Log.logDebug("Database"); // Log remaining Debug info if present
|
Log.logDebug("Database"); // Log remaining Debug info if present
|
||||||
}
|
}
|
||||||
@ -240,7 +204,6 @@ public abstract class SQLDB extends Database {
|
|||||||
@Override
|
@Override
|
||||||
public void setVersion(int version) throws SQLException {
|
public void setVersion(int version) throws SQLException {
|
||||||
versionTable.setVersion(version);
|
versionTable.setVersion(version);
|
||||||
commit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -266,29 +229,31 @@ public abstract class SQLDB extends Database {
|
|||||||
if (uuid == null) {
|
if (uuid == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Benchmark.start("Remove Account");
|
Benchmark.start("Remove Account");
|
||||||
Log.debug("Database", "Removing Account: " + uuid);
|
Log.debug("Database", "Removing Account: " + uuid);
|
||||||
checkConnection();
|
try {
|
||||||
|
setupDatabase();
|
||||||
boolean success = true;
|
} catch (Exception e) {
|
||||||
for (Table t : getAllTablesInRemoveOrder()) {
|
Log.toLog(this.getClass().getName(), e);
|
||||||
if (!success) {
|
return false;
|
||||||
continue;
|
}
|
||||||
}
|
|
||||||
if (t instanceof UserIDTable) {
|
for (Table t : getAllTablesInRemoveOrder()) {
|
||||||
UserIDTable table = (UserIDTable) t;
|
if (!(t instanceof UserIDTable)) {
|
||||||
success = table.removeUser(uuid);
|
continue;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (success) {
|
UserIDTable table = (UserIDTable) t;
|
||||||
commit();
|
if (!table.removeUser(uuid)) {
|
||||||
return true;
|
throw new IllegalStateException("Removal Failed");
|
||||||
}
|
}
|
||||||
throw new IllegalStateException("Removal Failed");
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.toLog(this.getClass().getName(), e);
|
Log.toLog(this.getClass().getName(), e);
|
||||||
rollback(); // TODO Test case
|
|
||||||
return false;
|
return false;
|
||||||
} finally {
|
} finally {
|
||||||
Benchmark.stop("Database", "Remove Account");
|
Benchmark.stop("Database", "Remove Account");
|
||||||
@ -303,7 +268,7 @@ public abstract class SQLDB extends Database {
|
|||||||
public void clean() {
|
public void clean() {
|
||||||
Log.info("Cleaning the database.");
|
Log.info("Cleaning the database.");
|
||||||
try {
|
try {
|
||||||
checkConnection();
|
setupDatabase();
|
||||||
tpsTable.clean();
|
tpsTable.clean();
|
||||||
Log.info("Clean complete.");
|
Log.info("Clean complete.");
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
@ -316,26 +281,20 @@ public abstract class SQLDB extends Database {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean removeAllData() {
|
public boolean removeAllData() {
|
||||||
boolean success = true;
|
|
||||||
setStatus("Clearing all data");
|
setStatus("Clearing all data");
|
||||||
try {
|
try {
|
||||||
for (Table table : getAllTablesInRemoveOrder()) {
|
for (Table table : getAllTablesInRemoveOrder()) {
|
||||||
if (!table.removeAllData()) {
|
if (!table.removeAllData()) {
|
||||||
success = false;
|
return false;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (success) {
|
|
||||||
commit();
|
return true;
|
||||||
} else {
|
} finally {
|
||||||
rollback(); // TODO Tests for this case
|
|
||||||
}
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Log.toLog(this.getClass().getName(), e);
|
|
||||||
}
|
|
||||||
setAvailable();
|
setAvailable();
|
||||||
return success;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<UserInfo> getUserDataForUUIDS(Collection<UUID> uuidsCol) throws SQLException {
|
public List<UserInfo> getUserDataForUUIDS(Collection<UUID> uuidsCol) throws SQLException {
|
||||||
@ -346,13 +305,6 @@ public abstract class SQLDB extends Database {
|
|||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public Connection getConnection() {
|
|
||||||
return connection;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setStatus(String status) {
|
private void setStatus(String status) {
|
||||||
Log.debug("Database", status);
|
Log.debug("Database", status);
|
||||||
}
|
}
|
||||||
@ -361,14 +313,23 @@ public abstract class SQLDB extends Database {
|
|||||||
Log.logDebug("Database");
|
Log.logDebug("Database");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Connection getConnection() throws SQLException {
|
||||||
|
return getDataSource().getConnection();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Commits changes to the .db file when using SQLite Database.
|
* Commits changes to the .db file when using SQLite Database.
|
||||||
* <p>
|
* <p>
|
||||||
* MySQL has Auto Commit enabled.
|
* MySQL has Auto Commit enabled.
|
||||||
*/
|
*/
|
||||||
public void commit() throws SQLException {
|
@Override
|
||||||
|
public void commit(Connection connection) throws SQLException {
|
||||||
|
try {
|
||||||
if (!usingMySQL) {
|
if (!usingMySQL) {
|
||||||
getConnection().commit();
|
connection.commit();
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
endTransaction(connection);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -377,9 +338,17 @@ public abstract class SQLDB extends Database {
|
|||||||
* <p>
|
* <p>
|
||||||
* MySQL has Auto Commit enabled.
|
* MySQL has Auto Commit enabled.
|
||||||
*/
|
*/
|
||||||
public void rollback() throws SQLException {
|
public void rollback(Connection connection) throws SQLException {
|
||||||
|
try {
|
||||||
if (!usingMySQL) {
|
if (!usingMySQL) {
|
||||||
connection.rollback();
|
connection.rollback();
|
||||||
}
|
}
|
||||||
|
} finally {
|
||||||
|
endTransaction(connection);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void endTransaction(Connection connection) throws SQLException {
|
||||||
|
connection.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
package main.java.com.djrapitops.plan.database.databases;
|
package main.java.com.djrapitops.plan.database.databases;
|
||||||
|
|
||||||
import main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.Plan;
|
||||||
|
import org.apache.commons.dbcp2.BasicDataSource;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.sql.Connection;
|
import java.util.Collections;
|
||||||
import java.sql.DriverManager;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
@ -33,36 +32,28 @@ public class SQLiteDB extends SQLDB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new connection to the database.
|
* Setups the {@link BasicDataSource}
|
||||||
*
|
|
||||||
* @return the new Connection.
|
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Connection getNewConnection() {
|
public void setupDataSource() {
|
||||||
return getNewConnection(dbName);
|
dataSource = new BasicDataSource();
|
||||||
|
|
||||||
|
String filePath = new File(plugin.getDataFolder(), dbName + ".db").getAbsolutePath();
|
||||||
|
dataSource.setUrl("jdbc:sqlite:" + filePath);
|
||||||
|
|
||||||
|
dataSource.setEnableAutoCommitOnReturn(false);
|
||||||
|
dataSource.setDefaultAutoCommit(false);
|
||||||
|
|
||||||
|
dataSource.setConnectionInitSqls(Collections.singletonList("PRAGMA JOURNAL_MODE=WAL"));
|
||||||
|
dataSource.setMaxTotal(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param dbName
|
* @return the name of the Database
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public Connection getNewConnection(String dbName) {
|
|
||||||
try {
|
|
||||||
Class.forName("org.sqlite.JDBC");
|
|
||||||
|
|
||||||
Connection connection = DriverManager.getConnection("jdbc:sqlite:" + new File(plugin.getDataFolder(), dbName + ".db").getAbsolutePath());
|
|
||||||
connection.setAutoCommit(false);
|
|
||||||
return connection;
|
|
||||||
} catch (ClassNotFoundException | SQLException e) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return "SQLite";
|
return "SQLite";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -81,6 +81,7 @@ public class ActionsTable extends UserIDTable {
|
|||||||
statement.setString(5, action.getAdditionalInfo());
|
statement.setString(5, action.getAdditionalInfo());
|
||||||
statement.execute();
|
statement.execute();
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -111,6 +112,7 @@ public class ActionsTable extends UserIDTable {
|
|||||||
}
|
}
|
||||||
return actions;
|
return actions;
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -94,8 +94,8 @@ public class CommandUseTable extends Table {
|
|||||||
}
|
}
|
||||||
return commandUse;
|
return commandUse;
|
||||||
} finally {
|
} finally {
|
||||||
close(set);
|
endTransaction(statement);
|
||||||
close(statement);
|
close(set, statement);
|
||||||
Benchmark.stop("Database", "Get CommandUse");
|
Benchmark.stop("Database", "Get CommandUse");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -129,7 +129,6 @@ public class CommandUseTable extends Table {
|
|||||||
}
|
}
|
||||||
|
|
||||||
updateCommands(updateData);
|
updateCommands(updateData);
|
||||||
commit();
|
|
||||||
Benchmark.stop("Database", "Save Commanduse");
|
Benchmark.stop("Database", "Save Commanduse");
|
||||||
db.setAvailable();
|
db.setAvailable();
|
||||||
}
|
}
|
||||||
@ -142,7 +141,7 @@ public class CommandUseTable extends Table {
|
|||||||
"WHERE (" + columnCommand + "=?) AND (" +
|
"WHERE (" + columnCommand + "=?) AND (" +
|
||||||
columnServerID + "=" + serverTable.statementSelectServerID + ")";
|
columnServerID + "=" + serverTable.statementSelectServerID + ")";
|
||||||
statement = prepareStatement(updateStatement);
|
statement = prepareStatement(updateStatement);
|
||||||
boolean commitRequired = false;
|
|
||||||
for (Map.Entry<String, Integer> entrySet : data.entrySet()) {
|
for (Map.Entry<String, Integer> entrySet : data.entrySet()) {
|
||||||
String key = entrySet.getKey();
|
String key = entrySet.getKey();
|
||||||
Integer amount = entrySet.getValue();
|
Integer amount = entrySet.getValue();
|
||||||
@ -155,13 +154,11 @@ public class CommandUseTable extends Table {
|
|||||||
statement.setString(2, key);
|
statement.setString(2, key);
|
||||||
statement.setString(3, Plan.getServerUUID().toString());
|
statement.setString(3, Plan.getServerUUID().toString());
|
||||||
statement.addBatch();
|
statement.addBatch();
|
||||||
commitRequired = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (commitRequired) {
|
|
||||||
statement.executeBatch();
|
statement.executeBatch();
|
||||||
}
|
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -175,7 +172,6 @@ public class CommandUseTable extends Table {
|
|||||||
+ columnServerID
|
+ columnServerID
|
||||||
+ ") VALUES (?, ?, " + serverTable.statementSelectServerID + ")";
|
+ ") VALUES (?, ?, " + serverTable.statementSelectServerID + ")";
|
||||||
statement = prepareStatement(insertStatement);
|
statement = prepareStatement(insertStatement);
|
||||||
boolean addedRows = false;
|
|
||||||
for (Map.Entry<String, Integer> entrySet : data.entrySet()) {
|
for (Map.Entry<String, Integer> entrySet : data.entrySet()) {
|
||||||
String key = entrySet.getKey();
|
String key = entrySet.getKey();
|
||||||
Integer amount = entrySet.getValue();
|
Integer amount = entrySet.getValue();
|
||||||
@ -188,13 +184,11 @@ public class CommandUseTable extends Table {
|
|||||||
statement.setInt(2, amount);
|
statement.setInt(2, amount);
|
||||||
statement.setString(3, Plan.getServerUUID().toString());
|
statement.setString(3, Plan.getServerUUID().toString());
|
||||||
statement.addBatch();
|
statement.addBatch();
|
||||||
addedRows = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (addedRows) {
|
|
||||||
statement.executeBatch();
|
statement.executeBatch();
|
||||||
}
|
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -211,7 +205,8 @@ public class CommandUseTable extends Table {
|
|||||||
}
|
}
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
} finally {
|
} finally {
|
||||||
close(statement);
|
endTransaction(statement);
|
||||||
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,7 +222,8 @@ public class CommandUseTable extends Table {
|
|||||||
}
|
}
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
} finally {
|
} finally {
|
||||||
close(statement);
|
endTransaction(statement);
|
||||||
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -75,6 +75,7 @@ public class IPsTable extends UserIDTable {
|
|||||||
|
|
||||||
return stringList;
|
return stringList;
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -84,6 +85,7 @@ public class IPsTable extends UserIDTable {
|
|||||||
if (ips.contains(ip)) {
|
if (ips.contains(ip)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
insertIp(uuid, ip, geolocation);
|
insertIp(uuid, ip, geolocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,6 +104,7 @@ public class IPsTable extends UserIDTable {
|
|||||||
statement.setString(3, geolocation);
|
statement.setString(3, geolocation);
|
||||||
statement.execute();
|
statement.execute();
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -120,6 +123,7 @@ public class IPsTable extends UserIDTable {
|
|||||||
}
|
}
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,6 +70,11 @@ public class KillsTable extends UserIDTable {
|
|||||||
Log.toLog(this.getClass().getName(), ex);
|
Log.toLog(this.getClass().getName(), ex);
|
||||||
return false;
|
return false;
|
||||||
} finally {
|
} finally {
|
||||||
|
try {
|
||||||
|
endTransaction(statement);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
Log.toLog(this.getClass().getName(), e);
|
||||||
|
}
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -103,6 +108,7 @@ public class KillsTable extends UserIDTable {
|
|||||||
}
|
}
|
||||||
statement.executeBatch();
|
statement.executeBatch();
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -136,6 +142,7 @@ public class KillsTable extends UserIDTable {
|
|||||||
session.getPlayerKills().add(new KillData(victim, weapon, date));
|
session.getPlayerKills().add(new KillData(victim, weapon, date));
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,6 +76,7 @@ public class NicknamesTable extends UserIDTable {
|
|||||||
}
|
}
|
||||||
return nicknames;
|
return nicknames;
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -127,6 +128,7 @@ public class NicknamesTable extends UserIDTable {
|
|||||||
}
|
}
|
||||||
return nicknames;
|
return nicknames;
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -152,6 +154,7 @@ public class NicknamesTable extends UserIDTable {
|
|||||||
statement.setString(3, displayName);
|
statement.setString(3, displayName);
|
||||||
statement.execute();
|
statement.execute();
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -53,6 +53,12 @@ public class SecurityTable extends Table {
|
|||||||
Log.toLog(this.getClass().getName(), ex);
|
Log.toLog(this.getClass().getName(), ex);
|
||||||
return false;
|
return false;
|
||||||
} finally {
|
} finally {
|
||||||
|
try {
|
||||||
|
endTransaction(statement);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
Log.toLog(this.getClass().getName(), e);
|
||||||
|
}
|
||||||
|
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -72,7 +78,8 @@ public class SecurityTable extends Table {
|
|||||||
statement.setString(2, saltPassHash);
|
statement.setString(2, saltPassHash);
|
||||||
statement.setInt(3, permLevel);
|
statement.setInt(3, permLevel);
|
||||||
statement.execute();
|
statement.execute();
|
||||||
commit();
|
|
||||||
|
commit(statement.getConnection());
|
||||||
} finally {
|
} finally {
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
@ -96,8 +103,8 @@ public class SecurityTable extends Table {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
} finally {
|
} finally {
|
||||||
close(set);
|
endTransaction(statement);
|
||||||
close(statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,8 +124,8 @@ public class SecurityTable extends Table {
|
|||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
} finally {
|
} finally {
|
||||||
close(set);
|
endTransaction(statement);
|
||||||
close(statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -86,6 +86,7 @@ public class ServerTable extends Table {
|
|||||||
statement.setInt(5, info.getId());
|
statement.setInt(5, info.getId());
|
||||||
statement.executeUpdate();
|
statement.executeUpdate();
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -116,6 +117,7 @@ public class ServerTable extends Table {
|
|||||||
statement.setBoolean(4, true);
|
statement.setBoolean(4, true);
|
||||||
statement.execute();
|
statement.execute();
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -143,6 +145,7 @@ public class ServerTable extends Table {
|
|||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -170,6 +173,7 @@ public class ServerTable extends Table {
|
|||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -189,6 +193,7 @@ public class ServerTable extends Table {
|
|||||||
}
|
}
|
||||||
return names;
|
return names;
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -218,6 +223,7 @@ public class ServerTable extends Table {
|
|||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -241,6 +247,7 @@ public class ServerTable extends Table {
|
|||||||
}
|
}
|
||||||
return servers;
|
return servers;
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -111,6 +111,7 @@ public class SessionsTable extends UserIDTable {
|
|||||||
statement.setString(6, Plan.getServerUUID().toString());
|
statement.setString(6, Plan.getServerUUID().toString());
|
||||||
statement.execute();
|
statement.execute();
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -139,6 +140,7 @@ public class SessionsTable extends UserIDTable {
|
|||||||
}
|
}
|
||||||
return -1L;
|
return -1L;
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -182,6 +184,7 @@ public class SessionsTable extends UserIDTable {
|
|||||||
}
|
}
|
||||||
return sessionsByServer;
|
return sessionsByServer;
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -258,6 +261,7 @@ public class SessionsTable extends UserIDTable {
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -303,6 +307,7 @@ public class SessionsTable extends UserIDTable {
|
|||||||
}
|
}
|
||||||
return playtimes;
|
return playtimes;
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -343,6 +348,7 @@ public class SessionsTable extends UserIDTable {
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -410,6 +416,7 @@ public class SessionsTable extends UserIDTable {
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -87,8 +87,8 @@ public class TPSTable extends Table {
|
|||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
} finally {
|
} finally {
|
||||||
close(set);
|
endTransaction(statement);
|
||||||
close(statement);
|
close(set, statement);
|
||||||
Benchmark.stop("Database", "Get TPS");
|
Benchmark.stop("Database", "Get TPS");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -135,6 +135,7 @@ public class TPSTable extends Table {
|
|||||||
statement.setLong(1, MiscUtils.getTime() - fiveWeeks);
|
statement.setLong(1, MiscUtils.getTime() - fiveWeeks);
|
||||||
statement.execute();
|
statement.execute();
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,11 +65,7 @@ public abstract class Table {
|
|||||||
* @return @throws SQLException
|
* @return @throws SQLException
|
||||||
*/
|
*/
|
||||||
protected Connection getConnection() throws SQLException {
|
protected Connection getConnection() throws SQLException {
|
||||||
Connection connection = db.getConnection();
|
return db.getConnection();
|
||||||
if (connection == null || connection.isClosed()) {
|
|
||||||
connection = db.getNewConnection();
|
|
||||||
}
|
|
||||||
return connection;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -89,11 +85,11 @@ public abstract class Table {
|
|||||||
Statement statement = null;
|
Statement statement = null;
|
||||||
try {
|
try {
|
||||||
statement = connection.createStatement();
|
statement = connection.createStatement();
|
||||||
return statement.execute(statementString);
|
boolean b = statement.execute(statementString);
|
||||||
|
commit(statement.getConnection());
|
||||||
|
return b;
|
||||||
} finally {
|
} finally {
|
||||||
if (statement != null) {
|
close(statement);
|
||||||
statement.close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,7 +188,19 @@ public abstract class Table {
|
|||||||
*
|
*
|
||||||
* @throws SQLException If commit fails or there is nothing to commit.
|
* @throws SQLException If commit fails or there is nothing to commit.
|
||||||
*/
|
*/
|
||||||
protected void commit() throws SQLException {
|
protected void commit(Connection connection) throws SQLException {
|
||||||
db.commit();
|
db.commit(connection);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void endTransaction(Connection connection) throws SQLException {
|
||||||
|
db.endTransaction(connection);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void endTransaction(Statement statement) throws SQLException {
|
||||||
|
if (statement == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
endTransaction(statement.getConnection());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,11 @@ public abstract class UserIDTable extends Table {
|
|||||||
Log.toLog(this.getClass().getName(), ex);
|
Log.toLog(this.getClass().getName(), ex);
|
||||||
return false;
|
return false;
|
||||||
} finally {
|
} finally {
|
||||||
|
try {
|
||||||
|
endTransaction(statement);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
Log.toLog(this.getClass().getName(), e);
|
||||||
|
}
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package main.java.com.djrapitops.plan.database.tables;
|
package main.java.com.djrapitops.plan.database.tables;
|
||||||
|
|
||||||
import com.djrapitops.plugin.utilities.Verify;
|
import com.djrapitops.plugin.utilities.Verify;
|
||||||
|
import main.java.com.djrapitops.plan.Log;
|
||||||
import main.java.com.djrapitops.plan.database.databases.SQLDB;
|
import main.java.com.djrapitops.plan.database.databases.SQLDB;
|
||||||
import main.java.com.djrapitops.plan.database.sql.*;
|
import main.java.com.djrapitops.plan.database.sql.*;
|
||||||
|
|
||||||
@ -63,6 +64,7 @@ public class UsersTable extends UserIDTable {
|
|||||||
}
|
}
|
||||||
return uuids;
|
return uuids;
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -82,6 +84,11 @@ public class UsersTable extends UserIDTable {
|
|||||||
} catch (SQLException ex) {
|
} catch (SQLException ex) {
|
||||||
return false;
|
return false;
|
||||||
} finally {
|
} finally {
|
||||||
|
try {
|
||||||
|
endTransaction(statement);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
Log.toLog(this.getClass().getName(), e);
|
||||||
|
}
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -117,6 +124,7 @@ public class UsersTable extends UserIDTable {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -133,6 +141,7 @@ public class UsersTable extends UserIDTable {
|
|||||||
}
|
}
|
||||||
return registerDates;
|
return registerDates;
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -160,6 +169,7 @@ public class UsersTable extends UserIDTable {
|
|||||||
statement.setString(3, name);
|
statement.setString(3, name);
|
||||||
statement.execute();
|
statement.execute();
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -175,6 +185,7 @@ public class UsersTable extends UserIDTable {
|
|||||||
set = statement.executeQuery();
|
set = statement.executeQuery();
|
||||||
return set.next();
|
return set.next();
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -189,6 +200,7 @@ public class UsersTable extends UserIDTable {
|
|||||||
statement.setString(2, uuid.toString());
|
statement.setString(2, uuid.toString());
|
||||||
statement.execute();
|
statement.execute();
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -207,6 +219,7 @@ public class UsersTable extends UserIDTable {
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -220,6 +233,7 @@ public class UsersTable extends UserIDTable {
|
|||||||
statement.setString(1, uuid.toString());
|
statement.setString(1, uuid.toString());
|
||||||
statement.execute();
|
statement.execute();
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,8 +50,8 @@ public class VersionTable extends Table {
|
|||||||
Log.debug("Database", "DB Schema version: " + version);
|
Log.debug("Database", "DB Schema version: " + version);
|
||||||
return version;
|
return version;
|
||||||
} finally {
|
} finally {
|
||||||
close(set);
|
endTransaction(statement);
|
||||||
close(statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,9 +65,9 @@ public class VersionTable extends Table {
|
|||||||
try {
|
try {
|
||||||
statement = prepareStatement("INSERT INTO " + tableName + " (version) VALUES (" + version + ")");
|
statement = prepareStatement("INSERT INTO " + tableName + " (version) VALUES (" + version + ")");
|
||||||
statement.executeUpdate();
|
statement.executeUpdate();
|
||||||
|
commit(statement.getConnection());
|
||||||
} finally {
|
} finally {
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,7 @@ public class WorldTable extends Table {
|
|||||||
}
|
}
|
||||||
return worldNames;
|
return worldNames;
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -94,16 +95,14 @@ public class WorldTable extends Table {
|
|||||||
statement = prepareStatement("INSERT INTO " + tableName + " ("
|
statement = prepareStatement("INSERT INTO " + tableName + " ("
|
||||||
+ columnWorldName
|
+ columnWorldName
|
||||||
+ ") VALUES (?)");
|
+ ") VALUES (?)");
|
||||||
boolean commitRequired = false;
|
|
||||||
for (String world : worlds) {
|
for (String world : worlds) {
|
||||||
statement.setString(1, world);
|
statement.setString(1, world);
|
||||||
statement.addBatch();
|
statement.addBatch();
|
||||||
commitRequired = true;
|
|
||||||
}
|
}
|
||||||
if (commitRequired) {
|
|
||||||
statement.executeBatch();
|
statement.executeBatch();
|
||||||
}
|
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -99,6 +99,7 @@ public class WorldTimesTable extends UserIDTable {
|
|||||||
|
|
||||||
statement.executeBatch();
|
statement.executeBatch();
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(statement);
|
close(statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -144,6 +145,7 @@ public class WorldTimesTable extends UserIDTable {
|
|||||||
session.getWorldTimes().setGMTimesForWorld(worldName, gmTimes);
|
session.getWorldTimes().setGMTimesForWorld(worldName, gmTimes);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
endTransaction(statement);
|
||||||
close(set, statement);
|
close(set, statement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package main.java.com.djrapitops.plan.systems.listeners;
|
package main.java.com.djrapitops.plan.systems.listeners;
|
||||||
|
|
||||||
import com.djrapitops.plugin.utilities.Verify;
|
|
||||||
import main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.Plan;
|
||||||
import main.java.com.djrapitops.plan.systems.processing.player.DeathProcessor;
|
import main.java.com.djrapitops.plan.systems.processing.player.DeathProcessor;
|
||||||
import main.java.com.djrapitops.plan.systems.processing.player.KillProcessor;
|
import main.java.com.djrapitops.plan.systems.processing.player.KillProcessor;
|
||||||
@ -16,8 +15,6 @@ import org.bukkit.event.entity.EntityDamageEvent;
|
|||||||
import org.bukkit.event.entity.EntityDeathEvent;
|
import org.bukkit.event.entity.EntityDeathEvent;
|
||||||
import org.bukkit.projectiles.ProjectileSource;
|
import org.bukkit.projectiles.ProjectileSource;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Event Listener for EntityDeathEvents.
|
* Event Listener for EntityDeathEvents.
|
||||||
*
|
*
|
||||||
@ -59,9 +56,6 @@ public class PlanDeathEventListener implements Listener {
|
|||||||
EntityDamageByEntityEvent entityDamageByEntityEvent = (EntityDamageByEntityEvent) entityDamageEvent;
|
EntityDamageByEntityEvent entityDamageByEntityEvent = (EntityDamageByEntityEvent) entityDamageEvent;
|
||||||
Entity killerEntity = entityDamageByEntityEvent.getDamager();
|
Entity killerEntity = entityDamageByEntityEvent.getDamager();
|
||||||
|
|
||||||
UUID killerUUID = null;
|
|
||||||
String weapon = null;
|
|
||||||
|
|
||||||
if (killerEntity instanceof Player) {
|
if (killerEntity instanceof Player) {
|
||||||
Player killer = (Player) killerEntity;
|
Player killer = (Player) killerEntity;
|
||||||
Material itemInHand;
|
Material itemInHand;
|
||||||
@ -75,32 +69,38 @@ public class PlanDeathEventListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
killerUUID = killer.getUniqueId();
|
plugin.addToProcessQueue(new KillProcessor(killer.getUniqueId(), time, dead, normalizeMaterialName(itemInHand)));
|
||||||
weapon = normalizeMaterialName(itemInHand);
|
return;
|
||||||
} else if (killerEntity instanceof Wolf) {
|
}
|
||||||
|
|
||||||
|
if (killerEntity instanceof Wolf) {
|
||||||
Wolf wolf = (Wolf) killerEntity;
|
Wolf wolf = (Wolf) killerEntity;
|
||||||
|
|
||||||
if (!wolf.isTamed()) {
|
if (!wolf.isTamed()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
AnimalTamer owner = wolf.getOwner();
|
AnimalTamer owner = wolf.getOwner();
|
||||||
if (owner instanceof Player) {
|
|
||||||
killerUUID = owner.getUniqueId();
|
if (!(owner instanceof Player)) {
|
||||||
weapon = "Wolf";
|
return;
|
||||||
}
|
}
|
||||||
} else if (killerEntity instanceof Arrow) {
|
|
||||||
|
plugin.addToProcessQueue(new KillProcessor(owner.getUniqueId(), time, dead, "Wolf"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (killerEntity instanceof Arrow) {
|
||||||
Arrow arrow = (Arrow) killerEntity;
|
Arrow arrow = (Arrow) killerEntity;
|
||||||
|
|
||||||
ProjectileSource source = arrow.getShooter();
|
ProjectileSource source = arrow.getShooter();
|
||||||
|
|
||||||
if (source instanceof Player) {
|
if (!(source instanceof Player)) {
|
||||||
Player player = (Player) source;
|
return;
|
||||||
killerUUID = player.getUniqueId();
|
|
||||||
weapon = "Bow";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Verify.notNull(killerUUID, weapon)) {
|
Player player = (Player) source;
|
||||||
plugin.addToProcessQueue(new KillProcessor(killerUUID, time, dead, weapon));
|
|
||||||
|
plugin.addToProcessQueue(new KillProcessor(player.getUniqueId(), time, dead, "Bow"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,7 +30,9 @@ public class ProcessingQueue extends Queue<Processor> {
|
|||||||
* @param processor processing object.
|
* @param processor processing object.
|
||||||
*/
|
*/
|
||||||
public void addToQueue(Processor processor) {
|
public void addToQueue(Processor processor) {
|
||||||
queue.offer(processor);
|
if (!queue.offer(processor)) {
|
||||||
|
Log.toLog("ProcessingQueue.addToQueue", new IllegalStateException("Processor was not added to Queue"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -312,7 +312,7 @@ public class WebServer {
|
|||||||
|
|
||||||
Plan plan = Plan.getInstance();
|
Plan plan = Plan.getInstance();
|
||||||
|
|
||||||
if (!checkKey(plan, key)) {
|
if (!checkKey(key)) {
|
||||||
String error = "Server Key not given or invalid";
|
String error = "Server Key not given or invalid";
|
||||||
return PageCacheHandler.loadPage(error, () -> {
|
return PageCacheHandler.loadPage(error, () -> {
|
||||||
ForbiddenResponse forbidden = new ForbiddenResponse();
|
ForbiddenResponse forbidden = new ForbiddenResponse();
|
||||||
@ -336,8 +336,8 @@ public class WebServer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean checkKey(Plan plan, String key) {
|
private boolean checkKey(String key) {
|
||||||
UUID uuid = plan.getServerInfoManager().getServerUUID();
|
UUID uuid = Plan.getServerUUID();
|
||||||
UUID keyUUID;
|
UUID keyUUID;
|
||||||
try {
|
try {
|
||||||
keyUUID = UUID.fromString(key);
|
keyUUID = UUID.fromString(key);
|
||||||
@ -544,7 +544,7 @@ public class WebServer {
|
|||||||
return usingHttps ? "https" : "http";
|
return usingHttps ? "https" : "http";
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean usingHttps() {
|
public boolean isUsingHTTPS() {
|
||||||
return usingHttps;
|
return usingHttps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ import main.java.com.djrapitops.plan.data.UserInfo;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
|
* @deprecated Will be removed once it's sure that it's unnecessary
|
||||||
*/
|
*/
|
||||||
@Deprecated // TODO Remove once sure that this is unnecessary.
|
@Deprecated // TODO Remove once sure that this is unnecessary.
|
||||||
public class NewPlayerCreator {
|
public class NewPlayerCreator {
|
||||||
|
@ -198,7 +198,7 @@ public class DumpUtils {
|
|||||||
* @param plan The Plan instance
|
* @param plan The Plan instance
|
||||||
*/
|
*/
|
||||||
private static void addConfigurationDetails(DumpLog log, Plan plan) {
|
private static void addConfigurationDetails(DumpLog log, Plan plan) {
|
||||||
boolean usingHTTPS = plan.getUiServer().usingHttps();
|
boolean usingHTTPS = plan.getUiServer().isUsingHTTPS();
|
||||||
boolean analysisExport = Settings.ANALYSIS_EXPORT.isTrue();
|
boolean analysisExport = Settings.ANALYSIS_EXPORT.isTrue();
|
||||||
boolean usingAlternativeServerIP = Settings.SHOW_ALTERNATIVE_IP.isTrue();
|
boolean usingAlternativeServerIP = Settings.SHOW_ALTERNATIVE_IP.isTrue();
|
||||||
|
|
||||||
|
@ -44,11 +44,7 @@ public class QueueTest {
|
|||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
TestInit t = TestInit.init();
|
TestInit t = TestInit.init();
|
||||||
Plan plan = t.getPlanMock();
|
Plan plan = t.getPlanMock();
|
||||||
db = new SQLiteDB(plan, "debug" + MiscUtils.getTime()) {
|
db = new SQLiteDB(plan, "debug" + MiscUtils.getTime());
|
||||||
@Override
|
|
||||||
public void startConnectionPingTask() {
|
|
||||||
}
|
|
||||||
};
|
|
||||||
db.init();
|
db.init();
|
||||||
when(plan.getDB()).thenReturn(db);
|
when(plan.getDB()).thenReturn(db);
|
||||||
dataCache = new DataCache(plan) {
|
dataCache = new DataCache(plan) {
|
||||||
|
@ -29,14 +29,12 @@ public class WorldTimesTest {
|
|||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
test = new WorldTimes(worldOne, gms[0]);
|
test = new WorldTimes(worldOne, gms[0]);
|
||||||
time = test.getGMTimes(worldOne).getLastStateChange();
|
time = test.getGMTimes(worldOne).getLastStateChange();
|
||||||
System.out.println(test);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWorldChange() {
|
public void testWorldChange() {
|
||||||
long changeTime = time + 1000L;
|
long changeTime = time + 1000L;
|
||||||
test.updateState(worldTwo, gms[0], changeTime);
|
test.updateState(worldTwo, gms[0], changeTime);
|
||||||
System.out.println(test);
|
|
||||||
assertEquals(1000L, (long) test.getWorldPlaytime(worldOne));
|
assertEquals(1000L, (long) test.getWorldPlaytime(worldOne));
|
||||||
assertEquals(1000L, test.getGMTimes(worldOne).getTime(gms[0]));
|
assertEquals(1000L, test.getGMTimes(worldOne).getTime(gms[0]));
|
||||||
}
|
}
|
||||||
@ -45,7 +43,6 @@ public class WorldTimesTest {
|
|||||||
public void testGMChange() {
|
public void testGMChange() {
|
||||||
long changeTime = time + 1000L;
|
long changeTime = time + 1000L;
|
||||||
test.updateState(worldOne, gms[0], changeTime);
|
test.updateState(worldOne, gms[0], changeTime);
|
||||||
System.out.println(test);
|
|
||||||
assertEquals(1000L, (long) test.getWorldPlaytime(worldOne));
|
assertEquals(1000L, (long) test.getWorldPlaytime(worldOne));
|
||||||
assertEquals(1000L, test.getGMTimes(worldOne).getTime(gms[0]));
|
assertEquals(1000L, test.getGMTimes(worldOne).getTime(gms[0]));
|
||||||
}
|
}
|
||||||
@ -55,11 +52,9 @@ public class WorldTimesTest {
|
|||||||
long changeTime = time + 1000L;
|
long changeTime = time + 1000L;
|
||||||
long changeTime2 = changeTime + 1000L;
|
long changeTime2 = changeTime + 1000L;
|
||||||
test.updateState(worldTwo, gms[2], changeTime);
|
test.updateState(worldTwo, gms[2], changeTime);
|
||||||
System.out.println(test);
|
|
||||||
assertEquals(1000L, (long) test.getWorldPlaytime(worldOne));
|
assertEquals(1000L, (long) test.getWorldPlaytime(worldOne));
|
||||||
assertEquals(1000L, test.getGMTimes(worldOne).getTime(gms[0]));
|
assertEquals(1000L, test.getGMTimes(worldOne).getTime(gms[0]));
|
||||||
test.updateState(worldOne, gms[1], changeTime2);
|
test.updateState(worldOne, gms[1], changeTime2);
|
||||||
System.out.println(test);
|
|
||||||
assertEquals(1000L, (long) test.getWorldPlaytime(worldOne));
|
assertEquals(1000L, (long) test.getWorldPlaytime(worldOne));
|
||||||
assertEquals(1000L, test.getGMTimes(worldOne).getTime(gms[0]));
|
assertEquals(1000L, test.getGMTimes(worldOne).getTime(gms[0]));
|
||||||
assertEquals(1000L, test.getGMTimes(worldTwo).getTime(gms[2]));
|
assertEquals(1000L, test.getGMTimes(worldTwo).getTime(gms[2]));
|
||||||
@ -98,7 +93,6 @@ public class WorldTimesTest {
|
|||||||
|
|
||||||
long time1 = test.getWorldPlaytime(worldOne);
|
long time1 = test.getWorldPlaytime(worldOne);
|
||||||
long time2 = test.getWorldPlaytime(worldTwo);
|
long time2 = test.getWorldPlaytime(worldTwo);
|
||||||
System.out.println(test);
|
|
||||||
|
|
||||||
// Tests World time calculation.
|
// Tests World time calculation.
|
||||||
assertEquals(amount * 50, time1 + time2);
|
assertEquals(amount * 50, time1 + time2);
|
||||||
@ -156,13 +150,10 @@ public class WorldTimesTest {
|
|||||||
|
|
||||||
// No change should occur.
|
// No change should occur.
|
||||||
test.updateState(worldOne, "ADVENTURE", time + 5000L);
|
test.updateState(worldOne, "ADVENTURE", time + 5000L);
|
||||||
System.out.println(test);
|
|
||||||
assertEquals(1000L, worldOneGMTimes.getTime("ADVENTURE"));
|
assertEquals(1000L, worldOneGMTimes.getTime("ADVENTURE"));
|
||||||
assertEquals(1000L, worldTwoGMTimes.getTime("CREATIVE"));
|
assertEquals(1000L, worldTwoGMTimes.getTime("CREATIVE"));
|
||||||
test.updateState(worldTwo, "CREATIVE", time + 5000L);
|
test.updateState(worldTwo, "CREATIVE", time + 5000L);
|
||||||
System.out.println(test);
|
|
||||||
test.updateState(worldOne, "ADVENTURE", time + 6000L);
|
test.updateState(worldOne, "ADVENTURE", time + 6000L);
|
||||||
System.out.println(test);
|
|
||||||
assertEquals(1000L, worldOneGMTimes.getTime("ADVENTURE"));
|
assertEquals(1000L, worldOneGMTimes.getTime("ADVENTURE"));
|
||||||
assertEquals(2000L, worldTwoGMTimes.getTime("CREATIVE"));
|
assertEquals(2000L, worldTwoGMTimes.getTime("CREATIVE"));
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@ package test.java.main.java.com.djrapitops.plan.database;
|
|||||||
import main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.Plan;
|
||||||
import main.java.com.djrapitops.plan.data.TPS;
|
import main.java.com.djrapitops.plan.data.TPS;
|
||||||
import main.java.com.djrapitops.plan.data.WebUser;
|
import main.java.com.djrapitops.plan.data.WebUser;
|
||||||
import main.java.com.djrapitops.plan.database.Database;
|
|
||||||
import main.java.com.djrapitops.plan.database.databases.SQLiteDB;
|
import main.java.com.djrapitops.plan.database.databases.SQLiteDB;
|
||||||
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
||||||
import main.java.com.djrapitops.plan.utilities.PassEncryptUtil;
|
import main.java.com.djrapitops.plan.utilities.PassEncryptUtil;
|
||||||
@ -34,21 +33,18 @@ import static org.junit.Assert.assertTrue;
|
|||||||
public class DatabaseCommitTest {
|
public class DatabaseCommitTest {
|
||||||
|
|
||||||
private Plan plan;
|
private Plan plan;
|
||||||
private Database db;
|
private SQLiteDB db;
|
||||||
private int rows;
|
private int rows;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
TestInit t = TestInit.init();
|
TestInit t = TestInit.init();
|
||||||
plan = t.getPlanMock();
|
plan = t.getPlanMock();
|
||||||
db = new SQLiteDB(plan, "debug" + MiscUtils.getTime()) {
|
db = new SQLiteDB(plan, "debug" + MiscUtils.getTime());
|
||||||
@Override
|
|
||||||
public void startConnectionPingTask() {
|
|
||||||
|
|
||||||
}
|
|
||||||
};
|
|
||||||
File f = new File(plan.getDataFolder(), "Errors.txt");
|
File f = new File(plan.getDataFolder(), "Errors.txt");
|
||||||
rows = FileUtil.lines(f).size();
|
rows = FileUtil.lines(f).size();
|
||||||
|
|
||||||
|
db.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -72,9 +68,10 @@ public class DatabaseCommitTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testNoExceptionWhenCommitEmpty() throws SQLException {
|
public void testNoExceptionWhenCommitEmpty() throws SQLException {
|
||||||
db.init();
|
db.init();
|
||||||
db.commit();
|
|
||||||
db.commit();
|
db.commit(db.getConnection());
|
||||||
db.commit();
|
db.commit(db.getConnection());
|
||||||
|
db.commit(db.getConnection());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore("//TODO")
|
@Ignore("//TODO")
|
||||||
|
@ -68,6 +68,8 @@ public class DatabaseTest {
|
|||||||
db.getServerTable().saveCurrentServerInfo(new ServerInfo(-1, t.getServerUUID(), "ServerName", ""));
|
db.getServerTable().saveCurrentServerInfo(new ServerInfo(-1, t.getServerUUID(), "ServerName", ""));
|
||||||
File f = new File(plan.getDataFolder(), "Errors.txt");
|
File f = new File(plan.getDataFolder(), "Errors.txt");
|
||||||
rows = FileUtil.lines(f).size();
|
rows = FileUtil.lines(f).size();
|
||||||
|
|
||||||
|
db.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
@ -105,22 +107,12 @@ public class DatabaseTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMysqlGetConfigName() {
|
public void testMysqlGetConfigName() {
|
||||||
assertEquals("mysql", new MySQLDB(plan) {
|
assertEquals("mysql", new MySQLDB(plan).getConfigName());
|
||||||
@Override
|
|
||||||
public void startConnectionPingTask() {
|
|
||||||
|
|
||||||
}
|
|
||||||
}.getConfigName());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMysqlGetName() {
|
public void testMysqlGetName() {
|
||||||
assertEquals("MySQL", new MySQLDB(plan) {
|
assertEquals("MySQL", new MySQLDB(plan).getName());
|
||||||
@Override
|
|
||||||
public void startConnectionPingTask() {
|
|
||||||
|
|
||||||
}
|
|
||||||
}.getName());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -176,7 +168,6 @@ public class DatabaseTest {
|
|||||||
public void testTPSSaving() throws SQLException {
|
public void testTPSSaving() throws SQLException {
|
||||||
db.init();
|
db.init();
|
||||||
TPSTable tpsTable = db.getTpsTable();
|
TPSTable tpsTable = db.getTpsTable();
|
||||||
List<TPS> expected = new ArrayList<>();
|
|
||||||
Random r = new Random();
|
Random r = new Random();
|
||||||
|
|
||||||
OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
|
OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
|
||||||
@ -187,6 +178,8 @@ public class DatabaseTest {
|
|||||||
final int entityCount = 6123;
|
final int entityCount = 6123;
|
||||||
final int chunksLoaded = 2134;
|
final int chunksLoaded = 2134;
|
||||||
|
|
||||||
|
List<TPS> expected = new ArrayList<>();
|
||||||
|
|
||||||
expected.add(new TPS(r.nextLong(), r.nextDouble(), r.nextInt(100000000), averageCPUUsage, usedMemory, entityCount, chunksLoaded));
|
expected.add(new TPS(r.nextLong(), r.nextDouble(), r.nextInt(100000000), averageCPUUsage, usedMemory, entityCount, chunksLoaded));
|
||||||
expected.add(new TPS(r.nextLong(), r.nextDouble(), r.nextInt(100000000), averageCPUUsage, usedMemory, entityCount, chunksLoaded));
|
expected.add(new TPS(r.nextLong(), r.nextDouble(), r.nextInt(100000000), averageCPUUsage, usedMemory, entityCount, chunksLoaded));
|
||||||
expected.add(new TPS(r.nextLong(), r.nextDouble(), r.nextInt(100000000), averageCPUUsage, usedMemory, entityCount, chunksLoaded));
|
expected.add(new TPS(r.nextLong(), r.nextDouble(), r.nextInt(100000000), averageCPUUsage, usedMemory, entityCount, chunksLoaded));
|
||||||
|
48
Plan/test/test/java/utils/DBTestSuite.java
Normal file
48
Plan/test/test/java/utils/DBTestSuite.java
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* Licence is provided in the jar as license.yml also here:
|
||||||
|
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||||
|
*/
|
||||||
|
package test.java.utils;
|
||||||
|
|
||||||
|
import org.junit.AfterClass;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.junit.runners.Suite;
|
||||||
|
import test.java.main.java.com.djrapitops.plan.database.DatabaseCommitTest;
|
||||||
|
import test.java.main.java.com.djrapitops.plan.database.DatabaseTest;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Fuzzlemann
|
||||||
|
*/
|
||||||
|
@RunWith(Suite.class)
|
||||||
|
@Suite.SuiteClasses({DatabaseCommitTest.class, DatabaseTest.class})
|
||||||
|
public class DBTestSuite {
|
||||||
|
@BeforeClass
|
||||||
|
public static void setUp() throws IOException {
|
||||||
|
clean(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public static void tearDown() throws IOException {
|
||||||
|
clean(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void clean(boolean dbOnly) throws IOException {
|
||||||
|
File testFolder = TestInit.getTestFolder();
|
||||||
|
|
||||||
|
if (!testFolder.exists() || !testFolder.isDirectory()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (File f : testFolder.listFiles()) {
|
||||||
|
if (dbOnly && !f.getName().contains(".db")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
f.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -63,17 +63,11 @@ public class TestInit {
|
|||||||
|
|
||||||
public static TestInit init() throws Exception {
|
public static TestInit init() throws Exception {
|
||||||
TestInit t = new TestInit();
|
TestInit t = new TestInit();
|
||||||
t.setUp(true);
|
t.setUp();
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TestInit init(boolean clearOnStart) throws Exception {
|
private void setUp() throws Exception {
|
||||||
TestInit t = new TestInit();
|
|
||||||
t.setUp(clearOnStart);
|
|
||||||
return t;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setUp(boolean clearOnStart) throws Exception {
|
|
||||||
planMock = PowerMockito.mock(Plan.class);
|
planMock = PowerMockito.mock(Plan.class);
|
||||||
StaticHolder.setInstance(Plan.class, planMock);
|
StaticHolder.setInstance(Plan.class, planMock);
|
||||||
StaticHolder.setInstance(planMock.getClass(), planMock);
|
StaticHolder.setInstance(planMock.getClass(), planMock);
|
||||||
@ -82,9 +76,6 @@ public class TestInit {
|
|||||||
when(planMock.getConfig()).thenReturn(config);
|
when(planMock.getConfig()).thenReturn(config);
|
||||||
|
|
||||||
File testFolder = getTestFolder();
|
File testFolder = getTestFolder();
|
||||||
if (clearOnStart) {
|
|
||||||
clean(testFolder);
|
|
||||||
}
|
|
||||||
when(planMock.getDataFolder()).thenReturn(testFolder);
|
when(planMock.getDataFolder()).thenReturn(testFolder);
|
||||||
|
|
||||||
// Html Files
|
// Html Files
|
||||||
@ -123,7 +114,7 @@ public class TestInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private RunnableFactory<Plan> mockRunnableFactory() {
|
private RunnableFactory<Plan> mockRunnableFactory() {
|
||||||
RunnableFactory<Plan> runnableFactory = new RunnableFactory<Plan>(planMock) {
|
return new RunnableFactory<Plan>(planMock) {
|
||||||
@Override
|
@Override
|
||||||
public IRunnable createNew(String name, final AbsRunnable runnable) {
|
public IRunnable createNew(String name, final AbsRunnable runnable) {
|
||||||
return new IRunnable() {
|
return new IRunnable() {
|
||||||
@ -174,27 +165,14 @@ public class TestInit {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return runnableFactory;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static File getTestFolder() {
|
static File getTestFolder() {
|
||||||
File testFolder = new File("temporaryTestFolder");
|
File testFolder = new File("temporaryTestFolder");
|
||||||
testFolder.mkdir();
|
testFolder.mkdir();
|
||||||
return testFolder;
|
return testFolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void clean() throws IOException {
|
|
||||||
clean(getTestFolder());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void clean(File testFolder) throws IOException {
|
|
||||||
if (testFolder.exists() && testFolder.isDirectory()) {
|
|
||||||
for (File f : testFolder.listFiles()) {
|
|
||||||
Files.deleteIfExists(f.toPath());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Server mockServer() {
|
private Server mockServer() {
|
||||||
Server mockServer = PowerMockito.mock(Server.class);
|
Server mockServer = PowerMockito.mock(Server.class);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user