From 5ec2307cc964a13c88bbf3ab271c207f0de34eb9 Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 19 Sep 2017 14:51:37 +0100 Subject: [PATCH] Cleanup CustomDataManager --- .../mineplex/core/customdata/CorePlayer.java | 7 +-- .../mineplex/core/customdata/CustomData.java | 10 ++- .../core/customdata/CustomDataManager.java | 24 +++---- .../core/customdata/MineplexPlayer.java | 14 ++--- .../core/customdata/PlayerCustomData.java | 32 ++++------ .../repository/CustomDataRepository.java | 62 ++++++++++--------- .../src/mineplex/clanshub/ClansHub.java | 2 +- .../src/mineplex/hub/HubManager.java | 15 +---- .../mineplex/hub/hubgame/HubGameManager.java | 6 +- ...tbarManager.java => HubPlayerManager.java} | 15 ++++- .../src/nautilus/game/arcade/Arcade.java | 3 +- 11 files changed, 93 insertions(+), 97 deletions(-) rename Plugins/Mineplex.Hub/src/mineplex/hub/player/{HotbarManager.java => HubPlayerManager.java} (79%) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/customdata/CorePlayer.java b/Plugins/Mineplex.Core/src/mineplex/core/customdata/CorePlayer.java index 14aaec660..b8ef68149 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/customdata/CorePlayer.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/customdata/CorePlayer.java @@ -2,13 +2,10 @@ package mineplex.core.customdata; import org.bukkit.entity.Player; -/** - * Created by William (WilliamTiger). - * 17/12/15 - */ public class CorePlayer extends MineplexPlayer { - public CorePlayer(Player player, CustomDataManager customDataManager) + + CorePlayer(Player player, CustomDataManager customDataManager) { super(player, customDataManager); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/customdata/CustomData.java b/Plugins/Mineplex.Core/src/mineplex/core/customdata/CustomData.java index 052965b5c..6a773f9e6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/customdata/CustomData.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/customdata/CustomData.java @@ -1,13 +1,10 @@ package mineplex.core.customdata; -/** - * Created by William (WilliamTiger). - * 16/12/15 - */ public class CustomData { - private int _id; - private String _key; + + private final int _id; + private final String _key; public CustomData(int id, String key) { @@ -24,4 +21,5 @@ public class CustomData { return _key; } + } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/customdata/CustomDataManager.java b/Plugins/Mineplex.Core/src/mineplex/core/customdata/CustomDataManager.java index 84e958429..353b4f76a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/customdata/CustomDataManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/customdata/CustomDataManager.java @@ -8,32 +8,33 @@ import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import mineplex.core.MiniDbClientPlugin; +import mineplex.core.ReflectivelyCreateMiniPlugin; import mineplex.core.account.CoreClientManager; import mineplex.core.customdata.repository.CustomDataRepository; -/** - * Created by William (WilliamTiger). - * 16/12/15 - */ +@ReflectivelyCreateMiniPlugin public class CustomDataManager extends MiniDbClientPlugin { - private CustomDataRepository _repository; - public CustomDataManager(JavaPlugin plugin, CoreClientManager clientManager) + private final CustomDataRepository _repository; + + private CustomDataManager() { - super("Custom Data Manager", plugin, clientManager); + super("Custom Data"); - _repository = new CustomDataRepository(plugin, clientManager, this); + _repository = new CustomDataRepository(ClientManager, this); } @Override public void processLoginResultSet(String playerName, UUID uuid, int accountId, ResultSet resultSet) throws SQLException { PlayerCustomData data = new PlayerCustomData(_repository); + while (resultSet.next()) { data.setData(_repository.getKey(resultSet.getInt("customDataId")), resultSet.getInt("data")); } + Set(uuid, data); } @@ -49,15 +50,16 @@ public class CustomDataManager extends MiniDbClientPlugin return new PlayerCustomData(_repository); } - public void saveAsync(Player player) + void saveAsync(Player player) { final int accountId = getClientManager().getAccountId(player); - final String name = player.getName(); if (accountId == -1) + { return; + } - runAsync(() -> _repository.saveData(name, player.getUniqueId(), accountId)); + runAsync(() -> _repository.saveData(player.getUniqueId(), accountId)); } public CorePlayer getCorePlayer(Player player) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/customdata/MineplexPlayer.java b/Plugins/Mineplex.Core/src/mineplex/core/customdata/MineplexPlayer.java index bf350f843..e8ed94230 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/customdata/MineplexPlayer.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/customdata/MineplexPlayer.java @@ -2,14 +2,11 @@ package mineplex.core.customdata; import org.bukkit.entity.Player; -/** - * Created by William (WilliamTiger). - * 16/12/15 - */ public abstract class MineplexPlayer { - private Player _player; - private CustomDataManager _customDataManager; + + private final Player _player; + private final CustomDataManager _customDataManager; public MineplexPlayer(Player player, CustomDataManager customDataManager) { @@ -31,7 +28,10 @@ public abstract class MineplexPlayer { key = getKeyPrefix() + key; _customDataManager.Get(getPlayer()).setData(key, data); - if (save) _customDataManager.saveAsync(_player); + if (save) + { + _customDataManager.saveAsync(_player); + } } public int get(String key) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/customdata/PlayerCustomData.java b/Plugins/Mineplex.Core/src/mineplex/core/customdata/PlayerCustomData.java index 961d68023..ff9f7c6dc 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/customdata/PlayerCustomData.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/customdata/PlayerCustomData.java @@ -1,25 +1,23 @@ package mineplex.core.customdata; import java.util.HashMap; +import java.util.Map; import mineplex.core.customdata.repository.CustomDataRepository; -/** - * Created by William (WilliamTiger). - * 16/12/15 - */ public class PlayerCustomData { - private HashMap _data; - private CustomDataRepository _repository; - public PlayerCustomData(CustomDataRepository repository) + private final Map _data; + private final CustomDataRepository _repository; + + PlayerCustomData(CustomDataRepository repository) { _data = new HashMap<>(); _repository = repository; } - public HashMap getDataMap() + public Map getDataMap() { return _data; } @@ -37,24 +35,20 @@ public class PlayerCustomData return; } - _repository.getClientManager().getScheduler().runTaskAsynchronously( - _repository.getClientManager().getPlugin(), - new Runnable() - { - @Override - public void run() - { - _repository.registerKey(key); // Make sure it's in the DB. + _repository.getCustomDataManager().runAsync(() -> + { + _repository.registerKey(key); // Make sure it's in the DB. - setData(_repository.getKey(key), amount); // Input - } - }); + setData(_repository.getKey(key), amount); // Input + }); } public int getData(String key) { if (_data.containsKey(_repository.getKey(key))) + { return _data.get(_repository.getKey(key)); + } return -1; } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/customdata/repository/CustomDataRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/customdata/repository/CustomDataRepository.java index 2a0a1d4be..e586e7d6c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/customdata/repository/CustomDataRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/customdata/repository/CustomDataRepository.java @@ -1,46 +1,40 @@ package mineplex.core.customdata.repository; -import java.sql.ResultSet; -import java.sql.SQLException; import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.UUID; -import mineplex.core.database.MinecraftRepository; -import org.bukkit.plugin.java.JavaPlugin; - import mineplex.core.account.CoreClientManager; import mineplex.core.customdata.CustomData; import mineplex.core.customdata.CustomDataManager; import mineplex.core.customdata.PlayerCustomData; import mineplex.serverdata.database.DBPool; import mineplex.serverdata.database.RepositoryBase; -import mineplex.serverdata.database.ResultSetCallable; import mineplex.serverdata.database.column.ColumnInt; import mineplex.serverdata.database.column.ColumnVarChar; -/** - * Created by William (WilliamTiger). - * 16/12/15 - */ public class CustomDataRepository extends RepositoryBase { + private static final String SELECT_KEYS = "SELECT id, name FROM customData;"; private static final String INSERT_KEY = "INSERT INTO customData (name) VALUES (?);"; private static final String UPDATE_DATA = "UPDATE accountCustomData SET data = ? WHERE accountId = ? AND customDataId = ?;"; private static final String INSERT_DATA = "INSERT INTO accountCustomData (accountId, customDataId, data) VALUES (?, ?, ?);"; - private ArrayList _dataKeys; + private final CoreClientManager _clientManager; + private final CustomDataManager _customDataManager; - private CoreClientManager _clientManager; - private CustomDataManager _customDataManager; + private final List _dataKeys; - public CustomDataRepository(JavaPlugin plugin, CoreClientManager clientManager, CustomDataManager customDataManager) + public CustomDataRepository(CoreClientManager clientManager, CustomDataManager customDataManager) { super(DBPool.getAccount()); _clientManager = clientManager; _customDataManager = customDataManager; + + _dataKeys = new ArrayList<>(); } @Override @@ -51,22 +45,18 @@ public class CustomDataRepository extends RepositoryBase private void downloadDataKeys() { - _dataKeys = new ArrayList<>(); - - executeQuery(SELECT_KEYS, new ResultSetCallable() + executeQuery(SELECT_KEYS, resultSet -> { - @Override - public void processResultSet(ResultSet resultSet) throws SQLException + _dataKeys.clear(); + + while (resultSet.next()) { - while (resultSet.next()) - { - _dataKeys.add(new CustomData(resultSet.getInt("id"), resultSet.getString("name"))); - } + _dataKeys.add(new CustomData(resultSet.getInt("id"), resultSet.getString("name"))); } }); } - public void saveData(String name, UUID uuid, int accountId) + public void saveData(UUID uuid, int accountId) { PlayerCustomData data = _customDataManager.Get(uuid); @@ -92,22 +82,23 @@ public class CustomDataRepository extends RepositoryBase public void registerKey(String key) { if (doesKeyExist(key)) + { return; + } executeUpdate(INSERT_KEY, new ColumnVarChar("name", 100, key)); downloadDataKeys(); } - public ArrayList getDataKeys() - { - return _dataKeys; - } - public boolean doesKeyExist(String key) { for (CustomData cur : _dataKeys) + { if (cur.getKey().equals(key)) + { return true; + } + } return false; } @@ -115,8 +106,12 @@ public class CustomDataRepository extends RepositoryBase public CustomData getKey(int id) { for (CustomData cur : _dataKeys) + { if (cur.getId() == id) + { return cur; + } + } return null; } @@ -124,8 +119,12 @@ public class CustomDataRepository extends RepositoryBase public CustomData getKey(String key) { for (CustomData cur : _dataKeys) + { if (cur.getKey().equals(key)) + { return cur; + } + } return null; } @@ -134,4 +133,9 @@ public class CustomDataRepository extends RepositoryBase { return _clientManager; } + + public CustomDataManager getCustomDataManager() + { + return _customDataManager; + } } diff --git a/Plugins/Mineplex.Hub.Clans/src/mineplex/clanshub/ClansHub.java b/Plugins/Mineplex.Hub.Clans/src/mineplex/clanshub/ClansHub.java index 05e5517b7..39f6d223f 100644 --- a/Plugins/Mineplex.Hub.Clans/src/mineplex/clanshub/ClansHub.java +++ b/Plugins/Mineplex.Hub.Clans/src/mineplex/clanshub/ClansHub.java @@ -148,7 +148,7 @@ public class ClansHub extends JavaPlugin PartyManager partyManager = new PartyManager(); - CustomDataManager customDataManager = new CustomDataManager(this, clientManager); + CustomDataManager customDataManager = require(CustomDataManager.class); ConditionManager condition = new ConditionManager(this); ThankManager thankManager = new ThankManager(this, clientManager, donationManager); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index d47544260..1ef9327ed 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -50,7 +50,6 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.communities.CommunityManager; import mineplex.core.cosmetic.CosmeticManager; -import mineplex.core.customdata.CustomDataManager; import mineplex.core.disguise.DisguiseManager; import mineplex.core.disguise.playerdisguise.PlayerDisguiseManager; import mineplex.core.donation.DonationManager; @@ -64,7 +63,6 @@ import mineplex.core.interactions.NewInteractionsManager; import mineplex.core.inventory.InventoryManager; import mineplex.core.menu.MenuManager; import mineplex.core.message.PrivateMessageEvent; -import mineplex.core.treasure.TreasureManager; import mineplex.core.noteblock.MusicManager; import mineplex.core.notifier.NotificationManager; import mineplex.core.npc.NpcManager; @@ -86,6 +84,7 @@ import mineplex.core.scoreboard.TabListSorter; import mineplex.core.stats.StatsManager; import mineplex.core.status.ServerStatusManager; import mineplex.core.thank.ThankManager; +import mineplex.core.treasure.TreasureManager; import mineplex.core.twofactor.TwoFactorAuth; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; @@ -104,8 +103,7 @@ import mineplex.hub.modules.TemporaryGemHuntersServerSender; import mineplex.hub.modules.salesannouncements.SalesAnnouncementManager; import mineplex.hub.news.NewsManager; import mineplex.hub.parkour.ParkourManager; -import mineplex.hub.player.HotbarManager; -import mineplex.hub.player.HubPlayer; +import mineplex.hub.player.HubPlayerManager; import mineplex.hub.scoreboard.HubScoreboard; import mineplex.hub.world.HubWorldManager; import mineplex.hub.world.WorldDataModule; @@ -127,7 +125,6 @@ public class HubManager extends MiniClientPlugin implements IChatMess // ☃❅ Snowman! private final CoreClientManager _clientManager; - private final CustomDataManager _customDataManager; private final DonationManager _donationManager; private final DisguiseManager _disguiseManager; private final PartyManager _partyManager; @@ -151,7 +148,6 @@ public class HubManager extends MiniClientPlugin implements IChatMess super("Hub Manager"); _clientManager = clientManager; - _customDataManager = new CustomDataManager(_plugin, clientManager); _donationManager = donationManager; _disguiseManager = disguiseManager; @@ -233,7 +229,7 @@ public class HubManager extends MiniClientPlugin implements IChatMess require(TwoFactorAuth.class); require(HubGameManager.class); require(ProfileManager.class); - require(HotbarManager.class); + require(HubPlayerManager.class); new HubType(); @@ -480,11 +476,6 @@ public class HubManager extends MiniClientPlugin implements IChatMess return new HubClient(Bukkit.getPlayer(uuid).getName()); } - public HubPlayer getHubPlayer(Player player) - { - return new HubPlayer(player, _customDataManager); - } - public CoreClientManager GetClients() { return _clientManager; diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/HubGameManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/HubGameManager.java index d2fff5af0..42058282f 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/HubGameManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/hubgame/HubGameManager.java @@ -30,7 +30,7 @@ import mineplex.core.updater.event.UpdateEvent; import mineplex.hub.hubgame.CycledGame.GameState; import mineplex.hub.hubgame.event.HubGamePlayerDeathEvent; import mineplex.hub.hubgame.ui.HubGameShop; -import mineplex.hub.player.HotbarManager; +import mineplex.hub.player.HubPlayerManager; import mineplex.hub.world.WorldDataModule; @ReflectivelyCreateMiniPlugin @@ -51,7 +51,7 @@ public class HubGameManager extends MiniPlugin private final DonationManager _donationManager; private final GadgetManager _gadgetManager; private final HologramManager _hologramManager; - private final HotbarManager _hotbarManager; + private final HubPlayerManager _hotbarManager; private final NewNPCManager _npcManager; private final WorldDataModule _worldData; @@ -66,7 +66,7 @@ public class HubGameManager extends MiniPlugin _donationManager = require(DonationManager.class); _gadgetManager = require(GadgetManager.class); _hologramManager = require(HologramManager.class); - _hotbarManager = require(HotbarManager.class); + _hotbarManager = require(HubPlayerManager.class); _npcManager = require(NewNPCManager.class); _worldData = require(WorldDataModule.class); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/player/HotbarManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/player/HubPlayerManager.java similarity index 79% rename from Plugins/Mineplex.Hub/src/mineplex/hub/player/HotbarManager.java rename to Plugins/Mineplex.Hub/src/mineplex/hub/player/HubPlayerManager.java index a5d05d5c2..657e7099e 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/player/HotbarManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/player/HubPlayerManager.java @@ -11,11 +11,13 @@ import mineplex.core.MiniPlugin; import mineplex.core.ReflectivelyCreateMiniPlugin; import mineplex.core.common.util.C; import mineplex.core.cosmetic.CosmeticManager; +import mineplex.core.customdata.CustomDataManager; import mineplex.core.itemstack.ItemBuilder; import mineplex.core.titles.Titles; +import mineplex.hub.HubManager; @ReflectivelyCreateMiniPlugin -public class HotbarManager extends MiniPlugin +public class HubPlayerManager extends MiniPlugin { private static final ItemStack GAME_MENU = new ItemBuilder(Material.COMPASS) @@ -27,17 +29,24 @@ public class HotbarManager extends MiniPlugin .addLore("Click to open the Game Menu.") .build(); + private final CustomDataManager _customDataManager; private final CosmeticManager _cosmeticManager; private final Titles _titles; - private HotbarManager() + private HubPlayerManager() { - super("Hotbar"); + super("Hub Player"); + _customDataManager = require(CustomDataManager.class); _cosmeticManager = require(CosmeticManager.class); _titles = require(Titles.class); } + public HubPlayer getHubPlayer(Player player) + { + return new HubPlayer(player, _customDataManager); + } + @EventHandler public void playerJoin(PlayerJoinEvent event) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java index d812043c0..b361acd2d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java @@ -3,6 +3,7 @@ package nautilus.game.arcade; import java.io.File; import java.util.HashMap; +import mineplex.core.customdata.CustomData; import mineplex.core.imagemap.CustomItemFrames; import net.minecraft.server.v1_8_R3.MinecraftServer; @@ -204,7 +205,7 @@ public class Arcade extends JavaPlugin gadgetManager.setActiveItemSlot(3); cosmeticManager.disableTeamArmor(); - CustomDataManager customDataManager = new CustomDataManager(this, _clientManager); + CustomDataManager customDataManager = require(CustomDataManager.class); //Arcade Manager PollManager pollManager = new PollManager(this, _clientManager, _donationManager);