diff options
author | ElgarL <ElgarL@palmergames.com> | 2012-10-01 17:50:08 +0100 |
---|---|---|
committer | ElgarL <ElgarL@palmergames.com> | 2012-10-01 17:50:08 +0100 |
commit | 8cf2ce7b73829a3496397d2a4405a0618bed5798 (patch) | |
tree | b8a051d8478d10ebe0bdd72d483330cb08508bb6 /EssentialsGroupManager | |
parent | 1ecf592893213d54dd4005dfc3de28d1a682ddc2 (diff) | |
parent | 0dd0dba33837ce73f784704f893848aa9d7282e9 (diff) | |
download | Essentials-8cf2ce7b73829a3496397d2a4405a0618bed5798.tar Essentials-8cf2ce7b73829a3496397d2a4405a0618bed5798.tar.gz Essentials-8cf2ce7b73829a3496397d2a4405a0618bed5798.tar.lz Essentials-8cf2ce7b73829a3496397d2a4405a0618bed5798.tar.xz Essentials-8cf2ce7b73829a3496397d2a4405a0618bed5798.zip |
Merge branch '2.9' of https://ElgarL@github.com/essentials/Essentials.git into 2.9
Diffstat (limited to 'EssentialsGroupManager')
6 files changed, 120 insertions, 133 deletions
diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index c170b725a..0c9b13a47 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -198,4 +198,6 @@ v 2.0: - Give a better error when a subgroup is null.
- Include the GM version when logging errors.
- Fix Synchronization on adding subgroups (thanks snowleo).
- - Remove info node support from GlobalGroups. It should not have them as GlobalGroups are only permission collections.
\ No newline at end of file + - Remove info node support from GlobalGroups. It should not have them as GlobalGroups are only permission collections.
+ - Change order of data in Users.yml to [name, Group, SubGroup, Permissions, Info nodes].
+ - Add alphabetically sorted user lists.
\ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index 46ec861a3..ee1130483 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -1654,7 +1654,7 @@ public class GroupManager extends JavaPlugin { try { worldsHolder.saveChanges(forced); - sender.sendMessage(ChatColor.YELLOW + " All changes were saved."); + sender.sendMessage(ChatColor.YELLOW + "All changes were saved."); } catch (IllegalStateException ex) { sender.sendMessage(ChatColor.RED + ex.getMessage()); } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java index fdd099c87..418405f65 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java @@ -69,7 +69,7 @@ public class GroupsDataHolder { }
/**
- * @param groups the groups to set
+ * Resets the Groups
*/
public void resetGroups() {
this.groups.clear();
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java index 8a3c4c102..5f14a7d45 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java @@ -52,7 +52,7 @@ public class UsersDataHolder { }
/**
- * @param users the users to set
+ * Resets the Users
*/
public void resetUsers() {
this.users.clear();
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java index 4d85eff68..a4b346154 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java @@ -15,8 +15,10 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.TreeSet; import java.util.logging.Level; import java.util.logging.Logger; import org.anjocaido.groupmanager.GroupManager; @@ -37,9 +39,9 @@ import org.yaml.snakeyaml.constructor.SafeConstructor; import org.yaml.snakeyaml.reader.UnicodeReader; /** - * One instance of this should exist per world/mirror - * it contains all functions to manage these data sets - * and points to the relevant users and groups objects. + * One instance of this should exist per world/mirror it contains all functions + * to manage these data sets and points to the relevant users and groups + * objects. * * @author gabrielcouto, ElgarL */ @@ -100,8 +102,8 @@ public class WorldDataHolder { } /** - * Search for a user. If it doesn't exist, create a new one with - * default group. + * Search for a user. If it doesn't exist, create a new one with default + * group. * * @param userName the name of the user * @return class that manage that user permission @@ -207,8 +209,8 @@ public class WorldDataHolder { } /** - * Check if a group exists. - * Its the same of getGroup, but check if it is null. + * 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. @@ -272,8 +274,7 @@ public class WorldDataHolder { } /** - * Creates a new User with the given name - * and adds it to this holder. + * 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 @@ -291,8 +292,7 @@ public class WorldDataHolder { } /** - * Creates a new Group with the given name - * and adds it to this holder + * 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 @@ -319,7 +319,8 @@ public class WorldDataHolder { * @return a collection of the groups */ public Collection<Group> getGroupList() { - synchronized(getGroups()) { + + synchronized (getGroups()) { return new ArrayList<Group>(getGroups().values()); } } @@ -329,7 +330,8 @@ public class WorldDataHolder { * @return a collection of the users */ public Collection<User> getUserList() { - synchronized(getUsers()) { + + synchronized (getUsers()) { return new ArrayList<User>(getUsers().values()); } } @@ -510,7 +512,7 @@ public class WorldDataHolder { } catch (Exception ex) { throw new IllegalArgumentException("Your " + groupsFile.getPath() + " file is invalid. See console for details.", ex); } - + if (allGroupsNode == null) { throw new IllegalArgumentException("You have no groups in " + groupsFile.getPath() + "."); } @@ -520,8 +522,7 @@ public class WorldDataHolder { Integer groupCount = 0; /* - * loop each group entry - * and process it's data. + * loop each group entry and process it's data. */ while (groupItr.hasNext()) { @@ -545,8 +546,7 @@ public class WorldDataHolder { } /* - * Create a new group with this name - * in the assigned data source. + * Create a new group with this name in the assigned data source. */ Group thisGrp = ph.createGroup(groupKey); @@ -569,8 +569,8 @@ public class WorldDataHolder { */ } else if ((Boolean.parseBoolean(nodeData.toString()))) { /* - * Set this as the default group. - * Warn if some other group has already claimed that position. + * Set this as the default group. Warn if some other group has + * already claimed that position. */ if (ph.getDefaultGroup() != null) { GroupManager.logger.warning("The group '" + thisGrp.getName() + "' is claiming to be default where '" + ph.getDefaultGroup().getName() + "' already was."); @@ -590,8 +590,7 @@ public class WorldDataHolder { if (nodeData == null) { /* - * If no permissions node is found, or it's empty - * do nothing. + * If no permissions node is found, or it's empty do nothing. */ } else { /* @@ -677,8 +676,8 @@ public class WorldDataHolder { if (nodeData == null || nodeData instanceof List) { if (nodeData == null) { /* - * If no inheritance node is found, or it's empty - * do nothing. + * If no inheritance node is found, or it's empty do + * nothing. */ } else if (nodeData instanceof List) { @@ -790,10 +789,10 @@ public class WorldDataHolder { // Attempt to fetch the next user name. node = usersItr.next(); if (node instanceof Integer) - usersKey = Integer.toString((Integer)node); + usersKey = Integer.toString((Integer) node); else usersKey = node.toString(); - + } catch (Exception ex) { throw new IllegalArgumentException("Invalid node type for user entry (" + userCount + ") in file: " + usersFile.getPath(), ex); } @@ -821,8 +820,8 @@ public class WorldDataHolder { if (nodeData == null) { /* - * If no permissions node is found, or it's empty - * do nothing. + * If no permissions node is found, or it's empty do + * nothing. */ } else { if (nodeData instanceof List) { @@ -858,8 +857,7 @@ public class WorldDataHolder { if (nodeData == null) { /* - * If no subgroups node is found, or it's empty - * do nothing. + * If no subgroups node is found, or it's empty do nothing. */ } else if (nodeData instanceof List) { for (Object o : ((List) nodeData)) { @@ -894,8 +892,7 @@ public class WorldDataHolder { if (nodeData == null) { /* - * If no info node is found, or it's empty - * do nothing. + * If no info node is found, or it's empty do nothing. */ } else if (nodeData instanceof Map) { thisUser.setVariables((Map<String, Object>) nodeData); @@ -946,29 +943,29 @@ public class WorldDataHolder { Map<String, Object> groupsMap = new HashMap<String, Object>(); root.put("groups", groupsMap); - synchronized(ph.getGroups()) { - for (String groupKey : ph.getGroups().keySet()) { - Group group = ph.getGroups().get(groupKey); + synchronized (ph.getGroups()) { + for (String groupKey : ph.getGroups().keySet()) { + Group group = ph.getGroups().get(groupKey); - Map<String, Object> aGroupMap = new HashMap<String, Object>(); - groupsMap.put(group.getName(), aGroupMap); + Map<String, Object> aGroupMap = new HashMap<String, Object>(); + groupsMap.put(group.getName(), aGroupMap); - if (ph.getDefaultGroup() == null) { - GroupManager.logger.severe("There is no default group for world: " + ph.getName()); - } - aGroupMap.put("default", group.equals(ph.getDefaultGroup())); + if (ph.getDefaultGroup() == null) { + GroupManager.logger.severe("There is no default group for world: " + ph.getName()); + } + aGroupMap.put("default", group.equals(ph.getDefaultGroup())); - Map<String, Object> infoMap = new HashMap<String, Object>(); - aGroupMap.put("info", infoMap); + Map<String, Object> infoMap = new HashMap<String, Object>(); + aGroupMap.put("info", infoMap); - for (String infoKey : group.getVariables().getVarKeyList()) { - infoMap.put(infoKey, group.getVariables().getVarObject(infoKey)); - } + for (String infoKey : group.getVariables().getVarKeyList()) { + infoMap.put(infoKey, group.getVariables().getVarObject(infoKey)); + } - aGroupMap.put("inheritance", group.getInherits()); + aGroupMap.put("inheritance", group.getInherits()); - aGroupMap.put("permissions", group.getPermissionList()); - } + aGroupMap.put("permissions", group.getPermissionList()); + } } if (!root.isEmpty()) { @@ -1008,18 +1005,9 @@ public class WorldDataHolder { 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) { } } */ } @@ -1032,39 +1020,45 @@ public class WorldDataHolder { public static void writeUsers(WorldDataHolder ph, File usersFile) { Map<String, Object> root = new HashMap<String, Object>(); - - Map<String, Object> usersMap = new HashMap<String, Object>(); + LinkedHashMap<String, Object> usersMap = new LinkedHashMap<String, Object>(); + root.put("users", usersMap); - synchronized(ph.getUsers()) { - for (String userKey : ph.getUsers().keySet()) { - User user = ph.getUsers().get(userKey); - if ((user.getGroup() == null || user.getGroup().equals(ph.getDefaultGroup())) && user.getPermissionList().isEmpty() && user.getVariables().isEmpty() && user.isSubGroupsEmpty()) { - continue; - } + synchronized (ph.getUsers()) { + + // A sorted list of users. + for (String userKey : new TreeSet<String>(ph.getUsers().keySet())) { + User user = ph.getUsers().get(userKey); + if ((user.getGroup() == null || user.getGroup().equals(ph.getDefaultGroup())) && user.getPermissionList().isEmpty() && user.getVariables().isEmpty() && user.isSubGroupsEmpty()) { + continue; + } - Map<String, Object> aUserMap = new HashMap<String, Object>(); - usersMap.put(user.getName(), aUserMap); + LinkedHashMap<String, Object> aUserMap = new LinkedHashMap<String, Object>(); + usersMap.put(user.getName(), aUserMap); - if (user.getGroup() == null) { - aUserMap.put("group", ph.getDefaultGroup().getName()); - } else { - aUserMap.put("group", user.getGroup().getName()); - } - // USER INFO NODE - BETA - if (user.getVariables().getSize() > 0) { - Map<String, Object> infoMap = new HashMap<String, Object>(); - aUserMap.put("info", infoMap); - for (String infoKey : user.getVariables().getVarKeyList()) { - infoMap.put(infoKey, user.getVariables().getVarObject(infoKey)); + // GROUP NODE + if (user.getGroup() == null) { + aUserMap.put("group", ph.getDefaultGroup().getName()); + } else { + aUserMap.put("group", user.getGroup().getName()); } - } - // END USER INFO NODE - BETA - aUserMap.put("permissions", user.getPermissionList()); - // SUBGROUPS NODE - BETA - aUserMap.put("subgroups", user.subGroupListStringCopy()); - // END SUBGROUPS NODE - BETA - } + // SUBGROUPS NODE + aUserMap.put("subgroups", user.subGroupListStringCopy()); + + // PERMISSIONS NODE + aUserMap.put("permissions", user.getPermissionList()); + + // USER INFO NODE - BETA + if (user.getVariables().getSize() > 0) { + Map<String, Object> infoMap = new HashMap<String, Object>(); + aUserMap.put("info", infoMap); + for (String infoKey : user.getVariables().getVarKeyList()) { + infoMap.put(infoKey, user.getVariables().getVarObject(infoKey)); + } + } + // END USER INFO NODE - BETA + + } } if (!root.isEmpty()) { @@ -1090,32 +1084,20 @@ public class WorldDataHolder { 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. + * 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, - * without need to save the file. + * 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 @@ -1165,13 +1147,13 @@ public class WorldDataHolder { if (users.HaveUsersChanged()) { return true; } - synchronized(users.getUsers()) { - for (User u : users.getUsers().values()) { - if (u.isChanged()) { - return true; + synchronized (users.getUsers()) { + for (User u : users.getUsers().values()) { + if (u.isChanged()) { + return true; + } } } - } return false; } @@ -1192,13 +1174,13 @@ public class WorldDataHolder { if (groups.HaveGroupsChanged()) { return true; } - synchronized(groups.getGroups()) { - for (Group g : groups.getGroups().values()) { - if (g.isChanged()) { - return true; + synchronized (groups.getGroups()) { + for (Group g : groups.getGroups().values()) { + if (g.isChanged()) { + return true; + } } } - } return false; } @@ -1208,10 +1190,10 @@ public class WorldDataHolder { public void removeUsersChangedFlag() { setUsersChanged(false); - synchronized(getUsers()) { - for (User u : getUsers().values()) { - u.flagAsSaved(); - } + synchronized (getUsers()) { + for (User u : getUsers().values()) { + u.flagAsSaved(); + } } } @@ -1221,10 +1203,10 @@ public class WorldDataHolder { public void removeGroupsChangedFlag() { setGroupsChanged(false); - synchronized(getGroups()) { - for (Group g : getGroups().values()) { - g.flagAsSaved(); - } + synchronized (getGroups()) { + for (Group g : getGroups().values()) { + g.flagAsSaved(); + } } } @@ -1281,11 +1263,13 @@ public class WorldDataHolder { * Resets Users */ public void resetUsers() { + users.resetUsers(); } /** * Note: Iteration over this object has to be synchronized! + * * @return the groups */ public Map<String, Group> getGroups() { @@ -1295,6 +1279,7 @@ public class WorldDataHolder { /** * Note: Iteration over this object has to be synchronized! + * * @return the users */ public Map<String, User> getUsers() { diff --git a/EssentialsGroupManager/src/users.yml b/EssentialsGroupManager/src/users.yml index 72a7b652f..19496ad84 100644 --- a/EssentialsGroupManager/src/users.yml +++ b/EssentialsGroupManager/src/users.yml @@ -1,15 +1,15 @@ # "For a more advanced configuration example utilizing the advanced features of GroupManager, see http://pastebin.com/a8ZA0j5G" users: snowleo: + group: Builder subgroups: [] permissions: [] - group: Builder KHobbits: + group: Moderator subgroups: [] permissions: [] - group: Moderator ElgarL: + group: Moderator subgroups: [] permissions: [] - group: Moderator |