package com.alecgorge.minecraft.jsonapi.config;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.plugin.Plugin;
import com.alecgorge.minecraft.jsonapi.JSONAPI;
import com.alecgorge.minecraft.jsonapi.permissions.JSONAPIGroup;
public class GroupsConfig extends Config {
public GroupsConfig(Plugin plugin) {
CONFIG_FILE = new File(plugin.getDataFolder(), "groups.yml");
CONFIG_HEADER = "JSONAPI v4 users file\nThis file works under the assumption" +
"\nthat the user has access to nothing initially and this file allows" +
"\nyou to give them specific permissions";
}
public static GroupsConfig inst = null;
public static GroupsConfig config() {
if(inst == null) {
inst = new GroupsConfig(JSONAPI.instance);
try {
inst.init();
} catch (InvalidConfigurationException e) {
e.printStackTrace();
}
}
return inst;
}
public List<Map<String, Object>> groups = new ArrayList<Map<String, Object>>();
List<JSONAPIGroupConfigObject> grr = null;
@SuppressWarnings("unchecked")
public List<JSONAPIGroupConfigObject> getGroups() {
if(grr == null) {
grr = new ArrayList<JSONAPIGroupConfigObject>();
for(Map<String, Object> o : groups) {
JSONAPIGroupConfigObject j = new JSONAPIGroupConfigObject();
j.methods = (List<String>)o.get("methods");
j.permissions = (List<String>)o.get("permissions");
j.streams = (List<String>)o.get("streams");
j.name = o.get("name").toString();
grr.add(j);
}
}
return grr;
}
public List<JSONAPIGroup> getJSONAPIGroups() {
List<JSONAPIGroup> arr = new ArrayList<JSONAPIGroup>();
for(JSONAPIGroupConfigObject o : getGroups()) {
arr.add(new JSONAPIGroup(o.name));
}
return arr;
}
public void generateCache() {
grr = null;
}
public JSONAPIGroupConfigObject getGroup(String name) {
for(JSONAPIGroupConfigObject g : getGroups()) {
if(g.getName().equals(name)) {
return g;
}
}
return null;
}
public Map<String, Object> getRawGroup(String name) {
for(Map<String, Object> g : groups) {
if(g.get("name").equals(name)) {
return g;
}
}
return null;
}
}