diff --git a/SaneEconomyCore/pom.xml b/SaneEconomyCore/pom.xml
index a84b6c0..86c8d4e 100644
--- a/SaneEconomyCore/pom.xml
+++ b/SaneEconomyCore/pom.xml
@@ -6,10 +6,10 @@
org.appledash
SaneEconomy
- 0.11.0-SNAPSHOT
+ 0.12.0-SNAPSHOT
SaneEconomyCore
- 0.11.0-SNAPSHOT
+ 0.12.0-SNAPSHOT
@@ -18,6 +18,11 @@
4.12
test
+
+ mysql
+ mysql-connector-java
+ 6.0.6
+
@@ -37,6 +42,48 @@
1.8
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.0.0
+
+
+ package
+
+ shade
+
+
+
+
+ org.appledash:sanelib
+ mysql:mysql-connector-java
+ com.zaxxer:HikariCP
+ org.slf4j:slf4j-api
+ org.slf4j:slf4j-nop
+
+
+
+
+ org.appledash.sanelib
+ org.appledash.saneeconomy.shaded.sanelib
+
+
+ com.mysql
+ org.appledash.saneeconomy.shaded.mysql
+
+
+ com.zaxxer.hikari
+ org.appledash.saneeconomy.shaded.hikari
+
+
+ org.slf4j
+ org.appledash.saneeconomy.shaded.slf4j
+
+
+
+
+
+
org.apache.maven.plugins
maven-jar-plugin
diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/SaneEconomy.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/SaneEconomy.java
index 9b09cec..242d1b3 100644
--- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/SaneEconomy.java
+++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/SaneEconomy.java
@@ -3,13 +3,13 @@ package org.appledash.saneeconomy;
import org.appledash.saneeconomy.command.SaneEconomyCommand;
import org.appledash.saneeconomy.command.type.*;
import org.appledash.saneeconomy.economy.EconomyManager;
+import org.appledash.saneeconomy.economy.backend.type.EconomyStorageBackendMySQL;
import org.appledash.saneeconomy.economy.logger.TransactionLogger;
import org.appledash.saneeconomy.listeners.JoinQuitListener;
import org.appledash.saneeconomy.updates.GithubVersionChecker;
-import org.appledash.saneeconomy.utils.I18n;
import org.appledash.saneeconomy.utils.SaneEconomyConfiguration;
import org.appledash.saneeconomy.vault.VaultHook;
-import org.bukkit.plugin.java.JavaPlugin;
+import org.appledash.sanelib.SanePlugin;
import java.io.File;
import java.util.HashMap;
@@ -21,7 +21,7 @@ import java.util.logging.Logger;
* Created by AppleDash on 6/13/2016.
* Blackjack is still best pony.
*/
-public class SaneEconomy extends JavaPlugin implements ISaneEconomy {
+public class SaneEconomy extends SanePlugin implements ISaneEconomy {
private static SaneEconomy instance;
private EconomyManager economyManager;
private VaultHook vaultHook;
@@ -42,6 +42,8 @@ public class SaneEconomy extends JavaPlugin implements ISaneEconomy {
@Override
public void onEnable() {
+ super.onEnable();
+
if (!loadConfig()) { /* Invalid backend type or connection error of some sort */
shutdown();
return;
@@ -64,7 +66,7 @@ public class SaneEconomy extends JavaPlugin implements ISaneEconomy {
getServer().getScheduler().runTaskTimerAsynchronously(this, () -> {
economyManager.getBackend().reloadTopPlayerBalances();
}, 0, (20 * 300) /* Update baltop every 5 minutes */);
- I18n.getInstance().loadTranslations();
+ this.getI18n().loadTranslations();
}
@Override
@@ -77,6 +79,9 @@ public class SaneEconomy extends JavaPlugin implements ISaneEconomy {
if (economyManager != null) {
getLogger().info("Flushing database...");
economyManager.getBackend().waitUntilFlushed();
+ if (economyManager.getBackend() instanceof EconomyStorageBackendMySQL) {
+ ((EconomyStorageBackendMySQL) economyManager.getBackend()).closeConnections();
+ }
}
}
diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/SaneEconomyCommand.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/SaneEconomyCommand.java
index ed2ff81..ab9d7f9 100644
--- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/SaneEconomyCommand.java
+++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/SaneEconomyCommand.java
@@ -4,11 +4,9 @@ import org.appledash.saneeconomy.SaneEconomy;
import org.appledash.saneeconomy.command.exception.CommandException;
import org.appledash.saneeconomy.command.exception.type.NoPermissionException;
import org.appledash.saneeconomy.command.exception.type.usage.UsageException;
-import org.appledash.saneeconomy.utils.MessageUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
-import static org.appledash.saneeconomy.utils.I18n._;
/**
* Created by AppleDash on 6/13/2016.
@@ -33,14 +31,14 @@ public abstract class SaneEconomyCommand implements CommandExecutor {
onCommand(sender, args);
} catch (UsageException e) {
/* Invalid usage in some way, print out exactly what went wrong along with the proper usage. */
- MessageUtils.sendMessage(sender, e.getMessage());
+ this.saneEconomy.getMessenger().sendMessage(sender, e.getMessage());
for (String s : getUsage()) {
- MessageUtils.sendMessage(sender, _("Usage: {1}"), _(s).replace("", label));
+ this.saneEconomy.getMessenger().sendMessage(sender, "Usage: {1}", this.saneEconomy.getI18n().translate(s.replace("", label)));
}
} catch (CommandException e) {
- MessageUtils.sendMessage(sender, e.getMessage());
+ this.saneEconomy.getMessenger().sendMessage(sender, e.getMessage());
}
});
return true;
diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/BalanceCommand.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/BalanceCommand.java
index 5ccaaa1..af3a9c3 100644
--- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/BalanceCommand.java
+++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/BalanceCommand.java
@@ -5,7 +5,6 @@ import org.appledash.saneeconomy.command.SaneEconomyCommand;
import org.appledash.saneeconomy.command.exception.CommandException;
import org.appledash.saneeconomy.command.exception.type.usage.NeedPlayerException;
import org.appledash.saneeconomy.economy.economable.Economable;
-import org.appledash.saneeconomy.utils.MessageUtils;
import org.appledash.saneeconomy.utils.PlayerUtils;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender;
@@ -51,7 +50,7 @@ public class BalanceCommand extends SaneEconomyCommand {
playerName = args[0];
if (!sender.hasPermission("saneeconomy.balance.other")) {
- MessageUtils.sendMessage(sender, "You don't have permission to check the balance of {1}.", playerIdentifier);
+ this.saneEconomy.getMessenger().sendMessage(sender, "You don't have permission to check the balance of {1}.", playerIdentifier);
return;
}
}
@@ -59,14 +58,14 @@ public class BalanceCommand extends SaneEconomyCommand {
OfflinePlayer player = PlayerUtils.getOfflinePlayer(playerIdentifier);
if (player == null) {
- MessageUtils.sendMessage(sender, "That player does not exist.");
+ this.saneEconomy.getMessenger().sendMessage(sender, "That player does not exist.");
return;
}
if (sender == player) {
- MessageUtils.sendMessage(sender, "Your balance is {1}.", saneEconomy.getEconomyManager().getFormattedBalance(Economable.wrap(player)));
+ this.saneEconomy.getMessenger().sendMessage(sender, "Your balance is {1}.", saneEconomy.getEconomyManager().getFormattedBalance(Economable.wrap(player)));
} else {
- MessageUtils.sendMessage(sender, "Balance for {1} is {2}.", playerName, saneEconomy.getEconomyManager().getFormattedBalance(Economable.wrap(player)));
+ this.saneEconomy.getMessenger().sendMessage(sender, "Balance for {1} is {2}.", playerName, saneEconomy.getEconomyManager().getFormattedBalance(Economable.wrap(player)));
}
}
}
diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/BalanceTopCommand.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/BalanceTopCommand.java
index 4875280..54b3957 100644
--- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/BalanceTopCommand.java
+++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/BalanceTopCommand.java
@@ -4,7 +4,6 @@ import org.appledash.saneeconomy.SaneEconomy;
import org.appledash.saneeconomy.command.SaneEconomyCommand;
import org.appledash.saneeconomy.command.exception.CommandException;
import org.appledash.saneeconomy.command.exception.type.usage.TooManyArgumentsException;
-import org.appledash.saneeconomy.utils.MessageUtils;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender;
@@ -46,7 +45,7 @@ public class BalanceTopCommand extends SaneEconomyCommand {
try {
page = Math.abs(Integer.parseInt(args[0]));
} catch (NumberFormatException e) {
- MessageUtils.sendMessage(sender, "{1} is not a valid number.");
+ this.saneEconomy.getMessenger().sendMessage(sender, "{1} is not a valid number.");
return;
}
}
@@ -56,13 +55,13 @@ public class BalanceTopCommand extends SaneEconomyCommand {
Map topBalances = saneEconomy.getEconomyManager().getTopPlayerBalances(nPerPage, offset);
if (topBalances.isEmpty()) {
- MessageUtils.sendMessage(sender, "There aren't enough players to display that page.");
+ this.saneEconomy.getMessenger().sendMessage(sender, "There aren't enough players to display that page.");
return;
}
AtomicInteger index = new AtomicInteger(offset + 1); /* I know it's stupid, but you can't do some_int++ from within the lambda. */
- MessageUtils.sendMessage(sender, "Top {1} players on page {2}:", topBalances.size(), page);
- topBalances.forEach((player, balance) -> MessageUtils.sendMessage(sender, "[{1:02d}] {2} - {3}", index.getAndIncrement(), player.getName(), SaneEconomy.getInstance().getEconomyManager().getCurrency().formatAmount(balance)));
+ this.saneEconomy.getMessenger().sendMessage(sender, "Top {1} players on page {2}:", topBalances.size(), page);
+ topBalances.forEach((player, balance) -> this.saneEconomy.getMessenger().sendMessage(sender, "[{1:02d}] {2} - {3}", index.getAndIncrement(), player.getName(), SaneEconomy.getInstance().getEconomyManager().getCurrency().formatAmount(balance)));
}
}
diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/EconomyAdminCommand.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/EconomyAdminCommand.java
index a09c7c5..9310f3b 100644
--- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/EconomyAdminCommand.java
+++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/EconomyAdminCommand.java
@@ -11,7 +11,6 @@ import org.appledash.saneeconomy.economy.economable.Economable;
import org.appledash.saneeconomy.economy.transaction.Transaction;
import org.appledash.saneeconomy.economy.transaction.TransactionReason;
import org.appledash.saneeconomy.economy.transaction.TransactionResult;
-import org.appledash.saneeconomy.utils.MessageUtils;
import org.appledash.saneeconomy.utils.NumberUtils;
import org.appledash.saneeconomy.utils.PlayerUtils;
import org.bukkit.OfflinePlayer;
@@ -64,7 +63,7 @@ public class EconomyAdminCommand extends SaneEconomyCommand {
OfflinePlayer targetPlayer = PlayerUtils.getOfflinePlayer(sTargetPlayer);
if (targetPlayer == null) {
- MessageUtils.sendMessage(sender, "That player does not exist.");
+ this.saneEconomy.getMessenger().sendMessage(sender, "That player does not exist.");
return;
}
@@ -74,7 +73,7 @@ public class EconomyAdminCommand extends SaneEconomyCommand {
double amount = NumberUtils.parseAndFilter(ecoMan.getCurrency(), sAmount);
if (amount <= 0) {
- MessageUtils.sendMessage(sender, "{1} is not a positive number.", ((amount == -1) ? sAmount : String.valueOf(amount)));
+ this.saneEconomy.getMessenger().sendMessage(sender, "{1} is not a positive number.", ((amount == -1) ? sAmount : String.valueOf(amount)));
return;
}
@@ -84,7 +83,7 @@ public class EconomyAdminCommand extends SaneEconomyCommand {
double newAmount = result.getToBalance();
- MessageUtils.sendMessage(sender, "Added {1} to {2}. Their balance is now {3}.",
+ this.saneEconomy.getMessenger().sendMessage(sender, "Added {1} to {2}. Their balance is now {3}.",
ecoMan.getCurrency().formatAmount(amount),
sTargetPlayer,
ecoMan.getCurrency().formatAmount(newAmount)
@@ -98,7 +97,7 @@ public class EconomyAdminCommand extends SaneEconomyCommand {
double newAmount = result.getFromBalance();
- MessageUtils.sendMessage(sender, "Took {1} from {2}. Their balance is now {3}.",
+ this.saneEconomy.getMessenger().sendMessage(sender, "Took {1} from {2}. Their balance is now {3}.",
ecoMan.getCurrency().formatAmount(amount),
sTargetPlayer,
ecoMan.getCurrency().formatAmount(newAmount)
@@ -109,7 +108,7 @@ public class EconomyAdminCommand extends SaneEconomyCommand {
if (subCommand.equalsIgnoreCase("set")) {
double oldBal = ecoMan.getBalance(economable);
ecoMan.setBalance(economable, amount);
- MessageUtils.sendMessage(sender, "Balance for {1} set to {2}.", sTargetPlayer, ecoMan.getCurrency().formatAmount(amount));
+ this.saneEconomy.getMessenger().sendMessage(sender, "Balance for {1} set to {2}.", sTargetPlayer, ecoMan.getCurrency().formatAmount(amount));
saneEconomy.getTransactionLogger().ifPresent((logger) -> {
// FIXME: This is a silly hack to get it to log.
diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/PayCommand.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/PayCommand.java
index 38206b2..2fb04c3 100644
--- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/PayCommand.java
+++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/PayCommand.java
@@ -9,7 +9,6 @@ import org.appledash.saneeconomy.economy.economable.Economable;
import org.appledash.saneeconomy.economy.transaction.Transaction;
import org.appledash.saneeconomy.economy.transaction.TransactionReason;
import org.appledash.saneeconomy.economy.transaction.TransactionResult;
-import org.appledash.saneeconomy.utils.MessageUtils;
import org.appledash.saneeconomy.utils.NumberUtils;
import org.appledash.saneeconomy.utils.PlayerUtils;
import org.bukkit.OfflinePlayer;
@@ -57,12 +56,12 @@ public class PayCommand extends SaneEconomyCommand {
OfflinePlayer toPlayer = PlayerUtils.getOfflinePlayer(sToPlayer);
if (toPlayer == null) {
- MessageUtils.sendMessage(sender, "That player does not exist or has never played before.");
+ this.saneEconomy.getMessenger().sendMessage(sender, "That player does not exist or has never played before.");
return;
}
if (toPlayer.getUniqueId().equals(fromPlayer.getUniqueId())) {
- MessageUtils.sendMessage(sender, "You cannot pay yourself.");
+ this.saneEconomy.getMessenger().sendMessage(sender, "You cannot pay yourself.");
return;
}
@@ -70,7 +69,7 @@ public class PayCommand extends SaneEconomyCommand {
double amount = NumberUtils.parseAndFilter(ecoMan.getCurrency(), sAmount);
if (amount <= 0) {
- MessageUtils.sendMessage(sender, "{1} is not a positive number.", ((amount == -1) ? sAmount : String.valueOf(amount)));
+ this.saneEconomy.getMessenger().sendMessage(sender, "{1} is not a positive number.", ((amount == -1) ? sAmount : String.valueOf(amount)));
return;
}
@@ -79,7 +78,7 @@ public class PayCommand extends SaneEconomyCommand {
TransactionResult result = ecoMan.transact(transaction);
if (result.getStatus() != TransactionResult.Status.SUCCESS) {
- MessageUtils.sendMessage(sender, "You do not have enough money to transfer {1} to {2}.",
+ this.saneEconomy.getMessenger().sendMessage(sender, "You do not have enough money to transfer {1} to {2}.",
ecoMan.getCurrency().formatAmount(amount),
sToPlayer
);
@@ -89,13 +88,13 @@ public class PayCommand extends SaneEconomyCommand {
/* Inform the relevant parties. */
- MessageUtils.sendMessage(sender, "You have transferred {1} to {2}.",
+ this.saneEconomy.getMessenger().sendMessage(sender, "You have transferred {1} to {2}.",
ecoMan.getCurrency().formatAmount(amount),
sToPlayer
);
if (toPlayer.isOnline()) {
- MessageUtils.sendMessage(((CommandSender) toPlayer), "You have received {1} from {2}.",
+ this.saneEconomy.getMessenger().sendMessage(((CommandSender) toPlayer), "You have received {1} from {2}.",
ecoMan.getCurrency().formatAmount(amount),
fromPlayer.getDisplayName()
);
diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/SaneEcoCommand.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/SaneEcoCommand.java
index 65a707f..505f953 100644
--- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/SaneEcoCommand.java
+++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/command/type/SaneEcoCommand.java
@@ -4,7 +4,6 @@ import org.appledash.saneeconomy.SaneEconomy;
import org.appledash.saneeconomy.command.SaneEconomyCommand;
import org.appledash.saneeconomy.command.exception.CommandException;
import org.appledash.saneeconomy.command.exception.type.usage.InvalidUsageException;
-import org.appledash.saneeconomy.utils.MessageUtils;
import org.bukkit.command.CommandSender;
/**
@@ -37,9 +36,9 @@ public class SaneEcoCommand extends SaneEconomyCommand {
String subCommand = args[0];
if (subCommand.equalsIgnoreCase("reload-database")) {
- MessageUtils.sendMessage(sender, "Reloading database...");
+ this.saneEconomy.getMessenger().sendMessage(sender, "Reloading database...");
saneEconomy.getEconomyManager().getBackend().reloadDatabase();
- MessageUtils.sendMessage(sender, "Database reloaded.");
+ this.saneEconomy.getMessenger().sendMessage(sender, "Database reloaded.");
} else {
throw new InvalidUsageException();
}
diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/Currency.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/Currency.java
index c7c42c2..ccb61ba 100644
--- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/Currency.java
+++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/Currency.java
@@ -1,7 +1,7 @@
package org.appledash.saneeconomy.economy;
import com.google.common.base.Strings;
-import org.appledash.saneeconomy.utils.MessageUtils;
+import org.appledash.sanelib.messages.MessageUtils;
import org.bukkit.configuration.ConfigurationSection;
import java.text.DecimalFormat;
diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/backend/type/EconomyStorageBackendFlatfile.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/backend/type/EconomyStorageBackendFlatfile.java
index c8fefe8..d8c0604 100644
--- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/backend/type/EconomyStorageBackendFlatfile.java
+++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/backend/type/EconomyStorageBackendFlatfile.java
@@ -5,7 +5,6 @@ import org.appledash.saneeconomy.SaneEconomy;
import org.appledash.saneeconomy.economy.economable.Economable;
import java.io.*;
-import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@@ -67,7 +66,7 @@ public class EconomyStorageBackendFlatfile extends EconomyStorageBackendCaching
ois.readInt(); // We already know it's 1.
- Map oldBalances = (HashMap)ois.readObject();
+ Map oldBalances = (Map) ois.readObject();
oldBalances.forEach((uuid, balance) -> balances.put("player:" + uuid, balance));
ois.close();
diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/backend/type/EconomyStorageBackendMySQL.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/backend/type/EconomyStorageBackendMySQL.java
index f59e294..ec6233d 100644
--- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/backend/type/EconomyStorageBackendMySQL.java
+++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/backend/type/EconomyStorageBackendMySQL.java
@@ -1,17 +1,13 @@
package org.appledash.saneeconomy.economy.backend.type;
-import org.appledash.saneeconomy.SaneEconomy;
import org.appledash.saneeconomy.economy.economable.Economable;
-import org.appledash.saneeconomy.utils.database.DatabaseCredentials;
import org.appledash.saneeconomy.utils.database.MySQLConnection;
+import org.appledash.sanelib.database.DatabaseCredentials;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -30,15 +26,12 @@ public class EconomyStorageBackendMySQL extends EconomyStorageBackendCaching {
this.dbConn = new MySQLConnection(dbCredentials);
}
- private void createTables() {
+ private void createTables() {
try (Connection conn = dbConn.openConnection()) {
int schemaVersion;
+
if (!checkTableExists(dbConn.getTable("saneeconomy_schema"))) {
- if (checkTableExists(dbConn.getTable("player_balances"))) {
- schemaVersion = 1;
- } else {
- schemaVersion = 0;
- }
+ schemaVersion = -1;
} else {
PreparedStatement ps = conn.prepareStatement(String.format("SELECT `val` FROM `%s` WHERE `key` = 'schema_version'", dbConn.getTable("saneeconomy_schema")));
ps.executeQuery();
@@ -51,43 +44,21 @@ public class EconomyStorageBackendMySQL extends EconomyStorageBackendCaching {
schemaVersion = Integer.valueOf(rs.getString("val"));
}
- if (schemaVersion < 2) {
- if (schemaVersion < 1) {
- PreparedStatement ps = conn.prepareStatement(String.format("CREATE TABLE IF NOT EXISTS `%s` (player_uuid CHAR(36), balance DECIMAL(18, 2))", dbConn.getTable("player_balances")));
- ps.executeUpdate();
- }
+ if (schemaVersion == -1) {
conn.prepareStatement(String.format("CREATE TABLE IF NOT EXISTS `%s` (`key` VARCHAR(32) PRIMARY KEY, `val` TEXT)", dbConn.getTable("saneeconomy_schema"))).executeUpdate();
- upgradeSchema1To2(conn);
+ conn.prepareStatement(String.format("REPLACE INTO %s (`key`, `val`) VALUES ('schema_version', 2)", dbConn.getTable("saneeconomy_schema")));
+ conn.prepareStatement(String.format("CREATE TABLE `%s` (unique_identifier VARCHAR(128) PRIMARY KEY, balance DECIMAL(18, 2))", dbConn.getTable("saneeconomy_balances"))).executeUpdate();
+ schemaVersion = 2;
+ }
+
+ if (schemaVersion != 2) {
+ throw new RuntimeException("Invalid database schema version!");
}
} catch (SQLException e) {
throw new RuntimeException("Failed to create tables!", e);
}
}
- private void upgradeSchema1To2(Connection conn) throws SQLException {
- SaneEconomy.logger().info("Upgrading database schema from version 1 to version 2. This might take a little while...");
- PreparedStatement ps = conn.prepareStatement(String.format("REPLACE INTO `%s` (`key`, `val`) VALUES ('schema_version', '2')", dbConn.getTable("saneeconomy_schema")));
- ps.executeUpdate();
- conn.prepareStatement(String.format("CREATE TABLE `%s` (unique_identifier VARCHAR(128) PRIMARY KEY, balance DECIMAL(18, 2))", dbConn.getTable("saneeconomy_balances"))).executeUpdate();
- ps = conn.prepareStatement("SELECT * FROM `player_balances`");
- ResultSet rs = ps.executeQuery();
-
- Map oldBalances = new HashMap<>();
-
- while (rs.next()) {
- oldBalances.put(rs.getString("player_uuid"), rs.getDouble("balance"));
- }
-
- for (Entry e : oldBalances.entrySet()) {
- ps = conn.prepareStatement(String.format("INSERT INTO `%s` (unique_identifier, balance) VALUES (?, ?)", dbConn.getTable("saneeconomy_balances")));
- ps.setString(1, "player:" + e.getKey());
- ps.setDouble(2, e.getValue());
- ps.executeUpdate();
- }
- reloadDatabase();
- SaneEconomy.logger().info("Schema upgrade complete!");
- }
-
private boolean checkTableExists(String tableName) {
try (Connection conn = dbConn.openConnection()) {
PreparedStatement ps = conn.prepareStatement("SELECT * FROM information_schema.tables WHERE table_schema = ? AND table_name = ? LIMIT 1");
@@ -104,7 +75,7 @@ public class EconomyStorageBackendMySQL extends EconomyStorageBackendCaching {
@Override
public synchronized void reloadDatabase() {
- waitUntilFlushed();
+ // waitUntilFlushed();
createTables();
try (Connection conn = dbConn.openConnection()) {
PreparedStatement ps = dbConn.prepareStatement(conn, String.format("SELECT * FROM `%s`", dbConn.getTable("saneeconomy_balances")));
@@ -125,7 +96,7 @@ public class EconomyStorageBackendMySQL extends EconomyStorageBackendCaching {
final double oldBalance = getBalance(economable);
balances.put(economable.getUniqueIdentifier(), newBalance);
- dbConn.executeAsyncOperation((conn) -> {
+ dbConn.executeAsyncOperation("set_balance_" + economable.getUniqueIdentifier(), (conn) -> {
try {
ensureAccountExists(economable, conn);
conn.prepareStatement("LOCK TABLE " + dbConn.getTable("saneeconomy_balances") + " WRITE").execute();
@@ -166,4 +137,8 @@ public class EconomyStorageBackendMySQL extends EconomyStorageBackendCaching {
public MySQLConnection getConnection() {
return dbConn;
}
+
+ public void closeConnections() {
+ this.dbConn.getConnection().cleanup();
+ }
}
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 357e386..d07e56c 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
@@ -2,8 +2,8 @@ package org.appledash.saneeconomy.economy.logger;
import org.appledash.saneeconomy.economy.transaction.Transaction;
import org.appledash.saneeconomy.economy.transaction.TransactionReason;
-import org.appledash.saneeconomy.utils.database.DatabaseCredentials;
import org.appledash.saneeconomy.utils.database.MySQLConnection;
+import org.appledash.sanelib.database.DatabaseCredentials;
import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -21,9 +21,9 @@ public class TransactionLoggerMySQL implements TransactionLogger {
}
private void logGeneric(String from, String to, double change, TransactionReason reason) {
- this.dbConn.executeAsyncOperation((conn) -> {
+ this.dbConn.executeAsyncOperation("log_transaction", (conn) -> {
try {
- PreparedStatement ps = conn.prepareStatement(String.format("INSERT INTO `%s` (`source`, `destination`, `amount`, `reason`) VALUES (?, ?, ?, ?)", dbConn.getTable("transaction_logs")));
+ PreparedStatement ps = conn.prepareStatement(String.format("INSERT INTO `%s` (`source`, `destination`, `amount`, `reason`) VALUES (?, ?, ?, ?)", dbConn.getTable("transaction_logs")));
ps.setString(1, from);
ps.setString(2, to);
ps.setDouble(3, change);
diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/listeners/JoinQuitListener.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/listeners/JoinQuitListener.java
index bd85423..39133d6 100644
--- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/listeners/JoinQuitListener.java
+++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/listeners/JoinQuitListener.java
@@ -5,7 +5,6 @@ import org.appledash.saneeconomy.economy.economable.Economable;
import org.appledash.saneeconomy.economy.transaction.Transaction;
import org.appledash.saneeconomy.economy.transaction.TransactionReason;
import org.appledash.saneeconomy.updates.GithubVersionChecker;
-import org.appledash.saneeconomy.utils.MessageUtils;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
@@ -37,13 +36,13 @@ public class JoinQuitListener implements Listener {
Economable.CONSOLE, economable, startBalance, TransactionReason.STARTING_BALANCE
));
if (plugin.getConfig().getBoolean("economy.notify-start-balance", true)) {
- MessageUtils.sendMessage(player, "You've been issued a starting balance of {1}!", plugin.getEconomyManager().getCurrency().formatAmount(startBalance));
+ this.plugin.getMessenger().sendMessage(player, "You've been issued a starting balance of {1}!", plugin.getEconomyManager().getCurrency().formatAmount(startBalance));
}
}
/* Update notification */
if (player.hasPermission("saneeconomy.update-notify") && plugin.getVersionChecker().isUpdateAvailable()) {
- MessageUtils.sendMessage(player, "An update is available! The currently-installed version is {1}, but the newest available is {2}. Please go to {3} to update!", plugin.getDescription().getVersion(), plugin.getVersionChecker().getNewestVersion(), GithubVersionChecker.DOWNLOAD_URL);
+ this.plugin.getMessenger().sendMessage(player, "An update is available! The currently-installed version is {1}, but the newest available is {2}. Please go to {3} to update!", plugin.getDescription().getVersion(), plugin.getVersionChecker().getNewestVersion(), GithubVersionChecker.DOWNLOAD_URL);
}
}
diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/utils/I18n.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/utils/I18n.java
deleted file mode 100644
index 9284dc8..0000000
--- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/utils/I18n.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package org.appledash.saneeconomy.utils;
-
-import com.google.common.collect.ImmutableMap;
-import org.appledash.saneeconomy.SaneEconomy;
-import org.bukkit.ChatColor;
-import org.bukkit.configuration.file.YamlConfiguration;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Created by AppleDash on 8/5/2016.
- * Blackjack is still best pony.
- */
-public class I18n {
- private static final I18n INSTANCE = new I18n(SaneEconomy.getInstance());
- private final SaneEconomy plugin;
- private final Map translations = new HashMap<>();
-
- private I18n(SaneEconomy plugin) {
- this.plugin = plugin;
- }
-
- public void loadTranslations() {
- File configFile = new File(plugin.getDataFolder(), "messages.yml");
- YamlConfiguration configJar = YamlConfiguration.loadConfiguration(new InputStreamReader(this.getClass().getResourceAsStream("/messages.yml")));
-
- if (configFile.exists()) { // Attempt to merge any new keys from the JAR's messages.yml into the copy in the plugin's data folder
- YamlConfiguration configDisk = YamlConfiguration.loadConfiguration(configFile);
-
- List