summaryrefslogtreecommitdiffstats
path: root/EssentialsXMPP/src/net/ess3/xmpp/UserManager.java
diff options
context:
space:
mode:
authorementalo <ementalodev@gmx.co.uk>2012-06-27 13:35:39 +0100
committerementalo <ementalodev@gmx.co.uk>2012-06-27 13:35:39 +0100
commit16d0b5c228dd8d981a0d79944c70248ea813d63b (patch)
treeb76e6966bfc2b4b9b668b89b13e30307e0b81988 /EssentialsXMPP/src/net/ess3/xmpp/UserManager.java
parentc1230bd6ae4e17539e1f6f2c82691fa7a8395e8c (diff)
downloadEssentials-16d0b5c228dd8d981a0d79944c70248ea813d63b.tar
Essentials-16d0b5c228dd8d981a0d79944c70248ea813d63b.tar.gz
Essentials-16d0b5c228dd8d981a0d79944c70248ea813d63b.tar.lz
Essentials-16d0b5c228dd8d981a0d79944c70248ea813d63b.tar.xz
Essentials-16d0b5c228dd8d981a0d79944c70248ea813d63b.zip
package name change to net.ess3
Diffstat (limited to 'EssentialsXMPP/src/net/ess3/xmpp/UserManager.java')
-rw-r--r--EssentialsXMPP/src/net/ess3/xmpp/UserManager.java100
1 files changed, 100 insertions, 0 deletions
diff --git a/EssentialsXMPP/src/net/ess3/xmpp/UserManager.java b/EssentialsXMPP/src/net/ess3/xmpp/UserManager.java
new file mode 100644
index 000000000..a2018c006
--- /dev/null
+++ b/EssentialsXMPP/src/net/ess3/xmpp/UserManager.java
@@ -0,0 +1,100 @@
+package net.ess3.xmpp;
+
+import net.ess3.api.IReload;
+import java.io.File;
+import java.io.IOException;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.bukkit.configuration.file.YamlConfiguration;
+
+
+public class UserManager implements IReload
+{
+ private transient YamlConfiguration users;
+ private final transient File folder;
+ private final transient List<String> spyusers = new ArrayList<String>();
+ private final static String ADDRESS = "address";
+ private final static String SPY = "spy";
+
+ public UserManager(final File folder)
+ {
+ this.folder = folder;
+ onReload();
+ }
+
+ public final boolean isSpy(final String username)
+ {
+ return users.getBoolean(username.toLowerCase(Locale.ENGLISH) + "." + SPY, false);
+ }
+
+ public void setSpy(final String username, final boolean spy)
+ {
+ setUser(username.toLowerCase(Locale.ENGLISH), getAddress(username), spy);
+ }
+
+ public final String getAddress(final String username)
+ {
+ return users.getString(username.toLowerCase(Locale.ENGLISH) + "." + ADDRESS, null);
+ }
+
+ public final String getUserByAddress(final String search)
+ {
+ final Set<String> usernames = users.getKeys(false);
+ for (String username : usernames)
+ {
+ final String address = users.getString(username + "." + ADDRESS, null);
+ if (address != null && search.equalsIgnoreCase(address))
+ {
+ return username;
+ }
+ }
+ return null;
+ }
+
+ public void setAddress(final String username, final String address)
+ {
+ setUser(username.toLowerCase(Locale.ENGLISH), address, isSpy(username));
+ }
+
+ public List<String> getSpyUsers()
+ {
+ return spyusers;
+ }
+
+ private void setUser(final String username, final String address, final boolean spy)
+ {
+ final Map<String, Object> userdata = new HashMap<String, Object>();
+ userdata.put(ADDRESS, address);
+ userdata.put(SPY, spy);
+ users.set(username, userdata);
+ try
+ {
+ users.save(new File(folder, "users.yml"));
+ }
+ catch (IOException ex)
+ {
+ Logger.getLogger(UserManager.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ onReload();
+ }
+
+ @Override
+ public final void onReload()
+ {
+ users = YamlConfiguration.loadConfiguration(new File(folder, "users.yml"));
+ spyusers.clear();
+ final Set<String> keys = users.getKeys(false);
+ for (String key : keys)
+ {
+ if (isSpy(key))
+ {
+ final String address = getAddress(key);
+ if (address != null)
+ {
+ spyusers.add(address);
+ }
+ }
+ }
+ }
+}