uuidsCol) throws SQLException {
if (uuidsCol == null || uuidsCol.isEmpty()) {
@@ -346,13 +305,6 @@ public abstract class SQLDB extends Database {
return new ArrayList<>();
}
- /**
- * @return
- */
- public Connection getConnection() {
- return connection;
- }
-
private void setStatus(String status) {
Log.debug("Database", status);
}
@@ -361,14 +313,23 @@ public abstract class SQLDB extends Database {
Log.logDebug("Database");
}
+ public Connection getConnection() throws SQLException {
+ return getDataSource().getConnection();
+ }
+
/**
* Commits changes to the .db file when using SQLite Database.
*
* MySQL has Auto Commit enabled.
*/
- public void commit() throws SQLException {
- if (!usingMySQL) {
- getConnection().commit();
+ @Override
+ public void commit(Connection connection) throws SQLException {
+ try {
+ if (!usingMySQL) {
+ connection.commit();
+ }
+ } finally {
+ endTransaction(connection);
}
}
@@ -377,9 +338,17 @@ public abstract class SQLDB extends Database {
*
* MySQL has Auto Commit enabled.
*/
- public void rollback() throws SQLException {
- if (!usingMySQL) {
- connection.rollback();
+ public void rollback(Connection connection) throws SQLException {
+ try {
+ if (!usingMySQL) {
+ connection.rollback();
+ }
+ } finally {
+ endTransaction(connection);
}
}
+
+ public void endTransaction(Connection connection) throws SQLException {
+ connection.close();
+ }
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/database/databases/SQLiteDB.java b/Plan/src/main/java/com/djrapitops/plan/database/databases/SQLiteDB.java
index 49db2e4f2..c8af425d9 100644
--- a/Plan/src/main/java/com/djrapitops/plan/database/databases/SQLiteDB.java
+++ b/Plan/src/main/java/com/djrapitops/plan/database/databases/SQLiteDB.java
@@ -1,11 +1,10 @@
package main.java.com.djrapitops.plan.database.databases;
import main.java.com.djrapitops.plan.Plan;
+import org.apache.commons.dbcp2.BasicDataSource;
import java.io.File;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.SQLException;
+import java.util.Collections;
/**
* @author Rsl1122
@@ -33,36 +32,28 @@ public class SQLiteDB extends SQLDB {
}
/**
- * Creates a new connection to the database.
- *
- * @return the new Connection.
+ * Setups the {@link BasicDataSource}
*/
@Override
- public Connection getNewConnection() {
- return getNewConnection(dbName);
+ public void setupDataSource() {
+ 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
- */
- 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
+ * @return the name of the Database
*/
@Override
public String getName() {
return "SQLite";
}
+
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/ActionsTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/ActionsTable.java
index 2f921cdc5..6ea7cf752 100644
--- a/Plan/src/main/java/com/djrapitops/plan/database/tables/ActionsTable.java
+++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/ActionsTable.java
@@ -81,6 +81,7 @@ public class ActionsTable extends UserIDTable {
statement.setString(5, action.getAdditionalInfo());
statement.execute();
} finally {
+ endTransaction(statement);
close(statement);
}
}
@@ -111,6 +112,7 @@ public class ActionsTable extends UserIDTable {
}
return actions;
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/CommandUseTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/CommandUseTable.java
index 8c3d274eb..09776433a 100644
--- a/Plan/src/main/java/com/djrapitops/plan/database/tables/CommandUseTable.java
+++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/CommandUseTable.java
@@ -94,8 +94,8 @@ public class CommandUseTable extends Table {
}
return commandUse;
} finally {
- close(set);
- close(statement);
+ endTransaction(statement);
+ close(set, statement);
Benchmark.stop("Database", "Get CommandUse");
}
}
@@ -129,7 +129,6 @@ public class CommandUseTable extends Table {
}
updateCommands(updateData);
- commit();
Benchmark.stop("Database", "Save Commanduse");
db.setAvailable();
}
@@ -142,7 +141,7 @@ public class CommandUseTable extends Table {
"WHERE (" + columnCommand + "=?) AND (" +
columnServerID + "=" + serverTable.statementSelectServerID + ")";
statement = prepareStatement(updateStatement);
- boolean commitRequired = false;
+
for (Map.Entry entrySet : data.entrySet()) {
String key = entrySet.getKey();
Integer amount = entrySet.getValue();
@@ -155,13 +154,11 @@ public class CommandUseTable extends Table {
statement.setString(2, key);
statement.setString(3, Plan.getServerUUID().toString());
statement.addBatch();
- commitRequired = true;
}
- if (commitRequired) {
- statement.executeBatch();
- }
+ statement.executeBatch();
} finally {
+ endTransaction(statement);
close(statement);
}
}
@@ -175,7 +172,6 @@ public class CommandUseTable extends Table {
+ columnServerID
+ ") VALUES (?, ?, " + serverTable.statementSelectServerID + ")";
statement = prepareStatement(insertStatement);
- boolean addedRows = false;
for (Map.Entry entrySet : data.entrySet()) {
String key = entrySet.getKey();
Integer amount = entrySet.getValue();
@@ -188,13 +184,11 @@ public class CommandUseTable extends Table {
statement.setInt(2, amount);
statement.setString(3, Plan.getServerUUID().toString());
statement.addBatch();
- addedRows = true;
}
- if (addedRows) {
- statement.executeBatch();
- }
+ statement.executeBatch();
} finally {
+ endTransaction(statement);
close(statement);
}
}
@@ -211,7 +205,8 @@ public class CommandUseTable extends Table {
}
return Optional.empty();
} finally {
- close(statement);
+ endTransaction(statement);
+ close(set, statement);
}
}
@@ -227,7 +222,8 @@ public class CommandUseTable extends Table {
}
return Optional.empty();
} finally {
- close(statement);
+ endTransaction(statement);
+ close(set, statement);
}
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/IPsTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/IPsTable.java
index f8e274ad1..da53df8b6 100644
--- a/Plan/src/main/java/com/djrapitops/plan/database/tables/IPsTable.java
+++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/IPsTable.java
@@ -75,6 +75,7 @@ public class IPsTable extends UserIDTable {
return stringList;
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -84,6 +85,7 @@ public class IPsTable extends UserIDTable {
if (ips.contains(ip)) {
return;
}
+
insertIp(uuid, ip, geolocation);
}
@@ -102,6 +104,7 @@ public class IPsTable extends UserIDTable {
statement.setString(3, geolocation);
statement.execute();
} finally {
+ endTransaction(statement);
close(statement);
}
}
@@ -120,6 +123,7 @@ public class IPsTable extends UserIDTable {
}
return Optional.empty();
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/KillsTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/KillsTable.java
index 99e524311..65346a1d8 100644
--- a/Plan/src/main/java/com/djrapitops/plan/database/tables/KillsTable.java
+++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/KillsTable.java
@@ -70,6 +70,11 @@ public class KillsTable extends UserIDTable {
Log.toLog(this.getClass().getName(), ex);
return false;
} finally {
+ try {
+ endTransaction(statement);
+ } catch (SQLException e) {
+ Log.toLog(this.getClass().getName(), e);
+ }
close(statement);
}
}
@@ -103,6 +108,7 @@ public class KillsTable extends UserIDTable {
}
statement.executeBatch();
} finally {
+ endTransaction(statement);
close(statement);
}
}
@@ -136,6 +142,7 @@ public class KillsTable extends UserIDTable {
session.getPlayerKills().add(new KillData(victim, weapon, date));
}
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/NicknamesTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/NicknamesTable.java
index 24f74ed92..6904d20f8 100644
--- a/Plan/src/main/java/com/djrapitops/plan/database/tables/NicknamesTable.java
+++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/NicknamesTable.java
@@ -76,6 +76,7 @@ public class NicknamesTable extends UserIDTable {
}
return nicknames;
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -127,6 +128,7 @@ public class NicknamesTable extends UserIDTable {
}
return nicknames;
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -152,6 +154,7 @@ public class NicknamesTable extends UserIDTable {
statement.setString(3, displayName);
statement.execute();
} finally {
+ endTransaction(statement);
close(statement);
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/SecurityTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/SecurityTable.java
index b3b879a55..301601d36 100644
--- a/Plan/src/main/java/com/djrapitops/plan/database/tables/SecurityTable.java
+++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/SecurityTable.java
@@ -53,6 +53,12 @@ public class SecurityTable extends Table {
Log.toLog(this.getClass().getName(), ex);
return false;
} finally {
+ try {
+ endTransaction(statement);
+ } catch (SQLException e) {
+ Log.toLog(this.getClass().getName(), e);
+ }
+
close(statement);
}
}
@@ -72,7 +78,8 @@ public class SecurityTable extends Table {
statement.setString(2, saltPassHash);
statement.setInt(3, permLevel);
statement.execute();
- commit();
+
+ commit(statement.getConnection());
} finally {
close(statement);
}
@@ -96,8 +103,8 @@ public class SecurityTable extends Table {
}
return null;
} finally {
- close(set);
- close(statement);
+ endTransaction(statement);
+ close(set, statement);
}
}
@@ -117,8 +124,8 @@ public class SecurityTable extends Table {
}
return list;
} finally {
- close(set);
- close(statement);
+ endTransaction(statement);
+ close(set, statement);
}
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/ServerTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/ServerTable.java
index 4ea6ebbb9..65f1e35b3 100644
--- a/Plan/src/main/java/com/djrapitops/plan/database/tables/ServerTable.java
+++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/ServerTable.java
@@ -86,6 +86,7 @@ public class ServerTable extends Table {
statement.setInt(5, info.getId());
statement.executeUpdate();
} finally {
+ endTransaction(statement);
close(statement);
}
}
@@ -116,6 +117,7 @@ public class ServerTable extends Table {
statement.setBoolean(4, true);
statement.execute();
} finally {
+ endTransaction(statement);
close(statement);
}
}
@@ -143,6 +145,7 @@ public class ServerTable extends Table {
return Optional.empty();
}
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -170,6 +173,7 @@ public class ServerTable extends Table {
return Optional.empty();
}
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -189,6 +193,7 @@ public class ServerTable extends Table {
}
return names;
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -218,6 +223,7 @@ public class ServerTable extends Table {
return Optional.empty();
}
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -241,6 +247,7 @@ public class ServerTable extends Table {
}
return servers;
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/SessionsTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/SessionsTable.java
index 4eb392536..dba1b50d6 100644
--- a/Plan/src/main/java/com/djrapitops/plan/database/tables/SessionsTable.java
+++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/SessionsTable.java
@@ -111,6 +111,7 @@ public class SessionsTable extends UserIDTable {
statement.setString(6, Plan.getServerUUID().toString());
statement.execute();
} finally {
+ endTransaction(statement);
close(statement);
}
}
@@ -139,6 +140,7 @@ public class SessionsTable extends UserIDTable {
}
return -1L;
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -182,6 +184,7 @@ public class SessionsTable extends UserIDTable {
}
return sessionsByServer;
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -258,6 +261,7 @@ public class SessionsTable extends UserIDTable {
}
return 0;
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -303,6 +307,7 @@ public class SessionsTable extends UserIDTable {
}
return playtimes;
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -343,6 +348,7 @@ public class SessionsTable extends UserIDTable {
}
return 0;
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -410,6 +416,7 @@ public class SessionsTable extends UserIDTable {
}
return 0;
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/TPSTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/TPSTable.java
index 07bcec2f8..44b3e4678 100644
--- a/Plan/src/main/java/com/djrapitops/plan/database/tables/TPSTable.java
+++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/TPSTable.java
@@ -87,8 +87,8 @@ public class TPSTable extends Table {
}
return data;
} finally {
- close(set);
- close(statement);
+ endTransaction(statement);
+ close(set, statement);
Benchmark.stop("Database", "Get TPS");
}
}
@@ -135,6 +135,7 @@ public class TPSTable extends Table {
statement.setLong(1, MiscUtils.getTime() - fiveWeeks);
statement.execute();
} finally {
+ endTransaction(statement);
close(statement);
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/Table.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/Table.java
index 5086ece98..6e9fa6334 100644
--- a/Plan/src/main/java/com/djrapitops/plan/database/tables/Table.java
+++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/Table.java
@@ -65,11 +65,7 @@ public abstract class Table {
* @return @throws SQLException
*/
protected Connection getConnection() throws SQLException {
- Connection connection = db.getConnection();
- if (connection == null || connection.isClosed()) {
- connection = db.getNewConnection();
- }
- return connection;
+ return db.getConnection();
}
/**
@@ -89,11 +85,11 @@ public abstract class Table {
Statement statement = null;
try {
statement = connection.createStatement();
- return statement.execute(statementString);
+ boolean b = statement.execute(statementString);
+ commit(statement.getConnection());
+ return b;
} finally {
- if (statement != null) {
- statement.close();
- }
+ close(statement);
}
}
@@ -192,7 +188,19 @@ public abstract class Table {
*
* @throws SQLException If commit fails or there is nothing to commit.
*/
- protected void commit() throws SQLException {
- db.commit();
+ protected void commit(Connection connection) throws SQLException {
+ 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());
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/UserIDTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/UserIDTable.java
index 2424ca293..d8b25fb42 100644
--- a/Plan/src/main/java/com/djrapitops/plan/database/tables/UserIDTable.java
+++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/UserIDTable.java
@@ -35,6 +35,11 @@ public abstract class UserIDTable extends Table {
Log.toLog(this.getClass().getName(), ex);
return false;
} finally {
+ try {
+ endTransaction(statement);
+ } catch (SQLException e) {
+ Log.toLog(this.getClass().getName(), e);
+ }
close(statement);
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/UsersTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/UsersTable.java
index 31822f685..bb3bfebcf 100644
--- a/Plan/src/main/java/com/djrapitops/plan/database/tables/UsersTable.java
+++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/UsersTable.java
@@ -1,6 +1,7 @@
package main.java.com.djrapitops.plan.database.tables;
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.sql.*;
@@ -63,6 +64,7 @@ public class UsersTable extends UserIDTable {
}
return uuids;
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -82,6 +84,11 @@ public class UsersTable extends UserIDTable {
} catch (SQLException ex) {
return false;
} finally {
+ try {
+ endTransaction(statement);
+ } catch (SQLException e) {
+ Log.toLog(this.getClass().getName(), e);
+ }
close(statement);
}
}
@@ -117,6 +124,7 @@ public class UsersTable extends UserIDTable {
}
return null;
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -133,6 +141,7 @@ public class UsersTable extends UserIDTable {
}
return registerDates;
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -160,6 +169,7 @@ public class UsersTable extends UserIDTable {
statement.setString(3, name);
statement.execute();
} finally {
+ endTransaction(statement);
close(statement);
}
}
@@ -175,6 +185,7 @@ public class UsersTable extends UserIDTable {
set = statement.executeQuery();
return set.next();
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -189,6 +200,7 @@ public class UsersTable extends UserIDTable {
statement.setString(2, uuid.toString());
statement.execute();
} finally {
+ endTransaction(statement);
close(statement);
}
}
@@ -207,6 +219,7 @@ public class UsersTable extends UserIDTable {
}
return 0;
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -220,6 +233,7 @@ public class UsersTable extends UserIDTable {
statement.setString(1, uuid.toString());
statement.execute();
} finally {
+ endTransaction(statement);
close(statement);
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/VersionTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/VersionTable.java
index 1e478c2a3..b52bd755a 100644
--- a/Plan/src/main/java/com/djrapitops/plan/database/tables/VersionTable.java
+++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/VersionTable.java
@@ -50,8 +50,8 @@ public class VersionTable extends Table {
Log.debug("Database", "DB Schema version: " + version);
return version;
} finally {
- close(set);
- close(statement);
+ endTransaction(statement);
+ close(set, statement);
}
}
@@ -65,9 +65,9 @@ public class VersionTable extends Table {
try {
statement = prepareStatement("INSERT INTO " + tableName + " (version) VALUES (" + version + ")");
statement.executeUpdate();
+ commit(statement.getConnection());
} finally {
close(statement);
}
}
-
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/WorldTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/WorldTable.java
index 04ff93e06..4e922e7b3 100644
--- a/Plan/src/main/java/com/djrapitops/plan/database/tables/WorldTable.java
+++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/WorldTable.java
@@ -68,6 +68,7 @@ public class WorldTable extends Table {
}
return worldNames;
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
@@ -94,16 +95,14 @@ public class WorldTable extends Table {
statement = prepareStatement("INSERT INTO " + tableName + " ("
+ columnWorldName
+ ") VALUES (?)");
- boolean commitRequired = false;
for (String world : worlds) {
statement.setString(1, world);
statement.addBatch();
- commitRequired = true;
- }
- if (commitRequired) {
- statement.executeBatch();
}
+
+ statement.executeBatch();
} finally {
+ endTransaction(statement);
close(statement);
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/WorldTimesTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/WorldTimesTable.java
index 7ca568ba8..6a174a20f 100644
--- a/Plan/src/main/java/com/djrapitops/plan/database/tables/WorldTimesTable.java
+++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/WorldTimesTable.java
@@ -99,6 +99,7 @@ public class WorldTimesTable extends UserIDTable {
statement.executeBatch();
} finally {
+ endTransaction(statement);
close(statement);
}
}
@@ -144,6 +145,7 @@ public class WorldTimesTable extends UserIDTable {
session.getWorldTimes().setGMTimesForWorld(worldName, gmTimes);
}
} finally {
+ endTransaction(statement);
close(set, statement);
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/systems/listeners/PlanDeathEventListener.java b/Plan/src/main/java/com/djrapitops/plan/systems/listeners/PlanDeathEventListener.java
index 2ada67221..cea4ed5fa 100644
--- a/Plan/src/main/java/com/djrapitops/plan/systems/listeners/PlanDeathEventListener.java
+++ b/Plan/src/main/java/com/djrapitops/plan/systems/listeners/PlanDeathEventListener.java
@@ -1,6 +1,5 @@
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.systems.processing.player.DeathProcessor;
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.projectiles.ProjectileSource;
-import java.util.UUID;
-
/**
* Event Listener for EntityDeathEvents.
*
@@ -59,9 +56,6 @@ public class PlanDeathEventListener implements Listener {
EntityDamageByEntityEvent entityDamageByEntityEvent = (EntityDamageByEntityEvent) entityDamageEvent;
Entity killerEntity = entityDamageByEntityEvent.getDamager();
- UUID killerUUID = null;
- String weapon = null;
-
if (killerEntity instanceof Player) {
Player killer = (Player) killerEntity;
Material itemInHand;
@@ -75,32 +69,38 @@ public class PlanDeathEventListener implements Listener {
}
}
- killerUUID = killer.getUniqueId();
- weapon = normalizeMaterialName(itemInHand);
- } else if (killerEntity instanceof Wolf) {
+ plugin.addToProcessQueue(new KillProcessor(killer.getUniqueId(), time, dead, normalizeMaterialName(itemInHand)));
+ return;
+ }
+
+ if (killerEntity instanceof Wolf) {
Wolf wolf = (Wolf) killerEntity;
+
if (!wolf.isTamed()) {
return;
}
AnimalTamer owner = wolf.getOwner();
- if (owner instanceof Player) {
- killerUUID = owner.getUniqueId();
- weapon = "Wolf";
- }
- } else if (killerEntity instanceof Arrow) {
- Arrow arrow = (Arrow) killerEntity;
- ProjectileSource source = arrow.getShooter();
- if (source instanceof Player) {
- Player player = (Player) source;
- killerUUID = player.getUniqueId();
- weapon = "Bow";
+ if (!(owner instanceof Player)) {
+ return;
}
+
+ plugin.addToProcessQueue(new KillProcessor(owner.getUniqueId(), time, dead, "Wolf"));
}
- if (Verify.notNull(killerUUID, weapon)) {
- plugin.addToProcessQueue(new KillProcessor(killerUUID, time, dead, weapon));
+ if (killerEntity instanceof Arrow) {
+ Arrow arrow = (Arrow) killerEntity;
+
+ ProjectileSource source = arrow.getShooter();
+
+ if (!(source instanceof Player)) {
+ return;
+ }
+
+ Player player = (Player) source;
+
+ plugin.addToProcessQueue(new KillProcessor(player.getUniqueId(), time, dead, "Bow"));
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/systems/queue/ProcessingQueue.java b/Plan/src/main/java/com/djrapitops/plan/systems/queue/ProcessingQueue.java
index fea99393c..417a1aead 100644
--- a/Plan/src/main/java/com/djrapitops/plan/systems/queue/ProcessingQueue.java
+++ b/Plan/src/main/java/com/djrapitops/plan/systems/queue/ProcessingQueue.java
@@ -30,7 +30,9 @@ public class ProcessingQueue extends Queue {
* @param processor processing object.
*/
public void addToQueue(Processor processor) {
- queue.offer(processor);
+ if (!queue.offer(processor)) {
+ Log.toLog("ProcessingQueue.addToQueue", new IllegalStateException("Processor was not added to Queue"));
+ }
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/systems/webserver/WebServer.java b/Plan/src/main/java/com/djrapitops/plan/systems/webserver/WebServer.java
index 4cc4f0cac..0d30276b2 100644
--- a/Plan/src/main/java/com/djrapitops/plan/systems/webserver/WebServer.java
+++ b/Plan/src/main/java/com/djrapitops/plan/systems/webserver/WebServer.java
@@ -312,7 +312,7 @@ public class WebServer {
Plan plan = Plan.getInstance();
- if (!checkKey(plan, key)) {
+ if (!checkKey(key)) {
String error = "Server Key not given or invalid";
return PageCacheHandler.loadPage(error, () -> {
ForbiddenResponse forbidden = new ForbiddenResponse();
@@ -336,8 +336,8 @@ public class WebServer {
}
}
- private boolean checkKey(Plan plan, String key) {
- UUID uuid = plan.getServerInfoManager().getServerUUID();
+ private boolean checkKey(String key) {
+ UUID uuid = Plan.getServerUUID();
UUID keyUUID;
try {
keyUUID = UUID.fromString(key);
@@ -544,7 +544,7 @@ public class WebServer {
return usingHttps ? "https" : "http";
}
- public boolean usingHttps() {
+ public boolean isUsingHTTPS() {
return usingHttps;
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/NewPlayerCreator.java b/Plan/src/main/java/com/djrapitops/plan/utilities/NewPlayerCreator.java
index 03d8a991b..e341cdc15 100644
--- a/Plan/src/main/java/com/djrapitops/plan/utilities/NewPlayerCreator.java
+++ b/Plan/src/main/java/com/djrapitops/plan/utilities/NewPlayerCreator.java
@@ -7,6 +7,7 @@ import main.java.com.djrapitops.plan.data.UserInfo;
/**
* @author Rsl1122
+ * @deprecated Will be removed once it's sure that it's unnecessary
*/
@Deprecated // TODO Remove once sure that this is unnecessary.
public class NewPlayerCreator {
diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/file/dump/DumpUtils.java b/Plan/src/main/java/com/djrapitops/plan/utilities/file/dump/DumpUtils.java
index 88dc6b5ee..2c542cafc 100644
--- a/Plan/src/main/java/com/djrapitops/plan/utilities/file/dump/DumpUtils.java
+++ b/Plan/src/main/java/com/djrapitops/plan/utilities/file/dump/DumpUtils.java
@@ -198,7 +198,7 @@ public class DumpUtils {
* @param plan The Plan instance
*/
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 usingAlternativeServerIP = Settings.SHOW_ALTERNATIVE_IP.isTrue();
diff --git a/Plan/test/test/java/main/java/com/djrapitops/plan/data/cache/queue/QueueTest.java b/Plan/test/test/java/main/java/com/djrapitops/plan/data/cache/queue/QueueTest.java
index 225f7f3fa..190c01872 100644
--- a/Plan/test/test/java/main/java/com/djrapitops/plan/data/cache/queue/QueueTest.java
+++ b/Plan/test/test/java/main/java/com/djrapitops/plan/data/cache/queue/QueueTest.java
@@ -44,11 +44,7 @@ public class QueueTest {
public void setUp() throws Exception {
TestInit t = TestInit.init();
Plan plan = t.getPlanMock();
- db = new SQLiteDB(plan, "debug" + MiscUtils.getTime()) {
- @Override
- public void startConnectionPingTask() {
- }
- };
+ db = new SQLiteDB(plan, "debug" + MiscUtils.getTime());
db.init();
when(plan.getDB()).thenReturn(db);
dataCache = new DataCache(plan) {
diff --git a/Plan/test/test/java/main/java/com/djrapitops/plan/data/time/WorldTimesTest.java b/Plan/test/test/java/main/java/com/djrapitops/plan/data/time/WorldTimesTest.java
index abdcb4ace..d1b0859a0 100644
--- a/Plan/test/test/java/main/java/com/djrapitops/plan/data/time/WorldTimesTest.java
+++ b/Plan/test/test/java/main/java/com/djrapitops/plan/data/time/WorldTimesTest.java
@@ -29,14 +29,12 @@ public class WorldTimesTest {
public void setUp() throws Exception {
test = new WorldTimes(worldOne, gms[0]);
time = test.getGMTimes(worldOne).getLastStateChange();
- System.out.println(test);
}
@Test
public void testWorldChange() {
long changeTime = time + 1000L;
test.updateState(worldTwo, gms[0], changeTime);
- System.out.println(test);
assertEquals(1000L, (long) test.getWorldPlaytime(worldOne));
assertEquals(1000L, test.getGMTimes(worldOne).getTime(gms[0]));
}
@@ -45,7 +43,6 @@ public class WorldTimesTest {
public void testGMChange() {
long changeTime = time + 1000L;
test.updateState(worldOne, gms[0], changeTime);
- System.out.println(test);
assertEquals(1000L, (long) test.getWorldPlaytime(worldOne));
assertEquals(1000L, test.getGMTimes(worldOne).getTime(gms[0]));
}
@@ -55,11 +52,9 @@ public class WorldTimesTest {
long changeTime = time + 1000L;
long changeTime2 = changeTime + 1000L;
test.updateState(worldTwo, gms[2], changeTime);
- System.out.println(test);
assertEquals(1000L, (long) test.getWorldPlaytime(worldOne));
assertEquals(1000L, test.getGMTimes(worldOne).getTime(gms[0]));
test.updateState(worldOne, gms[1], changeTime2);
- System.out.println(test);
assertEquals(1000L, (long) test.getWorldPlaytime(worldOne));
assertEquals(1000L, test.getGMTimes(worldOne).getTime(gms[0]));
assertEquals(1000L, test.getGMTimes(worldTwo).getTime(gms[2]));
@@ -98,7 +93,6 @@ public class WorldTimesTest {
long time1 = test.getWorldPlaytime(worldOne);
long time2 = test.getWorldPlaytime(worldTwo);
- System.out.println(test);
// Tests World time calculation.
assertEquals(amount * 50, time1 + time2);
@@ -156,13 +150,10 @@ public class WorldTimesTest {
// No change should occur.
test.updateState(worldOne, "ADVENTURE", time + 5000L);
- System.out.println(test);
assertEquals(1000L, worldOneGMTimes.getTime("ADVENTURE"));
assertEquals(1000L, worldTwoGMTimes.getTime("CREATIVE"));
test.updateState(worldTwo, "CREATIVE", time + 5000L);
- System.out.println(test);
test.updateState(worldOne, "ADVENTURE", time + 6000L);
- System.out.println(test);
assertEquals(1000L, worldOneGMTimes.getTime("ADVENTURE"));
assertEquals(2000L, worldTwoGMTimes.getTime("CREATIVE"));
diff --git a/Plan/test/test/java/main/java/com/djrapitops/plan/database/DatabaseCommitTest.java b/Plan/test/test/java/main/java/com/djrapitops/plan/database/DatabaseCommitTest.java
index 0e03e21b1..a4f31f97c 100644
--- a/Plan/test/test/java/main/java/com/djrapitops/plan/database/DatabaseCommitTest.java
+++ b/Plan/test/test/java/main/java/com/djrapitops/plan/database/DatabaseCommitTest.java
@@ -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.data.TPS;
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.utilities.MiscUtils;
import main.java.com.djrapitops.plan.utilities.PassEncryptUtil;
@@ -34,21 +33,18 @@ import static org.junit.Assert.assertTrue;
public class DatabaseCommitTest {
private Plan plan;
- private Database db;
+ private SQLiteDB db;
private int rows;
@Before
public void setUp() throws Exception {
TestInit t = TestInit.init();
plan = t.getPlanMock();
- db = new SQLiteDB(plan, "debug" + MiscUtils.getTime()) {
- @Override
- public void startConnectionPingTask() {
-
- }
- };
+ db = new SQLiteDB(plan, "debug" + MiscUtils.getTime());
File f = new File(plan.getDataFolder(), "Errors.txt");
rows = FileUtil.lines(f).size();
+
+ db.init();
}
/**
@@ -72,9 +68,10 @@ public class DatabaseCommitTest {
@Test
public void testNoExceptionWhenCommitEmpty() throws SQLException {
db.init();
- db.commit();
- db.commit();
- db.commit();
+
+ db.commit(db.getConnection());
+ db.commit(db.getConnection());
+ db.commit(db.getConnection());
}
@Ignore("//TODO")
diff --git a/Plan/test/test/java/main/java/com/djrapitops/plan/database/DatabaseTest.java b/Plan/test/test/java/main/java/com/djrapitops/plan/database/DatabaseTest.java
index 1a088f93e..3a63744f9 100644
--- a/Plan/test/test/java/main/java/com/djrapitops/plan/database/DatabaseTest.java
+++ b/Plan/test/test/java/main/java/com/djrapitops/plan/database/DatabaseTest.java
@@ -68,6 +68,8 @@ public class DatabaseTest {
db.getServerTable().saveCurrentServerInfo(new ServerInfo(-1, t.getServerUUID(), "ServerName", ""));
File f = new File(plan.getDataFolder(), "Errors.txt");
rows = FileUtil.lines(f).size();
+
+ db.init();
}
@After
@@ -105,22 +107,12 @@ public class DatabaseTest {
@Test
public void testMysqlGetConfigName() {
- assertEquals("mysql", new MySQLDB(plan) {
- @Override
- public void startConnectionPingTask() {
-
- }
- }.getConfigName());
+ assertEquals("mysql", new MySQLDB(plan).getConfigName());
}
@Test
public void testMysqlGetName() {
- assertEquals("MySQL", new MySQLDB(plan) {
- @Override
- public void startConnectionPingTask() {
-
- }
- }.getName());
+ assertEquals("MySQL", new MySQLDB(plan).getName());
}
@Test
@@ -176,7 +168,6 @@ public class DatabaseTest {
public void testTPSSaving() throws SQLException {
db.init();
TPSTable tpsTable = db.getTpsTable();
- List expected = new ArrayList<>();
Random r = new Random();
OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
@@ -187,6 +178,8 @@ public class DatabaseTest {
final int entityCount = 6123;
final int chunksLoaded = 2134;
+ List 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));
diff --git a/Plan/test/test/java/utils/DBTestSuite.java b/Plan/test/test/java/utils/DBTestSuite.java
new file mode 100644
index 000000000..a8fc5e31e
--- /dev/null
+++ b/Plan/test/test/java/utils/DBTestSuite.java
@@ -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();
+ }
+ }
+}
diff --git a/Plan/test/test/java/utils/TestInit.java b/Plan/test/test/java/utils/TestInit.java
index c3e1cfb65..0b8ea70da 100644
--- a/Plan/test/test/java/utils/TestInit.java
+++ b/Plan/test/test/java/utils/TestInit.java
@@ -63,17 +63,11 @@ public class TestInit {
public static TestInit init() throws Exception {
TestInit t = new TestInit();
- t.setUp(true);
+ t.setUp();
return t;
}
- public static TestInit init(boolean clearOnStart) throws Exception {
- TestInit t = new TestInit();
- t.setUp(clearOnStart);
- return t;
- }
-
- private void setUp(boolean clearOnStart) throws Exception {
+ private void setUp() throws Exception {
planMock = PowerMockito.mock(Plan.class);
StaticHolder.setInstance(Plan.class, planMock);
StaticHolder.setInstance(planMock.getClass(), planMock);
@@ -82,9 +76,6 @@ public class TestInit {
when(planMock.getConfig()).thenReturn(config);
File testFolder = getTestFolder();
- if (clearOnStart) {
- clean(testFolder);
- }
when(planMock.getDataFolder()).thenReturn(testFolder);
// Html Files
@@ -123,7 +114,7 @@ public class TestInit {
}
private RunnableFactory mockRunnableFactory() {
- RunnableFactory runnableFactory = new RunnableFactory(planMock) {
+ return new RunnableFactory(planMock) {
@Override
public IRunnable createNew(String name, final AbsRunnable runnable) {
return new IRunnable() {
@@ -174,27 +165,14 @@ public class TestInit {
};
}
};
- return runnableFactory;
}
- private static File getTestFolder() {
+ static File getTestFolder() {
File testFolder = new File("temporaryTestFolder");
testFolder.mkdir();
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() {
Server mockServer = PowerMockito.mock(Server.class);