package com.alecgorge.minecraft.jsonapi.config; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.bukkit.plugin.Plugin; import com.alecgorge.minecraft.jsonapi.JSONAPI; import com.alecgorge.minecraft.jsonapi.permissions.JSONAPIUser; public class UsersConfig extends Config { static UsersConfig config = null; public UsersConfig(Plugin plugin) { if(config == null) { config = this; } CONFIG_FILE = new File(plugin.getDataFolder(), "users.yml"); CONFIG_HEADER = "JSONAPI v4 users file"; } public static UsersConfig config() { if(config == null) { new UsersConfig(JSONAPI.instance); } return config; } public List<Map<String, Object>> users = new ArrayList<Map<String, Object>>(); private Map<String, JSONAPIUser> juserCache = new HashMap<String, JSONAPIUser>(); public List<Map<String, Object>> getUsers() { return users; } public boolean userExists(String username) { return getUser(username) != null; } @SuppressWarnings("unchecked") public void generateCache(boolean force) { if(force || juserCache.size() != users.size()) { juserCache.clear(); for(Map<String, Object> o : getUsers()) { boolean logging = true; if(o.containsKey("logging")) logging = Boolean.valueOf(o.get("logging").toString()); JSONAPIUser user = new JSONAPIUser(o.get("username").toString(), o.get("password").toString(), (List<String>)o.get("groups"), logging); juserCache.put(o.get("username").toString(), user); } } } public void generateCache() { generateCache(false); } public JSONAPIUser getUser(String username) { generateCache(false); return juserCache.get(username); } public Map<String, JSONAPIUser> getJSONAPIUsers() { generateCache(); return juserCache; } public Map<String, Object> getRawUser(String username) { for(Map<String, Object> u : users) { if(u.get("username").toString() == username) { return u; } } return null; } }