summaryrefslogtreecommitdiffstats
path: root/EssentialsGroupManager
diff options
context:
space:
mode:
authorElgarL <ElgarL@palmergames.com>2012-10-01 17:50:08 +0100
committerElgarL <ElgarL@palmergames.com>2012-10-01 17:50:08 +0100
commit8cf2ce7b73829a3496397d2a4405a0618bed5798 (patch)
treeb8a051d8478d10ebe0bdd72d483330cb08508bb6 /EssentialsGroupManager
parent1ecf592893213d54dd4005dfc3de28d1a682ddc2 (diff)
parent0dd0dba33837ce73f784704f893848aa9d7282e9 (diff)
downloadEssentials-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')
-rw-r--r--EssentialsGroupManager/src/Changelog.txt4
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java2
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java2
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java2
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java237
-rw-r--r--EssentialsGroupManager/src/users.yml6
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