From 841d6e937d0babf3e661af3b82dd0697e1372861 Mon Sep 17 00:00:00 2001 From: AppleDash Date: Tue, 14 Jun 2016 08:31:52 -0400 Subject: [PATCH] Add in-game command to reload the database and fix /ecoadmin permission. --- build.gradle | 2 +- .../appledash/saneeconomy/SaneEconomy.java | 9 ++-- .../command/type/EconomyAdminCommand.java | 2 +- .../command/type/SaneEcoCommand.java | 41 +++++++++++++++++++ .../saneeconomy/economy/EconomyManager.java | 4 ++ .../backend/EconomyStorageBackend.java | 5 +++ .../type/EconomyStorageBackendFlatfile.java | 4 +- .../type/EconomyStorageBackendMySQL.java | 3 +- src/main/resources/plugin.yml | 7 +++- 9 files changed, 68 insertions(+), 9 deletions(-) create mode 100644 src/main/java/org/appledash/saneeconomy/command/type/SaneEcoCommand.java diff --git a/build.gradle b/build.gradle index e2a7e3d..e839407 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ group 'org.appledash' -version '0.3.0-SNAPSHOT' +version '0.3.1-SNAPSHOT' apply plugin: 'java' diff --git a/src/main/java/org/appledash/saneeconomy/SaneEconomy.java b/src/main/java/org/appledash/saneeconomy/SaneEconomy.java index 29b57ba..389da61 100644 --- a/src/main/java/org/appledash/saneeconomy/SaneEconomy.java +++ b/src/main/java/org/appledash/saneeconomy/SaneEconomy.java @@ -4,6 +4,7 @@ import org.appledash.saneeconomy.command.SaneEconomyCommand; import org.appledash.saneeconomy.command.type.BalanceCommand; import org.appledash.saneeconomy.command.type.EconomyAdminCommand; import org.appledash.saneeconomy.command.type.PayCommand; +import org.appledash.saneeconomy.command.type.SaneEcoCommand; import org.appledash.saneeconomy.economy.Currency; import org.appledash.saneeconomy.economy.EconomyManager; import org.appledash.saneeconomy.economy.backend.EconomyStorageBackend; @@ -29,6 +30,7 @@ public class SaneEconomy extends JavaPlugin { put("balance", new BalanceCommand()); put("ecoadmin", new EconomyAdminCommand()); put("pay", new PayCommand()); + put("saneeconomy", new SaneEcoCommand()); }}; public SaneEconomy() { @@ -99,14 +101,15 @@ public class SaneEconomy extends JavaPlugin { } getLogger().info("Connection successful!"); - getLogger().info("Performing initial data load..."); - mySQLBackend.reloadData(); - getLogger().info("Data loaded!"); } else { getLogger().severe("Unknown storage backend " + backendType + "!"); return false; } + getLogger().info("Performing initial data load..."); + backend.reloadDatabase(); + getLogger().info("Data loaded!"); + economyManager = new EconomyManager(currency, backend); return true; diff --git a/src/main/java/org/appledash/saneeconomy/command/type/EconomyAdminCommand.java b/src/main/java/org/appledash/saneeconomy/command/type/EconomyAdminCommand.java index 41cc951..7c335d7 100644 --- a/src/main/java/org/appledash/saneeconomy/command/type/EconomyAdminCommand.java +++ b/src/main/java/org/appledash/saneeconomy/command/type/EconomyAdminCommand.java @@ -20,7 +20,7 @@ import org.bukkit.entity.Player; public class EconomyAdminCommand extends SaneEconomyCommand { @Override public String getPermission() { - return "saneeconomy.admin"; + return "saneeconomy.ecoadmin"; } @Override diff --git a/src/main/java/org/appledash/saneeconomy/command/type/SaneEcoCommand.java b/src/main/java/org/appledash/saneeconomy/command/type/SaneEcoCommand.java new file mode 100644 index 0000000..bf104e9 --- /dev/null +++ b/src/main/java/org/appledash/saneeconomy/command/type/SaneEcoCommand.java @@ -0,0 +1,41 @@ +package org.appledash.saneeconomy.command.type; + +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; + +/** + * Created by AppleDash on 6/14/2016. + * Blackjack is still best pony. + */ +public class SaneEcoCommand extends SaneEconomyCommand { + @Override + public String getPermission() { + return "saneeconomy.admin"; + } + + @Override + public String[] getUsage() { + return new String[] { + "/ reload-database" + }; + } + + @Override + protected void onCommand(CommandSender sender, String[] args) throws CommandException { + if (args.length != 1) { + throw new InvalidUsageException(); + } + + String subCommand = args[0]; + + if (subCommand.equalsIgnoreCase("reload-database")) { + MessageUtils.sendMessage(sender, "Reloading database..."); + SaneEconomy.getInstance().getEconomyManager().getBackend().reloadDatabase(); + MessageUtils.sendMessage(sender, "Database reloaded."); + } + } +} diff --git a/src/main/java/org/appledash/saneeconomy/economy/EconomyManager.java b/src/main/java/org/appledash/saneeconomy/economy/EconomyManager.java index 0aead64..f4bdc3a 100644 --- a/src/main/java/org/appledash/saneeconomy/economy/EconomyManager.java +++ b/src/main/java/org/appledash/saneeconomy/economy/EconomyManager.java @@ -137,4 +137,8 @@ public class EconomyManager { return true; } + + public EconomyStorageBackend getBackend() { + return backend; + } } diff --git a/src/main/java/org/appledash/saneeconomy/economy/backend/EconomyStorageBackend.java b/src/main/java/org/appledash/saneeconomy/economy/backend/EconomyStorageBackend.java index 3402734..3e51dfd 100644 --- a/src/main/java/org/appledash/saneeconomy/economy/backend/EconomyStorageBackend.java +++ b/src/main/java/org/appledash/saneeconomy/economy/backend/EconomyStorageBackend.java @@ -45,4 +45,9 @@ public interface EconomyStorageBackend { * @return Player's new balance */ double subtractBalance(Player player, double amount); + + /** + * Reload this backend's database from disk. + */ + void reloadDatabase(); } diff --git a/src/main/java/org/appledash/saneeconomy/economy/backend/type/EconomyStorageBackendFlatfile.java b/src/main/java/org/appledash/saneeconomy/economy/backend/type/EconomyStorageBackendFlatfile.java index 127542e..919e022 100644 --- a/src/main/java/org/appledash/saneeconomy/economy/backend/type/EconomyStorageBackendFlatfile.java +++ b/src/main/java/org/appledash/saneeconomy/economy/backend/type/EconomyStorageBackendFlatfile.java @@ -21,10 +21,10 @@ public class EconomyStorageBackendFlatfile implements EconomyStorageBackend { public EconomyStorageBackendFlatfile(File file) { this.file = file; - loadDatabase(); } - private void loadDatabase() { + @Override + public void reloadDatabase() { if (!file.exists()) { return; } diff --git a/src/main/java/org/appledash/saneeconomy/economy/backend/type/EconomyStorageBackendMySQL.java b/src/main/java/org/appledash/saneeconomy/economy/backend/type/EconomyStorageBackendMySQL.java index 240a445..9b29117 100644 --- a/src/main/java/org/appledash/saneeconomy/economy/backend/type/EconomyStorageBackendMySQL.java +++ b/src/main/java/org/appledash/saneeconomy/economy/backend/type/EconomyStorageBackendMySQL.java @@ -61,7 +61,8 @@ public class EconomyStorageBackendMySQL implements EconomyStorageBackend { } } - public void reloadData() { + @Override + public void reloadDatabase() { Connection conn = openConnection(); try { PreparedStatement ps = conn.prepareStatement("SELECT * FROM `player_balances`"); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 6ef8ec8..9b5c627 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: SaneEconomy main: org.appledash.saneeconomy.SaneEconomy -version: 0.3.0 +version: 0.3.1 commands: balance: aliases: [bal] @@ -17,3 +17,8 @@ commands: description: Give some of your money to another player. usage: / permission: saneeconomy.pay + saneeconomy: + aliases: [saneeco] + description: Various admin commands for SaneEconomy. + usage: /command reload-database + pernission: saneeconomy.admin