blob: 98a9ebf31eef971e3f50edf7797bb5f5d345c4b2 [file] [log] [blame] [raw]
package com.platymuus.bukkit.permissions;
import org.bukkit.configuration.ConfigurationSection;
import java.util.*;
/**
* A class representing the global and world nodes attached to a player or group.
*/
public class PermissionInfo {
private final PermissionsPlugin plugin;
private final ConfigurationSection node;
private final String groupType;
protected PermissionInfo(PermissionsPlugin plugin, ConfigurationSection node, String groupType) {
this.plugin = plugin;
this.node = node;
this.groupType = groupType;
}
/**
* Gets the list of groups this group/player inherits permissions from.
* @return The list of groups.
*/
public List<Group> getGroups() {
ArrayList<Group> result = new ArrayList<Group>();
for (String key : node.getStringList(groupType)) {
Group group = plugin.getGroup(key);
if (group != null) {
result.add(group);
}
}
return result;
}
/**
* Gets a map of non-world-specific permission nodes to boolean values that this group/player defines.
* @return The map of permissions.
*/
public Map<String, Boolean> getPermissions() {
return plugin.getAllPerms(node.getName(), node.getName());
}
/**
* Gets a list of worlds this group/player defines world-specific permissions for.
* @return The list of worlds.
*/
public Set<String> getWorlds() {
if (node.getConfigurationSection("worlds") == null) {
return new HashSet<String>();
}
return node.getConfigurationSection("worlds").getKeys(false);
}
/**
* Gets a map of world-specific permission nodes to boolean values that this group/player defines.
* @param world The name of the world.
* @return The map of permissions.
*/
public Map<String, Boolean> getWorldPermissions(String world) {
return plugin.getAllPerms(node.getName() + ":" + world, node.getName() + "/world/" + world);
}
}