diff options
author | snowleo <schneeleo@gmail.com> | 2011-08-14 21:56:40 +0200 |
---|---|---|
committer | snowleo <schneeleo@gmail.com> | 2011-08-14 21:56:40 +0200 |
commit | a2fa666fd5b1cd3f6fac82da1063268589fd967a (patch) | |
tree | 13ad9b3787832f0ced78de98e01ff035a58885af /EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions | |
parent | 76eb00575bcd855f74c1cf284a09a9c58f928f7d (diff) | |
download | Essentials-a2fa666fd5b1cd3f6fac82da1063268589fd967a.tar Essentials-a2fa666fd5b1cd3f6fac82da1063268589fd967a.tar.gz Essentials-a2fa666fd5b1cd3f6fac82da1063268589fd967a.tar.lz Essentials-a2fa666fd5b1cd3f6fac82da1063268589fd967a.tar.xz Essentials-a2fa666fd5b1cd3f6fac82da1063268589fd967a.zip |
GroupManager update to Permissions 3.1.6 API done by ElgarL
Diffstat (limited to 'EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions')
-rwxr-xr-x[-rw-r--r--] | EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java | 204 | ||||
-rwxr-xr-x[-rw-r--r--] | EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java | 77 |
2 files changed, 265 insertions, 16 deletions
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java index ca223da81..b892e653e 100644..100755 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java @@ -13,10 +13,11 @@ import org.anjocaido.groupmanager.data.Group; import org.anjocaido.groupmanager.dataholder.WorldDataHolder; import org.anjocaido.groupmanager.data.User; import org.anjocaido.groupmanager.utils.PermissionCheckResult; +import org.anjocaido.groupmanager.utils.PermissionCheckResult.Type; import org.bukkit.entity.Player; /** - * Everything here maintains the model created by Nijikokun + * Everything here maintains the model created by Nijikokun * * But implemented to use GroupManager system. Which provides instant changes, * without file access. @@ -49,7 +50,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Checks if a player can use that permission node. + * Checks if a player can use that permission node. * @param player * @param permission * @return @@ -60,6 +61,16 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** + * Checks if a player can use that permission node. + * @param playerName + * @param permission + * @return + */ + public boolean permission(String playerName, String permission) { + return checkUserPermission(ph.getUser(playerName), permission); + } + + /** * Returns the name of the group of that player name. * @param userName * @return @@ -70,7 +81,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Verify if player is in suck group. + * Verify if player is in suck group. * It will check it's groups inheritance. * * So if you have a group Admin > Moderator @@ -99,6 +110,75 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** + * Gets the appropriate prefix for the user. + * This method is a utility method for chat plugins to get the user's prefix + * without having to look at every one of the user's ancestors. + * Returns an empty string if user has no parent groups. + * @param user Player's name + * @return Player's prefix + */ + @Override + public String getUserPrefix(String user) { + + String prefix = ph.getUser(user).getVariables().getVarString("prefix"); + if (prefix.length() != 0) { + return prefix; + } + + return getGroupPrefix(getGroup(user)); + } + + /** + * Gets the appropriate prefix for the user. + * This method is a utility method for chat plugins to get the user's prefix + * without having to look at every one of the user's ancestors. + * Returns an empty string if user has no parent groups. + * @param user Player's name + * @return Player's prefix + */ + @Override + public String getUserSuffix(String user) { + + String suffix = ph.getUser(user).getVariables().getVarString("suffix"); + if (suffix.length() != 0) { + return suffix; + } + + return getGroupSuffix(getGroup(user)); + + } + + /** + * Gets name of the primary group of the user. + * Returns the name of the default group if user has no parent groups, + * or "Default" if there is no default group for that world. + * @param user Player's name + * @return Name of player's primary group + */ + public String getPrimaryGroup(String user) { + + return getGroup(user); + + } + + /** + * Check if user can build. + * @param world Player's world + * @param user Player's name + * @return Whether the user can build + */ + public boolean canUserBuild(String user) { + boolean test = ph.getUser(user).getVariables().getVarBoolean("build"); + + if (test) { + return test; + } + + return canGroupBuild(getGroup(user)); + + } + + /** * Returns the String prefix for the given group * @param groupName * @return empty string if found none. @@ -107,7 +187,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { public String getGroupPrefix(String groupName) { Group g = ph.getGroup(groupName); if (g == null) { - return null; + return ""; } return g.getVariables().getVarString("prefix"); } @@ -121,7 +201,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { public String getGroupSuffix(String groupName) { Group g = ph.getGroup(groupName); if (g == null) { - return null; + return ""; } return g.getVariables().getVarString("suffix"); } @@ -161,7 +241,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * It returns a Integer variable value + * It returns a Integer variable value * It will harvest inheritance for value. * @param groupName * @param variable @@ -619,8 +699,8 @@ 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(result.resultType.EXCEPTION) - || result.resultType.equals(result.resultType.FOUND)) { + if (result.resultType.equals(Type.EXCEPTION) + || result.resultType.equals(Type.FOUND)) { return true; } return false; @@ -682,8 +762,8 @@ 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(result.resultType.EXCEPTION) - || result.resultType.equals(result.resultType.FOUND)) { + if (result.resultType.equals(Type.EXCEPTION) + || result.resultType.equals(Type.FOUND)) { return (Group) checkGroupPermissionWithInheritance(start, permission).owner; } return null; @@ -699,7 +779,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { * @param start * @param alreadyChecked * @return the group that passed on test. null if no group passed. - * @deprecated use the other method with same name, instead + * @deprecated use the other method with same name, instead */ @Deprecated public ArrayList<String> listAllGroupsInherited(Group start, ArrayList<String> alreadyChecked) { @@ -807,9 +887,10 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { * @param userName * @return */ + @Override public String[] getGroups(String userName) { ArrayList<String> allGroups = listAllGroupsInherited(ph.getUser(userName).getGroup()); - for(Group subg: ph.getUser(userName).subGroupListCopy()){ + for (Group subg : ph.getUser(userName).subGroupListCopy()) { allGroups.addAll(listAllGroupsInherited(subg)); } String[] arr = new String[allGroups.size()]; @@ -825,6 +906,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { * @param targerPermission * @return */ + @SuppressWarnings("unused") private Group breadthFirstSearch(Group start, String targerPermission) { if (start == null || targerPermission == null) { return null; @@ -853,4 +935,102 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } return null; } + + @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) { + return null; + } + return data.getVariables().getVarString(path); + } else { + User data = ph.getUser(entryName); + if (data == null) { + return null; + } + return data.getVariables().getVarString(path); + } + } + + @Override + public int getInfoInteger(String entryName, String path, + boolean isGroup) { + if (isGroup) { + Group data = ph.getGroup(entryName); + if (data == null) { + return -1; + } + return data.getVariables().getVarInteger(path); + } else { + User data = ph.getUser(entryName); + if (data == null) { + return -1; + } + return data.getVariables().getVarInteger(path); + } + } + + @Override + public double getInfoDouble(String entryName, String path, + boolean isGroup) { + if (isGroup) { + Group data = ph.getGroup(entryName); + if (data == null) { + return -1; + } + return data.getVariables().getVarDouble(path); + } else { + User data = ph.getUser(entryName); + if (data == null) { + return -1; + } + return data.getVariables().getVarDouble(path); + } + + } + + @Override + public boolean getInfoBoolean(String entryName, String path, + boolean isGroup) { + if (isGroup) { + Group data = ph.getGroup(entryName); + if (data == null) { + return false; + } + return data.getVariables().getVarBoolean(path); + } else { + User data = ph.getUser(entryName); + if (data == null) { + return false; + } + return data.getVariables().getVarBoolean(path); + } + } + + @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); + } } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java index 90194cddd..ede097ea4 100644..100755 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java @@ -1,10 +1,15 @@ package org.anjocaido.groupmanager.permissions; +//import java.util.Collection; +//import java.util.Map; +//import java.util.Set; +import org.anjocaido.groupmanager.data.Group; +//import org.anjocaido.groupmanager.data.User; import org.bukkit.entity.Player; /** - * Made by Nijikokun. Changed by Gabriel Couto - * + * Made by Nijikokun. Changed by Gabriel Couto + * * This class is intended to *read* permissions from a single world. * * @author Nijikokun @@ -12,7 +17,6 @@ import org.bukkit.entity.Player; */ public abstract class PermissionsReaderInterface { - /** * * @param player @@ -90,7 +94,7 @@ public abstract class PermissionsReaderInterface { public abstract boolean getGroupPermissionBoolean(String string, String string1); /** - * + * * @param string * @param string1 * @return @@ -160,4 +164,69 @@ public abstract class PermissionsReaderInterface { * @return */ public abstract double getPermissionDouble(String string, String string1); + +///////////////////////////// + /** + * Gets the appropriate prefix for the user. + * This method is a utility method for chat plugins to get the user's prefix + * without having to look at every one of the user's ancestors. + * Returns an empty string if user has no parent groups. + * @param world Player's world + * @param user Player's name + * @return Player's prefix + */ + public abstract String getUserPrefix(String user); + + /** + * Gets the appropriate suffix for the user. + * This method is a utility method for chat plugins to get the user's suffix + * without having to look at every one of the user's ancestors. + * Returns an empty string if user has no parent groups. + * @param world Player's world + * @param user Player's name + * @return Player's suffix + */ + 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. + */ + 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 + */ + 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 + */ + 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); + + public abstract void removeUserInfo(String name, String path); + + public abstract void addGroupInfo(String name, String path, Object data); + + public abstract void removeGroupInfo(String name, String path); +////////////////////////////// } |