Update all code formatting to use tabs for indentation.

This commit is contained in:
ElgarL 2012-04-13 14:40:26 +01:00
parent 677534c0b7
commit a028abe036
29 changed files with 3683 additions and 3354 deletions

View file

@ -177,3 +177,4 @@ v 2.0:
- Expand GlobalGroups.yml and groups.yml to cover the VanishNoPacket plugin. Demonstrating how to negate and add nodes when using the '*' permission with inheritance.
- Fix silly nested throw/catch statements. Errors are now correctly generated when reading yml's.
- Unregister the worldsHolder as a service on a reload/shutdown instead of the whole plugin.
- Update all code formatting to use tabs for indentation.

View file

@ -23,11 +23,13 @@ public class GMConfiguration {
private YamlConfiguration GMconfig;
public GMConfiguration(GroupManager plugin) {
this.plugin = plugin;
load();
}
public void load() {
if (!plugin.getDataFolder().exists()) {
plugin.getDataFolder().mkdirs();
}
@ -55,17 +57,21 @@ public class GMConfiguration {
}
public boolean isOpOverride() {
return GMconfig.getBoolean("settings.config.opOverrides", true);
}
public boolean isToggleValidate() {
return GMconfig.getBoolean("settings.config.validate_toggle", true);
}
public Map<String, Object> getMirrorsMap() {
// Try to fetch the old mirror path first
if (GMconfig.isConfigurationSection("settings.permission.world.mirror")) {
return (Map<String, Object>) GMconfig.getConfigurationSection("settings.permission.world.mirror").getValues(false);
} else if (GMconfig.isConfigurationSection("settings.mirrors")){
} else if (GMconfig.isConfigurationSection("settings.mirrors")) {
return (Map<String, Object>) GMconfig.getConfigurationSection("settings.mirrors").getValues(false);
}
return null;
@ -73,10 +79,12 @@ public class GMConfiguration {
}
public Integer getSaveInterval() {
return GMconfig.getInt("settings.data.save.minutes", 10);
}
public Integer getBackupDuration() {
return GMconfig.getInt("settings.data.save.hours", 24);
}

View file

@ -24,8 +24,6 @@ import org.bukkit.configuration.file.YamlConfiguration;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
/**
* @author ElgarL
*
@ -42,6 +40,7 @@ public class GlobalGroups {
protected File GlobalGroupsFile = null;
public GlobalGroups(GroupManager plugin) {
this.plugin = plugin;
load();
}
@ -50,6 +49,7 @@ public class GlobalGroups {
* @return the haveGroupsChanged
*/
public boolean haveGroupsChanged() {
if (this.haveGroupsChanged) {
return true;
}
@ -65,12 +65,15 @@ public class GlobalGroups {
* @return the timeStampGroups
*/
public long getTimeStampGroups() {
return timeStampGroups;
}
/**
* @param timeStampGroups the timeStampGroups to set
*/
protected void setTimeStampGroups(long timeStampGroups) {
this.timeStampGroups = timeStampGroups;
}
@ -79,6 +82,7 @@ public class GlobalGroups {
* the haveGroupsChanged to set
*/
public void setGroupsChanged(boolean haveGroupsChanged) {
this.haveGroupsChanged = haveGroupsChanged;
}
@ -118,7 +122,7 @@ public class GlobalGroups {
try {
allGroups = (Map<String, Object>) GGroups.getConfigurationSection("groups").getValues(false);
} catch (Exception ex) {
//ex.printStackTrace();
// ex.printStackTrace();
throw new IllegalArgumentException("Your " + GlobalGroupsFile.getPath() + " file is invalid. See console for details.", ex);
}
@ -188,7 +192,7 @@ public class GlobalGroups {
setTimeStampGroups(GlobalGroupsFile.lastModified());
GroupManager.setLoaded(true);
//GlobalGroupsFile = null;
// GlobalGroupsFile = null;
}
/**
@ -197,7 +201,7 @@ public class GlobalGroups {
public void writeGroups(boolean overwrite) {
//File GlobalGroupsFile = new File(plugin.getDataFolder(), "globalgroups.yml");
// File GlobalGroupsFile = new File(plugin.getDataFolder(), "globalgroups.yml");
if (haveGroupsChanged()) {
if (overwrite || (!overwrite && (getTimeStampGroups() >= GlobalGroupsFile.lastModified()))) {
@ -242,7 +246,7 @@ public class GlobalGroups {
}
removeGroupsChangedFlag();
} else {
//Check for newer file as no local changes.
// Check for newer file as no local changes.
if (getTimeStampGroups() < GlobalGroupsFile.lastModified()) {
System.out.print("Newer GlobalGroups file found (Loading changes)!");
// Backup GlobalGroups file
@ -255,6 +259,7 @@ public class GlobalGroups {
/**
* Backup the BlobalGroups file
*
* @param w
*/
private void backupFile() {
@ -273,6 +278,7 @@ public class GlobalGroups {
* @param groupToAdd
*/
public void addGroup(Group groupToAdd) {
// Create a new group if it already exists
if (hasGroup(groupToAdd.getName())) {
groupToAdd = groupToAdd.clone();
@ -291,6 +297,7 @@ public class GlobalGroups {
* @param newGroup
*/
public Group newGroup(Group newGroup) {
// Push a new group
if (!groups.containsKey(newGroup.getName().toLowerCase())) {
groups.put(newGroup.getName().toLowerCase(), newGroup);
@ -306,6 +313,7 @@ public class GlobalGroups {
* @param groupName
*/
public boolean removeGroup(String groupName) {
// Push a new group
if (groups.containsKey(groupName.toLowerCase())) {
groups.remove(groupName.toLowerCase());
@ -324,6 +332,7 @@ public class GlobalGroups {
* @return true if the group exists
*/
public boolean hasGroup(String groupName) {
return groups.containsKey(groupName.toLowerCase());
}
@ -379,6 +388,7 @@ public class GlobalGroups {
* @return List of all group names
*/
public List<String> getGroupsPermissions(String groupName) {
if (!hasGroup(groupName))
return null;
@ -391,6 +401,7 @@ public class GlobalGroups {
* @return Set containing all group names.
*/
public Set<String> getGlobalGroups() {
return groups.keySet();
}
@ -398,6 +409,7 @@ public class GlobalGroups {
* Resets GlobalGroups.
*/
public void resetGlobalGroups() {
this.groups = new HashMap<String, Group>();
}
@ -406,6 +418,7 @@ public class GlobalGroups {
* @return a collection of the groups
*/
public Collection<Group> getGroupList() {
return groups.values();
}
@ -416,6 +429,7 @@ public class GlobalGroups {
* @return Group object
*/
public Group getGroup(String groupName) {
if (!hasGroup(groupName))
return null;
@ -427,6 +441,7 @@ public class GlobalGroups {
* @return the globalGroupsFile
*/
public File getGlobalGroupsFile() {
return GlobalGroupsFile;
}
@ -434,6 +449,7 @@ public class GlobalGroups {
*
*/
public void removeGroupsChangedFlag() {
setGroupsChanged(false);
for (Group g : groups.values()) {
g.flagAsSaved();

View file

@ -45,7 +45,6 @@ import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.ServicePriority;
import org.bukkit.plugin.java.JavaPlugin;
@SuppressWarnings("unused")
/**
*
@ -68,6 +67,7 @@ public class GroupManager extends JavaPlugin {
* @return the validateOnlinePlayer
*/
public boolean isValidateOnlinePlayer() {
return validateOnlinePlayer;
}
@ -75,6 +75,7 @@ public class GroupManager extends JavaPlugin {
* @param validateOnlinePlayer the validateOnlinePlayer to set
*/
public void setValidateOnlinePlayer(boolean validateOnlinePlayer) {
this.validateOnlinePlayer = validateOnlinePlayer;
}
@ -95,6 +96,7 @@ public class GroupManager extends JavaPlugin {
@Override
public void onDisable() {
setLoaded(false);
// Un-register this service.
@ -117,14 +119,13 @@ public class GroupManager extends JavaPlugin {
BukkitPermissions = null;
}
// EXAMPLE: Custom code, here we just output some info so we can check that
// all is well
// EXAMPLE: Custom code, here we just output some info so we can check that all is well
PluginDescriptionFile pdfFile = this.getDescription();
System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is disabled!");
GroupManager.logger.removeHandler(ch);
}
//@Override
// @Override
public void onEnable() {
try {
@ -143,7 +144,6 @@ public class GroupManager extends JavaPlugin {
globalGroups = new GlobalGroups(this);
worldsHolder = new WorldsHolder(this);
PluginDescriptionFile pdfFile = this.getDescription();
if (worldsHolder == null) {
GroupManager.logger.severe("Can't enable " + pdfFile.getName() + " version " + pdfFile.getVersion() + ", bad loading!");
@ -154,15 +154,15 @@ public class GroupManager extends JavaPlugin {
// Set a few defaults (reloads)
setLoaded(false);
// Initialize the world listener and bukkit permissions to handle
// events.
// Initialize the world listener and bukkit permissions to handle events.
WorldEvents = new GMWorldListener(this);
BukkitPermissions = new BukkitPermissions(this);
enableScheduler();
/*
* Schedule a Bukiit Permissions update for 1 tick later. All plugins
* Schedule a Bukiit Permissions update for 1 tick later. All
* plugins
* will be loaded by then
*/
@ -185,7 +185,7 @@ public class GroupManager extends JavaPlugin {
/*
* Throw an error so Bukkit knows about it.
*/
throw new IllegalArgumentException(ex.getMessage(),ex);
throw new IllegalArgumentException(ex.getMessage(), ex);
}
}
@ -229,18 +229,22 @@ public class GroupManager extends JavaPlugin {
}
public static boolean isLoaded() {
return isLoaded;
}
public static void setLoaded(boolean isLoaded) {
GroupManager.isLoaded = isLoaded;
}
public InputStream getResourceAsStream(String fileName) {
return this.getClassLoader().getResourceAsStream(fileName);
}
private void prepareFileFields() {
// configFile = new File(this.getDataFolder(), "config.yml");
backupFolder = new File(this.getDataFolder(), "backup");
if (!backupFolder.exists()) {
@ -249,16 +253,19 @@ public class GroupManager extends JavaPlugin {
}
private void prepareConfig() {
config = new GMConfiguration(this);
}
public void enableScheduler() {
if (worldsHolder != null) {
disableScheduler();
commiter = new Runnable() {
@Override
public void run() {
try {
worldsHolder.saveChanges(false);
GroupManager.logger.log(Level.INFO, " Data files refreshed.");
@ -268,7 +275,7 @@ public class GroupManager extends JavaPlugin {
}
};
scheduler = new ScheduledThreadPoolExecutor(1);
long minutes = (long)getGMConfig().getSaveInterval();
long minutes = (long) getGMConfig().getSaveInterval();
if (minutes > 0) {
scheduler.scheduleAtFixedRate(commiter, minutes, minutes, TimeUnit.MINUTES);
GroupManager.logger.info("Scheduled Data Saving is set for every " + minutes + " minutes!");
@ -280,6 +287,7 @@ public class GroupManager extends JavaPlugin {
}
public void disableScheduler() {
if (scheduler != null) {
try {
scheduler.setContinueExistingPeriodicTasksAfterShutdownPolicy(false);
@ -297,6 +305,7 @@ public class GroupManager extends JavaPlugin {
*/
@Deprecated
public void commit() {
if (worldsHolder != null) {
worldsHolder.saveChanges();
}
@ -307,10 +316,12 @@ public class GroupManager extends JavaPlugin {
*/
@Deprecated
public void reload() {
worldsHolder.reloadAll();
}
public WorldsHolder getWorldsHolder() {
return worldsHolder;
}
@ -321,6 +332,7 @@ public class GroupManager extends JavaPlugin {
*/
@Deprecated
public AnjoPermissionsHandler getPermissionHandler() {
return worldsHolder.getDefaultWorld().getPermissionsHandler();
}
@ -332,6 +344,7 @@ public class GroupManager extends JavaPlugin {
*/
@Deprecated
public WorldDataHolder getData() {
return worldsHolder.getDefaultWorld();
}
@ -342,6 +355,7 @@ public class GroupManager extends JavaPlugin {
*/
@Deprecated
public OverloadedWorldHolder getOverloadedClassData() {
return worldsHolder.getDefaultWorld();
}
@ -355,6 +369,7 @@ public class GroupManager extends JavaPlugin {
@SuppressWarnings({ "deprecation" })
@Override
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
boolean playerCanDo = false;
boolean isConsole = false;
Player senderPlayer = null, targetPlayer = null;
@ -362,7 +377,6 @@ public class GroupManager extends JavaPlugin {
User senderUser = null;
boolean isOpOverride = config.isOpOverride();
// DETERMINING PLAYER INFORMATION
if (sender instanceof Player) {
senderPlayer = (Player) sender;
@ -622,8 +636,8 @@ public class GroupManager extends JavaPlugin {
auxUser.removeSubGroup(auxGroup);
sender.sendMessage(ChatColor.YELLOW + "You removed subgroup '" + auxGroup.getName() + "' from player '" + auxUser.getName() + "' list.");
//targetPlayer = this.getServer().getPlayer(auxUser.getName());
//if (targetPlayer != null)
// targetPlayer = this.getServer().getPlayer(auxUser.getName());
// if (targetPlayer != null)
// BukkitPermissions.updatePermissions(targetPlayer);
return true;
@ -881,7 +895,7 @@ public class GroupManager extends JavaPlugin {
permissionResult = permissionHandler.checkFullGMPermission(auxUser, args[1], false);
if (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND)) {
//No permissions found in GM so fall through and check Bukkit.
// No permissions found in GM so fall through and check Bukkit.
sender.sendMessage(ChatColor.RED + "The player doesn't have access to that permission");
} else {
@ -1078,8 +1092,7 @@ public class GroupManager extends JavaPlugin {
return false;
}
// Seems OK
// auxString =
// permissionHandler.checkUserOnlyPermission(auxUser, args[1]);
// auxString = permissionHandler.checkUserOnlyPermission(auxUser, args[1]);
if (permissionResult.owner instanceof Group) {
if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) {
sender.sendMessage(ChatColor.RED + "The group inherits the a negation permission from group: " + permissionResult.owner.getName());
@ -1300,7 +1313,8 @@ public class GroupManager extends JavaPlugin {
if (!auxUser.isSubGroupsEmpty() && auxGroup2 == null)
for (Group subGroup : auxUser.subGroupListCopy()) {
auxGroup2 = permissionHandler.nextGroupWithVariable(subGroup, args[1]);
if (auxGroup2 != null) continue;
if (auxGroup2 != null)
continue;
}
if (auxGroup2 == null) {
sender.sendMessage(ChatColor.RED + "The user doesn't have access to that variable!");
@ -1974,7 +1988,7 @@ public class GroupManager extends JavaPlugin {
if (Arrays.asList(this.getServer().getOfflinePlayers()).contains(Bukkit.getOfflinePlayer(playerName))) {
match.add(playerName);
} else {
//look for partial matches
// look for partial matches
for (OfflinePlayer offline : this.getServer().getOfflinePlayers()) {
if (offline.getName().toLowerCase().startsWith(playerName.toLowerCase()))
match.add(offline.getName());
@ -2003,6 +2017,7 @@ public class GroupManager extends JavaPlugin {
* @return the config
*/
public GMConfiguration getGMConfig() {
return config;
}
@ -2010,10 +2025,12 @@ public class GroupManager extends JavaPlugin {
* @return the backupFolder
*/
public File getBackupFolder() {
return backupFolder;
}
public static GlobalGroups getGlobalGroups() {
return globalGroups;
}

View file

@ -5,17 +5,18 @@ import org.anjocaido.groupmanager.GroupManager;
/*
*
* Created by ElgarL
*
*/
public class BukkitPermsUpdateTask implements Runnable {
public BukkitPermsUpdateTask() {
super();
}
@Override
public void run() {
// Signal loaded and update BukkitPermissions.
GroupManager.setLoaded(true);
GroupManager.BukkitPermissions.collectPermissions();

View file

@ -24,21 +24,25 @@ public abstract class DataUnit {
private ArrayList<String> permissions = new ArrayList<String>();
public DataUnit(WorldDataHolder dataSource, String name) {
this.dataSource = dataSource;
this.name = name;
}
public DataUnit(String name) {
this.name = name;
}
/**
* Every group is matched only by their names and DataSources names.
*
* @param o
* @return true if they are equal. false if not.
*/
@Override
public boolean equals(Object o) {
if (o instanceof DataUnit) {
DataUnit go = (DataUnit) o;
if (this.getName().equalsIgnoreCase(go.getName())) {
@ -61,6 +65,7 @@ public abstract class DataUnit {
@Override
public int hashCode() {
int hash = 5;
hash = 71 * hash + (this.name != null ? this.name.toLowerCase().hashCode() : 0);
return hash;
@ -72,6 +77,7 @@ public abstract class DataUnit {
* @param source
*/
public void setDataSource(WorldDataHolder source) {
this.dataSource = source;
}
@ -81,6 +87,7 @@ public abstract class DataUnit {
* @return the dataSource
*/
public WorldDataHolder getDataSource() {
return dataSource;
}
@ -88,10 +95,12 @@ public abstract class DataUnit {
* @return the name
*/
public String getName() {
return name;
}
public void flagAsChanged() {
WorldDataHolder testSource = getDataSource();
String source = "";
@ -101,18 +110,20 @@ public abstract class DataUnit {
source = testSource.getName();
GroupManager.logger.finest("DataSource: " + source + " - DataUnit: " + getName() + " flagged as changed!");
// for(StackTraceElement st: Thread.currentThread().getStackTrace()){
// GroupManager.logger.finest(st.toString());
// }
// for(StackTraceElement st: Thread.currentThread().getStackTrace()){
// GroupManager.logger.finest(st.toString());
// }
sorted = false;
changed = true;
}
public boolean isChanged() {
return changed;
}
public void flagAsSaved() {
WorldDataHolder testSource = getDataSource();
String source = "";
@ -126,10 +137,12 @@ public abstract class DataUnit {
}
public boolean hasSamePermissionNode(String permission) {
return permissions.contains(permission);
}
public void addPermission(String permission) {
if (!hasSamePermissionNode(permission)) {
permissions.add(permission);
}
@ -137,6 +150,7 @@ public abstract class DataUnit {
}
public boolean removePermission(String permission) {
flagAsChanged();
return permissions.remove(permission);
}
@ -144,17 +158,21 @@ public abstract class DataUnit {
/**
* Use this only to list permissions.
* You can't edit the permissions using the returned ArrayList instance
*
* @return a copy of the permission list
*/
public List<String> getPermissionList() {
return Collections.unmodifiableList(permissions);
}
public boolean isSorted() {
return this.sorted;
}
public void sortPermissions() {
if (!isSorted()) {
Collections.sort(permissions, StringPermissionComparator.getInstance());
sorted = true;

View file

@ -25,7 +25,7 @@ public class Group extends DataUnit implements Cloneable {
*/
private ArrayList<String> inherits = new ArrayList<String>();
/**
*This one holds the fields in INFO node.
* This one holds the fields in INFO node.
* like prefix = 'c'
* or build = false
*/
@ -37,6 +37,7 @@ public class Group extends DataUnit implements Cloneable {
* @param name
*/
public Group(WorldDataHolder source, String name) {
super(source, name);
}
@ -46,6 +47,7 @@ public class Group extends DataUnit implements Cloneable {
* @param name
*/
public Group(String name) {
super(name);
}
@ -55,15 +57,18 @@ public class Group extends DataUnit implements Cloneable {
* @return true if this is a global group
*/
public boolean isGlobal() {
return (getDataSource() == null);
}
/**
* Clone this group
*
* @return a clone of this group
*/
@Override
public Group clone() {
Group clone;
if (isGlobal()) {
@ -83,10 +88,12 @@ public class Group extends DataUnit implements Cloneable {
/**
* Use this to deliver a group from a different dataSource to another
*
* @param dataSource
* @return Null or Clone
*/
public Group clone(WorldDataHolder dataSource) {
if (dataSource.groupExists(this.getName())) {
return null;
}
@ -109,9 +116,11 @@ public class Group extends DataUnit implements Cloneable {
* an unmodifiable list of inherits list
* You can't manage the list by here
* Lol... version 0.6 had a problem because this.
*
* @return the inherits
*/
public List<String> getInherits() {
return Collections.unmodifiableList(inherits);
}
@ -119,6 +128,7 @@ public class Group extends DataUnit implements Cloneable {
* @param inherit the inherits to set
*/
public void addInherits(Group inherit) {
if (!isGlobal()) {
if (!this.getDataSource().groupExists(inherit.getName())) {
getDataSource().addGroup(inherit);
@ -135,6 +145,7 @@ public class Group extends DataUnit implements Cloneable {
}
public boolean removeInherits(String inherit) {
if (!isGlobal()) {
if (this.inherits.contains(inherit.toLowerCase())) {
this.inherits.remove(inherit.toLowerCase());
@ -150,6 +161,7 @@ public class Group extends DataUnit implements Cloneable {
* @return the variables
*/
public GroupVariables getVariables() {
return variables;
}
@ -158,6 +170,7 @@ public class Group extends DataUnit implements Cloneable {
* @param varList
*/
public void setVariables(Map<String, Object> varList) {
if (!isGlobal()) {
GroupVariables temp = new GroupVariables(this, varList);
variables.clearVars();

View file

@ -15,6 +15,7 @@ public class GroupVariables extends Variables implements Cloneable {
private Group owner;
public GroupVariables(Group owner) {
super(owner);
this.owner = owner;
addVar("prefix", "");
@ -23,6 +24,7 @@ public class GroupVariables extends Variables implements Cloneable {
}
public GroupVariables(Group owner, Map<String, Object> varList) {
super(owner);
variables = varList;
if (variables.get("prefix") == null) {
@ -46,9 +48,11 @@ public class GroupVariables extends Variables implements Cloneable {
/**
* A clone of all vars here.
*
* @return GroupVariables clone
*/
protected GroupVariables clone(Group newOwner) {
GroupVariables clone = new GroupVariables(newOwner);
for (String key : variables.keySet()) {
clone.variables.put(key, variables.get(key));
@ -59,10 +63,12 @@ public class GroupVariables extends Variables implements Cloneable {
/**
* Remove a var from the list
*
* @param name
*/
@Override
public void removeVar(String name) {
try {
this.variables.remove(name);
} catch (Exception e) {
@ -82,6 +88,7 @@ public class GroupVariables extends Variables implements Cloneable {
*/
@Override
public Group getOwner() {
return owner;
}
}

View file

@ -16,7 +16,6 @@ import java.util.Map;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
/**
*
* @author gabrielcouto/ElgarL
@ -40,6 +39,7 @@ public class User extends DataUnit implements Cloneable {
* @param name
*/
public User(WorldDataHolder source, String name) {
super(source, name);
this.group = source.getDefaultGroup().getName();
}
@ -50,6 +50,7 @@ public class User extends DataUnit implements Cloneable {
*/
@Override
public User clone() {
User clone = new User(getDataSource(), this.getName());
clone.group = this.group;
for (String perm : this.getPermissionList()) {
@ -67,6 +68,7 @@ public class User extends DataUnit implements Cloneable {
* @return null if given dataSource already contains the same user
*/
public User clone(WorldDataHolder dataSource) {
if (dataSource.isUserDeclared(this.getName())) {
return null;
}
@ -85,6 +87,7 @@ public class User extends DataUnit implements Cloneable {
}
public Group getGroup() {
Group result = getDataSource().getGroup(group);
if (result == null) {
this.setGroup(getDataSource().getDefaultGroup());
@ -97,6 +100,7 @@ public class User extends DataUnit implements Cloneable {
* @return the group
*/
public String getGroupName() {
Group result = getDataSource().getGroup(group);
if (result == null) {
group = getDataSource().getDefaultGroup().getName();
@ -110,6 +114,7 @@ public class User extends DataUnit implements Cloneable {
*/
@Deprecated
public void setGroup(String group) {
this.group = group;
flagAsChanged();
if (GroupManager.isLoaded())
@ -122,6 +127,7 @@ public class User extends DataUnit implements Cloneable {
* the group to set
*/
public void setGroup(Group group) {
setGroup(group, true);
}
@ -131,6 +137,7 @@ public class User extends DataUnit implements Cloneable {
*
*/
public void setGroup(Group group, Boolean updatePerms) {
if (!this.getDataSource().groupExists(group.getName())) {
getDataSource().addGroup(group);
}
@ -157,6 +164,7 @@ public class User extends DataUnit implements Cloneable {
}
public boolean addSubGroup(Group subGroup) {
// Don't allow adding a subgroup if it's already set as the primary.
if (this.group.equalsIgnoreCase(subGroup.getName())) {
return false;
@ -185,18 +193,22 @@ public class User extends DataUnit implements Cloneable {
}
public int subGroupsSize() {
return subGroups.size();
}
public boolean isSubGroupsEmpty() {
return subGroups.isEmpty();
}
public boolean containsSubGroup(Group subGroup) {
return subGroups.contains(subGroup.getName());
}
public boolean removeSubGroup(Group subGroup) {
try {
if (subGroups.remove(subGroup.getName())) {
flagAsChanged();
@ -212,6 +224,7 @@ public class User extends DataUnit implements Cloneable {
}
public ArrayList<Group> subGroupListCopy() {
ArrayList<Group> val = new ArrayList<Group>();
for (String gstr : subGroups) {
Group g = getDataSource().getGroup(gstr);
@ -225,6 +238,7 @@ public class User extends DataUnit implements Cloneable {
}
public ArrayList<String> subGroupListStringCopy() {
return new ArrayList<String>(subGroups);
}
@ -232,6 +246,7 @@ public class User extends DataUnit implements Cloneable {
* @return the variables
*/
public UserVariables getVariables() {
return variables;
}
@ -240,6 +255,7 @@ public class User extends DataUnit implements Cloneable {
* @param varList
*/
public void setVariables(Map<String, Object> varList) {
//UserVariables temp = new UserVariables(this, varList);
variables.clearVars();
for (String key : varList.keySet()) {
@ -254,6 +270,7 @@ public class User extends DataUnit implements Cloneable {
}
public User updatePlayer(Player player) {
if (player != null) {
bukkitPlayer = player;
}
@ -261,6 +278,7 @@ public class User extends DataUnit implements Cloneable {
}
public Player getBukkitPlayer() {
if (bukkitPlayer == null) {
bukkitPlayer = Bukkit.getPlayer(this.getName());
}

View file

@ -15,11 +15,13 @@ public class UserVariables extends Variables {
private User owner;
public UserVariables(User owner) {
super(owner);
this.owner = owner;
}
public UserVariables(User owner, Map<String, Object> varList) {
super(owner);
this.variables = varList;
this.owner = owner;
@ -27,9 +29,11 @@ public class UserVariables extends Variables {
/**
* A clone of all vars here.
*
* @return UserVariables clone
*/
protected UserVariables clone(User newOwner) {
UserVariables clone = new UserVariables(newOwner);
for (String key : variables.keySet()) {
clone.variables.put(key, variables.get(key));
@ -43,6 +47,7 @@ public class UserVariables extends Variables {
*/
@Override
public User getOwner() {
return owner;
}
}

View file

@ -9,7 +9,7 @@ import java.util.Map;
import java.util.Set;
/**
*A class that holds variables of a user/group.
* A class that holds variables of a user/group.
* In groups, it holds the contents of INFO node.
* Like:
* prefix
@ -24,6 +24,7 @@ public abstract class Variables implements Cloneable {
protected Map<String, Object> variables = new HashMap<String, Object>();
public Variables(DataUnit owner) {
this.owner = owner;
}
@ -32,10 +33,12 @@ public abstract class Variables implements Cloneable {
* examples:
* addVar("build",true);
* addVar("prefix","c");
*
* @param name key name of the var
* @param o the object value of the var
*/
public void addVar(String name, Object o) {
if (o == null) {
return;
}
@ -48,19 +51,23 @@ public abstract class Variables implements Cloneable {
/**
* Returns the object inside the var
*
* @param name
* @return a Object if exists. null if doesn't exists
*/
public Object getVarObject(String name) {
return variables.get(name);
}
/**
* Get the String value for the given var name
*
* @param name the var key name
* @return "" if null. or the toString() value of object
*/
public String getVarString(String name) {
Object o = variables.get(name);
try {
return o == null ? "" : o.toString();
@ -75,6 +82,7 @@ public abstract class Variables implements Cloneable {
* @return false if null. or a Boolean.parseBoolean of the string
*/
public Boolean getVarBoolean(String name) {
Object o = variables.get(name);
try {
return o == null ? false : Boolean.parseBoolean(o.toString());
@ -89,6 +97,7 @@ public abstract class Variables implements Cloneable {
* @return -1 if null. or a parseInt of the string
*/
public Integer getVarInteger(String name) {
Object o = variables.get(name);
try {
return o == null ? -1 : Integer.parseInt(o.toString());
@ -103,6 +112,7 @@ public abstract class Variables implements Cloneable {
* @return -1 if null. or a parseDouble of the string
*/
public Double getVarDouble(String name) {
Object o = variables.get(name);
try {
return o == null ? -1.0D : Double.parseDouble(o.toString());
@ -113,34 +123,42 @@ public abstract class Variables implements Cloneable {
/**
* All variable keys this is holding
*
* @return Set of all variable names.
*/
public Set<String> getVarKeyList() {
return variables.keySet();
}
/**
* verify is a var exists
*
* @param name the key name of the var
* @return true if that var exists
*/
public boolean hasVar(String name) {
return variables.containsKey(name);
}
/**
* Returns the quantity of vars this is holding
*
* @return the number of vars
*/
public int getSize() {
return variables.size();
}
/**
* Remove a var from the list
*
* @param name
*/
public void removeVar(String name) {
try {
variables.remove(name);
} catch (Exception e) {
@ -149,6 +167,7 @@ public abstract class Variables implements Cloneable {
}
public static Object parseVariableValue(String value) {
try {
Integer i = Integer.parseInt(value);
return i;
@ -169,6 +188,7 @@ public abstract class Variables implements Cloneable {
}
public void clearVars() {
variables.clear();
owner.flagAsChanged();
}
@ -177,10 +197,12 @@ public abstract class Variables implements Cloneable {
* @return the owner
*/
public DataUnit getOwner() {
return owner;
}
public boolean isEmpty() {
return variables.isEmpty();
}
}

View file

@ -6,8 +6,6 @@ import java.util.Map;
import org.anjocaido.groupmanager.data.Group;
/**
* This container holds all Groups loaded from the relevant groupsFile.
*
@ -31,9 +29,11 @@ public class GroupsDataHolder {
* Constructor
*/
protected GroupsDataHolder() {
}
public void setDataSource(WorldDataHolder dataSource) {
this.dataSource = dataSource;
//push this data source to the users, so they pull the correct groups data.
for (Group group : groups.values())
@ -44,6 +44,7 @@ public class GroupsDataHolder {
* @return the defaultGroup
*/
public Group getDefaultGroup() {
return defaultGroup;
}
@ -51,6 +52,7 @@ public class GroupsDataHolder {
* @param defaultGroup the defaultGroup to set
*/
public void setDefaultGroup(Group defaultGroup) {
this.defaultGroup = defaultGroup;
}
@ -58,6 +60,7 @@ public class GroupsDataHolder {
* @return the groups
*/
public Map<String, Group> getGroups() {
return groups;
}
@ -65,6 +68,7 @@ public class GroupsDataHolder {
* @param groups the groups to set
*/
public void setGroups(Map<String, Group> groups) {
this.groups = groups;
}
@ -72,6 +76,7 @@ public class GroupsDataHolder {
* @return the groupsFile
*/
public File getGroupsFile() {
return groupsFile;
}
@ -79,6 +84,7 @@ public class GroupsDataHolder {
* @param groupsFile the groupsFile to set
*/
public void setGroupsFile(File groupsFile) {
this.groupsFile = groupsFile;
}
@ -86,6 +92,7 @@ public class GroupsDataHolder {
* @return the haveGroupsChanged
*/
public boolean HaveGroupsChanged() {
return haveGroupsChanged;
}
@ -93,6 +100,7 @@ public class GroupsDataHolder {
* @param haveGroupsChanged the haveGroupsChanged to set
*/
public void setGroupsChanged(boolean haveGroupsChanged) {
this.haveGroupsChanged = haveGroupsChanged;
}
@ -100,6 +108,7 @@ public class GroupsDataHolder {
* @return the timeStampGroups
*/
public long getTimeStampGroups() {
return timeStampGroups;
}
@ -107,6 +116,7 @@ public class GroupsDataHolder {
* @param timeStampGroups the timeStampGroups to set
*/
public void setTimeStampGroups(long timeStampGroups) {
this.timeStampGroups = timeStampGroups;
}

View file

@ -26,6 +26,7 @@ public class OverloadedWorldHolder extends WorldDataHolder {
* @param ph
*/
public OverloadedWorldHolder(WorldDataHolder ph) {
super(ph.getName());
this.setGroupsFile(ph.getGroupsFile());
this.setUsersFile(ph.getUsersFile());
@ -41,6 +42,7 @@ public class OverloadedWorldHolder extends WorldDataHolder {
*/
@Override
public User getUser(String userName) {
//OVERLOADED CODE
String userNameLowered = userName.toLowerCase();
if (overloadedUsers.containsKey(userNameLowered)) {
@ -61,6 +63,7 @@ public class OverloadedWorldHolder extends WorldDataHolder {
*/
@Override
public void addUser(User theUser) {
if (theUser.getDataSource() != this) {
theUser = theUser.clone(this);
}
@ -89,6 +92,7 @@ public class OverloadedWorldHolder extends WorldDataHolder {
*/
@Override
public boolean removeUser(String userName) {
//OVERLOADED CODE
if (overloadedUsers.containsKey(userName.toLowerCase())) {
overloadedUsers.remove(userName.toLowerCase());
@ -105,6 +109,7 @@ public class OverloadedWorldHolder extends WorldDataHolder {
@Override
public boolean removeGroup(String groupName) {
if (groupName.equals(getDefaultGroup())) {
return false;
}
@ -140,6 +145,7 @@ public class OverloadedWorldHolder extends WorldDataHolder {
*/
@Override
public Collection<User> getUserList() {
Collection<User> overloadedList = new ArrayList<User>();
Collection<User> normalList = getUsers().values();
for (User u : normalList) {
@ -158,6 +164,7 @@ public class OverloadedWorldHolder extends WorldDataHolder {
* @return true if user is overloaded.
*/
public boolean isOverloaded(String userName) {
return overloadedUsers.containsKey(userName.toLowerCase());
}
@ -166,6 +173,7 @@ public class OverloadedWorldHolder extends WorldDataHolder {
* @param userName
*/
public void overloadUser(String userName) {
if (!isOverloaded(userName)) {
User theUser = getUser(userName);
theUser = theUser.clone();
@ -181,6 +189,7 @@ public class OverloadedWorldHolder extends WorldDataHolder {
* @param userName
*/
public void removeOverload(String userName) {
overloadedUsers.remove(userName.toLowerCase());
}
@ -193,6 +202,7 @@ public class OverloadedWorldHolder extends WorldDataHolder {
* @return user object
*/
public User surpassOverload(String userName) {
if (!isOverloaded(userName)) {
return getUser(userName);
}

View file

@ -6,8 +6,6 @@ import java.util.Map;
import org.anjocaido.groupmanager.data.User;
/**
* This container holds all Users loaded from the relevant usersFile.
*
@ -30,9 +28,11 @@ public class UsersDataHolder {
* Constructor
*/
protected UsersDataHolder() {
}
public void setDataSource(WorldDataHolder dataSource) {
this.dataSource = dataSource;
//push this data source to the users, so they pull the correct groups data.
for (User user : users.values())
@ -44,6 +44,7 @@ public class UsersDataHolder {
* @return the users
*/
public Map<String, User> getUsers() {
return users;
}
@ -51,6 +52,7 @@ public class UsersDataHolder {
* @param users the users to set
*/
public void setUsers(Map<String, User> users) {
this.users = users;
}
@ -58,6 +60,7 @@ public class UsersDataHolder {
* @return the usersFile
*/
public File getUsersFile() {
return usersFile;
}
@ -65,6 +68,7 @@ public class UsersDataHolder {
* @param usersFile the usersFile to set
*/
public void setUsersFile(File usersFile) {
this.usersFile = usersFile;
}
@ -72,6 +76,7 @@ public class UsersDataHolder {
* @return the haveUsersChanged
*/
public boolean HaveUsersChanged() {
return haveUsersChanged;
}
@ -79,6 +84,7 @@ public class UsersDataHolder {
* @param haveUsersChanged the haveUsersChanged to set
*/
public void setUsersChanged(boolean haveUsersChanged) {
this.haveUsersChanged = haveUsersChanged;
}
@ -86,6 +92,7 @@ public class UsersDataHolder {
* @return the timeStampUsers
*/
public long getTimeStampUsers() {
return timeStampUsers;
}
@ -93,6 +100,7 @@ public class UsersDataHolder {
* @param timeStampUsers the timeStampUsers to set
*/
public void setTimeStampUsers(long timeStampUsers) {
this.timeStampUsers = timeStampUsers;
}

View file

@ -62,27 +62,30 @@ public class WorldDataHolder {
*/
protected AnjoPermissionsHandler permissionsHandler;
/**
* Prevent direct instantiation
*
* @param worldName
*/
public WorldDataHolder(String worldName) {
name = worldName;
}
/**
* The main constructor for a new WorldDataHolder
*
* @param worldName
* @param groups
* @param users
*/
public WorldDataHolder(String worldName, GroupsDataHolder groups, UsersDataHolder users) {
this.name = worldName;
this.groups = groups;
this.users = users;
//this.defaultGroup = defaultGroup;
// this.defaultGroup = defaultGroup;
}
/**
@ -91,6 +94,7 @@ public class WorldDataHolder {
* This should be called whenever a set of world data is fetched.
*/
public void updateDataSource() {
this.groups.setDataSource(this);
this.users.setDataSource(this);
}
@ -103,6 +107,7 @@ public class WorldDataHolder {
* @return class that manage that user permission
*/
public User getUser(String userName) {
if (getUsers().containsKey(userName.toLowerCase())) {
return getUsers().get(userName.toLowerCase());
}
@ -112,9 +117,11 @@ public class WorldDataHolder {
/**
* Add a user to the list. If it already exists, overwrite the old.
*
* @param theUser the user you want to add to the permission list
*/
public void addUser(User theUser) {
if (theUser.getDataSource() != this) {
theUser = theUser.clone(this);
}
@ -133,10 +140,12 @@ public class WorldDataHolder {
/**
* Removes the user from the list. (he might become a default user)
*
* @param userName the username from the user to remove
* @return true if it had something to remove
*/
public boolean removeUser(String userName) {
if (getUsers().containsKey(userName.toLowerCase())) {
getUsers().remove(userName.toLowerCase());
setUsersChanged(true);
@ -153,14 +162,17 @@ public class WorldDataHolder {
* @return true if we have data for this player.
*/
public boolean isUserDeclared(String userName) {
return getUsers().containsKey(userName.toLowerCase());
}
/**
* Change the default group of the file.
*
* @param group the group you want make default.
*/
public void setDefaultGroup(Group group) {
if (!getGroups().containsKey(group.getName().toLowerCase()) || (group.getDataSource() != this)) {
addGroup(group);
}
@ -172,18 +184,22 @@ public class WorldDataHolder {
/**
* Returns the default group of the file
*
* @return the default group
*/
public Group getDefaultGroup() {
return groups.getDefaultGroup();
}
/**
* Returns a group of the given name
*
* @param groupName the name of the group
* @return a group if it is found. null if not found.
*/
public Group getGroup(String groupName) {
if (groupName.toLowerCase().startsWith("g:"))
return GroupManager.getGlobalGroups().getGroup(groupName);
else
@ -193,10 +209,12 @@ public class WorldDataHolder {
/**
* Check if a group exists.
* Its the same of getGroup, but check if it is null.
*
* @param groupName the name of the group
* @return true if exists. false if not.
*/
public boolean groupExists(String groupName) {
if (groupName.toLowerCase().startsWith("g:"))
return GroupManager.getGlobalGroups().hasGroup(groupName);
else
@ -205,9 +223,11 @@ public class WorldDataHolder {
/**
* Add a group to the list
*
* @param groupToAdd
*/
public void addGroup(Group groupToAdd) {
if (groupToAdd.getName().toLowerCase().startsWith("g:")) {
GroupManager.getGlobalGroups().addGroup(groupToAdd);
GroupManagerEventHandler.callEvent(groupToAdd, GMGroupEvent.Action.GROUP_ADDED);
@ -226,10 +246,13 @@ public class WorldDataHolder {
/**
* Remove the group from the list
*
* @param groupName
* @return true if had something to remove. false the group was default or non-existant
* @return true if had something to remove. false the group was default or
* non-existant
*/
public boolean removeGroup(String groupName) {
if (groupName.toLowerCase().startsWith("g:")) {
return GroupManager.getGlobalGroups().removeGroup(groupName);
}
@ -251,10 +274,12 @@ public class WorldDataHolder {
/**
* Creates a new User with the given name
* and adds it to this holder.
*
* @param userName the username you want
* @return null if user already exists. or new User
*/
public User createUser(String userName) {
if (getUsers().containsKey(userName.toLowerCase())) {
return null;
}
@ -268,10 +293,12 @@ public class WorldDataHolder {
/**
* Creates a new Group with the given name
* and adds it to this holder
*
* @param groupName the groupname you want
* @return null if group already exists. or new Group
*/
public Group createGroup(String groupName) {
if (groupName.toLowerCase().startsWith("g:")) {
Group newGroup = new Group(groupName);
return GroupManager.getGlobalGroups().newGroup(newGroup);
@ -292,6 +319,7 @@ public class WorldDataHolder {
* @return a collection of the groups
*/
public Collection<Group> getGroupList() {
return getGroups().values();
}
@ -300,6 +328,7 @@ public class WorldDataHolder {
* @return a collection of the users
*/
public Collection<User> getUserList() {
return getUsers().values();
}
@ -307,6 +336,7 @@ public class WorldDataHolder {
* reads the file again
*/
public void reload() {
try {
reloadGroups();
reloadUsers();
@ -319,6 +349,7 @@ public class WorldDataHolder {
* Refresh Group data from file
*/
public void reloadGroups() {
GroupManager.setLoaded(false);
try {
// temporary holder in case the load fails.
@ -346,6 +377,7 @@ public class WorldDataHolder {
* Refresh Users data from file
*/
public void reloadUsers() {
GroupManager.setLoaded(false);
try {
// temporary holder in case the load fails.
@ -406,6 +438,7 @@ public class WorldDataHolder {
GroupManager.setLoaded(true);
}
/**
* Returns a NEW data holder containing data read from the files
*
@ -417,11 +450,14 @@ public class WorldDataHolder {
* @throws IOException
*/
public static WorldDataHolder load(String worldName, File groupsFile, File usersFile) throws FileNotFoundException, IOException {
WorldDataHolder ph = new WorldDataHolder(worldName);
GroupManager.setLoaded(false);
if (groupsFile != null) loadGroups(ph, groupsFile);
if (usersFile != null) loadUsers(ph, usersFile);
if (groupsFile != null)
loadGroups(ph, groupsFile);
if (usersFile != null)
loadUsers(ph, usersFile);
GroupManager.setLoaded(true);
return ph;
@ -436,7 +472,7 @@ public class WorldDataHolder {
* @throws FileNotFoundException
* @throws IOException
*/
@SuppressWarnings({"rawtypes", "unchecked"})
@SuppressWarnings({ "rawtypes", "unchecked" })
protected static void loadGroups(WorldDataHolder ph, File groupsFile) throws FileNotFoundException, IOException {
// READ GROUPS FILE
@ -473,7 +509,6 @@ public class WorldDataHolder {
throw new IllegalArgumentException("Your " + groupsFile.getPath() + " file is invalid. See console for details.", ex);
}
Iterator<String> groupItr = allGroupsNode.keySet().iterator();
String groupKey;
Integer groupCount = 0;
@ -570,14 +605,14 @@ public class WorldDataHolder {
thisGrp.addPermission(o.toString());
} catch (NullPointerException ex) {
// Ignore this entry as it's null. It can be safely dropped
// Ignore this entry as it's null. It can be
// safely dropped
}
}
} catch (Exception ex) {
throw new IllegalArgumentException("Invalid formatting found in 'permissions' section for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath(), ex);
}
} else if (nodeData instanceof String) {
/*
* Only add this permission if it's not empty.
@ -589,7 +624,8 @@ public class WorldDataHolder {
throw new IllegalArgumentException("Unknown type of 'permissions' node(Should be String or List<String>) for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath());
}
/*
* Sort all permissions so they are in the correct order for checking.
* Sort all permissions so they are in the correct order for
* checking.
*/
thisGrp.sortPermissions();
}
@ -605,7 +641,8 @@ public class WorldDataHolder {
if (nodeData == null) {
/*
* No info section was found, so leave all variables as defaults.
* No info section was found, so leave all variables as
* defaults.
*/
GroupManager.logger.warning("The group '" + thisGrp.getName() + "' has no 'info' section!");
GroupManager.logger.warning("Using default values: " + groupsFile.getPath());
@ -652,7 +689,7 @@ public class WorldDataHolder {
}
}
}else
} else
throw new IllegalArgumentException("Unknown entry found in 'inheritance' section for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath());
// END GROUP
@ -686,7 +723,7 @@ public class WorldDataHolder {
ph.setGroupsFile(groupsFile);
ph.setTimeStampGroups(groupsFile.lastModified());
//return ph;
// return ph;
}
/**
@ -698,7 +735,7 @@ public class WorldDataHolder {
* @throws FileNotFoundException
* @throws IOException
*/
@SuppressWarnings({"rawtypes", "unchecked"})
@SuppressWarnings({ "rawtypes", "unchecked" })
protected static void loadUsers(WorldDataHolder ph, File usersFile) throws FileNotFoundException, IOException {
// READ USERS FILE
@ -830,8 +867,7 @@ public class WorldDataHolder {
}
}
//USER INFO NODE
// USER INFO NODE
nodeData = null;
try {
@ -851,8 +887,7 @@ public class WorldDataHolder {
} else
throw new IllegalArgumentException("Unknown entry found in 'info' section for user: " + thisUser.getName() + " in file: " + usersFile.getPath());
//END INFO NODE
// END INFO NODE
// PRIMARY GROUP
@ -884,10 +919,12 @@ public class WorldDataHolder {
/**
* Write a dataHolder in a specified file
*
* @param ph
* @param groupsFile
*/
public static void writeGroups(WorldDataHolder ph, File groupsFile) {
Map<String, Object> root = new HashMap<String, Object>();
Map<String, Object> groupsMap = new HashMap<String, Object>();
@ -952,26 +989,30 @@ public class WorldDataHolder {
if (GroupManager.isLoaded())
GroupManagerEventHandler.callEvent(GMSystemEvent.Action.SAVED);
/*FileWriter tx = null;
try {
tx = new FileWriter(groupsFile, false);
tx.write(yaml.dump(root));
tx.flush();
} catch (Exception e) {
} finally {
try {
tx.close();
} catch (IOException ex) {
}
}*/
/*
* FileWriter tx = null;
* try {
* tx = new FileWriter(groupsFile, false);
* tx.write(yaml.dump(root));
* tx.flush();
* } catch (Exception e) {
* } finally {
* try {
* tx.close();
* } catch (IOException ex) {
* }
* }
*/
}
/**
* Write a dataHolder in a specified file
*
* @param ph
* @param usersFile
*/
public static void writeUsers(WorldDataHolder ph, File usersFile) {
Map<String, Object> root = new HashMap<String, Object>();
Map<String, Object> usersMap = new HashMap<String, Object>();
@ -990,7 +1031,7 @@ public class WorldDataHolder {
} else {
aUserMap.put("group", user.getGroup().getName());
}
//USER INFO NODE - BETA
// USER INFO NODE - BETA
if (user.getVariables().getSize() > 0) {
Map<String, Object> infoMap = new HashMap<String, Object>();
aUserMap.put("info", infoMap);
@ -998,12 +1039,12 @@ public class WorldDataHolder {
infoMap.put(infoKey, user.getVariables().getVarObject(infoKey));
}
}
//END USER INFO NODE - BETA
// END USER INFO NODE - BETA
aUserMap.put("permissions", user.getPermissionList());
//SUBGROUPS NODE - BETA
// SUBGROUPS NODE - BETA
aUserMap.put("subgroups", user.subGroupListStringCopy());
//END SUBGROUPS NODE - BETA
// END SUBGROUPS NODE - BETA
}
if (!root.isEmpty()) {
@ -1028,38 +1069,46 @@ public class WorldDataHolder {
if (GroupManager.isLoaded())
GroupManagerEventHandler.callEvent(GMSystemEvent.Action.SAVED);
/*FileWriter tx = null;
try {
tx = new FileWriter(usersFile, false);
tx.write(yaml.dump(root));
tx.flush();
} catch (Exception e) {
} finally {
try {
tx.close();
} catch (IOException ex) {
}
}*/
/*
* FileWriter tx = null;
* try {
* tx = new FileWriter(usersFile, false);
* tx.write(yaml.dump(root));
* tx.flush();
* } catch (Exception e) {
* } finally {
* try {
* tx.close();
* } catch (IOException ex) {
* }
* }
*/
}
/**
* Don't use this. Unless you want to make this plugin to interact with original Nijikokun Permissions
* This method is supposed to make the original one reload the file, and propagate the changes made here.
* Don't use this. Unless you want to make this plugin to interact with
* original Nijikokun Permissions
* This method is supposed to make the original one reload the file, and
* propagate the changes made here.
*
* Prefer to use the AnjoCaido's fake version of Nijikokun's Permission plugin.
* The AnjoCaido's Permission can propagate the changes made on this plugin instantly,
* Prefer to use the AnjoCaido's fake version of Nijikokun's Permission
* plugin.
* The AnjoCaido's Permission can propagate the changes made on this plugin
* instantly,
* without need to save the file.
*
* @param server the server that holds the plugin
* @deprecated it is not used anymore... unless if you use original Permissions
* @deprecated it is not used anymore... unless if you use original
* Permissions
*/
@Deprecated
public static void reloadOldPlugins(Server server) {
// Only reload permissions
PluginManager pm = server.getPluginManager();
Plugin[] plugins = pm.getPlugins();
for (int i = 0; i < plugins.length; i++) {
//plugins[i].getConfiguration().load();
// plugins[i].getConfiguration().load();
try {
plugins[i].getClass().getMethod("setupPermissions").invoke(plugins[i]);
} catch (Exception ex) {
@ -1072,6 +1121,7 @@ public class WorldDataHolder {
* @return the permissionsHandler
*/
public AnjoPermissionsHandler getPermissionsHandler() {
if (permissionsHandler == null) {
permissionsHandler = new AnjoPermissionsHandler(this);
}
@ -1082,6 +1132,7 @@ public class WorldDataHolder {
* @param haveUsersChanged the haveUsersChanged to set
*/
public void setUsersChanged(boolean haveUsersChanged) {
users.setUsersChanged(haveUsersChanged);
}
@ -1090,6 +1141,7 @@ public class WorldDataHolder {
* @return true if any user data has changed
*/
public boolean haveUsersChanged() {
if (users.HaveUsersChanged()) {
return true;
}
@ -1105,6 +1157,7 @@ public class WorldDataHolder {
* @param setGroupsChanged the haveGroupsChanged to set
*/
public void setGroupsChanged(boolean setGroupsChanged) {
groups.setGroupsChanged(setGroupsChanged);
}
@ -1113,6 +1166,7 @@ public class WorldDataHolder {
* @return true if any group data has changed.
*/
public boolean haveGroupsChanged() {
if (groups.HaveGroupsChanged()) {
return true;
}
@ -1128,6 +1182,7 @@ public class WorldDataHolder {
*
*/
public void removeUsersChangedFlag() {
setUsersChanged(false);
for (User u : getUsers().values()) {
u.flagAsSaved();
@ -1138,6 +1193,7 @@ public class WorldDataHolder {
*
*/
public void removeGroupsChangedFlag() {
setGroupsChanged(false);
for (Group g : getGroups().values()) {
g.flagAsSaved();
@ -1148,6 +1204,7 @@ public class WorldDataHolder {
* @return the usersFile
*/
public File getUsersFile() {
return users.getUsersFile();
}
@ -1155,6 +1212,7 @@ public class WorldDataHolder {
* @param file the usersFile to set
*/
public void setUsersFile(File file) {
users.setUsersFile(file);
}
@ -1162,6 +1220,7 @@ public class WorldDataHolder {
* @return the groupsFile
*/
public File getGroupsFile() {
return groups.getGroupsFile();
}
@ -1169,6 +1228,7 @@ public class WorldDataHolder {
* @param file the groupsFile to set
*/
public void setGroupsFile(File file) {
groups.setGroupsFile(file);
}
@ -1176,6 +1236,7 @@ public class WorldDataHolder {
* @return the name
*/
public String getName() {
return name;
}
@ -1183,13 +1244,16 @@ public class WorldDataHolder {
* Resets Groups.
*/
public void resetGroups() {
//setDefaultGroup(null);
// setDefaultGroup(null);
groups.setGroups(new HashMap<String, Group>());
}
/**
* Resets Users
*/
public void resetUsers() {
users.setUsers(new HashMap<String, User>());
}
@ -1197,12 +1261,15 @@ public class WorldDataHolder {
* @return the groups
*/
public Map<String, Group> getGroups() {
return groups.getGroups();
}
/**
* @return the users
*/
public Map<String, User> getUsers() {
return users.getUsers();
}
@ -1210,24 +1277,31 @@ public class WorldDataHolder {
* @return the groups
*/
public GroupsDataHolder getGroupsObject() {
return groups;
}
/**
* @param groupsDataHolder the GroupsDataHolder to set
*/
public void setGroupsObject(GroupsDataHolder groupsDataHolder) {
groups = groupsDataHolder;
}
/**
* @return the users
*/
public UsersDataHolder getUsersObject() {
return users;
}
/**
* @param usersDataHolder the UsersDataHolder to set
*/
public void setUsersObject(UsersDataHolder usersDataHolder) {
users = usersDataHolder;
}
@ -1235,12 +1309,15 @@ public class WorldDataHolder {
* @return the timeStampGroups
*/
public long getTimeStampGroups() {
return groups.getTimeStampGroups();
}
/**
* @return the timeStampUsers
*/
public long getTimeStampUsers() {
return users.getTimeStampUsers();
}
@ -1248,16 +1325,20 @@ public class WorldDataHolder {
* @param timeStampGroups the timeStampGroups to set
*/
protected void setTimeStampGroups(long timeStampGroups) {
groups.setTimeStampGroups(timeStampGroups);
}
/**
* @param timeStampUsers the timeStampUsers to set
*/
protected void setTimeStampUsers(long timeStampUsers) {
users.setTimeStampUsers(timeStampUsers);
}
public void setTimeStamps() {
if (getGroupsFile() != null)
setTimeStampGroups(getGroupsFile().lastModified());
if (getUsersFile() != null)

View file

@ -56,6 +56,7 @@ public class WorldsHolder {
* @param plugin
*/
public WorldsHolder(GroupManager plugin) {
this.plugin = plugin;
// Setup folders and check files exist for the primary world
verifyFirstRun();
@ -66,6 +67,7 @@ public class WorldsHolder {
}
private void initialLoad() {
// load the initial world
initialWorldLoading();
// Configure and load any mirrors and additional worlds as defined in config.yml
@ -75,6 +77,7 @@ public class WorldsHolder {
}
private void initialWorldLoading() {
//Load the default world
loadWorld(serverDefaultWorldName);
//defaultWorld = getUpdatedWorldData(serverDefaultWorldName);
@ -87,9 +90,8 @@ public class WorldsHolder {
* Create the data files if they don't already exist,
* and they are not mirrored.
*/
for (World world: plugin.getServer().getWorlds())
if ((!worldsData.containsKey(world.getName().toLowerCase()))
&& ((!mirrorsGroup.containsKey(world.getName().toLowerCase())) || (!mirrorsUser.containsKey(world.getName().toLowerCase()))))
for (World world : plugin.getServer().getWorlds())
if ((!worldsData.containsKey(world.getName().toLowerCase())) && ((!mirrorsGroup.containsKey(world.getName().toLowerCase())) || (!mirrorsUser.containsKey(world.getName().toLowerCase()))))
setupWorldFolder(world.getName());
/*
* Loop over all folders within the worlds folder
@ -103,12 +105,11 @@ public class WorldsHolder {
* don't load any worlds which are already loaded
* or fully mirrored worlds that don't need data.
*/
if (!worldsData.containsKey(folder.getName().toLowerCase())
&& ((!mirrorsGroup.containsKey(folder.getName().toLowerCase()))
|| (!mirrorsUser.containsKey(folder.getName().toLowerCase())))) {
if (!worldsData.containsKey(folder.getName().toLowerCase()) && ((!mirrorsGroup.containsKey(folder.getName().toLowerCase())) || (!mirrorsUser.containsKey(folder.getName().toLowerCase())))) {
/*
* Call setupWorldFolder to check case sensitivity
* and convert to lower case, before we attempt to load this world.
* and convert to lower case, before we attempt to load this
* world.
*/
setupWorldFolder(folder.getName());
loadWorld(folder.getName().toLowerCase());
@ -120,6 +121,7 @@ public class WorldsHolder {
@SuppressWarnings("rawtypes")
public void mirrorSetUp() {
mirrorsGroup.clear();
mirrorsUser.clear();
Map<String, Object> mirrorsMap = plugin.getGMConfig().getMirrorsMap();
@ -199,7 +201,7 @@ public class WorldsHolder {
}
// Create a datasource for any worlds not already loaded
for (String world : mirroredWorlds){
for (String world : mirroredWorlds) {
if (!worldsData.containsKey(world.toLowerCase())) {
setupWorldFolder(world);
loadWorld(world, true);
@ -212,6 +214,7 @@ public class WorldsHolder {
*
*/
public void reloadAll() {
// Load global groups
GroupManager.getGlobalGroups().load();
@ -235,6 +238,7 @@ public class WorldsHolder {
* @param worldName
*/
public void reloadWorld(String worldName) {
if (!mirrorsGroup.containsKey(worldName.toLowerCase()))
getWorldData(worldName).reloadGroups();
if (!mirrorsUser.containsKey(worldName.toLowerCase()))
@ -246,6 +250,7 @@ public class WorldsHolder {
* (call this function to auto overwrite files)
*/
public void saveChanges() {
saveChanges(true);
}
@ -253,6 +258,7 @@ public class WorldsHolder {
*
*/
public void saveChanges(boolean overwrite) {
ArrayList<WorldDataHolder> alreadyDone = new ArrayList<WorldDataHolder>();
Tasks.removeOldFiles(plugin, plugin.getBackupFolder());
@ -278,7 +284,7 @@ public class WorldsHolder {
if (w.haveGroupsChanged()) {
if (overwrite || (!overwrite && (w.getTimeStampGroups() >= w.getGroupsFile().lastModified()))) {
// Backup Groups file
backupFile(w,true);
backupFile(w, true);
WorldDataHolder.writeGroups(w, w.getGroupsFile());
//w.removeGroupsChangedFlag();
@ -292,7 +298,7 @@ public class WorldsHolder {
if (w.getTimeStampGroups() < w.getGroupsFile().lastModified()) {
System.out.print("Newer Groups file found (Loading changes)!");
// Backup Groups file
backupFile(w,true);
backupFile(w, true);
w.reloadGroups();
}
}
@ -300,7 +306,7 @@ public class WorldsHolder {
if (w.haveUsersChanged()) {
if (overwrite || (!overwrite && (w.getTimeStampUsers() >= w.getUsersFile().lastModified()))) {
// Backup Users file
backupFile(w,false);
backupFile(w, false);
WorldDataHolder.writeUsers(w, w.getUsersFile());
//w.removeUsersChangedFlag();
@ -314,7 +320,7 @@ public class WorldsHolder {
if (w.getTimeStampUsers() < w.getUsersFile().lastModified()) {
System.out.print("Newer Users file found (Loading changes)!");
// Backup Users file
backupFile(w,false);
backupFile(w, false);
w.reloadUsers();
}
}
@ -324,6 +330,7 @@ public class WorldsHolder {
/**
* Backup the Groups/Users file
*
* @param w
* @param groups
*/
@ -349,6 +356,7 @@ public class WorldsHolder {
* @return OverloadedWorldHolder
*/
public OverloadedWorldHolder getWorldData(String worldName) {
String worldNameLowered = worldName.toLowerCase();
// Find this worlds data
@ -361,12 +369,14 @@ public class WorldsHolder {
}
/**
* Get the requested world data and update it's dataSource to be relevant for this world
* Get the requested world data and update it's dataSource to be relevant
* for this world
*
* @param worldName
* @return updated world holder
*/
private OverloadedWorldHolder getUpdatedWorldData(String worldName) {
String worldNameLowered = worldName.toLowerCase();
if (worldsData.containsKey(worldNameLowered)) {
@ -386,6 +396,7 @@ public class WorldsHolder {
* @return null if matching returned no player, or more than one.
*/
public OverloadedWorldHolder getWorldDataByPlayerName(String playerName) {
List<Player> matchPlayer = plugin.getServer().matchPlayer(playerName);
if (matchPlayer.size() == 1) {
return getWorldData(matchPlayer.get(0));
@ -401,34 +412,41 @@ public class WorldsHolder {
* @return OverloadedWorldHolder
*/
public OverloadedWorldHolder getWorldData(Player player) {
return getWorldData(player.getWorld().getName());
}
/**
* It does getWorld(worldName).getPermissionsHandler()
*
* @param worldName
* @return AnjoPermissionsHandler
*/
public AnjoPermissionsHandler getWorldPermissions(String worldName) {
return getWorldData(worldName).getPermissionsHandler();
}
/**
* Returns the PermissionsHandler for this player data
*
* @param player
* @return AnjoPermissionsHandler
*/
public AnjoPermissionsHandler getWorldPermissions(Player player) {
return getWorldData(player).getPermissionsHandler();
}
/**
* Id does getWorldDataByPlayerName(playerName).
* If it doesnt return null, it will return result.getPermissionsHandler()
*
* @param playerName
* @return null if the player matching gone wrong.
*/
public AnjoPermissionsHandler getWorldPermissionsByPlayerName(String playerName) {
WorldDataHolder dh = getWorldDataByPlayerName(playerName);
if (dh != null) {
return dh.getPermissionsHandler();
@ -450,6 +468,7 @@ public class WorldsHolder {
}
public void setupWorldFolder(String worldName) {
String worldNameLowered = worldName.toLowerCase();
worldsFolder = new File(plugin.getDataFolder(), "worlds");
@ -543,15 +562,18 @@ public class WorldsHolder {
*
* Load a world from file.
* If it already been loaded, summon reload method from dataHolder.
*
* @param worldName
*/
public void loadWorld(String worldName) {
loadWorld(worldName, false);
}
/**
* Load a world from file.
* If it already been loaded, summon reload method from dataHolder.
*
* @param worldName
*/
public void loadWorld(String worldName, Boolean isMirror) {
@ -567,8 +589,8 @@ public class WorldsHolder {
if ((isMirror) || (thisWorldFolder.exists() && thisWorldFolder.isDirectory())) {
// Setup file handles, if not mirrored
File groupsFile = (mirrorsGroup.containsKey(worldNameLowered))? null : new File(thisWorldFolder, "groups.yml");
File usersFile = (mirrorsUser.containsKey(worldNameLowered))? null : new File(thisWorldFolder, "users.yml");
File groupsFile = (mirrorsGroup.containsKey(worldNameLowered)) ? null : new File(thisWorldFolder, "groups.yml");
File usersFile = (mirrorsUser.containsKey(worldNameLowered)) ? null : new File(thisWorldFolder, "users.yml");
if ((groupsFile != null) && (!groupsFile.exists())) {
throw new IllegalArgumentException("Groups file for world '" + worldName + "' doesnt exist: " + groupsFile.getPath());
@ -618,6 +640,7 @@ public class WorldsHolder {
* @return true if world is loaded or mirrored. false if not listed
*/
public boolean isInList(String worldName) {
if (worldsData.containsKey(worldName.toLowerCase()) || mirrorsGroup.containsKey(worldName.toLowerCase()) || mirrorsUser.containsKey(worldName.toLowerCase())) {
return true;
}
@ -631,6 +654,7 @@ public class WorldsHolder {
* @return true if it has its own holder. false if not.
*/
public boolean hasOwnData(String worldName) {
if (worldsData.containsKey(worldName.toLowerCase()) && (!mirrorsGroup.containsKey(worldName.toLowerCase()) || !mirrorsUser.containsKey(worldName.toLowerCase()))) {
return true;
}
@ -641,6 +665,7 @@ public class WorldsHolder {
* @return the defaultWorld
*/
public OverloadedWorldHolder getDefaultWorld() {
return getUpdatedWorldData(serverDefaultWorldName);
}
@ -651,6 +676,7 @@ public class WorldsHolder {
* @return ArrayList<OverloadedWorldHolder> of all loaded worlds
*/
public ArrayList<OverloadedWorldHolder> allWorldsDataList() {
ArrayList<OverloadedWorldHolder> list = new ArrayList<OverloadedWorldHolder>();
for (OverloadedWorldHolder data : worldsData.values()) {
if ((!list.contains(data)) && (!mirrorsGroup.containsKey(data.getName().toLowerCase()) || !mirrorsUser.containsKey(data.getName().toLowerCase()))) {

View file

@ -6,7 +6,6 @@ import org.bukkit.Bukkit;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
/**
* @author ElgarL
*
@ -20,10 +19,12 @@ public class GMGroupEvent extends Event {
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
@ -36,6 +37,7 @@ public class GMGroupEvent extends Event {
protected Action action;
public GMGroupEvent(Group group, Action action) {
super();
this.group = group;
@ -44,30 +46,30 @@ public class GMGroupEvent extends Event {
}
public GMGroupEvent(String groupName, Action action) {
super();
this.groupName = groupName;
this.action = action;
}
public Action getAction(){
public Action getAction() {
return this.action;
}
public Group getGroup() {
return group;
}
public String getGroupName() {
return groupName;
}
public enum Action {
GROUP_PERMISSIONS_CHANGED,
GROUP_INHERITANCE_CHANGED,
GROUP_INFO_CHANGED,
GROUP_ADDED,
GROUP_REMOVED,
GROUP_PERMISSIONS_CHANGED, GROUP_INHERITANCE_CHANGED, GROUP_INFO_CHANGED, GROUP_ADDED, GROUP_REMOVED,
}
public void schedule(final GMGroupEvent event) {
@ -76,6 +78,7 @@ public class GMGroupEvent extends Event {
@Override
public void run() {
Bukkit.getServer().getPluginManager().callEvent(event);
}
}, 1) == -1)

View file

@ -5,7 +5,6 @@ import org.bukkit.Bukkit;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
/**
* @author ElgarL
*
@ -19,10 +18,12 @@ public class GMSystemEvent extends Event {
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
@ -31,20 +32,19 @@ public class GMSystemEvent extends Event {
protected Action action;
public GMSystemEvent(Action action) {
super();
this.action = action;
}
public Action getAction(){
public Action getAction() {
return this.action;
}
public enum Action {
RELOADED,
SAVED,
DEFAULT_GROUP_CHANGED,
VALIDATE_TOGGLE,
RELOADED, SAVED, DEFAULT_GROUP_CHANGED, VALIDATE_TOGGLE,
}
public void schedule(final GMSystemEvent event) {
@ -53,6 +53,7 @@ public class GMSystemEvent extends Event {
@Override
public void run() {
Bukkit.getServer().getPluginManager().callEvent(event);
}
}, 1) == -1)

View file

@ -6,7 +6,6 @@ import org.bukkit.Bukkit;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
/**
* @author ElgarL
*
@ -20,10 +19,12 @@ public class GMUserEvent extends Event {
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
@ -36,6 +37,7 @@ public class GMUserEvent extends Event {
protected Action action;
public GMUserEvent(User user, Action action) {
super();
this.user = user;
@ -44,32 +46,30 @@ public class GMUserEvent extends Event {
}
public GMUserEvent(String userName, Action action) {
super();
this.userName = userName;
this.action = action;
}
public Action getAction(){
public Action getAction() {
return this.action;
}
public User getUser() {
return user;
}
public String getUserName() {
return userName;
}
public enum Action {
USER_PERMISSIONS_CHANGED,
USER_INHERITANCE_CHANGED,
USER_INFO_CHANGED,
USER_GROUP_CHANGED,
USER_SUBGROUP_CHANGED,
USER_ADDED,
USER_REMOVED,
USER_PERMISSIONS_CHANGED, USER_INHERITANCE_CHANGED, USER_INFO_CHANGED, USER_GROUP_CHANGED, USER_SUBGROUP_CHANGED, USER_ADDED, USER_REMOVED,
}
public void schedule(final GMUserEvent event) {
@ -78,6 +78,7 @@ public class GMUserEvent extends Event {
@Override
public void run() {
Bukkit.getServer().getPluginManager().callEvent(event);
}
}, 1) == -1)

View file

@ -6,7 +6,6 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.world.WorldInitEvent;
/**
* @author ElgarL
*
@ -18,16 +17,19 @@ public class GMWorldListener implements Listener {
private final GroupManager plugin;
public GMWorldListener(GroupManager instance) {
plugin = instance;
registerEvents();
}
private void registerEvents() {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
@EventHandler(priority = EventPriority.LOWEST)
public void onWorldInit(WorldInitEvent event) {
String worldName = event.getWorld().getName();
if (GroupManager.isLoaded() && !plugin.getWorldsHolder().isInList(worldName)) {

View file

@ -3,7 +3,6 @@ package org.anjocaido.groupmanager.events;
import org.anjocaido.groupmanager.data.Group;
import org.anjocaido.groupmanager.data.User;
/**
* @author ElgarL
*
@ -13,30 +12,42 @@ import org.anjocaido.groupmanager.data.User;
public class GroupManagerEventHandler {
protected static void callEvent(GMGroupEvent event) {
event.schedule(event);
}
protected static void callEvent(GMUserEvent event) {
event.schedule(event);
}
protected static void callEvent(GMSystemEvent event) {
event.schedule(event);
}
public static void callEvent(Group group, GMGroupEvent.Action action) {
callEvent(new GMGroupEvent(group, action));
}
public static void callEvent(String groupName, GMGroupEvent.Action action) {
callEvent(new GMGroupEvent(groupName, action));
}
public static void callEvent(User user, GMUserEvent.Action action) {
callEvent(new GMUserEvent(user, action));
}
public static void callEvent(String userName, GMUserEvent.Action action) {
callEvent(new GMUserEvent(userName, action));
}
public static void callEvent(GMSystemEvent.Action action) {
callEvent(new GMSystemEvent(action));
}
}

View file

@ -39,6 +39,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
* @param holder
*/
public AnjoPermissionsHandler(WorldDataHolder holder) {
ph = holder;
}
@ -51,6 +52,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public boolean has(Player player, String permission) {
return permission(player, permission);
}
@ -63,6 +65,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public boolean permission(Player player, String permission) {
return checkUserPermission(ph.getUser(player.getName()).updatePlayer(player), permission);
}
@ -74,6 +77,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
* @return true if the player has the permission
*/
public boolean permission(String playerName, String permission) {
return checkUserPermission(ph.getUser(playerName), permission);
}
@ -85,6 +89,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public String getGroup(String userName) {
return ph.getUser(userName).getGroup().getName();
}
@ -97,6 +102,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public List<String> getAllPlayersPermissions(String userName) {
List<String> perms = new ArrayList<String>();
perms.addAll(getAllPlayersPermissions(userName, true));
@ -143,8 +149,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
boolean negated = (perm.startsWith("-"));
// Perm doesn't already exists and there is no negation for it
// or It's a negated perm where a normal perm doesn't exists (don't allow inheritance to negate higher perms)
if ((!negated && !playerPermArray.contains(perm) && !playerPermArray.contains("-" + perm))
|| (negated && !playerPermArray.contains(perm.substring(1)) && !playerPermArray.contains("-" + perm)))
if ((!negated && !playerPermArray.contains(perm) && !playerPermArray.contains("-" + perm)) || (negated && !playerPermArray.contains(perm.substring(1)) && !playerPermArray.contains("-" + perm)))
playerPermArray.add(perm);
}
}
@ -155,7 +160,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
return playerPermArray;
}
private Set<String> populatePerms (List<String> permsList, boolean includeChildren) {
private Set<String> populatePerms(List<String> permsList, boolean includeChildren) {
// Create a new array so it's modifiable.
List<String> perms = new ArrayList<String>(permsList);
@ -186,7 +191,8 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
/**
* Process child nodes if required,
* or this is a negated node AND we used * to include all permissions,
* or this is a negated node AND we used * to include all
* permissions,
* in which case we need to remove all children of that node.
*/
if ((includeChildren) || (negated && allPerms)) {
@ -236,6 +242,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public boolean inGroup(String name, String group) {
if (hasGroupInInheritance(ph.getUser(name).getGroup(), group)) {
return true;
}
@ -326,6 +333,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public String getGroupPrefix(String groupName) {
Group g = ph.getGroup(groupName);
if (g == null) {
return "";
@ -341,6 +349,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public String getGroupSuffix(String groupName) {
Group g = ph.getGroup(groupName);
if (g == null) {
return "";
@ -357,6 +366,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public boolean canGroupBuild(String groupName) {
Group g = ph.getGroup(groupName);
if (g == null) {
return false;
@ -374,6 +384,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public String getGroupPermissionString(String groupName, String variable) {
Group start = ph.getGroup(groupName);
if (start == null) {
return null;
@ -395,6 +406,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public int getGroupPermissionInteger(String groupName, String variable) {
Group start = ph.getGroup(groupName);
if (start == null) {
return -1;
@ -416,6 +428,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public boolean getGroupPermissionBoolean(String group, String variable) {
Group start = ph.getGroup(group);
if (start == null) {
return false;
@ -437,6 +450,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public double getGroupPermissionDouble(String group, String variable) {
Group start = ph.getGroup(group);
if (start == null) {
return -1;
@ -457,6 +471,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public String getUserPermissionString(String user, String variable) {
User auser = ph.getUser(user);
if (auser == null) {
return "";
@ -473,6 +488,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public int getUserPermissionInteger(String user, String variable) {
User auser = ph.getUser(user);
if (auser == null) {
return -1;
@ -489,6 +505,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public boolean getUserPermissionBoolean(String user, String variable) {
User auser = ph.getUser(user);
if (auser == null) {
return false;
@ -505,6 +522,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public double getUserPermissionDouble(String user, String variable) {
User auser = ph.getUser(user);
if (auser == null) {
return -1;
@ -523,6 +541,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public String getPermissionString(String user, String variable) {
User auser = ph.getUser(user);
if (auser == null) {
return "";
@ -562,6 +581,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public int getPermissionInteger(String user, String variable) {
User auser = ph.getUser(user);
if (auser == null) {
return -1;
@ -601,6 +621,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public boolean getPermissionBoolean(String user, String variable) {
User auser = ph.getUser(user);
if (auser == null) {
return false;
@ -640,6 +661,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public double getPermissionDouble(String user, String variable) {
User auser = ph.getUser(user);
if (auser == null) {
return -1.0D;
@ -676,6 +698,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
* @return PermissionCheckResult
*/
public PermissionCheckResult checkUserOnlyPermission(User user, String permission) {
user.sortPermissions();
PermissionCheckResult result = new PermissionCheckResult();
result.askedPermission = permission;
@ -699,6 +722,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
* @return the node if permission is found. if not found, return null
*/
public PermissionCheckResult checkGroupOnlyPermission(Group group, String permission) {
group.sortPermissions();
PermissionCheckResult result = new PermissionCheckResult();
result.owner = group;
@ -721,6 +745,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
* @return true if permission was found. false if not, or was negated.
*/
public boolean checkUserPermission(User user, String permission) {
PermissionCheckResult result = checkFullGMPermission(user, permission, true);
if (result.resultType == PermissionCheckResult.Type.EXCEPTION || result.resultType == PermissionCheckResult.Type.FOUND) {
return true;
@ -752,6 +777,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
* @return PermissionCheckResult
*/
public PermissionCheckResult checkFullGMPermission(User user, String targetPermission, Boolean checkBukkit) {
PermissionCheckResult result = new PermissionCheckResult();
result.accessLevel = targetPermission;
result.resultType = PermissionCheckResult.Type.NOTFOUND;
@ -813,6 +839,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Deprecated
public Group nextGroupWithVariable(Group start, String variable, List<Group> alreadyChecked) {
return nextGroupWithVariable(start, variable);
}
@ -829,6 +856,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
* @return The group if found. Null if not.
*/
public Group nextGroupWithVariable(Group start, String targetVariable) {
if (start == null || targetVariable == null) {
return null;
}
@ -870,6 +898,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Deprecated
public boolean searchGroupInInheritance(Group start, String askedGroup, List<Group> alreadyChecked) {
return hasGroupInInheritance(start, askedGroup);
}
@ -885,6 +914,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
* @return true if it inherits the group.
*/
public boolean hasGroupInInheritance(Group start, String askedGroup) {
if (start == null || askedGroup == null) {
return false;
}
@ -920,6 +950,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Deprecated
public boolean checkGroupPermissionWithInheritance(Group start, String permission, List<Group> alreadyChecked) {
PermissionCheckResult result = checkGroupPermissionWithInheritance(start, permission);
if (result.resultType.equals(Type.EXCEPTION) || result.resultType.equals(Type.FOUND)) {
return true;
@ -942,6 +973,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
* @return PermissionCheckResult
*/
public PermissionCheckResult checkGroupPermissionWithInheritance(Group start, String targetPermission) {
if (start == null || targetPermission == null) {
return null;
}
@ -982,6 +1014,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Deprecated
public Group nextGroupWithPermission(Group start, String permission, List<Group> alreadyChecked) {
PermissionCheckResult result = checkGroupPermissionWithInheritance(start, permission);
if (result.resultType.equals(Type.EXCEPTION) || result.resultType.equals(Type.FOUND)) {
return (Group) checkGroupPermissionWithInheritance(start, permission).owner;
@ -1003,6 +1036,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Deprecated
public ArrayList<String> listAllGroupsInherited(Group start, ArrayList<String> alreadyChecked) {
return listAllGroupsInherited(start);
}
@ -1016,6 +1050,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
* @return the group that passed on test. null if no group passed.
*/
public ArrayList<String> listAllGroupsInherited(Group start) {
if (start == null) {
return null;
}
@ -1055,6 +1090,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
* @return PermissionCheckResult.Type
*/
public PermissionCheckResult.Type comparePermissionString(String userAccessLevel, String fullPermissionName) {
int userAccessLevelLength;
if (userAccessLevel == null || fullPermissionName == null || fullPermissionName.length() == 0 || (userAccessLevelLength = userAccessLevel.length()) == 0) {
return PermissionCheckResult.Type.NOTFOUND;
@ -1080,12 +1116,9 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
}
if (userAccessLevel.charAt(userAccessLevel.length() - 1) == '*') {
return userAccessLevel.regionMatches(true, userAccessLevelOffset, fullPermissionName, fullPermissionNameOffset, userAccessLevelLength - userAccessLevelOffset - 1) ?
result : PermissionCheckResult.Type.NOTFOUND;
return userAccessLevel.regionMatches(true, userAccessLevelOffset, fullPermissionName, fullPermissionNameOffset, userAccessLevelLength - userAccessLevelOffset - 1) ? result : PermissionCheckResult.Type.NOTFOUND;
} else {
return userAccessLevel.regionMatches(true, userAccessLevelOffset, fullPermissionName, fullPermissionNameOffset,
Math.max(userAccessLevelLength - userAccessLevelOffset, fullPermissionName.length() - fullPermissionNameOffset)) ?
result : PermissionCheckResult.Type.NOTFOUND;
return userAccessLevel.regionMatches(true, userAccessLevelOffset, fullPermissionName, fullPermissionNameOffset, Math.max(userAccessLevelLength - userAccessLevelOffset, fullPermissionName.length() - fullPermissionNameOffset)) ? result : PermissionCheckResult.Type.NOTFOUND;
}
}
@ -1099,6 +1132,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@Override
public String[] getGroups(String userName) {
ArrayList<String> allGroups = listAllGroupsInherited(ph.getUser(userName).getGroup());
for (Group subg : ph.getUser(userName).subGroupListCopy()) {
allGroups.addAll(listAllGroupsInherited(subg));
@ -1120,6 +1154,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
*/
@SuppressWarnings("unused")
private Group breadthFirstSearch(Group start, String targerPermission) {
if (start == null || targerPermission == null) {
return null;
}
@ -1149,11 +1184,13 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
@Override
public Group getDefaultGroup() {
return ph.getDefaultGroup();
}
@Override
public String getInfoString(String entryName, String path, boolean isGroup) {
if (isGroup) {
Group data = ph.getGroup(entryName);
if (data == null) {
@ -1171,6 +1208,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
@Override
public int getInfoInteger(String entryName, String path, boolean isGroup) {
if (isGroup) {
Group data = ph.getGroup(entryName);
if (data == null) {
@ -1188,6 +1226,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
@Override
public double getInfoDouble(String entryName, String path, boolean isGroup) {
if (isGroup) {
Group data = ph.getGroup(entryName);
if (data == null) {
@ -1206,6 +1245,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
@Override
public boolean getInfoBoolean(String entryName, String path, boolean isGroup) {
if (isGroup) {
Group data = ph.getGroup(entryName);
if (data == null) {
@ -1223,21 +1263,25 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
@Override
public void addUserInfo(String name, String path, Object data) {
ph.getUser(name).getVariables().addVar(path, data);
}
@Override
public void removeUserInfo(String name, String path) {
ph.getUser(name).getVariables().removeVar(path);
}
@Override
public void addGroupInfo(String name, String path, Object data) {
ph.getGroup(name).getVariables().addVar(path, data);
}
@Override
public void removeGroupInfo(String name, String path) {
ph.getGroup(name).getVariables().removeVar(path);
}
}

View file

@ -1,18 +1,19 @@
/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*/
package org.anjocaido.groupmanager.permissions;
@ -47,7 +48,6 @@ import org.bukkit.permissions.PermissionAttachment;
import org.bukkit.permissions.PermissionAttachmentInfo;
import org.bukkit.plugin.PluginManager;
/**
*
* BukkitPermissions overrides to force GM reponses to Superperms
@ -67,6 +67,7 @@ public class BukkitPermissions {
* @return the player_join
*/
public boolean isPlayer_join() {
return player_join;
}
@ -74,6 +75,7 @@ public class BukkitPermissions {
* @param player_join the player_join to set
*/
public void setPlayer_join(boolean player_join) {
this.player_join = player_join;
}
@ -92,6 +94,7 @@ public class BukkitPermissions {
}
public BukkitPermissions(GroupManager plugin) {
this.plugin = plugin;
this.collectPermissions();
this.registerEvents();
@ -101,14 +104,15 @@ public class BukkitPermissions {
}
private void registerEvents() {
PluginManager manager = plugin.getServer().getPluginManager();
manager.registerEvents(new PlayerEvents(), plugin);
manager.registerEvents(new BukkitEvents(), plugin);
}
public void collectPermissions() {
registeredPermissions.clear();
for (Permission perm : Bukkit.getPluginManager().getPermissions()) {
@ -118,18 +122,20 @@ public class BukkitPermissions {
}
public void updatePermissions(Player player) {
this.updatePermissions(player, null);
}
/**
* Push all permissions which are registered with GM for this player, on this world to Bukkit
* Push all permissions which are registered with GM for this player, on
* this world to Bukkit
* and make it update for the child nodes.
*
* @param player
* @param world
*/
public void updatePermissions(Player player, String world) {
if (player == null || !GroupManager.isLoaded()) {
return;
}
@ -159,11 +165,12 @@ public class BukkitPermissions {
Boolean value = false;
for (String permission : playerPermArray) {
value = (!permission.startsWith("-"));
newPerms.put((value? permission : permission.substring(1)), value);
newPerms.put((value ? permission : permission.substring(1)), value);
}
/**
* This is put in place until such a time as Bukkit pull 466 is implemented
* This is put in place until such a time as Bukkit pull 466 is
* implemented
* https://github.com/Bukkit/Bukkit/pull/466
*/
try { // Codename_B source
@ -194,15 +201,15 @@ public class BukkitPermissions {
List<String> result = new ArrayList<String>();
for (String key : permList) {
String a = key.charAt(0) == '-'? key.substring(1):key;
String a = key.charAt(0) == '-' ? key.substring(1) : key;
Map<String, Boolean> allchildren = GroupManager.BukkitPermissions.getAllChildren(a, new HashSet<String>());
if (allchildren != null) {
ListIterator<String> itr = result.listIterator();
while (itr.hasNext()){
while (itr.hasNext()) {
String node = (String) itr.next();
String b = node.charAt(0) == '-'? node.substring(1):node;
String b = node.charAt(0) == '-' ? node.substring(1) : node;
// Insert the parent node before the child
if (allchildren.containsKey(b)) {
@ -219,7 +226,6 @@ public class BukkitPermissions {
return result;
}
/**
* Fetch all permissions which are registered with superperms.
* {can include child nodes)
@ -254,7 +260,8 @@ public class BukkitPermissions {
* null is empty
*
* @param node
* @param playerPermArray current list of perms to check against for negations
* @param playerPermArray current list of perms to check against for
* negations
* @return Map of child permissions
*/
public Map<String, Boolean> getAllChildren(String node, Set<String> playerPermArray) {
@ -269,7 +276,7 @@ public class BukkitPermissions {
Map<String, Boolean> children = getChildren(now);
if ((children != null) && (!playerPermArray.contains("-"+now))) {
if ((children != null) && (!playerPermArray.contains("-" + now))) {
for (String childName : children.keySet()) {
if (!alreadyVisited.containsKey(childName)) {
stack.push(childName);
@ -279,13 +286,15 @@ public class BukkitPermissions {
}
}
alreadyVisited.remove(node);
if (!alreadyVisited.isEmpty()) return alreadyVisited;
if (!alreadyVisited.isEmpty())
return alreadyVisited;
return null;
}
/**
* Returns a map of the child permissions (1 node deep) as registered with Bukkit.
* Returns a map of the child permissions (1 node deep) as registered with
* Bukkit.
* null is empty
*
* @param node
@ -308,6 +317,7 @@ public class BukkitPermissions {
* @return List<String> of permissions
*/
public List<String> listPerms(Player player) {
List<String> perms = new ArrayList<String>();
/*
@ -332,6 +342,7 @@ public class BukkitPermissions {
* force Bukkit to update every OnlinePlayers permissions.
*/
public void updateAllPlayers() {
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
updatePermissions(player);
}
@ -341,6 +352,7 @@ public class BukkitPermissions {
* force Bukkit to update this Players permissions.
*/
public void updatePlayer(Player player) {
if (player != null)
this.updatePermissions(player, null);
}
@ -351,6 +363,7 @@ public class BukkitPermissions {
* @param player
*/
private void removeAttachment(Player player) {
if (attachments.containsKey(player)) {
try {
player.removeAttachment(attachments.get(player));
@ -371,7 +384,7 @@ public class BukkitPermissions {
Iterator<Player> itr = attachments.keySet().iterator();
while (itr.hasNext()){
while (itr.hasNext()) {
Player player = itr.next();
try {
player.removeAttachment(attachments.get(player));
@ -395,6 +408,7 @@ public class BukkitPermissions {
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerJoin(PlayerJoinEvent event) {
setPlayer_join(true);
Player player = event.getPlayer();
@ -413,11 +427,13 @@ public class BukkitPermissions {
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerChangeWorld(PlayerChangedWorldEvent event) { // has changed worlds
updatePermissions(event.getPlayer(), event.getPlayer().getWorld().getName());
}
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerKick(PlayerKickEvent event) {
Player player = event.getPlayer();
/*
@ -428,6 +444,7 @@ public class BukkitPermissions {
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerQuit(PlayerQuitEvent event) {
if (!GroupManager.isLoaded())
return;
@ -444,6 +461,7 @@ public class BukkitPermissions {
@EventHandler(priority = EventPriority.NORMAL)
public void onPluginEnable(PluginEnableEvent event) {
if (!GroupManager.isLoaded())
return;
@ -453,6 +471,7 @@ public class BukkitPermissions {
@EventHandler(priority = EventPriority.NORMAL)
public void onPluginDisable(PluginDisableEvent event) {
collectPermissions();
// updateAllPlayers();
}

View file

@ -169,7 +169,7 @@ public abstract class PermissionsReaderInterface {
*/
public abstract double getPermissionDouble(String userName, String node);
/////////////////////////////
/////////////////////////////
/**
* Gets the appropriate prefix for the user.
* This method is a utility method for chat plugins to get the user's prefix
@ -193,36 +193,47 @@ public abstract class PermissionsReaderInterface {
public abstract String getUserSuffix(String user);
/**
* Returns the group object representing the default group of the given world.
* This method will return null if the object does not exist or the world has no default group.
* @return Group object representing default world, or null if it doesn't exist or is not defined.
* Returns the group object representing the default group of the given
* world.
* This method will return null if the object does not exist or the world
* has no default group.
*
* @return Group object representing default world, or null if it doesn't
* exist or is not defined.
*/
public abstract Group getDefaultGroup();
/**
* Gets a array of the names of all parent groups in the same world.
*
* @param name Target user's name
* @return An array containing the names of all parent groups (including ancestors) that are in the same world
* @return An array containing the names of all parent groups (including
* ancestors) that are in the same world
*/
public abstract String[] getGroups(String name);
public abstract String getInfoString(String entryName, String path, boolean isGroup);
//public abstract String getInfoString(String entryName, String path, boolean isGroup, Comparator<String> comparator);
public abstract int getInfoInteger(String entryName, String path, boolean isGroup);
//public abstract int getInfoInteger(String entryName, String path, boolean isGroup, Comparator<Integer> comparator);
/**
* Gets a double from the Info node without inheritance.
*
* @param entryName
* @param path
* @param isGroup
* @return -1 if not found
*/
public abstract double getInfoDouble(String entryName, String path, boolean isGroup);
//public abstract double getInfoDouble(String entryName, String path, boolean isGroup, Comparator<Double> comparator);
public abstract boolean getInfoBoolean(String entryName, String path, boolean isGroup);
//public abstract boolean getInfoBoolean(String entryName, String path, boolean isGroup, Comparator<Boolean> comparator);
public abstract void addUserInfo(String name, String path, Object data);
@ -232,7 +243,8 @@ public abstract class PermissionsReaderInterface {
public abstract void addGroupInfo(String name, String path, Object data);
public abstract void removeGroupInfo(String name, String path);
//////////////////////////////
//////////////////////////////
public abstract List<String> getAllPlayersPermissions(String userName);

View file

@ -16,6 +16,7 @@ public class GMLoggerHandler extends ConsoleHandler {
@Override
public void publish(LogRecord record) {
String message = "GroupManager - " + record.getLevel() + " - " + record.getMessage();
if (record.getLevel().equals(Level.SEVERE) || record.getLevel().equals(Level.WARNING)) {
System.err.println(message);

View file

@ -6,47 +6,10 @@ package org.anjocaido.groupmanager.utils;
/**
* Just a list of commands for this plugin
*
* @author gabrielcouto
*/
public enum GroupManagerPermissions {
manuadd,
manudel,
manuaddsub,
manudelsub,
mangadd,
mangdel,
manuaddp,
manudelp,
manulistp,
manucheckp,
mangaddp,
mangdelp,
manglistp,
mangcheckp,
mangaddi,
mangdeli,
manuaddv,
manudelv,
manulistv,
manucheckv,
mangaddv,
mangdelv,
manglistv,
mangcheckv,
manwhois,
tempadd,
tempdel,
templist,
tempdelall,
mansave,
manload,
listgroups,
manpromote,
mandemote,
mantogglevalidate,
mantogglesave,
manworld,
manselect,
manclear
manuadd, manudel, manuaddsub, manudelsub, mangadd, mangdel, manuaddp, manudelp, manulistp, manucheckp, mangaddp, mangdelp, manglistp, mangcheckp, mangaddi, mangdeli, manuaddv, manudelv, manulistv, manucheckv, mangaddv, mangdelv, manglistv, mangcheckv, manwhois, tempadd, tempdel, templist, tempdelall, mansave, manload, listgroups, manpromote, mandemote, mantogglevalidate, mantogglesave, manworld, manselect, manclear
}

View file

@ -14,6 +14,7 @@ public class StringPermissionComparator implements Comparator<String> {
@Override
public int compare(String permA, String permB) {
boolean ap = permA.startsWith("+");
boolean bp = permB.startsWith("+");
boolean am = permA.startsWith("-");
@ -38,9 +39,11 @@ public class StringPermissionComparator implements Comparator<String> {
}
return permA.compareToIgnoreCase(permB);
}
private static StringPermissionComparator instance;
public static StringPermissionComparator getInstance() {
if (instance == null) {
instance = new StringPermissionComparator();
}

View file

@ -22,7 +22,6 @@ import java.util.List;
import org.anjocaido.groupmanager.GroupManager;
import org.anjocaido.groupmanager.data.Group;
/**
*
* @author gabrielcouto
@ -36,6 +35,7 @@ public abstract class Tasks {
* @return stack trace as a string
*/
public static String getStackTraceAsString(Exception exception) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
exception.printStackTrace(pw);
@ -43,6 +43,7 @@ public abstract class Tasks {
}
public static void copy(InputStream src, File dst) throws IOException {
InputStream in = src;
OutputStream out = new FileOutputStream(dst);
@ -60,6 +61,7 @@ public abstract class Tasks {
}
public static void copy(File src, File dst) throws IOException {
InputStream in = new FileInputStream(src);
copy(in, dst);
}
@ -87,8 +89,9 @@ public abstract class Tasks {
}
public static void removeOldFiles(GroupManager gm, File folder) {
if (folder.isDirectory()) {
long oldTime = System.currentTimeMillis() - (((long)gm.getGMConfig().getBackupDuration()*60*60)*1000);
long oldTime = System.currentTimeMillis() - (((long) gm.getGMConfig().getBackupDuration() * 60 * 60) * 1000);
for (File olds : folder.listFiles()) {
if (olds.isFile()) {
if (olds.lastModified() < oldTime) {
@ -103,6 +106,7 @@ public abstract class Tasks {
}
public static String getDateString() {
GregorianCalendar now = new GregorianCalendar();
String date = "";
date += now.get(Calendar.DAY_OF_MONTH);
@ -114,6 +118,7 @@ public abstract class Tasks {
}
public static String getStringListInString(List<String> list) {
if (list == null) {
return "";
}
@ -128,6 +133,7 @@ public abstract class Tasks {
}
public static String getStringArrayInString(String[] list) {
if (list == null) {
return "";
}
@ -142,6 +148,7 @@ public abstract class Tasks {
}
public static String getGroupListInString(List<Group> list) {
if (list == null) {
return "";
}
@ -156,6 +163,7 @@ public abstract class Tasks {
}
public static String join(String[] arr, String separator) {
if (arr.length == 0)
return "";
String out = arr[0].toString();