Change order of data in Users.yml to [name, Group, SubGroup,

Permissions, Info nodes].
This commit is contained in:
ElgarL 2012-09-25 13:09:26 +01:00
parent f025cd9d2f
commit d4e2ed782e
2 changed files with 112 additions and 130 deletions

View file

@ -199,3 +199,4 @@ v 2.0:
- Include the GM version when logging errors. - Include the GM version when logging errors.
- Fix Synchronization on adding subgroups (thanks snowleo). - Fix Synchronization on adding subgroups (thanks snowleo).
- Remove info node support from GlobalGroups. It should not have them as GlobalGroups are only permission collections. - 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].

View file

@ -37,9 +37,9 @@ import org.yaml.snakeyaml.constructor.SafeConstructor;
import org.yaml.snakeyaml.reader.UnicodeReader; import org.yaml.snakeyaml.reader.UnicodeReader;
/** /**
* One instance of this should exist per world/mirror * One instance of this should exist per world/mirror it contains all functions
* it contains all functions to manage these data sets * to manage these data sets and points to the relevant users and groups
* and points to the relevant users and groups objects. * objects.
* *
* @author gabrielcouto, ElgarL * @author gabrielcouto, ElgarL
*/ */
@ -100,8 +100,8 @@ public class WorldDataHolder {
} }
/** /**
* Search for a user. If it doesn't exist, create a new one with * Search for a user. If it doesn't exist, create a new one with default
* default group. * group.
* *
* @param userName the name of the user * @param userName the name of the user
* @return class that manage that user permission * @return class that manage that user permission
@ -207,8 +207,8 @@ public class WorldDataHolder {
} }
/** /**
* Check if a group exists. * Check if a group exists. Its the same of getGroup, but check if it is
* Its the same of getGroup, but check if it is null. * null.
* *
* @param groupName the name of the group * @param groupName the name of the group
* @return true if exists. false if not. * @return true if exists. false if not.
@ -272,8 +272,7 @@ public class WorldDataHolder {
} }
/** /**
* Creates a new User with the given name * Creates a new User with the given name and adds it to this holder.
* and adds it to this holder.
* *
* @param userName the username you want * @param userName the username you want
* @return null if user already exists. or new User * @return null if user already exists. or new User
@ -291,8 +290,7 @@ public class WorldDataHolder {
} }
/** /**
* Creates a new Group with the given name * Creates a new Group with the given name and adds it to this holder
* and adds it to this holder
* *
* @param groupName the groupname you want * @param groupName the groupname you want
* @return null if group already exists. or new Group * @return null if group already exists. or new Group
@ -319,6 +317,7 @@ public class WorldDataHolder {
* @return a collection of the groups * @return a collection of the groups
*/ */
public Collection<Group> getGroupList() { public Collection<Group> getGroupList() {
synchronized (getGroups()) { synchronized (getGroups()) {
return new ArrayList<Group>(getGroups().values()); return new ArrayList<Group>(getGroups().values());
} }
@ -329,6 +328,7 @@ public class WorldDataHolder {
* @return a collection of the users * @return a collection of the users
*/ */
public Collection<User> getUserList() { public Collection<User> getUserList() {
synchronized (getUsers()) { synchronized (getUsers()) {
return new ArrayList<User>(getUsers().values()); return new ArrayList<User>(getUsers().values());
} }
@ -520,8 +520,7 @@ public class WorldDataHolder {
Integer groupCount = 0; Integer groupCount = 0;
/* /*
* loop each group entry * loop each group entry and process it's data.
* and process it's data.
*/ */
while (groupItr.hasNext()) { while (groupItr.hasNext()) {
@ -545,8 +544,7 @@ public class WorldDataHolder {
} }
/* /*
* Create a new group with this name * Create a new group with this name in the assigned data source.
* in the assigned data source.
*/ */
Group thisGrp = ph.createGroup(groupKey); Group thisGrp = ph.createGroup(groupKey);
@ -569,8 +567,8 @@ public class WorldDataHolder {
*/ */
} else if ((Boolean.parseBoolean(nodeData.toString()))) { } else if ((Boolean.parseBoolean(nodeData.toString()))) {
/* /*
* Set this as the default group. * Set this as the default group. Warn if some other group has
* Warn if some other group has already claimed that position. * already claimed that position.
*/ */
if (ph.getDefaultGroup() != null) { if (ph.getDefaultGroup() != null) {
GroupManager.logger.warning("The group '" + thisGrp.getName() + "' is claiming to be default where '" + ph.getDefaultGroup().getName() + "' already was."); GroupManager.logger.warning("The group '" + thisGrp.getName() + "' is claiming to be default where '" + ph.getDefaultGroup().getName() + "' already was.");
@ -590,8 +588,7 @@ public class WorldDataHolder {
if (nodeData == null) { if (nodeData == null) {
/* /*
* If no permissions node is found, or it's empty * If no permissions node is found, or it's empty do nothing.
* do nothing.
*/ */
} else { } else {
/* /*
@ -677,8 +674,8 @@ public class WorldDataHolder {
if (nodeData == null || nodeData instanceof List) { if (nodeData == null || nodeData instanceof List) {
if (nodeData == null) { if (nodeData == null) {
/* /*
* If no inheritance node is found, or it's empty * If no inheritance node is found, or it's empty do
* do nothing. * nothing.
*/ */
} else if (nodeData instanceof List) { } else if (nodeData instanceof List) {
@ -821,8 +818,8 @@ public class WorldDataHolder {
if (nodeData == null) { if (nodeData == null) {
/* /*
* If no permissions node is found, or it's empty * If no permissions node is found, or it's empty do
* do nothing. * nothing.
*/ */
} else { } else {
if (nodeData instanceof List) { if (nodeData instanceof List) {
@ -858,8 +855,7 @@ public class WorldDataHolder {
if (nodeData == null) { if (nodeData == null) {
/* /*
* If no subgroups node is found, or it's empty * If no subgroups node is found, or it's empty do nothing.
* do nothing.
*/ */
} else if (nodeData instanceof List) { } else if (nodeData instanceof List) {
for (Object o : ((List) nodeData)) { for (Object o : ((List) nodeData)) {
@ -894,8 +890,7 @@ public class WorldDataHolder {
if (nodeData == null) { if (nodeData == null) {
/* /*
* If no info node is found, or it's empty * If no info node is found, or it's empty do nothing.
* do nothing.
*/ */
} else if (nodeData instanceof Map) { } else if (nodeData instanceof Map) {
thisUser.setVariables((Map<String, Object>) nodeData); thisUser.setVariables((Map<String, Object>) nodeData);
@ -1008,18 +1003,9 @@ public class WorldDataHolder {
GroupManagerEventHandler.callEvent(GMSystemEvent.Action.SAVED); GroupManagerEventHandler.callEvent(GMSystemEvent.Action.SAVED);
/* /*
* FileWriter tx = null; * FileWriter tx = null; try { tx = new FileWriter(groupsFile, false);
* try { * tx.write(yaml.dump(root)); tx.flush(); } catch (Exception e) { }
* tx = new FileWriter(groupsFile, false); * finally { try { tx.close(); } catch (IOException ex) { } }
* tx.write(yaml.dump(root));
* tx.flush();
* } catch (Exception e) {
* } finally {
* try {
* tx.close();
* } catch (IOException ex) {
* }
* }
*/ */
} }
@ -1045,11 +1031,19 @@ public class WorldDataHolder {
Map<String, Object> aUserMap = new HashMap<String, Object>(); Map<String, Object> aUserMap = new HashMap<String, Object>();
usersMap.put(user.getName(), aUserMap); usersMap.put(user.getName(), aUserMap);
// GROUP NODE
if (user.getGroup() == null) { if (user.getGroup() == null) {
aUserMap.put("group", ph.getDefaultGroup().getName()); aUserMap.put("group", ph.getDefaultGroup().getName());
} else { } else {
aUserMap.put("group", user.getGroup().getName()); aUserMap.put("group", user.getGroup().getName());
} }
// SUBGROUPS NODE
aUserMap.put("subgroups", user.subGroupListStringCopy());
// PERMISSIONS NODE
aUserMap.put("permissions", user.getPermissionList());
// USER INFO NODE - BETA // USER INFO NODE - BETA
if (user.getVariables().getSize() > 0) { if (user.getVariables().getSize() > 0) {
Map<String, Object> infoMap = new HashMap<String, Object>(); Map<String, Object> infoMap = new HashMap<String, Object>();
@ -1059,11 +1053,7 @@ public class WorldDataHolder {
} }
} }
// END USER INFO NODE - BETA // END USER INFO NODE - BETA
aUserMap.put("permissions", user.getPermissionList());
// SUBGROUPS NODE - BETA
aUserMap.put("subgroups", user.subGroupListStringCopy());
// END SUBGROUPS NODE - BETA
} }
} }
@ -1090,32 +1080,20 @@ public class WorldDataHolder {
GroupManagerEventHandler.callEvent(GMSystemEvent.Action.SAVED); GroupManagerEventHandler.callEvent(GMSystemEvent.Action.SAVED);
/* /*
* FileWriter tx = null; * FileWriter tx = null; try { tx = new FileWriter(usersFile, false);
* try { * tx.write(yaml.dump(root)); tx.flush(); } catch (Exception e) { }
* tx = new FileWriter(usersFile, false); * finally { try { tx.close(); } catch (IOException ex) { } }
* 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 * Don't use this. Unless you want to make this plugin to interact with
* original Nijikokun Permissions * original Nijikokun Permissions This method is supposed to make the
* This method is supposed to make the original one reload the file, and * original one reload the file, and propagate the changes made here.
* propagate the changes made here.
* *
* Prefer to use the AnjoCaido's fake version of Nijikokun's Permission * Prefer to use the AnjoCaido's fake version of Nijikokun's Permission
* plugin. * plugin. The AnjoCaido's Permission can propagate the changes made on this
* The AnjoCaido's Permission can propagate the changes made on this plugin * plugin instantly, without need to save the file.
* instantly,
* without need to save the file.
* *
* @param server the server that holds the plugin * @param server the server that holds the plugin
* @deprecated it is not used anymore... unless if you use original * @deprecated it is not used anymore... unless if you use original
@ -1281,11 +1259,13 @@ public class WorldDataHolder {
* Resets Users * Resets Users
*/ */
public void resetUsers() { public void resetUsers() {
users.resetUsers(); users.resetUsers();
} }
/** /**
* Note: Iteration over this object has to be synchronized! * Note: Iteration over this object has to be synchronized!
*
* @return the groups * @return the groups
*/ */
public Map<String, Group> getGroups() { public Map<String, Group> getGroups() {
@ -1295,6 +1275,7 @@ public class WorldDataHolder {
/** /**
* Note: Iteration over this object has to be synchronized! * Note: Iteration over this object has to be synchronized!
*
* @return the users * @return the users
*/ */
public Map<String, User> getUsers() { public Map<String, User> getUsers() {