From d1b302e779a149587c10edc9693081d2368fe580 Mon Sep 17 00:00:00 2001 From: AppleDash Date: Wed, 21 Sep 2016 02:23:38 -0400 Subject: [PATCH] Transaction logging seems to work, kind of. --- .../saneeconomy/economy/EconomyManager.java | 4 ++-- .../economy/logger/TransactionLoggerMySQL.java | 18 +++++++++++++++++- .../utils/SaneEconomyConfiguration.java | 5 +++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/EconomyManager.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/EconomyManager.java index c913e29..d72e90c 100644 --- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/EconomyManager.java +++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/EconomyManager.java @@ -142,9 +142,9 @@ public class EconomyManager { if (saneEconomy.shouldLogTransactions() && reason != TransactionReason.PLAYER_PAY) { // Player pay is handled in the transfer() method. if (oldAmount > amount) { // Lower amount now - saneEconomy.getTransactionLogger().logSubtraction(targetPlayer, amount, reason); + saneEconomy.getTransactionLogger().logSubtraction(targetPlayer, oldAmount - amount, reason); } else if (oldAmount < amount) { // Higher amount now - saneEconomy.getTransactionLogger().logAddition(targetPlayer, amount, reason); + saneEconomy.getTransactionLogger().logAddition(targetPlayer, amount - oldAmount, reason); } } } diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/logger/TransactionLoggerMySQL.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/logger/TransactionLoggerMySQL.java index d754b6f..46a78c7 100644 --- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/logger/TransactionLoggerMySQL.java +++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/logger/TransactionLoggerMySQL.java @@ -5,6 +5,7 @@ import org.appledash.saneeconomy.economy.economable.Economable; import org.appledash.saneeconomy.utils.DatabaseCredentials; import org.appledash.saneeconomy.utils.MySQLConnection; +import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; @@ -41,6 +42,7 @@ public class TransactionLoggerMySQL implements TransactionLogger { ps.setString(1, from); ps.setString(2, to); ps.setDouble(3, change); + ps.executeUpdate(); } catch (SQLException e) { throw new RuntimeException("Error occurred logging addition", e); } @@ -48,6 +50,20 @@ public class TransactionLoggerMySQL implements TransactionLogger { } public boolean testConnection() { - return dbConn.testConnection(); + if (dbConn.testConnection()) { + createTables(); + return true; + } + + return false; + } + + private void createTables() { + try (Connection conn = dbConn.openConnection()) { + PreparedStatement ps = conn.prepareStatement("CREATE TABLE IF NOT EXISTS `transaction_logs` (`source` VARCHAR(128), `destination` VARCHAR(128), `amount` DECIMAL(18, 2))"); + ps.executeUpdate(); + } catch (SQLException e) { + throw new RuntimeException("Failed to create transaction logger tables", e); + } } } diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/utils/SaneEconomyConfiguration.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/utils/SaneEconomyConfiguration.java index 7bee394..19f5e99 100644 --- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/utils/SaneEconomyConfiguration.java +++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/utils/SaneEconomyConfiguration.java @@ -121,6 +121,11 @@ public class SaneEconomyConfiguration { logger.info("Attempting to load transaction logger..."); + if (rootConfig.getConfigurationSection("logger-database") == null) { + logger.severe("No transaction logger database defined, cannot possibly connect!"); + return null; + } + DatabaseCredentials credentials = loadCredentials(rootConfig.getConfigurationSection("logger-database")); TransactionLoggerMySQL transactionLoggerMySQL = new TransactionLoggerMySQL(credentials);