From dc48d467f5526d6d403eb181416bfea10d15835c Mon Sep 17 00:00:00 2001 From: bm01 Date: Sun, 24 Jun 2012 22:46:45 +0200 Subject: [PATCH] Return to HashMap! --- src/main/java/com/gmail/nossr50/mcMMO.java | 2 +- .../gmail/nossr50/runnables/SQLReconnect.java | 2 +- .../gmail/nossr50/runnables/SaveTimer.java | 2 +- .../java/com/gmail/nossr50/util/Users.java | 38 +++++++------------ 4 files changed, 16 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/gmail/nossr50/mcMMO.java b/src/main/java/com/gmail/nossr50/mcMMO.java index 2d616757e..7c7951ec6 100644 --- a/src/main/java/com/gmail/nossr50/mcMMO.java +++ b/src/main/java/com/gmail/nossr50/mcMMO.java @@ -285,7 +285,7 @@ public class mcMMO extends JavaPlugin { @Override public void onDisable() { //Make sure to save player information if the server shuts down - for (PlayerProfile playerProfile : Users.getProfiles()) { + for (PlayerProfile playerProfile : Users.getProfiles().values()) { playerProfile.save(); } diff --git a/src/main/java/com/gmail/nossr50/runnables/SQLReconnect.java b/src/main/java/com/gmail/nossr50/runnables/SQLReconnect.java index 574d92dc0..fd8f76b5b 100644 --- a/src/main/java/com/gmail/nossr50/runnables/SQLReconnect.java +++ b/src/main/java/com/gmail/nossr50/runnables/SQLReconnect.java @@ -19,7 +19,7 @@ public class SQLReconnect implements Runnable { if (!Database.isConnected()) { Database.connect(); if (Database.isConnected()) { - for (PlayerProfile playerProfile : Users.getProfiles()) { + for (PlayerProfile playerProfile : Users.getProfiles().values()) { playerProfile.save(); //Save all profiles } diff --git a/src/main/java/com/gmail/nossr50/runnables/SaveTimer.java b/src/main/java/com/gmail/nossr50/runnables/SaveTimer.java index 34260c265..1e07d71bb 100644 --- a/src/main/java/com/gmail/nossr50/runnables/SaveTimer.java +++ b/src/main/java/com/gmail/nossr50/runnables/SaveTimer.java @@ -20,7 +20,7 @@ public class SaveTimer implements Runnable { int count = 1; BukkitScheduler bukkitScheduler = plugin.getServer().getScheduler(); - for (PlayerProfile playerProfile : Users.getProfiles()) { + for (PlayerProfile playerProfile : Users.getProfiles().values()) { bukkitScheduler.scheduleSyncDelayedTask(plugin, new ProfileSaveTask(playerProfile), count); count++; } diff --git a/src/main/java/com/gmail/nossr50/util/Users.java b/src/main/java/com/gmail/nossr50/util/Users.java index 852b61976..8974f4066 100644 --- a/src/main/java/com/gmail/nossr50/util/Users.java +++ b/src/main/java/com/gmail/nossr50/util/Users.java @@ -3,9 +3,8 @@ package com.gmail.nossr50.util; import java.io.File; import java.io.FileWriter; import java.io.IOException; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; +import java.util.HashMap; +import java.util.Map; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; @@ -14,7 +13,7 @@ import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.datatypes.PlayerProfile; public class Users { - private static List profiles = new ArrayList(); + private static Map profiles = new HashMap(); /** * Load users. @@ -44,21 +43,18 @@ public class Users { */ public static PlayerProfile addUser(Player player) { String playerName = player.getName(); + PlayerProfile playerProfile = profiles.get(playerName); - for (Iterator it = profiles.iterator() ; it.hasNext() ; ) { - PlayerProfile playerProfile = it.next(); + if (playerProfile != null) { + //The player object is different on each reconnection and must be updated + playerProfile.setPlayer(player); + } + else { + playerProfile = new PlayerProfile(player, playerName, true); - if (playerProfile.getPlayerName().equals(playerName)) { - //The player object is different on each reconnection and must be updated - playerProfile.setPlayer(player); - return playerProfile; - } + profiles.put(playerName, playerProfile); } - //New player, or already removed from the list - PlayerProfile playerProfile = new PlayerProfile(player, playerName, true); - - profiles.add(playerProfile); return playerProfile; } @@ -74,7 +70,7 @@ public class Users { * * @return a HashMap containing the PlayerProfile of everyone in the database */ - public static List getProfiles() { + public static Map getProfiles() { return profiles; } @@ -95,14 +91,6 @@ public class Users { * @return the player's profile */ public static PlayerProfile getProfile(String playerName) { - for (Iterator it = profiles.iterator() ; it.hasNext() ; ) { - PlayerProfile playerProfile = it.next(); - - if (playerProfile.getPlayerName().equals(playerName)) { - return playerProfile; - } - } - - return null; + return profiles.get(playerName); } }