From 8e54bf13b281d1299c3dc33f89940bd3a06d1a30 Mon Sep 17 00:00:00 2001 From: Iaccidentally Date: Mon, 14 Jan 2013 20:02:22 -0500 Subject: Remove Transient :: Formatting Cleanup --- EssentialsGroupManager/pom.xml | 16 +- .../anjocaido/groupmanager/GMConfiguration.java | 69 +- .../org/anjocaido/groupmanager/GlobalGroups.java | 278 +++-- .../org/anjocaido/groupmanager/GroupManager.java | 1257 ++++++++++++++------ .../groupmanager/Tasks/BukkitPermsUpdateTask.java | 11 +- .../org/anjocaido/groupmanager/data/DataUnit.java | 98 +- .../src/org/anjocaido/groupmanager/data/Group.java | 108 +- .../groupmanager/data/GroupVariables.java | 56 +- .../src/org/anjocaido/groupmanager/data/User.java | 159 ++- .../anjocaido/groupmanager/data/UserVariables.java | 24 +- .../org/anjocaido/groupmanager/data/Variables.java | 145 ++- .../groupmanager/dataholder/GroupsDataHolder.java | 50 +- .../dataholder/OverloadedWorldHolder.java | 131 +- .../groupmanager/dataholder/UsersDataHolder.java | 44 +- .../groupmanager/dataholder/WorldDataHolder.java | 874 +++++++++----- .../dataholder/worlds/WorldsHolder.java | 473 +++++--- .../groupmanager/events/GMGroupEvent.java | 51 +- .../groupmanager/events/GMSystemEvent.java | 40 +- .../anjocaido/groupmanager/events/GMUserEvent.java | 51 +- .../groupmanager/events/GMWorldListener.java | 31 +- .../events/GroupManagerEventHandler.java | 35 +- .../permissions/AnjoPermissionsHandler.java | 785 +++++++----- .../permissions/BukkitPermissions.java | 269 +++-- .../permissions/PermissionsReaderInterface.java | 88 +- .../groupmanager/utils/GMLoggerHandler.java | 17 +- .../utils/GroupManagerPermissions.java | 7 +- .../groupmanager/utils/PermissionCheckResult.java | 37 +- .../utils/StringPermissionComparator.java | 35 +- .../org/anjocaido/groupmanager/utils/Tasks.java | 106 +- 29 files changed, 3488 insertions(+), 1857 deletions(-) (limited to 'EssentialsGroupManager') diff --git a/EssentialsGroupManager/pom.xml b/EssentialsGroupManager/pom.xml index f0ec22557..1658a7e3e 100644 --- a/EssentialsGroupManager/pom.xml +++ b/EssentialsGroupManager/pom.xml @@ -1,13 +1,13 @@ - 4.0.0 + 4.0.0 - - net.essentials3 - BuildAll - 3.0-SNAPSHOT - ../pom.xml - + + net.essentials3 + BuildAll + 3.0-SNAPSHOT + ../pom.xml + - EssentialsGroupManager + EssentialsGroupManager diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java index 0832000f2..0b5437c11 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java @@ -12,42 +12,53 @@ import java.util.logging.Level; import org.anjocaido.groupmanager.utils.Tasks; import org.bukkit.configuration.file.YamlConfiguration; + /** - * + * * @author gabrielcouto */ -public class GMConfiguration { - +public class GMConfiguration +{ private GroupManager plugin; private File configFile; private YamlConfiguration GMconfig; - public GMConfiguration(GroupManager plugin) { + public GMConfiguration(GroupManager plugin) + { this.plugin = plugin; load(); } - public void load() { + public void load() + { - if (!plugin.getDataFolder().exists()) { + if (!plugin.getDataFolder().exists()) + { plugin.getDataFolder().mkdirs(); } configFile = new File(plugin.getDataFolder(), "config.yml"); - if (!configFile.exists()) { - try { + if (!configFile.exists()) + { + try + { Tasks.copy(plugin.getResourceAsStream("config.yml"), configFile); - } catch (IOException ex) { + } + catch (IOException ex) + { GroupManager.logger.log(Level.SEVERE, null, ex); } } GMconfig = new YamlConfiguration(); - try { + try + { GMconfig.load(configFile); - } catch (Exception ex) { + } + catch (Exception ex) + { throw new IllegalArgumentException("The following file couldn't pass on Parser.\n" + configFile.getPath(), ex); } @@ -56,44 +67,56 @@ public class GMConfiguration { plugin.setValidateOnlinePlayer(isToggleValidate()); } - public boolean isOpOverride() { + public boolean isOpOverride() + { return GMconfig.getBoolean("settings.config.opOverrides", true); } - public boolean isToggleValidate() { + public boolean isToggleValidate() + { return GMconfig.getBoolean("settings.config.validate_toggle", true); } - public Map getMirrorsMap() { + public Map getMirrorsMap() + { // Try to fetch the old mirror path first - if (GMconfig.isConfigurationSection("settings.permission.world.mirror")) { - return (Map) GMconfig.getConfigurationSection("settings.permission.world.mirror").getValues(false); - } else if (GMconfig.isConfigurationSection("settings.mirrors")) { - return (Map) GMconfig.getConfigurationSection("settings.mirrors").getValues(false); + if (GMconfig.isConfigurationSection("settings.permission.world.mirror")) + { + return (Map)GMconfig.getConfigurationSection("settings.permission.world.mirror").getValues(false); + } + else if (GMconfig.isConfigurationSection("settings.mirrors")) + { + return (Map)GMconfig.getConfigurationSection("settings.mirrors").getValues(false); } return null; } - public Integer getSaveInterval() { + public Integer getSaveInterval() + { return GMconfig.getInt("settings.data.save.minutes", 10); } - public Integer getBackupDuration() { + public Integer getBackupDuration() + { return GMconfig.getInt("settings.data.save.hours", 24); } - public void adjustLoggerLevel() { + public void adjustLoggerLevel() + { - try { + try + { GroupManager.logger.setLevel(Level.parse(GMconfig.getString("settings.logging.level", "INFO"))); return; - } catch (Exception e) { + } + catch (Exception e) + { } GroupManager.logger.setLevel(Level.INFO); diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java index 04d9e86be..1335ecbe3 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java @@ -24,22 +24,22 @@ import org.bukkit.configuration.file.YamlConfiguration; import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; + /** * @author ElgarL - * + * */ -public class GlobalGroups { - +public class GlobalGroups +{ private GroupManager plugin; private YamlConfiguration GGroups; - private Map groups; - protected long timeStampGroups = 0; protected boolean haveGroupsChanged = false; protected File GlobalGroupsFile = null; - public GlobalGroups(GroupManager plugin) { + public GlobalGroups(GroupManager plugin) + { this.plugin = plugin; load(); @@ -48,13 +48,17 @@ public class GlobalGroups { /** * @return the haveGroupsChanged */ - public boolean haveGroupsChanged() { + public boolean haveGroupsChanged() + { - if (this.haveGroupsChanged) { + if (this.haveGroupsChanged) + { return true; } - for (Group g : groups.values()) { - if (g.isChanged()) { + for (Group g : groups.values()) + { + if (g.isChanged()) + { return true; } } @@ -64,7 +68,8 @@ public class GlobalGroups { /** * @return the timeStampGroups */ - public long getTimeStampGroups() { + public long getTimeStampGroups() + { return timeStampGroups; } @@ -72,22 +77,24 @@ public class GlobalGroups { /** * @param timeStampGroups the timeStampGroups to set */ - protected void setTimeStampGroups(long timeStampGroups) { + protected void setTimeStampGroups(long timeStampGroups) + { this.timeStampGroups = timeStampGroups; } /** - * @param haveGroupsChanged - * the haveGroupsChanged to set + * @param haveGroupsChanged the haveGroupsChanged to set */ - public void setGroupsChanged(boolean haveGroupsChanged) { + public void setGroupsChanged(boolean haveGroupsChanged) + { this.haveGroupsChanged = haveGroupsChanged; } @SuppressWarnings("unchecked") - public void load() { + public void load() + { GGroups = new YamlConfiguration(); @@ -95,39 +102,53 @@ public class GlobalGroups { // READ globalGroups FILE if (GlobalGroupsFile == null) + { GlobalGroupsFile = new File(plugin.getDataFolder(), "globalgroups.yml"); + } - if (!GlobalGroupsFile.exists()) { - try { + if (!GlobalGroupsFile.exists()) + { + try + { // Create a new file if it doesn't exist. Tasks.copy(plugin.getResourceAsStream("globalgroups.yml"), GlobalGroupsFile); - } catch (IOException ex) { + } + catch (IOException ex) + { GroupManager.logger.log(Level.SEVERE, null, ex); } } - try { + try + { GGroups.load(GlobalGroupsFile); - } catch (Exception ex) { + } + catch (Exception ex) + { throw new IllegalArgumentException("The following file couldn't pass on Parser.\n" + GlobalGroupsFile.getPath(), ex); } // Clear out old groups resetGlobalGroups(); - if (!GGroups.getKeys(false).isEmpty()) { + if (!GGroups.getKeys(false).isEmpty()) + { // Read all global groups Map allGroups = new HashMap(); - try { - allGroups = (Map) GGroups.getConfigurationSection("groups").getValues(false); - } catch (Exception ex) { + try + { + allGroups = (Map)GGroups.getConfigurationSection("groups").getValues(false); + } + catch (Exception ex) + { // ex.printStackTrace(); throw new IllegalArgumentException("Your " + GlobalGroupsFile.getPath() + " file is invalid. See console for details.", ex); } // Load each groups permissions list. - if (allGroups != null) { + if (allGroups != null) + { Iterator groupItr = allGroups.keySet().iterator(); String groupName; @@ -137,12 +158,16 @@ public class GlobalGroups { * loop each group entry * and read it's data. */ - while (groupItr.hasNext()) { - try { + while (groupItr.hasNext()) + { + try + { groupCount++; // Attempt to fetch the next group name. groupName = groupItr.next(); - } catch (Exception ex) { + } + catch (Exception ex) + { throw new IllegalArgumentException("Invalid group name for GlobalGroup entry (" + groupCount + ") in file: " + GlobalGroupsFile.getPath(), ex); } @@ -156,33 +181,56 @@ public class GlobalGroups { element = GGroups.get("groups." + groupName + ".permissions"); if (element != null) - if (element instanceof List) { - try { - for (String node : (List) element) { + { + if (element instanceof List) + { + try + { + for (String node : (List)element) + { if ((node != null) && !node.isEmpty()) + { newGroup.addPermission(node); + } } - } catch (ClassCastException ex) { + } + catch (ClassCastException ex) + { throw new IllegalArgumentException("Invalid permission node for global group: " + groupName, ex); } - } else if (element instanceof String) { + } + else if (element instanceof String) + { if ((element != null) && !((String)element).isEmpty()) - newGroup.addPermission((String) element); - } else + { + newGroup.addPermission((String)element); + } + } + else + { throw new IllegalArgumentException("Unknown type of permission node for global group: " + groupName); + } + } // Info nodes element = GGroups.get("groups." + groupName + ".info"); if (element != null) - if (element instanceof MemorySection) { + { + if (element instanceof MemorySection) + { Map vars = new HashMap(); - for (String key : ((MemorySection) element).getKeys(false)) { - vars.put(key, ((MemorySection) element).get(key)); + for (String key : ((MemorySection)element).getKeys(false)) + { + vars.put(key, ((MemorySection)element).get(key)); } newGroup.setVariables(vars); - } else + } + else + { throw new IllegalArgumentException("Unknown type of info node for global group: " + groupName); + } + } // Push a new group addGroup(newGroup); @@ -200,18 +248,21 @@ public class GlobalGroups { /** * Write the globalgroups.yml file */ - - public void writeGroups(boolean overwrite) { + public void writeGroups(boolean overwrite) + { // File GlobalGroupsFile = new File(plugin.getDataFolder(), "globalgroups.yml"); - if (haveGroupsChanged()) { - if (overwrite || (!overwrite && (getTimeStampGroups() >= GlobalGroupsFile.lastModified()))) { + if (haveGroupsChanged()) + { + if (overwrite || (!overwrite && (getTimeStampGroups() >= GlobalGroupsFile.lastModified()))) + { Map root = new HashMap(); Map groupsMap = new HashMap(); root.put("groups", groupsMap); - for (String groupKey : groups.keySet()) { + for (String groupKey : groups.keySet()) + { Group group = groups.get(groupKey); // Group header @@ -222,7 +273,8 @@ public class GlobalGroups { Map infoMap = new HashMap(); aGroupMap.put("info", infoMap); - for (String infoKey : group.getVariables().getVarKeyList()) { + for (String infoKey : group.getVariables().getVarKeyList()) + { infoMap.put(infoKey, group.getVariables().getVarObject(infoKey)); } @@ -230,26 +282,37 @@ public class GlobalGroups { aGroupMap.put("permissions", group.getPermissionList()); } - if (!root.isEmpty()) { + if (!root.isEmpty()) + { DumperOptions opt = new DumperOptions(); opt.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); final Yaml yaml = new Yaml(opt); - try { + try + { yaml.dump(root, new OutputStreamWriter(new FileOutputStream(GlobalGroupsFile), "UTF-8")); - } catch (UnsupportedEncodingException ex) { - } catch (FileNotFoundException ex) { + } + catch (UnsupportedEncodingException ex) + { + } + catch (FileNotFoundException ex) + { } } setTimeStampGroups(GlobalGroupsFile.lastModified()); - } else { + } + else + { // Newer file found. GroupManager.logger.log(Level.WARNING, "Newer GlobalGroups file found, but we have local changes!"); throw new IllegalStateException("Unable to save unless you issue a '/mansave force'"); } removeGroupsChangedFlag(); - } else { + } + else + { // Check for newer file as no local changes. - if (getTimeStampGroups() < GlobalGroupsFile.lastModified()) { + if (getTimeStampGroups() < GlobalGroupsFile.lastModified()) + { System.out.print("Newer GlobalGroups file found (Loading changes)!"); // Backup GlobalGroups file backupFile(); @@ -261,28 +324,34 @@ public class GlobalGroups { /** * Backup the BlobalGroups file - * + * * @param w */ - private void backupFile() { + private void backupFile() + { File backupFile = new File(plugin.getBackupFolder(), "bkp_ggroups_" + Tasks.getDateString() + ".yml"); - try { + try + { Tasks.copy(GlobalGroupsFile, backupFile); - } catch (IOException ex) { + } + catch (IOException ex) + { GroupManager.logger.log(Level.SEVERE, null, ex); } } /** * Adds a group, or replaces an existing one. - * + * * @param groupToAdd */ - public void addGroup(Group groupToAdd) { + public void addGroup(Group groupToAdd) + { // Create a new group if it already exists - if (hasGroup(groupToAdd.getName())) { + if (hasGroup(groupToAdd.getName())) + { groupToAdd = groupToAdd.clone(); removeGroup(groupToAdd.getName()); } @@ -290,18 +359,22 @@ public class GlobalGroups { newGroup(groupToAdd); haveGroupsChanged = true; if (GroupManager.isLoaded()) + { GroupManagerEventHandler.callEvent(groupToAdd, GMGroupEvent.Action.GROUP_ADDED); + } } /** * Creates a new group if it doesn't already exist. - * + * * @param newGroup */ - public Group newGroup(Group newGroup) { + public Group newGroup(Group newGroup) + { // Push a new group - if (!groups.containsKey(newGroup.getName().toLowerCase())) { + if (!groups.containsKey(newGroup.getName().toLowerCase())) + { groups.put(newGroup.getName().toLowerCase(), newGroup); this.setGroupsChanged(true); return newGroup; @@ -311,17 +384,21 @@ public class GlobalGroups { /** * Delete a group if it exist. - * + * * @param groupName */ - public boolean removeGroup(String groupName) { + public boolean removeGroup(String groupName) + { // Push a new group - if (groups.containsKey(groupName.toLowerCase())) { + if (groups.containsKey(groupName.toLowerCase())) + { groups.remove(groupName.toLowerCase()); this.setGroupsChanged(true); if (GroupManager.isLoaded()) + { GroupManagerEventHandler.callEvent(groupName.toLowerCase(), GMGroupEvent.Action.GROUP_REMOVED); + } return true; } return false; @@ -329,80 +406,96 @@ public class GlobalGroups { /** * Returns true if the Global Group exists in the globalgroups.yml - * + * * @param groupName * @return true if the group exists */ - public boolean hasGroup(String groupName) { + public boolean hasGroup(String groupName) + { return groups.containsKey(groupName.toLowerCase()); } /** * Returns true if the group has the correct permission node. - * + * * @param groupName * @param permissionNode * @return true if node exists */ - public boolean hasPermission(String groupName, String permissionNode) { + public boolean hasPermission(String groupName, String permissionNode) + { if (!hasGroup(groupName)) + { return false; + } return groups.get(groupName.toLowerCase()).hasSamePermissionNode(permissionNode); } /** - * Returns a PermissionCheckResult of the permission node for the group to - * be tested against. - * + * Returns a PermissionCheckResult of the permission node for the group to be tested against. + * * @param groupName * @param permissionNode * @return PermissionCheckResult object */ - public PermissionCheckResult checkPermission(String groupName, String permissionNode) { + public PermissionCheckResult checkPermission(String groupName, String permissionNode) + { PermissionCheckResult result = new PermissionCheckResult(); result.askedPermission = permissionNode; result.resultType = PermissionCheckResult.Type.NOTFOUND; if (!hasGroup(groupName)) + { return result; + } Group tempGroup = groups.get(groupName.toLowerCase()); if (tempGroup.hasSamePermissionNode(permissionNode)) + { result.resultType = PermissionCheckResult.Type.FOUND; + } if (tempGroup.hasSamePermissionNode("-" + permissionNode)) + { result.resultType = PermissionCheckResult.Type.NEGATION; + } if (tempGroup.hasSamePermissionNode("+" + permissionNode)) + { result.resultType = PermissionCheckResult.Type.EXCEPTION; + } return result; } /** * Returns a List of all permission nodes for this group null if none - * + * * @param groupName * @return List of all group names */ - public List getGroupsPermissions(String groupName) { + public List getGroupsPermissions(String groupName) + { if (!hasGroup(groupName)) + { return null; + } return groups.get(groupName.toLowerCase()).getPermissionList(); } /** * Returns a Set of all global group names. - * + * * @return Set containing all group names. */ - public Set getGlobalGroups() { + public Set getGlobalGroups() + { return groups.keySet(); } @@ -410,30 +503,35 @@ public class GlobalGroups { /** * Resets GlobalGroups. */ - public void resetGlobalGroups() { + public void resetGlobalGroups() + { this.groups = new HashMap(); } /** - * + * * @return a collection of the groups */ - public Collection getGroupList() { + public Collection getGroupList() + { return groups.values(); } /** * Returns the Global Group or null if it doesn't exist. - * + * * @param groupName * @return Group object */ - public Group getGroup(String groupName) { + public Group getGroup(String groupName) + { if (!hasGroup(groupName)) + { return null; + } return groups.get(groupName.toLowerCase()); @@ -442,20 +540,22 @@ public class GlobalGroups { /** * @return the globalGroupsFile */ - public File getGlobalGroupsFile() { + public File getGlobalGroupsFile() + { return GlobalGroupsFile; } /** - * - */ - public void removeGroupsChangedFlag() { + * + */ + public void removeGroupsChangedFlag() + { setGroupsChanged(false); - for (Group g : groups.values()) { + for (Group g : groups.values()) + { g.flagAsSaved(); } } - } \ 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 5f357641a..2a41f33f0 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -47,8 +47,8 @@ import org.bukkit.plugin.java.JavaPlugin; * * @author gabrielcouto, ElgarL */ -public class GroupManager extends JavaPlugin { - +public class GroupManager extends JavaPlugin +{ private File backupFolder; private Runnable commiter; private ScheduledThreadPoolExecutor scheduler; @@ -56,91 +56,103 @@ public class GroupManager extends JavaPlugin { private Map selectedWorlds = new HashMap(); private WorldsHolder worldsHolder; private boolean validateOnlinePlayer = true; - private static boolean isLoaded = false; protected GMConfiguration config; - protected static GlobalGroups globalGroups; - private GMLoggerHandler ch; public static BukkitPermissions BukkitPermissions; private static GMWorldListener WorldEvents; public static final Logger logger = Logger.getLogger(GroupManager.class.getName()); - // PERMISSIONS FOR COMMAND BEING LOADED private OverloadedWorldHolder dataHolder = null; private AnjoPermissionsHandler permissionHandler = null; - private String lastError = ""; @Override - public void onDisable() { - + public void onDisable() + { + onDisable(false); } - + @Override - public void onEnable() { - + public void onEnable() + { + onEnable(false); } - - public void onDisable(boolean restarting) { + + public void onDisable(boolean restarting) + { setLoaded(false); - if (!restarting) { + if (!restarting) + { // Unregister this service if we are shutting down. this.getServer().getServicesManager().unregister(this.worldsHolder); } disableScheduler(); // Shutdown before we save, so it doesn't interfere. - if (worldsHolder != null) { - try { + if (worldsHolder != null) + { + try + { worldsHolder.saveChanges(false); - } catch (IllegalStateException ex) { + } + catch (IllegalStateException ex) + { GroupManager.logger.log(Level.WARNING, ex.getMessage()); } } - + // Remove all attachments before clearing - if (BukkitPermissions != null) { + if (BukkitPermissions != null) + { BukkitPermissions.removeAllAttachments(); } - - if (!restarting) { - + + if (!restarting) + { + if (WorldEvents != null) + { WorldEvents = null; + } BukkitPermissions = null; - + } // 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!"); - + if (!restarting) + { GroupManager.logger.removeHandler(ch); + } } - - public void onEnable(boolean restarting) { - try { + public void onEnable(boolean restarting) + { + + try + { /* * reset local variables. */ overloadedUsers = new HashMap>(); selectedWorlds = new HashMap(); lastError = ""; - + /* * Setup our logger if we are not restarting. */ - if (!restarting) { + if (!restarting) + { GroupManager.logger.setUseParentHandlers(false); ch = new GMLoggerHandler(); GroupManager.logger.addHandler(ch); @@ -153,20 +165,25 @@ public class GroupManager extends JavaPlugin { prepareConfig(); // Load the global groups globalGroups = new GlobalGroups(this); - + /* * Configure the worlds holder. */ if (!restarting) + { worldsHolder = new WorldsHolder(this); + } else + { worldsHolder.resetWorldsHolder(); + } /* * This should NEVER happen. No idea why it's still here. */ PluginDescriptionFile pdfFile = this.getDescription(); - if (worldsHolder == null) { + if (worldsHolder == null) + { GroupManager.logger.severe("Can't enable " + pdfFile.getName() + " version " + pdfFile.getVersion() + ", bad loading!"); this.getServer().getPluginManager().disablePlugin(this); throw new IllegalStateException("An error ocurred while loading GroupManager"); @@ -186,10 +203,13 @@ public class GroupManager extends JavaPlugin { * * Reset bukkit perms. */ - if (!restarting) { + if (!restarting) + { WorldEvents = new GMWorldListener(this); BukkitPermissions = new BukkitPermissions(this); - } else { + } + else + { BukkitPermissions.reset(); } @@ -203,7 +223,8 @@ public class GroupManager extends JavaPlugin { * All plugins will be loaded by then */ - if (getServer().getScheduler().scheduleSyncDelayedTask(this, new BukkitPermsUpdateTask(), 1) == -1) { + if (getServer().getScheduler().scheduleSyncDelayedTask(this, new BukkitPermsUpdateTask(), 1) == -1) + { GroupManager.logger.severe("Could not schedule superperms Update."); /* * Flag that we are now loaded and should start processing events. @@ -215,9 +236,13 @@ public class GroupManager extends JavaPlugin { // Register as a service if (!restarting) + { this.getServer().getServicesManager().register(WorldsHolder.class, this.worldsHolder, this, ServicePriority.Lowest); - - } catch (Exception ex) { + } + + } + catch (Exception ex) + { /* * Store the error and write to the log. @@ -234,12 +259,14 @@ public class GroupManager extends JavaPlugin { /** * Write an error.log - * + * * @param ex */ - private void saveErrorLog(Exception ex) { + private void saveErrorLog(Exception ex) + { - if (!getDataFolder().exists()) { + if (!getDataFolder().exists()) + { getDataFolder().mkdirs(); } @@ -257,23 +284,27 @@ public class GroupManager extends JavaPlugin { GroupManager.logger.severe("==================================================="); // Append this error to the error log. - try { + try + { String error = "=============================== GM ERROR LOG ===============================\n\n"; error += Tasks.getStackTraceAsString(ex); error += "\n============================================================================\n"; Tasks.appendStringToFile(error, (getDataFolder() + System.getProperty("file.separator") + "ERROR.LOG")); - } catch (IOException e) { + } + catch (IOException e) + { // Failed to write file. e.printStackTrace(); } } - + /** * @return the validateOnlinePlayer */ - public boolean isValidateOnlinePlayer() { + public boolean isValidateOnlinePlayer() + { return validateOnlinePlayer; } @@ -281,96 +312,120 @@ public class GroupManager extends JavaPlugin { /** * @param validateOnlinePlayer the validateOnlinePlayer to set */ - public void setValidateOnlinePlayer(boolean validateOnlinePlayer) { + public void setValidateOnlinePlayer(boolean validateOnlinePlayer) + { this.validateOnlinePlayer = validateOnlinePlayer; } - public static boolean isLoaded() { + public static boolean isLoaded() + { return isLoaded; } - public static void setLoaded(boolean isLoaded) { + public static void setLoaded(boolean isLoaded) + { GroupManager.isLoaded = isLoaded; } - public InputStream getResourceAsStream(String fileName) { + public InputStream getResourceAsStream(String fileName) + { return this.getClassLoader().getResourceAsStream(fileName); } - private void prepareFileFields() { + private void prepareFileFields() + { backupFolder = new File(this.getDataFolder(), "backup"); - if (!backupFolder.exists()) { + if (!backupFolder.exists()) + { getBackupFolder().mkdirs(); } } - private void prepareConfig() { + private void prepareConfig() + { config = new GMConfiguration(this); } - public void enableScheduler() { + public void enableScheduler() + { - if (worldsHolder != null) { + if (worldsHolder != null) + { disableScheduler(); - commiter = new Runnable() { - + commiter = new Runnable() + { @Override - public void run() { + public void run() + { - try { + try + { worldsHolder.saveChanges(false); GroupManager.logger.log(Level.INFO, " Data files refreshed."); - } catch (IllegalStateException ex) { + } + catch (IllegalStateException ex) + { GroupManager.logger.log(Level.WARNING, ex.getMessage()); } } }; scheduler = new ScheduledThreadPoolExecutor(1); - long minutes = (long) getGMConfig().getSaveInterval(); - if (minutes > 0) { + 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!"); - } else + } + else + { GroupManager.logger.info("Scheduled Data Saving is Disabled!"); + } GroupManager.logger.info("Backups will be retained for " + getGMConfig().getBackupDuration() + " hours!"); } } - public void disableScheduler() { + public void disableScheduler() + { - if (scheduler != null) { - try { + if (scheduler != null) + { + try + { scheduler.setContinueExistingPeriodicTasksAfterShutdownPolicy(false); scheduler.setExecuteExistingDelayedTasksAfterShutdownPolicy(false); scheduler.shutdown(); - } catch (Exception e) { + } + catch (Exception e) + { } scheduler = null; GroupManager.logger.info("Scheduled Data Saving is disabled!"); } } - public WorldsHolder getWorldsHolder() { + public WorldsHolder getWorldsHolder() + { return worldsHolder; } /** * Called when a command registered by this plugin is received. - * + * * @param sender * @param cmd * @param args */ @Override - public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) + { boolean playerCanDo = false; boolean isConsole = false; @@ -380,10 +435,12 @@ public class GroupManager extends JavaPlugin { boolean isOpOverride = config.isOpOverride(); // DETERMINING PLAYER INFORMATION - if (sender instanceof Player) { - senderPlayer = (Player) sender; + if (sender instanceof Player) + { + senderPlayer = (Player)sender; - if (!lastError.isEmpty() && !commandLabel.equalsIgnoreCase("manload")) { + if (!lastError.isEmpty() && !commandLabel.equalsIgnoreCase("manload")) + { sender.sendMessage(ChatColor.RED + "All commands are locked due to an error. Check the log and then try a '/manload'.)"); return true; } @@ -393,12 +450,16 @@ public class GroupManager extends JavaPlugin { isOpOverride = (isOpOverride && (senderPlayer.isOp() || worldsHolder.getWorldPermissions(senderPlayer).has(senderPlayer, "groupmanager.op"))); System.out.println("[PLAYER_COMMAND] " + senderPlayer.getName() + ": /" + commandLabel + " " + Tasks.join(args, " ")); - if (isOpOverride || worldsHolder.getWorldPermissions(senderPlayer).has(senderPlayer, "groupmanager." + cmd.getName())) { + if (isOpOverride || worldsHolder.getWorldPermissions(senderPlayer).has(senderPlayer, "groupmanager." + cmd.getName())) + { playerCanDo = true; } - } else if (sender instanceof ConsoleCommandSender) { + } + else if (sender instanceof ConsoleCommandSender) + { - if (!lastError.isEmpty() && !commandLabel.equalsIgnoreCase("manload")) { + if (!lastError.isEmpty() && !commandLabel.equalsIgnoreCase("manload")) + { sender.sendMessage(ChatColor.RED + "All commands are locked due to an error. Check the log and then try a '/manload'.)"); return true; } @@ -410,16 +471,19 @@ public class GroupManager extends JavaPlugin { dataHolder = null; permissionHandler = null; - if (senderPlayer != null) { + if (senderPlayer != null) + { dataHolder = worldsHolder.getWorldData(senderPlayer); } String selectedWorld = selectedWorlds.get(sender); - if (selectedWorld != null) { + if (selectedWorld != null) + { dataHolder = worldsHolder.getWorldData(selectedWorld); } - if (dataHolder != null) { + if (dataHolder != null) + { permissionHandler = dataHolder.getPermissionsHandler(); } @@ -435,9 +499,12 @@ public class GroupManager extends JavaPlugin { Group auxGroup2 = null; GroupManagerPermissions execCmd = null; - try { + try + { execCmd = GroupManagerPermissions.valueOf(cmd.getName()); - } catch (Exception e) { + } + catch (Exception e) + { // this error happened once with someone. now im prepared... i think GroupManager.logger.severe("==================================================="); GroupManager.logger.severe("= ERROR REPORT START ="); @@ -449,13 +516,15 @@ public class GroupManager extends JavaPlugin { GroupManager.logger.severe("An error occured while trying to execute command:"); GroupManager.logger.severe(cmd.getName()); GroupManager.logger.severe("With " + args.length + " arguments:"); - for (String ar : args) { + for (String ar : args) + { GroupManager.logger.severe(ar); } GroupManager.logger.severe("The field '" + cmd.getName() + "' was not found in enum."); GroupManager.logger.severe("And could not be parsed."); GroupManager.logger.severe("FIELDS FOUND IN ENUM:"); - for (GroupManagerPermissions val : GroupManagerPermissions.values()) { + for (GroupManagerPermissions val : GroupManagerPermissions.values()) + { GroupManager.logger.severe(val.name()); } GroupManager.logger.severe("==================================================="); @@ -464,57 +533,73 @@ public class GroupManager extends JavaPlugin { sender.sendMessage("An error occurred. Ask the admin to take a look at the console."); } - if (isConsole || playerCanDo) { - switch (execCmd) { + if (isConsole || playerCanDo) + { + switch (execCmd) + { case manuadd: // Validating arguments - if ((args.length != 2) && (args.length != 3)) { + if ((args.length != 2) && (args.length != 3)) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ | optional [world])"); return false; } // Select the relevant world (if specified) - if (args.length == 3) { + if (args.length == 3) + { dataHolder = worldsHolder.getWorldData(args[2]); permissionHandler = dataHolder.getPermissionsHandler(); } // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { + if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) + { return false; } - if (match != null) { + if (match != null) + { auxUser = dataHolder.getUser(match.get(0)); - } else { + } + else + { auxUser = dataHolder.getUser(args[0]); } auxGroup = dataHolder.getGroup(args[1]); - if (auxGroup == null) { + if (auxGroup == null) + { sender.sendMessage(ChatColor.RED + "Group not found!"); return false; } - if (auxGroup.isGlobal()) { + if (auxGroup.isGlobal()) + { sender.sendMessage(ChatColor.RED + "Players may not be members of GlobalGroups directly."); return false; } // Validating permissions - if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) { + if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) + { sender.sendMessage(ChatColor.RED + "Can't modify a player with the same permissions as you, or higher."); return false; } - if (!isConsole && !isOpOverride && (permissionHandler.hasGroupInInheritance(auxGroup, senderGroup.getName()))) { + if (!isConsole && !isOpOverride && (permissionHandler.hasGroupInInheritance(auxGroup, senderGroup.getName()))) + { sender.sendMessage(ChatColor.RED + "The destination group can't be the same as yours, or higher."); return false; } - if (!isConsole && !isOpOverride && (!permissionHandler.inGroup(senderUser.getName(), auxUser.getGroupName()) || !permissionHandler.inGroup(senderUser.getName(), auxGroup.getName()))) { + if (!isConsole && !isOpOverride && (!permissionHandler.inGroup(senderUser.getName(), auxUser.getGroupName()) || !permissionHandler.inGroup(senderUser.getName(), auxGroup.getName()))) + { sender.sendMessage(ChatColor.RED + "You can't modify a player involving a group that you don't inherit."); return false; } @@ -522,32 +607,43 @@ public class GroupManager extends JavaPlugin { // Seems OK auxUser.setGroup(auxGroup); if (!sender.hasPermission("groupmanager.notify.other") || (isConsole)) + { sender.sendMessage(ChatColor.YELLOW + "You changed player '" + auxUser.getName() + "' group to '" + auxGroup.getName() + "' in world '" + dataHolder.getName() + "'."); + } return true; case manudel: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 1) { + if (args.length != 1) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { + if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) + { return false; } - if (match != null) { + if (match != null) + { auxUser = dataHolder.getUser(match.get(0)); - } else { + } + else + { auxUser = dataHolder.getUser(args[0]); } // Validating permission - if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) { + if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) + { sender.sendMessage(ChatColor.RED + "You can't modify a player with same permissions as you, or higher."); return false; } @@ -558,79 +654,104 @@ public class GroupManager extends JavaPlugin { // If the player is online, this will create new data for the user. targetPlayer = this.getServer().getPlayer(auxUser.getName()); if (targetPlayer != null) + { BukkitPermissions.updatePermissions(targetPlayer); + } return true; case manuaddsub: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { - if (!setDefaultWorldHandler(sender)) { + if (dataHolder == null || permissionHandler == null) + { + if (!setDefaultWorldHandler(sender)) + { sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. World selection is needed."); sender.sendMessage(ChatColor.RED + "Use /manselect "); return true; } } // Validating arguments - if (args.length != 2) { + if (args.length != 2) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { + if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) + { return false; } - if (match != null) { + if (match != null) + { auxUser = dataHolder.getUser(match.get(0)); - } else { + } + else + { auxUser = dataHolder.getUser(args[0]); } auxGroup = dataHolder.getGroup(args[1]); - if (auxGroup == null) { + if (auxGroup == null) + { sender.sendMessage(ChatColor.RED + "Group not found!"); return false; } // Validating permission - if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) { + if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) + { sender.sendMessage(ChatColor.RED + "You can't modify a player with same permissions as you, or higher."); return false; } // Seems OK if (auxUser.addSubGroup(auxGroup)) + { sender.sendMessage(ChatColor.YELLOW + "You added subgroup '" + auxGroup.getName() + "' to player '" + auxUser.getName() + "'."); + } else + { sender.sendMessage(ChatColor.RED + "The subgroup '" + auxGroup.getName() + "' is already available to '" + auxUser.getName() + "'."); + } return true; case manudelsub: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 2) { + if (args.length != 2) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/manudelsub )"); return false; } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { + if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) + { return false; } - if (match != null) { + if (match != null) + { auxUser = dataHolder.getUser(match.get(0)); - } else { + } + else + { auxUser = dataHolder.getUser(args[0]); } auxGroup = dataHolder.getGroup(args[1]); - if (auxGroup == null) { + if (auxGroup == null) + { sender.sendMessage(ChatColor.RED + "Group not found!"); return false; } // Validating permission - if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) { + if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) + { sender.sendMessage(ChatColor.RED + "You can't modify a player with same permissions as you, or higher."); return false; } @@ -646,17 +767,22 @@ public class GroupManager extends JavaPlugin { case mangadd: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 1) { + if (args.length != 1) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } auxGroup = dataHolder.getGroup(args[0]); - if (auxGroup != null) { + if (auxGroup != null) + { sender.sendMessage(ChatColor.RED + "Group already exists!"); return false; } @@ -668,17 +794,22 @@ public class GroupManager extends JavaPlugin { case mangdel: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 1) { + if (args.length != 1) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } auxGroup = dataHolder.getGroup(args[0]); - if (auxGroup == null) { + if (auxGroup == null) + { sender.sendMessage(ChatColor.RED + "Group not exists!"); return false; } @@ -692,54 +823,74 @@ public class GroupManager extends JavaPlugin { case manuaddp: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 2) { + if (args.length != 2) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { + if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) + { return false; } - if (match != null) { + if (match != null) + { auxUser = dataHolder.getUser(match.get(0)); - } else { + } + else + { auxUser = dataHolder.getUser(args[0]); } // Validating your permissions - if (!isConsole && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) { + if (!isConsole && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) + { sender.sendMessage(ChatColor.RED + "Can't modify player with same group than you, or higher."); return false; } permissionResult = permissionHandler.checkFullUserPermission(senderUser, args[1]); - if (!isConsole && !isOpOverride && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND) || permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) { + if (!isConsole && !isOpOverride && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND) || permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) + { sender.sendMessage(ChatColor.RED + "You can't add a permission you don't have."); return false; } // Validating permissions of user permissionResult = permissionHandler.checkUserOnlyPermission(auxUser, args[1]); - if (args[1].startsWith("+")) { - if (permissionResult.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) { + if (args[1].startsWith("+")) + { + if (permissionResult.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) + { sender.sendMessage(ChatColor.RED + "The user already has direct access to that permission."); sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); return false; } - } else if (args[1].startsWith("-")) { - if (permissionResult.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) { + } + else if (args[1].startsWith("-")) + { + if (permissionResult.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) + { sender.sendMessage(ChatColor.RED + "The user already has an exception for this node."); sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); return false; - } else if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) { + } + else if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) + { sender.sendMessage(ChatColor.RED + "The user already has a matching node "); sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); return false; } - } else { - if (permissionResult.resultType.equals(PermissionCheckResult.Type.FOUND)) { + } + else + { + if (permissionResult.resultType.equals(PermissionCheckResult.Type.FOUND)) + { sender.sendMessage(ChatColor.RED + "The user already has direct access to that permission."); sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); return false; @@ -751,47 +902,61 @@ public class GroupManager extends JavaPlugin { targetPlayer = this.getServer().getPlayer(auxUser.getName()); if (targetPlayer != null) + { BukkitPermissions.updatePermissions(targetPlayer); + } return true; case manudelp: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 2) { + if (args.length != 2) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { + if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) + { return false; } - if (match != null) { + if (match != null) + { auxUser = dataHolder.getUser(match.get(0)); - } else { + } + else + { auxUser = dataHolder.getUser(args[0]); } // Validating your permissions - if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) { + if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) + { sender.sendMessage(ChatColor.RED + "You can't modify a player with same group as you, or higher."); return false; } permissionResult = permissionHandler.checkFullUserPermission(senderUser, args[1]); - if (!isConsole && !isOpOverride && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND) || permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) { + if (!isConsole && !isOpOverride && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND) || permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) + { sender.sendMessage(ChatColor.RED + "You can't remove a permission you don't have."); return false; } // Validating permissions of user permissionResult = permissionHandler.checkUserOnlyPermission(auxUser, args[1]); - if (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND)) { + if (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND)) + { sender.sendMessage(ChatColor.RED + "The user doesn't have direct access to that permission."); return false; } - if (!auxUser.hasSamePermissionNode(args[1])) { + if (!auxUser.hasSamePermissionNode(args[1])) + { sender.sendMessage(ChatColor.RED + "This permission node doesn't match any node."); sender.sendMessage(ChatColor.RED + "But might match node: " + permissionResult.accessLevel); return false; @@ -802,69 +967,91 @@ public class GroupManager extends JavaPlugin { targetPlayer = this.getServer().getPlayer(auxUser.getName()); if (targetPlayer != null) + { BukkitPermissions.updatePermissions(targetPlayer); + } return true; case manulistp: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if ((args.length == 0) || (args.length > 2)) { + if ((args.length == 0) || (args.length > 2)) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ (+))"); return false; } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { + if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) + { return false; } - if (match != null) { + if (match != null) + { auxUser = dataHolder.getUser(match.get(0)); - } else { + } + else + { auxUser = dataHolder.getUser(args[0]); } // Validating permission // Seems OK auxString = ""; - for (String perm : auxUser.getPermissionList()) { + for (String perm : auxUser.getPermissionList()) + { auxString += perm + ", "; } - if (auxString.lastIndexOf(",") > 0) { + if (auxString.lastIndexOf(",") > 0) + { auxString = auxString.substring(0, auxString.lastIndexOf(",")); sender.sendMessage(ChatColor.YELLOW + "The player '" + auxUser.getName() + "' has following permissions: " + ChatColor.WHITE + auxString); sender.sendMessage(ChatColor.YELLOW + "And all permissions from group: " + auxUser.getGroupName()); auxString = ""; - for (String subGroup : auxUser.subGroupListStringCopy()) { + for (String subGroup : auxUser.subGroupListStringCopy()) + { auxString += subGroup + ", "; } - if (auxString.lastIndexOf(",") > 0) { + if (auxString.lastIndexOf(",") > 0) + { auxString = auxString.substring(0, auxString.lastIndexOf(",")); sender.sendMessage(ChatColor.YELLOW + "And all permissions from subgroups: " + auxString); } - } else { + } + else + { sender.sendMessage(ChatColor.YELLOW + "The player '" + auxUser.getName() + "' has no specific permissions."); sender.sendMessage(ChatColor.YELLOW + "Only all permissions from group: " + auxUser.getGroupName()); auxString = ""; - for (String subGroup : auxUser.subGroupListStringCopy()) { + for (String subGroup : auxUser.subGroupListStringCopy()) + { auxString += subGroup + ", "; } - if (auxString.lastIndexOf(",") > 0) { + if (auxString.lastIndexOf(",") > 0) + { auxString = auxString.substring(0, auxString.lastIndexOf(",")); sender.sendMessage(ChatColor.YELLOW + "And all permissions from subgroups: " + auxString); } } // bukkit perms - if ((args.length == 2) && (args[1].equalsIgnoreCase("+"))) { + if ((args.length == 2) && (args[1].equalsIgnoreCase("+"))) + { targetPlayer = this.getServer().getPlayer(auxUser.getName()); - if (targetPlayer != null) { + if (targetPlayer != null) + { sender.sendMessage(ChatColor.YELLOW + "Superperms reports: "); for (String line : BukkitPermissions.listPerms(targetPlayer)) + { sender.sendMessage(ChatColor.YELLOW + line); + } } } @@ -873,46 +1060,66 @@ public class GroupManager extends JavaPlugin { case manucheckp: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 2) { + if (args.length != 2) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { + if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) + { return false; } - if (match != null) { + if (match != null) + { auxUser = dataHolder.getUser(match.get(0)); - } else { + } + else + { auxUser = dataHolder.getUser(args[0]); } targetPlayer = this.getServer().getPlayer(auxUser.getName()); // Validating permission permissionResult = permissionHandler.checkFullGMPermission(auxUser, args[1], false); - if (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND)) { + if (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND)) + { // 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 { + } + else + { // This permission was found in groupmanager. - if (permissionResult.owner instanceof User) { - if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) { + if (permissionResult.owner instanceof User) + { + if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) + { sender.sendMessage(ChatColor.RED + "The user has directly a negation node for that permission."); - } else { + } + else + { sender.sendMessage(ChatColor.YELLOW + "The user has directly this permission."); } sender.sendMessage(ChatColor.YELLOW + "Permission Node: " + permissionResult.accessLevel); - } else if (permissionResult.owner instanceof Group) { - if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) { + } + else if (permissionResult.owner instanceof Group) + { + if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) + { sender.sendMessage(ChatColor.RED + "The user inherits a negation permission from group: " + permissionResult.owner.getName()); - } else { + } + else + { sender.sendMessage(ChatColor.YELLOW + "The user inherits the permission from group: " + permissionResult.owner.getName()); } sender.sendMessage(ChatColor.YELLOW + "Permission Node: " + permissionResult.accessLevel); @@ -920,54 +1127,71 @@ public class GroupManager extends JavaPlugin { } // superperms - if (targetPlayer != null) { - sender.sendMessage(ChatColor.YELLOW + "SuperPerms reports Node: " + targetPlayer.hasPermission(args[1]) + ((!targetPlayer.hasPermission(args[1]) && targetPlayer.isPermissionSet(args[1])) ? " (Negated)": "")); + if (targetPlayer != null) + { + sender.sendMessage(ChatColor.YELLOW + "SuperPerms reports Node: " + targetPlayer.hasPermission(args[1]) + ((!targetPlayer.hasPermission(args[1]) && targetPlayer.isPermissionSet(args[1])) ? " (Negated)" : "")); } return true; case mangaddp: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 2) { + if (args.length != 2) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } auxGroup = dataHolder.getGroup(args[0]); - if (auxGroup == null) { + if (auxGroup == null) + { sender.sendMessage(ChatColor.RED + "The specified group does not exist!"); return false; } // Validating your permissions permissionResult = permissionHandler.checkFullUserPermission(senderUser, args[1]); - if (!isConsole && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND) || permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) { + if (!isConsole && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND) || permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) + { sender.sendMessage(ChatColor.RED + "You can't add a permission you don't have."); return false; } // Validating permissions of user permissionResult = permissionHandler.checkGroupOnlyPermission(auxGroup, args[1]); - if (args[1].startsWith("+")) { - if (permissionResult.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) { + if (args[1].startsWith("+")) + { + if (permissionResult.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) + { sender.sendMessage(ChatColor.RED + "The group already has direct access to that permission."); sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); return false; } - } else if (args[1].startsWith("-")) { - if (permissionResult.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) { + } + else if (args[1].startsWith("-")) + { + if (permissionResult.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) + { sender.sendMessage(ChatColor.RED + "The group already has an exception for this node."); sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); return false; - } else if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) { + } + else if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) + { sender.sendMessage(ChatColor.RED + "The group already has a matching node."); sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); return false; } - } else { - if (permissionResult.resultType.equals(PermissionCheckResult.Type.FOUND)) { + } + else + { + if (permissionResult.resultType.equals(PermissionCheckResult.Type.FOUND)) + { sender.sendMessage(ChatColor.RED + "The group already has direct access to that permission."); sender.sendMessage(ChatColor.RED + "Node: " + permissionResult.accessLevel); return false; @@ -983,33 +1207,41 @@ public class GroupManager extends JavaPlugin { case mangdelp: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 2) { + if (args.length != 2) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } auxGroup = dataHolder.getGroup(args[0]); - if (auxGroup == null) { + if (auxGroup == null) + { sender.sendMessage(ChatColor.RED + "The specified group does not exist!"); return false; } // Validating your permissions permissionResult = permissionHandler.checkFullUserPermission(senderUser, args[1]); - if (!isConsole && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND) || permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) { + if (!isConsole && (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND) || permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION))) + { sender.sendMessage(ChatColor.RED + "Can't remove a permission you don't have."); return false; } // Validating permissions of user permissionResult = permissionHandler.checkGroupOnlyPermission(auxGroup, args[1]); - if (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND)) { + if (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND)) + { sender.sendMessage(ChatColor.RED + "The group doesn't have direct access to that permission."); return false; } - if (!auxGroup.hasSamePermissionNode(args[1])) { + if (!auxGroup.hasSamePermissionNode(args[1])) + { sender.sendMessage(ChatColor.RED + "This permission node doesn't match any node."); sender.sendMessage(ChatColor.RED + "But might match node: " + permissionResult.accessLevel); return false; @@ -1024,17 +1256,22 @@ public class GroupManager extends JavaPlugin { case manglistp: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 1) { + if (args.length != 1) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } auxGroup = dataHolder.getGroup(args[0]); - if (auxGroup == null) { + if (auxGroup == null) + { sender.sendMessage(ChatColor.RED + "The specified group does not exist!"); return false; } @@ -1042,28 +1279,36 @@ public class GroupManager extends JavaPlugin { // Seems OK auxString = ""; - for (String perm : auxGroup.getPermissionList()) { + for (String perm : auxGroup.getPermissionList()) + { auxString += perm + ", "; } - if (auxString.lastIndexOf(",") > 0) { + if (auxString.lastIndexOf(",") > 0) + { auxString = auxString.substring(0, auxString.lastIndexOf(",")); sender.sendMessage(ChatColor.YELLOW + "The group '" + auxGroup.getName() + "' has following permissions: " + ChatColor.WHITE + auxString); auxString = ""; - for (String grp : auxGroup.getInherits()) { + for (String grp : auxGroup.getInherits()) + { auxString += grp + ", "; } - if (auxString.lastIndexOf(",") > 0) { + if (auxString.lastIndexOf(",") > 0) + { auxString = auxString.substring(0, auxString.lastIndexOf(",")); sender.sendMessage(ChatColor.YELLOW + "And all permissions from groups: " + auxString); } - } else { + } + else + { sender.sendMessage(ChatColor.YELLOW + "The group '" + auxGroup.getName() + "' has no specific permissions."); auxString = ""; - for (String grp : auxGroup.getInherits()) { + for (String grp : auxGroup.getInherits()) + { auxString += grp + ", "; } - if (auxString.lastIndexOf(",") > 0) { + if (auxString.lastIndexOf(",") > 0) + { auxString = auxString.substring(0, auxString.lastIndexOf(",")); sender.sendMessage(ChatColor.YELLOW + "Only all permissions from groups: " + auxString); } @@ -1073,32 +1318,42 @@ public class GroupManager extends JavaPlugin { case mangcheckp: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 2) { + if (args.length != 2) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } auxGroup = dataHolder.getGroup(args[0]); - if (auxGroup == null) { + if (auxGroup == null) + { sender.sendMessage(ChatColor.RED + "The specified group does not exist!"); return false; } // Validating permission permissionResult = permissionHandler.checkGroupPermissionWithInheritance(auxGroup, args[1]); - if (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND)) { + if (permissionResult.resultType.equals(PermissionCheckResult.Type.NOTFOUND)) + { sender.sendMessage(ChatColor.RED + "The group doesn't have access to that permission"); return false; } // Seems OK // auxString = permissionHandler.checkUserOnlyPermission(auxUser, args[1]); - if (permissionResult.owner instanceof Group) { - if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) { + 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()); - } else { + } + else + { sender.sendMessage(ChatColor.YELLOW + "The user inherits the permission from group: " + permissionResult.owner.getName()); } sender.sendMessage(ChatColor.YELLOW + "Permission Node: " + permissionResult.accessLevel); @@ -1108,32 +1363,40 @@ public class GroupManager extends JavaPlugin { case mangaddi: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 2) { + if (args.length != 2) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } auxGroup = dataHolder.getGroup(args[0]); - if (auxGroup == null) { + if (auxGroup == null) + { sender.sendMessage(ChatColor.RED + "Group 1 does not exist!"); return false; } auxGroup2 = dataHolder.getGroup(args[1]); - if (auxGroup2 == null) { + if (auxGroup2 == null) + { sender.sendMessage(ChatColor.RED + "Group 2 does not exist!"); return false; } - if (auxGroup.isGlobal()) { + if (auxGroup.isGlobal()) + { sender.sendMessage(ChatColor.RED + "GlobalGroups do NOT support inheritance."); return false; } // Validating permission - if (permissionHandler.hasGroupInInheritance(auxGroup, auxGroup2.getName())) { + if (permissionHandler.hasGroupInInheritance(auxGroup, auxGroup2.getName())) + { sender.sendMessage(ChatColor.RED + "Group " + auxGroup.getName() + " already inherits " + auxGroup2.getName() + " (might not be directly)"); return false; } @@ -1147,36 +1410,45 @@ public class GroupManager extends JavaPlugin { case mangdeli: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 2) { + if (args.length != 2) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } auxGroup = dataHolder.getGroup(args[0]); - if (auxGroup == null) { + if (auxGroup == null) + { sender.sendMessage(ChatColor.RED + "Group 1 does not exist!"); return false; } auxGroup2 = dataHolder.getGroup(args[1]); - if (auxGroup2 == null) { + if (auxGroup2 == null) + { sender.sendMessage(ChatColor.RED + "Group 2 does not exist!"); return false; } - if (auxGroup.isGlobal()) { + if (auxGroup.isGlobal()) + { sender.sendMessage(ChatColor.RED + "GlobalGroups do NOT support inheritance."); return false; } // Validating permission - if (!permissionHandler.hasGroupInInheritance(auxGroup, auxGroup2.getName())) { + if (!permissionHandler.hasGroupInInheritance(auxGroup, auxGroup2.getName())) + { sender.sendMessage(ChatColor.RED + "Group " + auxGroup.getName() + " does not inherits " + auxGroup2.getName() + "."); return false; } - if (!auxGroup.getInherits().contains(auxGroup2.getName())) { + if (!auxGroup.getInherits().contains(auxGroup2.getName())) + { sender.sendMessage(ChatColor.RED + "Group " + auxGroup.getName() + " does not inherits " + auxGroup2.getName() + " directly."); return false; } @@ -1190,30 +1462,40 @@ public class GroupManager extends JavaPlugin { case manuaddv: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length < 3) { + if (args.length < 3) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { + if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) + { return false; } - if (match != null) { + if (match != null) + { auxUser = dataHolder.getUser(match.get(0)); - } else { + } + else + { auxUser = dataHolder.getUser(args[0]); } // Validating permission // Seems OK auxString = ""; - for (int i = 2; i < args.length; i++) { + for (int i = 2; i < args.length; i++) + { auxString += args[i]; - if ((i + 1) < args.length) { + if ((i + 1) < args.length) + { auxString += " "; } } @@ -1224,26 +1506,35 @@ public class GroupManager extends JavaPlugin { case manudelv: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 2) { + if (args.length != 2) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { + if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) + { return false; } - if (match != null) { + if (match != null) + { auxUser = dataHolder.getUser(match.get(0)); - } else { + } + else + { auxUser = dataHolder.getUser(args[0]); } // Validating permission - if (!auxUser.getVariables().hasVar(args[1])) { + if (!auxUser.getVariables().hasVar(args[1])) + { sender.sendMessage(ChatColor.RED + "The user doesn't have directly that variable!"); } // Seems OK @@ -1254,31 +1545,41 @@ public class GroupManager extends JavaPlugin { case manulistv: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 1) { + if (args.length != 1) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { + if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) + { return false; } - if (match != null) { + if (match != null) + { auxUser = dataHolder.getUser(match.get(0)); - } else { + } + else + { auxUser = dataHolder.getUser(args[0]); } // Validating permission // Seems OK auxString = ""; - for (String varKey : auxUser.getVariables().getVarKeyList()) { + for (String varKey : auxUser.getVariables().getVarKeyList()) + { Object o = auxUser.getVariables().getVarObject(varKey); auxString += ChatColor.GOLD + varKey + ChatColor.WHITE + ":'" + ChatColor.GREEN + o.toString() + ChatColor.WHITE + "', "; } - if (auxString.lastIndexOf(",") > 0) { + if (auxString.lastIndexOf(",") > 0) + { auxString = auxString.substring(0, auxString.lastIndexOf(",")); } sender.sendMessage(ChatColor.YELLOW + "Variables of user " + auxUser.getName() + ": "); @@ -1289,47 +1590,64 @@ public class GroupManager extends JavaPlugin { case manucheckv: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 2) { + if (args.length != 2) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { + if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) + { return false; } - if (match != null) { + if (match != null) + { auxUser = dataHolder.getUser(match.get(0)); - } else { + } + else + { auxUser = dataHolder.getUser(args[0]); } // Validating permission auxGroup = auxUser.getGroup(); auxGroup2 = permissionHandler.nextGroupWithVariable(auxGroup, args[1]); - if (!auxUser.getVariables().hasVar(args[1])) { + if (!auxUser.getVariables().hasVar(args[1])) + { // Check sub groups if (!auxUser.isSubGroupsEmpty() && auxGroup2 == null) - for (Group subGroup : auxUser.subGroupListCopy()) { + { + for (Group subGroup : auxUser.subGroupListCopy()) + { auxGroup2 = permissionHandler.nextGroupWithVariable(subGroup, args[1]); if (auxGroup2 != null) + { continue; + } } - if (auxGroup2 == null) { + } + if (auxGroup2 == null) + { sender.sendMessage(ChatColor.RED + "The user doesn't have access to that variable!"); return false; } } // Seems OK - if (auxUser.getVariables().hasVar(auxString)) { + if (auxUser.getVariables().hasVar(auxString)) + { sender.sendMessage(ChatColor.YELLOW + "The value of variable '" + ChatColor.GOLD + args[1] + ChatColor.YELLOW + "' is: '" + ChatColor.GREEN + auxUser.getVariables().getVarObject(args[1]).toString() + ChatColor.WHITE + "'"); sender.sendMessage(ChatColor.YELLOW + "This user own directly the variable"); } sender.sendMessage(ChatColor.YELLOW + "The value of variable '" + ChatColor.GOLD + args[1] + ChatColor.YELLOW + "' is: '" + ChatColor.GREEN + auxGroup2.getVariables().getVarObject(args[1]).toString() + ChatColor.WHITE + "'"); - if (!auxGroup.equals(auxGroup2)) { + if (!auxGroup.equals(auxGroup2)) + { sender.sendMessage(ChatColor.YELLOW + "And the value was inherited from group: " + ChatColor.GREEN + auxGroup2.getName()); } @@ -1337,30 +1655,38 @@ public class GroupManager extends JavaPlugin { case mangaddv: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length < 3) { + if (args.length < 3) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } auxGroup = dataHolder.getGroup(args[0]); - if (auxGroup == null) { + if (auxGroup == null) + { sender.sendMessage(ChatColor.RED + "The specified group does not exist!"); return false; } - if (auxGroup.isGlobal()) { + if (auxGroup.isGlobal()) + { sender.sendMessage(ChatColor.RED + "GlobalGroups do NOT support Info Nodes."); return false; } // Validating permission // Seems OK auxString = ""; - for (int i = 2; i < args.length; i++) { + for (int i = 2; i < args.length; i++) + { auxString += args[i]; - if ((i + 1) < args.length) { + if ((i + 1) < args.length) + { auxString += " "; } } @@ -1371,26 +1697,33 @@ public class GroupManager extends JavaPlugin { case mangdelv: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 2) { + if (args.length != 2) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } auxGroup = dataHolder.getGroup(args[0]); - if (auxGroup == null) { + if (auxGroup == null) + { sender.sendMessage(ChatColor.RED + "The specified group does not exist!"); return false; } - if (auxGroup.isGlobal()) { + if (auxGroup.isGlobal()) + { sender.sendMessage(ChatColor.RED + "GlobalGroups do NOT support Info Nodes."); return false; } // Validating permission - if (!auxGroup.getVariables().hasVar(args[1])) { + if (!auxGroup.getVariables().hasVar(args[1])) + { sender.sendMessage(ChatColor.RED + "The group doesn't have directly that variable!"); } // Seems OK @@ -1401,41 +1734,51 @@ public class GroupManager extends JavaPlugin { case manglistv: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 1) { + if (args.length != 1) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } auxGroup = dataHolder.getGroup(args[0]); - if (auxGroup == null) { + if (auxGroup == null) + { sender.sendMessage(ChatColor.RED + "The specified group does not exist!"); return false; } - if (auxGroup.isGlobal()) { + if (auxGroup.isGlobal()) + { sender.sendMessage(ChatColor.RED + "GlobalGroups do NOT support Info Nodes."); return false; } // Validating permission // Seems OK auxString = ""; - for (String varKey : auxGroup.getVariables().getVarKeyList()) { + for (String varKey : auxGroup.getVariables().getVarKeyList()) + { Object o = auxGroup.getVariables().getVarObject(varKey); auxString += ChatColor.GOLD + varKey + ChatColor.WHITE + ":'" + ChatColor.GREEN + o.toString() + ChatColor.WHITE + "', "; } - if (auxString.lastIndexOf(",") > 0) { + if (auxString.lastIndexOf(",") > 0) + { auxString = auxString.substring(0, auxString.lastIndexOf(",")); } sender.sendMessage(ChatColor.YELLOW + "Variables of group " + auxGroup.getName() + ": "); sender.sendMessage(auxString + "."); auxString = ""; - for (String grp : auxGroup.getInherits()) { + for (String grp : auxGroup.getInherits()) + { auxString += grp + ", "; } - if (auxString.lastIndexOf(",") > 0) { + if (auxString.lastIndexOf(",") > 0) + { auxString = auxString.substring(0, auxString.lastIndexOf(",")); sender.sendMessage(ChatColor.YELLOW + "Plus all variables from groups: " + auxString); } @@ -1444,32 +1787,40 @@ public class GroupManager extends JavaPlugin { case mangcheckv: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 2) { + if (args.length != 2) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } auxGroup = dataHolder.getGroup(args[0]); - if (auxGroup == null) { + if (auxGroup == null) + { sender.sendMessage(ChatColor.RED + "The specified group does not exist!"); return false; } - if (auxGroup.isGlobal()) { + if (auxGroup.isGlobal()) + { sender.sendMessage(ChatColor.RED + "GlobalGroups do NOT support Info Nodes."); return false; } // Validating permission auxGroup2 = permissionHandler.nextGroupWithVariable(auxGroup, args[1]); - if (auxGroup2 == null) { + if (auxGroup2 == null) + { sender.sendMessage(ChatColor.RED + "The group doesn't have access to that variable!"); } // Seems OK sender.sendMessage(ChatColor.YELLOW + "The value of variable '" + ChatColor.GOLD + args[1] + ChatColor.YELLOW + "' is: '" + ChatColor.GREEN + auxGroup2.getVariables().getVarObject(args[1]).toString() + ChatColor.WHITE + "'"); - if (!auxGroup.equals(auxGroup2)) { + if (!auxGroup.equals(auxGroup2)) + { sender.sendMessage(ChatColor.YELLOW + "And the value was inherited from group: " + ChatColor.GREEN + auxGroup2.getName()); } @@ -1477,21 +1828,29 @@ public class GroupManager extends JavaPlugin { case manwhois: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 1) { + if (args.length != 1) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { + if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) + { return false; } - if (match != null) { + if (match != null) + { auxUser = dataHolder.getUser(match.get(0)); - } else { + } + else + { auxUser = dataHolder.getUser(args[0]); } // Seems OK @@ -1499,17 +1858,20 @@ public class GroupManager extends JavaPlugin { sender.sendMessage(ChatColor.YELLOW + "Group: " + ChatColor.GREEN + auxUser.getGroup().getName()); // Compile a list of subgroups auxString = ""; - for (String subGroup : auxUser.subGroupListStringCopy()) { + for (String subGroup : auxUser.subGroupListStringCopy()) + { auxString += subGroup + ", "; } - if (auxString.lastIndexOf(",") > 0) { + if (auxString.lastIndexOf(",") > 0) + { auxString = auxString.substring(0, auxString.lastIndexOf(",")); sender.sendMessage(ChatColor.YELLOW + "subgroups: " + auxString); } sender.sendMessage(ChatColor.YELLOW + "Overloaded: " + ChatColor.GREEN + dataHolder.isOverloaded(auxUser.getName())); auxGroup = dataHolder.surpassOverload(auxUser.getName()).getGroup(); - if (!auxGroup.equals(auxUser.getGroup())) { + if (!auxGroup.equals(auxUser.getGroup())) + { sender.sendMessage(ChatColor.YELLOW + "Original Group: " + ChatColor.GREEN + auxGroup.getName()); } // victim.permissions.add(args[1]); @@ -1517,30 +1879,40 @@ public class GroupManager extends JavaPlugin { case tempadd: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 1) { + if (args.length != 1) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { + if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) + { return false; } - if (match != null) { + if (match != null) + { auxUser = dataHolder.getUser(match.get(0)); - } else { + } + else + { auxUser = dataHolder.getUser(args[0]); } // Validating permission - if (!isConsole && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) { + if (!isConsole && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) + { sender.sendMessage(ChatColor.RED + "Can't modify player with same permissions than you, or higher."); return false; } // Seems OK - if (overloadedUsers.get(dataHolder.getName().toLowerCase()) == null) { + if (overloadedUsers.get(dataHolder.getName().toLowerCase()) == null) + { overloadedUsers.put(dataHolder.getName().toLowerCase(), new ArrayList()); } dataHolder.overloadUser(auxUser.getName()); @@ -1551,34 +1923,45 @@ public class GroupManager extends JavaPlugin { case tempdel: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 1) { + if (args.length != 1) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { + if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) + { return false; } - if (match != null) { + if (match != null) + { auxUser = dataHolder.getUser(match.get(0)); - } else { + } + else + { auxUser = dataHolder.getUser(args[0]); } // Validating permission - if (!isConsole && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) { + if (!isConsole && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) + { sender.sendMessage(ChatColor.RED + "You can't modify a player with same permissions as you, or higher."); return false; } // Seems OK - if (overloadedUsers.get(dataHolder.getName().toLowerCase()) == null) { + if (overloadedUsers.get(dataHolder.getName().toLowerCase()) == null) + { overloadedUsers.put(dataHolder.getName().toLowerCase(), new ArrayList()); } dataHolder.removeOverload(auxUser.getName()); - if (overloadedUsers.get(dataHolder.getName().toLowerCase()).contains(auxUser)) { + if (overloadedUsers.get(dataHolder.getName().toLowerCase()).contains(auxUser)) + { overloadedUsers.get(dataHolder.getName().toLowerCase()).remove(auxUser); } sender.sendMessage(ChatColor.YELLOW + "You removed that player's overload. He's back to normal!"); @@ -1587,28 +1970,37 @@ public class GroupManager extends JavaPlugin { case templist: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // WORKING auxString = ""; removeList = new ArrayList(); count = 0; - for (User u : overloadedUsers.get(dataHolder.getName().toLowerCase())) { - if (!dataHolder.isOverloaded(u.getName())) { + for (User u : overloadedUsers.get(dataHolder.getName().toLowerCase())) + { + if (!dataHolder.isOverloaded(u.getName())) + { removeList.add(u); - } else { + } + else + { auxString += u.getName() + ", "; count++; } } - if (count == 0) { + if (count == 0) + { sender.sendMessage(ChatColor.YELLOW + "There are no users in overload mode."); return true; } auxString = auxString.substring(0, auxString.lastIndexOf(",")); - if (overloadedUsers.get(dataHolder.getName().toLowerCase()) == null) { + if (overloadedUsers.get(dataHolder.getName().toLowerCase()) == null) + { overloadedUsers.put(dataHolder.getName().toLowerCase(), new ArrayList()); } overloadedUsers.get(dataHolder.getName().toLowerCase()).removeAll(removeList); @@ -1618,24 +2010,31 @@ public class GroupManager extends JavaPlugin { case tempdelall: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // WORKING removeList = new ArrayList(); count = 0; - for (User u : overloadedUsers.get(dataHolder.getName().toLowerCase())) { - if (dataHolder.isOverloaded(u.getName())) { + for (User u : overloadedUsers.get(dataHolder.getName().toLowerCase())) + { + if (dataHolder.isOverloaded(u.getName())) + { dataHolder.removeOverload(u.getName()); count++; } } - if (count == 0) { + if (count == 0) + { sender.sendMessage(ChatColor.YELLOW + "There are no users in overload mode."); return true; } - if (overloadedUsers.get(dataHolder.getName().toLowerCase()) == null) { + if (overloadedUsers.get(dataHolder.getName().toLowerCase()) == null) + { overloadedUsers.put(dataHolder.getName().toLowerCase(), new ArrayList()); } overloadedUsers.get(dataHolder.getName().toLowerCase()).clear(); @@ -1648,12 +2047,17 @@ public class GroupManager extends JavaPlugin { boolean forced = false; if ((args.length == 1) && (args[0].equalsIgnoreCase("force"))) + { forced = true; + } - try { + try + { worldsHolder.saveChanges(forced); sender.sendMessage(ChatColor.YELLOW + " All changes were saved."); - } catch (IllegalStateException ex) { + } + catch (IllegalStateException ex) + { sender.sendMessage(ChatColor.RED + ex.getMessage()); } return true; @@ -1663,17 +2067,21 @@ public class GroupManager extends JavaPlugin { /** * Attempt to reload a specific world */ - if (args.length > 0) { + if (args.length > 0) + { - if (!lastError.isEmpty()) { + if (!lastError.isEmpty()) + { sender.sendMessage(ChatColor.RED + "All commands are locked due to an error. Check the log and then try a '/manload'.)"); return true; } auxString = ""; - for (int i = 0; i < args.length; i++) { + for (int i = 0; i < args.length; i++) + { auxString += args[i]; - if ((i + 1) < args.length) { + if ((i + 1) < args.length) + { auxString += " "; } } @@ -1689,7 +2097,9 @@ public class GroupManager extends JavaPlugin { BukkitPermissions.updateAllPlayers(); - } else { + } + else + { /** * Reload all settings and data as no world was specified. @@ -1708,25 +2118,33 @@ public class GroupManager extends JavaPlugin { * Fire an event as none will have been triggered in the reload. */ if (GroupManager.isLoaded()) + { GroupManagerEventHandler.callEvent(GMSystemEvent.Action.RELOADED); + } return true; case listgroups: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // WORKING auxString = ""; - for (Group g : dataHolder.getGroupList()) { + for (Group g : dataHolder.getGroupList()) + { auxString += g.getName() + ", "; } - for (Group g : getGlobalGroups().getGroupList()) { + for (Group g : getGlobalGroups().getGroupList()) + { auxString += g.getName() + ", "; } - if (auxString.lastIndexOf(",") > 0) { + if (auxString.lastIndexOf(",") > 0) + { auxString = auxString.substring(0, auxString.lastIndexOf(",")); } sender.sendMessage(ChatColor.YELLOW + " Groups Available: " + ChatColor.WHITE + auxString); @@ -1735,141 +2153,185 @@ public class GroupManager extends JavaPlugin { case manpromote: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 2) { + if (args.length != 2) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { + if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) + { return false; } - if (match != null) { + if (match != null) + { auxUser = dataHolder.getUser(match.get(0)); - } else { + } + else + { auxUser = dataHolder.getUser(args[0]); } auxGroup = dataHolder.getGroup(args[1]); - if (auxGroup == null) { + if (auxGroup == null) + { sender.sendMessage(ChatColor.RED + "Group not found!"); return false; } - if (auxGroup.isGlobal()) { + if (auxGroup.isGlobal()) + { sender.sendMessage(ChatColor.RED + "Players may not be members of GlobalGroups directly."); return false; } // Validating permission - if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) { + if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) + { sender.sendMessage(ChatColor.RED + "You can't modify a player with same permissions as you, or higher."); return false; } - if (!isConsole && !isOpOverride && (permissionHandler.hasGroupInInheritance(auxGroup, senderGroup.getName()))) { + if (!isConsole && !isOpOverride && (permissionHandler.hasGroupInInheritance(auxGroup, senderGroup.getName()))) + { sender.sendMessage(ChatColor.RED + "The destination group can't be the same as yours, or higher."); return false; } - if (!isConsole && !isOpOverride && (!permissionHandler.inGroup(senderUser.getName(), auxUser.getGroupName()) || !permissionHandler.inGroup(senderUser.getName(), auxGroup.getName()))) { + if (!isConsole && !isOpOverride && (!permissionHandler.inGroup(senderUser.getName(), auxUser.getGroupName()) || !permissionHandler.inGroup(senderUser.getName(), auxGroup.getName()))) + { sender.sendMessage(ChatColor.RED + "You can't modify a player involving a group that you don't inherit."); return false; } - if (!isConsole && !isOpOverride && (!permissionHandler.hasGroupInInheritance(auxUser.getGroup(), auxGroup.getName()) && !permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) { + if (!isConsole && !isOpOverride && (!permissionHandler.hasGroupInInheritance(auxUser.getGroup(), auxGroup.getName()) && !permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) + { sender.sendMessage(ChatColor.RED + "You can't modify a player using groups with different heritage line."); return false; } - if (!isConsole && !isOpOverride && (!permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) { + if (!isConsole && !isOpOverride && (!permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) + { sender.sendMessage(ChatColor.RED + "The new group must be a higher rank."); return false; } // Seems OK auxUser.setGroup(auxGroup); if (!sender.hasPermission("groupmanager.notify.other") || (isConsole)) + { sender.sendMessage(ChatColor.YELLOW + "You changed " + auxUser.getName() + " group to " + auxGroup.getName() + "."); + } return true; case mandemote: // Validating state of sender - if (dataHolder == null || permissionHandler == null) { + if (dataHolder == null || permissionHandler == null) + { if (!setDefaultWorldHandler(sender)) + { return true; + } } // Validating arguments - if (args.length != 2) { + if (args.length != 2) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); return false; } - if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) { + if ((validateOnlinePlayer) && ((match = validatePlayer(args[0], sender)) == null)) + { return false; } - if (match != null) { + if (match != null) + { auxUser = dataHolder.getUser(match.get(0)); - } else { + } + else + { auxUser = dataHolder.getUser(args[0]); } auxGroup = dataHolder.getGroup(args[1]); - if (auxGroup == null) { + if (auxGroup == null) + { sender.sendMessage(ChatColor.RED + "Group not found!"); return false; } - if (auxGroup.isGlobal()) { + if (auxGroup.isGlobal()) + { sender.sendMessage(ChatColor.RED + "Players may not be members of GlobalGroups directly."); return false; } // Validating permission - if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) { + if (!isConsole && !isOpOverride && (senderGroup != null ? permissionHandler.inGroup(auxUser.getName(), senderGroup.getName()) : false)) + { sender.sendMessage(ChatColor.RED + "You can't modify a player with same permissions as you, or higher."); return false; } - if (!isConsole && !isOpOverride && (permissionHandler.hasGroupInInheritance(auxGroup, senderGroup.getName()))) { + if (!isConsole && !isOpOverride && (permissionHandler.hasGroupInInheritance(auxGroup, senderGroup.getName()))) + { sender.sendMessage(ChatColor.RED + "The destination group can't be the same as yours, or higher."); return false; } - if (!isConsole && !isOpOverride && (!permissionHandler.inGroup(senderUser.getName(), auxUser.getGroupName()) || !permissionHandler.inGroup(senderUser.getName(), auxGroup.getName()))) { + if (!isConsole && !isOpOverride && (!permissionHandler.inGroup(senderUser.getName(), auxUser.getGroupName()) || !permissionHandler.inGroup(senderUser.getName(), auxGroup.getName()))) + { sender.sendMessage(ChatColor.RED + "You can't modify a player involving a group that you don't inherit."); return false; } - if (!isConsole && !isOpOverride && (!permissionHandler.hasGroupInInheritance(auxUser.getGroup(), auxGroup.getName()) && !permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) { + if (!isConsole && !isOpOverride && (!permissionHandler.hasGroupInInheritance(auxUser.getGroup(), auxGroup.getName()) && !permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) + { sender.sendMessage(ChatColor.RED + "You can't modify a player using groups with different heritage line."); return false; } - if (!isConsole && !isOpOverride && (permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) { + if (!isConsole && !isOpOverride && (permissionHandler.hasGroupInInheritance(auxGroup, auxUser.getGroupName()))) + { sender.sendMessage(ChatColor.RED + "The new group must be a lower rank."); return false; } // Seems OK auxUser.setGroup(auxGroup); if (!sender.hasPermission("groupmanager.notify.other") || (isConsole)) + { sender.sendMessage(ChatColor.YELLOW + "You changed " + auxUser.getName() + " group to " + auxGroup.getName() + "."); + } return true; case mantogglevalidate: validateOnlinePlayer = !validateOnlinePlayer; sender.sendMessage(ChatColor.YELLOW + "Validade if player is online, now set to: " + Boolean.toString(validateOnlinePlayer)); - if (!validateOnlinePlayer) { + if (!validateOnlinePlayer) + { sender.sendMessage(ChatColor.GOLD + "From now on you can edit players not connected... BUT:"); sender.sendMessage(ChatColor.LIGHT_PURPLE + "From now on you should type the whole name of the player, correctly."); } return true; case mantogglesave: - if (scheduler == null) { + if (scheduler == null) + { enableScheduler(); sender.sendMessage(ChatColor.YELLOW + "The auto-saving is enabled!"); - } else { + } + else + { disableScheduler(); sender.sendMessage(ChatColor.YELLOW + "The auto-saving is disabled!"); } return true; case manworld: auxString = selectedWorlds.get(sender); - if (auxString != null) { + if (auxString != null) + { sender.sendMessage(ChatColor.YELLOW + "You have the world '" + dataHolder.getName() + "' in your selection."); - } else { - if (dataHolder == null) { + } + else + { + if (dataHolder == null) + { sender.sendMessage(ChatColor.YELLOW + "There is no world selected. And no world is available now."); - } else { + } + else + { sender.sendMessage(ChatColor.YELLOW + "You don't have a world in your selection.."); sender.sendMessage(ChatColor.YELLOW + "Working with the direct world where your player is."); sender.sendMessage(ChatColor.YELLOW + "Your world now uses permissions of world name: '" + dataHolder.getName() + "' "); @@ -1879,14 +2341,17 @@ public class GroupManager extends JavaPlugin { return true; case manselect: - if (args.length < 1) { + if (args.length < 1) + { sender.sendMessage(ChatColor.RED + "Review your arguments count! (/ )"); sender.sendMessage(ChatColor.YELLOW + "Worlds available: "); ArrayList worlds = worldsHolder.allWorldsDataList(); auxString = ""; - for (int i = 0; i < worlds.size(); i++) { + for (int i = 0; i < worlds.size(); i++) + { auxString += worlds.get(i).getName(); - if ((i + 1) < worlds.size()) { + if ((i + 1) < worlds.size()) + { auxString += ", "; } } @@ -1894,13 +2359,16 @@ public class GroupManager extends JavaPlugin { return false; } auxString = ""; - for (int i = 0; i < args.length; i++) { - if (args[i] == null) { + for (int i = 0; i < args.length; i++) + { + if (args[i] == null) + { logger.warning("Bukkit gave invalid arguments array! Cmd: " + cmd.getName() + " args.length: " + args.length); return false; } auxString += args[i]; - if (i < (args.length - 1)) { + if (i < (args.length - 1)) + { auxString += " "; } } @@ -1912,7 +2380,8 @@ public class GroupManager extends JavaPlugin { return true; case manclear: - if (args.length != 0) { + if (args.length != 0) + { sender.sendMessage(ChatColor.RED + "Review your arguments count!"); return false; } @@ -1932,12 +2401,14 @@ public class GroupManager extends JavaPlugin { /** * Sets up the default world for use. */ - private boolean setDefaultWorldHandler(CommandSender sender) { + private boolean setDefaultWorldHandler(CommandSender sender) + { dataHolder = worldsHolder.getWorldData(worldsHolder.getDefaultWorld().getName()); permissionHandler = dataHolder.getPermissionsHandler(); - if ((dataHolder != null) && (permissionHandler != null)) { + if ((dataHolder != null) && (permissionHandler != null)) + { selectedWorlds.put(sender, dataHolder.getName()); sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. Default world '" + worldsHolder.getDefaultWorld().getName() + "' selected."); return true; @@ -1951,61 +2422,82 @@ public class GroupManager extends JavaPlugin { /** * Send confirmation of a group change. using permission nodes... - * + * * groupmanager.notify.self groupmanager.notify.other - * + * * @param name * @param msg */ - public static void notify(String name, String msg) { + public static void notify(String name, String msg) + { Player player = Bukkit.getServer().getPlayerExact(name); - for (Player test : Bukkit.getServer().getOnlinePlayers()) { - if (!test.equals(player)) { + for (Player test : Bukkit.getServer().getOnlinePlayers()) + { + if (!test.equals(player)) + { if (test.hasPermission("groupmanager.notify.other")) + { test.sendMessage(ChatColor.YELLOW + name + " was" + msg); - } else if ((player != null) && ((player.hasPermission("groupmanager.notify.self")) || (player.hasPermission("groupmanager.notify.other")))) + } + } + else if ((player != null) && ((player.hasPermission("groupmanager.notify.self")) || (player.hasPermission("groupmanager.notify.other")))) + { player.sendMessage(ChatColor.YELLOW + "You were" + msg); + } } } /** - * Load a List of players matching the name given. If none online, check - * Offline. - * + * Load a List of players matching the name given. If none online, check Offline. + * * @param playerName, sender * @return true if a single match is found */ - private List validatePlayer(String playerName, CommandSender sender) { + private List validatePlayer(String playerName, CommandSender sender) + { List players = new ArrayList(); List match = new ArrayList(); players = this.getServer().matchPlayer(playerName); - if (players.isEmpty()) { + if (players.isEmpty()) + { // Check for an offline player (exact match). - if (Arrays.asList(this.getServer().getOfflinePlayers()).contains(Bukkit.getOfflinePlayer(playerName))) { + if (Arrays.asList(this.getServer().getOfflinePlayers()).contains(Bukkit.getOfflinePlayer(playerName))) + { match.add(playerName); - } else { + } + else + { // look for partial matches - for (OfflinePlayer offline : this.getServer().getOfflinePlayers()) { + for (OfflinePlayer offline : this.getServer().getOfflinePlayers()) + { if (offline.getName().toLowerCase().startsWith(playerName.toLowerCase())) + { match.add(offline.getName()); + } } } - } else { - for (Player player : players) { + } + else + { + for (Player player : players) + { match.add(player.getName()); } } - if (match.isEmpty() || match == null) { + if (match.isEmpty() || match == null) + { sender.sendMessage(ChatColor.RED + "Player not found!"); return null; - } else if (match.size() > 1) { + } + else if (match.size() > 1) + { sender.sendMessage(ChatColor.RED + "Too many matches found! (" + match.toString() + ")"); return null; } @@ -2017,7 +2509,8 @@ public class GroupManager extends JavaPlugin { /** * @return the config */ - public GMConfiguration getGMConfig() { + public GMConfiguration getGMConfig() + { return config; } @@ -2025,12 +2518,14 @@ public class GroupManager extends JavaPlugin { /** * @return the backupFolder */ - public File getBackupFolder() { + public File getBackupFolder() + { return backupFolder; } - public static GlobalGroups getGlobalGroups() { + public static GlobalGroups getGlobalGroups() + { return globalGroups; diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/Tasks/BukkitPermsUpdateTask.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/Tasks/BukkitPermsUpdateTask.java index 1a0fc2369..4b51403ae 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/Tasks/BukkitPermsUpdateTask.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/Tasks/BukkitPermsUpdateTask.java @@ -7,15 +7,17 @@ import org.anjocaido.groupmanager.GroupManager; * Created by ElgarL */ -public class BukkitPermsUpdateTask implements Runnable { - - public BukkitPermsUpdateTask() { +public class BukkitPermsUpdateTask implements Runnable +{ + public BukkitPermsUpdateTask() + { super(); } @Override - public void run() { + public void run() + { // Signal loaded and update BukkitPermissions. GroupManager.setLoaded(true); @@ -25,5 +27,4 @@ public class BukkitPermsUpdateTask implements Runnable { GroupManager.logger.info("Bukkit Permissions Updated!"); } - } \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java index bb04fa3d7..280a882c4 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java @@ -12,59 +12,74 @@ import org.anjocaido.groupmanager.GroupManager; import org.anjocaido.groupmanager.dataholder.WorldDataHolder; import org.anjocaido.groupmanager.utils.StringPermissionComparator; + /** - * + * * @author gabrielcouto */ -public abstract class DataUnit { - +public abstract class DataUnit +{ private WorldDataHolder dataSource; private String name; private boolean changed, sorted = false; private ArrayList permissions = new ArrayList(); - public DataUnit(WorldDataHolder dataSource, String name) { + public DataUnit(WorldDataHolder dataSource, String name) + { this.dataSource = dataSource; this.name = name; } - public DataUnit(String 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())) { + public boolean equals(Object o) + { + + if (o instanceof DataUnit) + { + DataUnit go = (DataUnit)o; + if (this.getName().equalsIgnoreCase(go.getName())) + { // Global Group match. if (this.dataSource == null && go.getDataSource() == null) + { return true; + } // This is a global group, the object to test isn't. if (this.dataSource == null && go.getDataSource() != null) + { return false; + } // This is not a global group, but the object to test is. if (this.dataSource != null && go.getDataSource() == null) + { return false; + } // Match on group name and world name. if (this.dataSource.getName().equalsIgnoreCase(go.getDataSource().getName())) + { return true; + } } } return false; } @Override - public int hashCode() { + public int hashCode() + { int hash = 5; hash = 71 * hash + (this.name != null ? this.name.toLowerCase().hashCode() : 0); @@ -73,20 +88,22 @@ public abstract class DataUnit { /** * Set the data source to point to a different worldDataHolder - * + * * @param source */ - public void setDataSource(WorldDataHolder source) { + public void setDataSource(WorldDataHolder source) + { this.dataSource = source; } /** * Get the current worldDataHolder this object is pointing to - * + * * @return the dataSource */ - public WorldDataHolder getDataSource() { + public WorldDataHolder getDataSource() + { return dataSource; } @@ -94,20 +111,26 @@ public abstract class DataUnit { /** * @return the name */ - public String getName() { + public String getName() + { return name; } - public void flagAsChanged() { + public void flagAsChanged() + { WorldDataHolder testSource = getDataSource(); String source = ""; if (testSource == null) + { source = "GlobalGroups"; + } else + { source = testSource.getName(); + } GroupManager.logger.finest("DataSource: " + source + " - DataUnit: " + getName() + " flagged as changed!"); // for(StackTraceElement st: Thread.currentThread().getStackTrace()){ @@ -117,63 +140,76 @@ public abstract class DataUnit { changed = true; } - public boolean isChanged() { + public boolean isChanged() + { return changed; } - public void flagAsSaved() { + public void flagAsSaved() + { WorldDataHolder testSource = getDataSource(); String source = ""; if (testSource == null) + { source = "GlobalGroups"; + } else + { source = testSource.getName(); + } GroupManager.logger.finest("DataSource: " + source + " - DataUnit: " + getName() + " flagged as saved!"); changed = false; } - public boolean hasSamePermissionNode(String permission) { + public boolean hasSamePermissionNode(String permission) + { return permissions.contains(permission); } - public void addPermission(String permission) { + public void addPermission(String permission) + { - if (!hasSamePermissionNode(permission)) { + if (!hasSamePermissionNode(permission)) + { permissions.add(permission); } flagAsChanged(); } - public boolean removePermission(String permission) { + public boolean removePermission(String permission) + { flagAsChanged(); return permissions.remove(permission); } /** - * Use this only to list permissions. - * You can't edit the permissions using the returned ArrayList instance - * + * 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 getPermissionList() { + public List getPermissionList() + { return Collections.unmodifiableList(permissions); } - public boolean isSorted() { + public boolean isSorted() + { return this.sorted; } - public void sortPermissions() { + public void sortPermissions() + { - if (!isSorted()) { + if (!isSorted()) + { Collections.sort(permissions, StringPermissionComparator.getInstance()); sorted = true; } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java index 751dc8fd6..5fe7365ce 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java @@ -14,97 +14,108 @@ import java.util.Collections; import java.util.List; import java.util.Map; + /** - * + * * @author gabrielcouto/ElgarL */ -public class Group extends DataUnit implements Cloneable { - +public class Group extends DataUnit implements Cloneable +{ /** * The group it inherits DIRECTLY! */ private ArrayList inherits = new ArrayList(); /** - * This one holds the fields in INFO node. - * like prefix = 'c' - * or build = false + * This one holds the fields in INFO node. like prefix = 'c' or build = false */ private GroupVariables variables = new GroupVariables(this); /** * Constructor for individual World Groups. - * + * * @param name */ - public Group(WorldDataHolder source, String name) { + public Group(WorldDataHolder source, String name) + { super(source, name); } /** * Constructor for Global Groups. - * + * * @param name */ - public Group(String name) { + public Group(String name) + { super(name); } /** * Is this a GlobalGroup - * + * * @return true if this is a global group */ - public boolean isGlobal() { + public boolean isGlobal() + { return (getDataSource() == null); } /** * Clone this group - * + * * @return a clone of this group */ @Override - public Group clone() { + public Group clone() + { Group clone; - if (isGlobal()) { + if (isGlobal()) + { clone = new Group(this.getName()); - } else { + } + else + { clone = new Group(getDataSource(), this.getName()); clone.inherits = new ArrayList(this.getInherits()); } - for (String perm : this.getPermissionList()) { + for (String perm : this.getPermissionList()) + { clone.addPermission(perm); } - clone.variables = ((GroupVariables) variables).clone(clone); + clone.variables = ((GroupVariables)variables).clone(clone); //clone.flagAsChanged(); return clone; } /** * Use this to deliver a group from a different dataSource to another - * + * * @param dataSource * @return Null or Clone */ - public Group clone(WorldDataHolder dataSource) { + public Group clone(WorldDataHolder dataSource) + { - if (dataSource.groupExists(this.getName())) { + if (dataSource.groupExists(this.getName())) + { return null; } Group clone = dataSource.createGroup(this.getName()); // Don't add inheritance for GlobalGroups - if (!isGlobal()) { + if (!isGlobal()) + { clone.inherits = new ArrayList(this.getInherits()); } - for (String perm : this.getPermissionList()) { + for (String perm : this.getPermissionList()) + { clone.addPermission(perm); } clone.variables = variables.clone(clone); @@ -113,13 +124,13 @@ 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. - * + * 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 getInherits() { + public List getInherits() + { return Collections.unmodifiableList(inherits); } @@ -127,27 +138,35 @@ public class Group extends DataUnit implements Cloneable { /** * @param inherit the inherits to set */ - public void addInherits(Group inherit) { + public void addInherits(Group inherit) + { - if (!isGlobal()) { - if (!this.getDataSource().groupExists(inherit.getName())) { + if (!isGlobal()) + { + if (!this.getDataSource().groupExists(inherit.getName())) + { getDataSource().addGroup(inherit); } - if (!inherits.contains(inherit.getName().toLowerCase())) { + if (!inherits.contains(inherit.getName().toLowerCase())) + { inherits.add(inherit.getName().toLowerCase()); } flagAsChanged(); - if (GroupManager.isLoaded()) { + if (GroupManager.isLoaded()) + { GroupManager.BukkitPermissions.updateAllPlayers(); GroupManagerEventHandler.callEvent(this, Action.GROUP_INHERITANCE_CHANGED); } } } - public boolean removeInherits(String inherit) { + public boolean removeInherits(String inherit) + { - if (!isGlobal()) { - if (this.inherits.contains(inherit.toLowerCase())) { + if (!isGlobal()) + { + if (this.inherits.contains(inherit.toLowerCase())) + { this.inherits.remove(inherit.toLowerCase()); flagAsChanged(); GroupManagerEventHandler.callEvent(this, Action.GROUP_INHERITANCE_CHANGED); @@ -160,25 +179,30 @@ public class Group extends DataUnit implements Cloneable { /** * @return the variables */ - public GroupVariables getVariables() { + public GroupVariables getVariables() + { return variables; } /** - * + * * @param varList */ - public void setVariables(Map varList) { + public void setVariables(Map varList) + { - if (!isGlobal()) { + if (!isGlobal()) + { GroupVariables temp = new GroupVariables(this, varList); variables.clearVars(); - for (String key : temp.getVarKeyList()) { + for (String key : temp.getVarKeyList()) + { variables.addVar(key, temp.getVarObject(key)); } flagAsChanged(); - if (GroupManager.isLoaded()) { + if (GroupManager.isLoaded()) + { GroupManager.BukkitPermissions.updateAllPlayers(); GroupManagerEventHandler.callEvent(this, Action.GROUP_INFO_CHANGED); } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/GroupVariables.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/GroupVariables.java index e08d1db7d..e77b3af2c 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/GroupVariables.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/GroupVariables.java @@ -6,15 +6,17 @@ package org.anjocaido.groupmanager.data; import java.util.Map; + /** - * + * * @author gabrielcouto */ -public class GroupVariables extends Variables implements Cloneable { - +public class GroupVariables extends Variables implements Cloneable +{ private Group owner; - public GroupVariables(Group owner) { + public GroupVariables(Group owner) + { super(owner); this.owner = owner; @@ -23,23 +25,27 @@ public class GroupVariables extends Variables implements Cloneable { addVar("build", false); } - public GroupVariables(Group owner, Map varList) { + public GroupVariables(Group owner, Map varList) + { super(owner); variables = varList; - if (variables.get("prefix") == null) { + if (variables.get("prefix") == null) + { variables.put("prefix", ""); owner.flagAsChanged(); } //thisGrp.prefix = infoNode.get("prefix").toString(); - if (variables.get("suffix") == null) { + if (variables.get("suffix") == null) + { variables.put("suffix", ""); owner.flagAsChanged(); } //thisGrp.suffix = infoNode.get("suffix").toString(); - if (variables.get("build") == null) { + if (variables.get("build") == null) + { variables.put("build", false); owner.flagAsChanged(); } @@ -48,13 +54,15 @@ public class GroupVariables extends Variables implements Cloneable { /** * A clone of all vars here. - * + * * @return GroupVariables clone */ - protected GroupVariables clone(Group newOwner) { + protected GroupVariables clone(Group newOwner) + { GroupVariables clone = new GroupVariables(newOwner); - for (String key : variables.keySet()) { + for (String key : variables.keySet()) + { clone.variables.put(key, variables.get(key)); } newOwner.flagAsChanged(); @@ -63,21 +71,30 @@ public class GroupVariables extends Variables implements Cloneable { /** * Remove a var from the list - * + * * @param name */ @Override - public void removeVar(String name) { + public void removeVar(String name) + { - try { + try + { this.variables.remove(name); - } catch (Exception e) { } - if (name.equals("prefix")) { + catch (Exception e) + { + } + if (name.equals("prefix")) + { addVar("prefix", ""); - } else if (name.equals("suffix")) { + } + else if (name.equals("suffix")) + { addVar("suffix", ""); - } else if (name.equals("build")) { + } + else if (name.equals("build")) + { addVar("build", false); } owner.flagAsChanged(); @@ -87,7 +104,8 @@ public class GroupVariables extends Variables implements Cloneable { * @return the owner */ @Override - public Group getOwner() { + public Group getOwner() + { return owner; } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java index 6c74c2e50..128e5a7b1 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java @@ -16,44 +16,47 @@ import java.util.Map; import org.bukkit.Bukkit; import org.bukkit.entity.Player; + /** - * + * * @author gabrielcouto/ElgarL */ -public class User extends DataUnit implements Cloneable { - +public class User extends DataUnit implements Cloneable +{ /** - * - */ + * + */ private String group = null; private ArrayList subGroups = new ArrayList(); /** - * This one holds the fields in INFO node. like prefix = 'c' or build = - * false + * This one holds the fields in INFO node. like prefix = 'c' or build = false */ private UserVariables variables = new UserVariables(this); - private transient Player bukkitPlayer = null; + private Player bukkitPlayer = null; /** - * + * * @param name */ - public User(WorldDataHolder source, String name) { + public User(WorldDataHolder source, String name) + { super(source, name); this.group = source.getDefaultGroup().getName(); } /** - * + * * @return User clone */ @Override - public User clone() { + public User clone() + { User clone = new User(getDataSource(), this.getName()); clone.group = this.group; - for (String perm : this.getPermissionList()) { + for (String perm : this.getPermissionList()) + { clone.addPermission(perm); } // clone.variables = this.variables.clone(); @@ -63,22 +66,28 @@ public class User extends DataUnit implements Cloneable { /** * Use this to deliver a user from one WorldDataHolder to another - * + * * @param dataSource * @return null if given dataSource already contains the same user */ - public User clone(WorldDataHolder dataSource) { + public User clone(WorldDataHolder dataSource) + { - if (dataSource.isUserDeclared(this.getName())) { + if (dataSource.isUserDeclared(this.getName())) + { return null; } User clone = dataSource.createUser(this.getName()); - if (dataSource.getGroup(group) == null) { + if (dataSource.getGroup(group) == null) + { clone.setGroup(dataSource.getDefaultGroup()); - } else { + } + else + { clone.setGroup(dataSource.getGroup(this.getGroupName())); } - for (String perm : this.getPermissionList()) { + for (String perm : this.getPermissionList()) + { clone.addPermission(perm); } clone.variables = this.variables.clone(this); @@ -86,10 +95,12 @@ public class User extends DataUnit implements Cloneable { return clone; } - public Group getGroup() { + public Group getGroup() + { Group result = getDataSource().getGroup(group); - if (result == null) { + if (result == null) + { this.setGroup(getDataSource().getDefaultGroup()); result = getDataSource().getDefaultGroup(); } @@ -99,21 +110,22 @@ public class User extends DataUnit implements Cloneable { /** * @return the group */ - public String getGroupName() { + public String getGroupName() + { Group result = getDataSource().getGroup(group); - if (result == null) { + if (result == null) + { group = getDataSource().getDefaultGroup().getName(); } return group; } - /** - * @param group - * the group to set + * @param group the group to set */ - public void setGroup(Group group) { + public void setGroup(Group group) + { setGroup(group, true); } @@ -121,20 +133,25 @@ public class User extends DataUnit implements Cloneable { /** * @param group the group to set * @param updatePerms if we are to trigger a superperms update. - * + * */ - public void setGroup(Group group, Boolean updatePerms) { + public void setGroup(Group group, Boolean updatePerms) + { - if (!this.getDataSource().groupExists(group.getName())) { + if (!this.getDataSource().groupExists(group.getName())) + { getDataSource().addGroup(group); } group = getDataSource().getGroup(group.getName()); String oldGroup = this.group; this.group = group.getName(); flagAsChanged(); - if (GroupManager.isLoaded()) { + if (GroupManager.isLoaded()) + { if (!GroupManager.BukkitPermissions.isPlayer_join() && (updatePerms)) + { GroupManager.BukkitPermissions.updatePlayer(getBukkitPlayer()); + } // Do we notify of the group change? String defaultGroupName = getDataSource().getDefaultGroup().getName(); @@ -144,32 +161,42 @@ public class User extends DataUnit implements Cloneable { boolean notify = (!oldGroup.equalsIgnoreCase(defaultGroupName)) || ((oldGroup.equalsIgnoreCase(defaultGroupName)) && (!this.group.equalsIgnoreCase(defaultGroupName))); if (notify) + { GroupManager.notify(this.getName(), String.format(" moved to the group %s.", group.getName())); + } GroupManagerEventHandler.callEvent(this, Action.USER_GROUP_CHANGED); } } - public boolean addSubGroup(Group subGroup) { + 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())) { + if (this.group.equalsIgnoreCase(subGroup.getName())) + { return false; } // User already has this subgroup if (containsSubGroup(subGroup)) + { return false; + } // If the group doesn't exists add it - if (!this.getDataSource().groupExists(subGroup.getName())) { + if (!this.getDataSource().groupExists(subGroup.getName())) + { getDataSource().addGroup(subGroup); } subGroups.add(subGroup.getName()); flagAsChanged(); - if (GroupManager.isLoaded()) { + if (GroupManager.isLoaded()) + { if (!GroupManager.BukkitPermissions.isPlayer_join()) + { GroupManager.BukkitPermissions.updatePlayer(getBukkitPlayer()); + } GroupManagerEventHandler.callEvent(this, Action.USER_SUBGROUP_CHANGED); } return true; @@ -179,43 +206,58 @@ public class User extends DataUnit implements Cloneable { //subGroups.add(subGroup.getName()); } - public int subGroupsSize() { + public int subGroupsSize() + { return subGroups.size(); } - public boolean isSubGroupsEmpty() { + public boolean isSubGroupsEmpty() + { return subGroups.isEmpty(); } - public boolean containsSubGroup(Group subGroup) { + public boolean containsSubGroup(Group subGroup) + { return subGroups.contains(subGroup.getName()); } - public boolean removeSubGroup(Group subGroup) { + public boolean removeSubGroup(Group subGroup) + { - try { - if (subGroups.remove(subGroup.getName())) { + try + { + if (subGroups.remove(subGroup.getName())) + { flagAsChanged(); if (GroupManager.isLoaded()) + { if (!GroupManager.BukkitPermissions.isPlayer_join()) + { GroupManager.BukkitPermissions.updatePlayer(getBukkitPlayer()); + } + } GroupManagerEventHandler.callEvent(this, Action.USER_SUBGROUP_CHANGED); return true; } - } catch (Exception e) { + } + catch (Exception e) + { } return false; } - public ArrayList subGroupListCopy() { + public ArrayList subGroupListCopy() + { ArrayList val = new ArrayList(); - for (String gstr : subGroups) { + for (String gstr : subGroups) + { Group g = getDataSource().getGroup(gstr); - if (g == null) { + if (g == null) + { removeSubGroup(g); continue; } @@ -224,7 +266,8 @@ public class User extends DataUnit implements Cloneable { return val; } - public ArrayList subGroupListStringCopy() { + public ArrayList subGroupListStringCopy() + { return new ArrayList(subGroups); } @@ -232,40 +275,46 @@ public class User extends DataUnit implements Cloneable { /** * @return the variables */ - public UserVariables getVariables() { + public UserVariables getVariables() + { return variables; } /** - * + * * @param varList */ - public void setVariables(Map varList) { + public void setVariables(Map varList) + { //UserVariables temp = new UserVariables(this, varList); variables.clearVars(); - for (String key : varList.keySet()) { + for (String key : varList.keySet()) + { variables.addVar(key, varList.get(key)); } flagAsChanged(); - if (GroupManager.isLoaded()) { + if (GroupManager.isLoaded()) + { //if (!GroupManager.BukkitPermissions.isPlayer_join()) // GroupManager.BukkitPermissions.updatePlayer(this.getName()); GroupManagerEventHandler.callEvent(this, Action.USER_INFO_CHANGED); } } - - public User updatePlayer(Player player) { + public User updatePlayer(Player player) + { bukkitPlayer = player; return this; } - public Player getBukkitPlayer() { + public Player getBukkitPlayer() + { - if (bukkitPlayer == null) { + if (bukkitPlayer == null) + { bukkitPlayer = Bukkit.getPlayer(this.getName()); } return bukkitPlayer; diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/UserVariables.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/UserVariables.java index f994595c1..36c7e7e1a 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/UserVariables.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/UserVariables.java @@ -6,21 +6,24 @@ package org.anjocaido.groupmanager.data; import java.util.Map; + /** - * + * * @author gabrielcouto */ -public class UserVariables extends Variables { - +public class UserVariables extends Variables +{ private User owner; - public UserVariables(User owner) { + public UserVariables(User owner) + { super(owner); this.owner = owner; } - public UserVariables(User owner, Map varList) { + public UserVariables(User owner, Map varList) + { super(owner); this.variables = varList; @@ -29,13 +32,15 @@ public class UserVariables extends Variables { /** * A clone of all vars here. - * + * * @return UserVariables clone */ - protected UserVariables clone(User newOwner) { + protected UserVariables clone(User newOwner) + { UserVariables clone = new UserVariables(newOwner); - for (String key : variables.keySet()) { + for (String key : variables.keySet()) + { clone.variables.put(key, variables.get(key)); } newOwner.flagAsChanged(); @@ -46,7 +51,8 @@ public class UserVariables extends Variables { * @return the owner */ @Override - public User getOwner() { + public User getOwner() + { return owner; } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Variables.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Variables.java index 42ceba7e4..06e309008 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Variables.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Variables.java @@ -8,41 +8,39 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; + /** - * A class that holds variables of a user/group. - * In groups, it holds the contents of INFO node. - * Like: - * prefix - * suffix + * A class that holds variables of a user/group. In groups, it holds the contents of INFO node. Like: prefix suffix * build - * + * * @author gabrielcouto */ -public abstract class Variables implements Cloneable { - +public abstract class Variables implements Cloneable +{ private DataUnit owner; protected Map variables = new HashMap(); - public Variables(DataUnit owner) { + public Variables(DataUnit owner) + { this.owner = owner; } /** - * Add var to the the INFO node. - * examples: - * addVar("build",true); - * addVar("prefix","c"); - * + * Add var to the the INFO node. 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) { + public void addVar(String name, Object o) + { - if (o == null) { + if (o == null) + { return; } - if (variables.containsKey(name)) { + if (variables.containsKey(name)) + { variables.remove(name); } variables.put(name, o); @@ -51,143 +49,178 @@ 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) { + 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) { + public String getVarString(String name) + { Object o = variables.get(name); - try { + try + { return o == null ? "" : o.toString(); - } catch (Exception e) { + } + catch (Exception e) + { return ""; } } /** - * + * * @param name * @return false if null. or a Boolean.parseBoolean of the string */ - public Boolean getVarBoolean(String name) { + public Boolean getVarBoolean(String name) + { Object o = variables.get(name); - try { + try + { return o == null ? false : Boolean.parseBoolean(o.toString()); - } catch (Exception e) { + } + catch (Exception e) + { return false; } } /** - * + * * @param name * @return -1 if null. or a parseInt of the string */ - public Integer getVarInteger(String name) { + public Integer getVarInteger(String name) + { Object o = variables.get(name); - try { + try + { return o == null ? -1 : Integer.parseInt(o.toString()); - } catch (Exception e) { + } + catch (Exception e) + { return -1; } } /** - * + * * @param name * @return -1 if null. or a parseDouble of the string */ - public Double getVarDouble(String name) { + public Double getVarDouble(String name) + { Object o = variables.get(name); - try { + try + { return o == null ? -1.0D : Double.parseDouble(o.toString()); - } catch (Exception e) { + } + catch (Exception e) + { return -1.0D; } } /** * All variable keys this is holding - * + * * @return Set of all variable names. */ - public Set getVarKeyList() { + public Set 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) { + 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() { + public int getSize() + { return variables.size(); } /** * Remove a var from the list - * + * * @param name */ - public void removeVar(String name) { + public void removeVar(String name) + { - try { + try + { variables.remove(name); - } catch (Exception e) { + } + catch (Exception e) + { } owner.flagAsChanged(); } - public static Object parseVariableValue(String value) { + public static Object parseVariableValue(String value) + { - try { + try + { Integer i = Integer.parseInt(value); return i; - } catch (NumberFormatException e) { } - try { + catch (NumberFormatException e) + { + } + try + { Double d = Double.parseDouble(value); return d; - } catch (NumberFormatException e) { } - if (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("yes") || value.equalsIgnoreCase("on")) { + catch (NumberFormatException e) + { + } + if (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("yes") || value.equalsIgnoreCase("on")) + { return true; - } else if (value.equalsIgnoreCase("false") || value.equalsIgnoreCase("no") || value.equalsIgnoreCase("off")) { + } + else if (value.equalsIgnoreCase("false") || value.equalsIgnoreCase("no") || value.equalsIgnoreCase("off")) + { return false; } return value; } - public void clearVars() { + public void clearVars() + { variables.clear(); owner.flagAsChanged(); @@ -196,12 +229,14 @@ public abstract class Variables implements Cloneable { /** * @return the owner */ - public DataUnit getOwner() { + public DataUnit getOwner() + { return owner; } - public boolean isEmpty() { + public boolean isEmpty() + { return variables.isEmpty(); } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java index eaaaace74..8169df321 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java @@ -6,20 +6,20 @@ import java.util.Map; import org.anjocaido.groupmanager.data.Group; + /** * This container holds all Groups loaded from the relevant groupsFile. - * + * * @author ElgarL - * + * */ -public class GroupsDataHolder { - +public class GroupsDataHolder +{ private WorldDataHolder dataSource; private Group defaultGroup = null; private File groupsFile; private boolean haveGroupsChanged = false; private long timeStampGroups = 0; - /** * The actual groups holder */ @@ -28,22 +28,26 @@ public class GroupsDataHolder { /** * Constructor */ - protected GroupsDataHolder() { - + protected GroupsDataHolder() + { } - public void setDataSource(WorldDataHolder dataSource) { + 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()) + { group.setDataSource(this.dataSource); + } } /** * @return the defaultGroup */ - public Group getDefaultGroup() { + public Group getDefaultGroup() + { return defaultGroup; } @@ -51,7 +55,8 @@ public class GroupsDataHolder { /** * @param defaultGroup the defaultGroup to set */ - public void setDefaultGroup(Group defaultGroup) { + public void setDefaultGroup(Group defaultGroup) + { this.defaultGroup = defaultGroup; } @@ -59,7 +64,8 @@ public class GroupsDataHolder { /** * @return the groups */ - public Map getGroups() { + public Map getGroups() + { return groups; } @@ -67,7 +73,8 @@ public class GroupsDataHolder { /** * @param groups the groups to set */ - public void setGroups(Map groups) { + public void setGroups(Map groups) + { this.groups = groups; } @@ -75,7 +82,8 @@ public class GroupsDataHolder { /** * @return the groupsFile */ - public File getGroupsFile() { + public File getGroupsFile() + { return groupsFile; } @@ -83,7 +91,8 @@ public class GroupsDataHolder { /** * @param groupsFile the groupsFile to set */ - public void setGroupsFile(File groupsFile) { + public void setGroupsFile(File groupsFile) + { this.groupsFile = groupsFile; } @@ -91,7 +100,8 @@ public class GroupsDataHolder { /** * @return the haveGroupsChanged */ - public boolean HaveGroupsChanged() { + public boolean HaveGroupsChanged() + { return haveGroupsChanged; } @@ -99,7 +109,8 @@ public class GroupsDataHolder { /** * @param haveGroupsChanged the haveGroupsChanged to set */ - public void setGroupsChanged(boolean haveGroupsChanged) { + public void setGroupsChanged(boolean haveGroupsChanged) + { this.haveGroupsChanged = haveGroupsChanged; } @@ -107,7 +118,8 @@ public class GroupsDataHolder { /** * @return the timeStampGroups */ - public long getTimeStampGroups() { + public long getTimeStampGroups() + { return timeStampGroups; } @@ -115,9 +127,9 @@ public class GroupsDataHolder { /** * @param timeStampGroups the timeStampGroups to set */ - public void setTimeStampGroups(long timeStampGroups) { + public void setTimeStampGroups(long timeStampGroups) + { this.timeStampGroups = timeStampGroups; } - } \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/OverloadedWorldHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/OverloadedWorldHolder.java index 84561b6e5..4bc32cb4e 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/OverloadedWorldHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/OverloadedWorldHolder.java @@ -10,22 +10,24 @@ import java.util.HashMap; import java.util.Map; import org.anjocaido.groupmanager.data.User; + /** - * + * * @author gabrielcouto */ -public class OverloadedWorldHolder extends WorldDataHolder { - +public class OverloadedWorldHolder extends WorldDataHolder +{ /** - * - */ + * + */ protected Map overloadedUsers = new HashMap(); /** - * + * * @param ph */ - public OverloadedWorldHolder(WorldDataHolder ph) { + public OverloadedWorldHolder(WorldDataHolder ph) + { super(ph.getName()); this.setGroupsFile(ph.getGroupsFile()); @@ -35,20 +37,23 @@ public class OverloadedWorldHolder extends WorldDataHolder { } /** - * + * * @param userName * @return user object or a new user if none exists. */ @Override - public User getUser(String userName) { + public User getUser(String userName) + { //OVERLOADED CODE String userNameLowered = userName.toLowerCase(); - if (overloadedUsers.containsKey(userNameLowered)) { + if (overloadedUsers.containsKey(userNameLowered)) + { return overloadedUsers.get(userNameLowered); } //END CODE - if (getUsers().containsKey(userNameLowered)) { + if (getUsers().containsKey(userNameLowered)) + { return getUsers().get(userNameLowered); } User newUser = createUser(userName); @@ -57,23 +62,28 @@ public class OverloadedWorldHolder extends WorldDataHolder { } /** - * + * * @param theUser */ @Override - public void addUser(User theUser) { + public void addUser(User theUser) + { - if (theUser.getDataSource() != this) { + if (theUser.getDataSource() != this) + { theUser = theUser.clone(this); } - if (theUser == null) { + if (theUser == null) + { return; } - if ((theUser.getGroup() == null) || (!getGroups().containsKey(theUser.getGroupName().toLowerCase()))) { + if ((theUser.getGroup() == null) || (!getGroups().containsKey(theUser.getGroupName().toLowerCase()))) + { theUser.setGroup(getDefaultGroup()); } //OVERLOADED CODE - if (overloadedUsers.containsKey(theUser.getName().toLowerCase())) { + if (overloadedUsers.containsKey(theUser.getName().toLowerCase())) + { overloadedUsers.remove(theUser.getName().toLowerCase()); overloadedUsers.put(theUser.getName().toLowerCase(), theUser); return; @@ -85,20 +95,23 @@ public class OverloadedWorldHolder extends WorldDataHolder { } /** - * + * * @param userName * @return true if removed/false if not found. */ @Override - public boolean removeUser(String userName) { + public boolean removeUser(String userName) + { //OVERLOADED CODE - if (overloadedUsers.containsKey(userName.toLowerCase())) { + if (overloadedUsers.containsKey(userName.toLowerCase())) + { overloadedUsers.remove(userName.toLowerCase()); return true; } //END CODE - if (getUsers().containsKey(userName.toLowerCase())) { + if (getUsers().containsKey(userName.toLowerCase())) + { getUsers().remove(userName.toLowerCase()); setUsersChanged(true); return true; @@ -107,25 +120,33 @@ public class OverloadedWorldHolder extends WorldDataHolder { } @Override - public boolean removeGroup(String groupName) { + public boolean removeGroup(String groupName) + { - if (groupName.equals(getDefaultGroup())) { + if (groupName.equals(getDefaultGroup())) + { return false; } - for (String key : getGroups().keySet()) { - if (groupName.equalsIgnoreCase(key)) { + for (String key : getGroups().keySet()) + { + if (groupName.equalsIgnoreCase(key)) + { getGroups().remove(key); - for (String userKey : getUsers().keySet()) { + for (String userKey : getUsers().keySet()) + { User user = getUsers().get(userKey); - if (user.getGroupName().equalsIgnoreCase(key)) { + if (user.getGroupName().equalsIgnoreCase(key)) + { user.setGroup(getDefaultGroup()); } } //OVERLOADED CODE - for (String userKey : overloadedUsers.keySet()) { + for (String userKey : overloadedUsers.keySet()) + { User user = overloadedUsers.get(userKey); - if (user.getGroupName().equalsIgnoreCase(key)) { + if (user.getGroupName().equalsIgnoreCase(key)) + { user.setGroup(getDefaultGroup()); } @@ -139,18 +160,23 @@ public class OverloadedWorldHolder extends WorldDataHolder { } /** - * + * * @return Collection of all users */ @Override - public Collection getUserList() { + public Collection getUserList() + { Collection overloadedList = new ArrayList(); Collection normalList = getUsers().values(); - for (User u : normalList) { - if (overloadedUsers.containsKey(u.getName().toLowerCase())) { + for (User u : normalList) + { + if (overloadedUsers.containsKey(u.getName().toLowerCase())) + { overloadedList.add(overloadedUsers.get(u.getName().toLowerCase())); - } else { + } + else + { overloadedList.add(u); } } @@ -158,25 +184,29 @@ public class OverloadedWorldHolder extends WorldDataHolder { } /** - * + * * @param userName * @return true if user is overloaded. */ - public boolean isOverloaded(String userName) { + public boolean isOverloaded(String userName) + { return overloadedUsers.containsKey(userName.toLowerCase()); } /** - * + * * @param userName */ - public void overloadUser(String userName) { + public void overloadUser(String userName) + { - if (!isOverloaded(userName)) { + if (!isOverloaded(userName)) + { User theUser = getUser(userName); theUser = theUser.clone(); - if (overloadedUsers.containsKey(theUser.getName().toLowerCase())) { + if (overloadedUsers.containsKey(theUser.getName().toLowerCase())) + { overloadedUsers.remove(theUser.getName().toLowerCase()); } overloadedUsers.put(theUser.getName().toLowerCase(), theUser); @@ -184,28 +214,31 @@ public class OverloadedWorldHolder extends WorldDataHolder { } /** - * + * * @param userName */ - public void removeOverload(String userName) { + public void removeOverload(String userName) + { overloadedUsers.remove(userName.toLowerCase()); } /** - * Gets the user in normal state. Surpassing the overload state. - * It doesn't affect permissions. But it enables plugins change the - * actual user permissions even in overload mode. - * + * Gets the user in normal state. Surpassing the overload state. It doesn't affect permissions. But it enables + * plugins change the actual user permissions even in overload mode. + * * @param userName * @return user object */ - public User surpassOverload(String userName) { + public User surpassOverload(String userName) + { - if (!isOverloaded(userName)) { + if (!isOverloaded(userName)) + { return getUser(userName); } - if (getUsers().containsKey(userName.toLowerCase())) { + if (getUsers().containsKey(userName.toLowerCase())) + { return getUsers().get(userName.toLowerCase()); } User newUser = createUser(userName); diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java index 665fe227d..6d8701fd4 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java @@ -6,19 +6,19 @@ import java.util.Map; import org.anjocaido.groupmanager.data.User; + /** * This container holds all Users loaded from the relevant usersFile. - * + * * @author ElgarL - * + * */ -public class UsersDataHolder { - +public class UsersDataHolder +{ private WorldDataHolder dataSource; private File usersFile; private boolean haveUsersChanged = false; private long timeStampUsers = 0; - /** * The actual groups holder */ @@ -27,23 +27,27 @@ public class UsersDataHolder { /** * Constructor */ - protected UsersDataHolder() { - + protected UsersDataHolder() + { } - public void setDataSource(WorldDataHolder dataSource) { + 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()) + { user.setDataSource(this.dataSource); + } } /** * @return the users */ - public Map getUsers() { + public Map getUsers() + { return users; } @@ -51,7 +55,8 @@ public class UsersDataHolder { /** * @param users the users to set */ - public void setUsers(Map users) { + public void setUsers(Map users) + { this.users = users; } @@ -59,7 +64,8 @@ public class UsersDataHolder { /** * @return the usersFile */ - public File getUsersFile() { + public File getUsersFile() + { return usersFile; } @@ -67,7 +73,8 @@ public class UsersDataHolder { /** * @param usersFile the usersFile to set */ - public void setUsersFile(File usersFile) { + public void setUsersFile(File usersFile) + { this.usersFile = usersFile; } @@ -75,7 +82,8 @@ public class UsersDataHolder { /** * @return the haveUsersChanged */ - public boolean HaveUsersChanged() { + public boolean HaveUsersChanged() + { return haveUsersChanged; } @@ -83,7 +91,8 @@ public class UsersDataHolder { /** * @param haveUsersChanged the haveUsersChanged to set */ - public void setUsersChanged(boolean haveUsersChanged) { + public void setUsersChanged(boolean haveUsersChanged) + { this.haveUsersChanged = haveUsersChanged; } @@ -91,7 +100,8 @@ public class UsersDataHolder { /** * @return the timeStampUsers */ - public long getTimeStampUsers() { + public long getTimeStampUsers() + { return timeStampUsers; } @@ -99,9 +109,9 @@ public class UsersDataHolder { /** * @param timeStampUsers the timeStampUsers to set */ - public void setTimeStampUsers(long timeStampUsers) { + public void setTimeStampUsers(long timeStampUsers) + { this.timeStampUsers = timeStampUsers; } - } \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java index fefc698f9..df1c3c078 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java @@ -36,15 +36,15 @@ import org.yaml.snakeyaml.Yaml; 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 */ -public class WorldDataHolder { - +public class WorldDataHolder +{ /** * World name */ @@ -58,28 +58,30 @@ public class WorldDataHolder { */ protected UsersDataHolder users = new UsersDataHolder(); /** - * - */ + * + */ protected AnjoPermissionsHandler permissionsHandler; /** * Prevent direct instantiation - * + * * @param worldName */ - public WorldDataHolder(String 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) { + public WorldDataHolder(String worldName, GroupsDataHolder groups, UsersDataHolder users) + { this.name = worldName; this.groups = groups; @@ -90,25 +92,27 @@ public class WorldDataHolder { /** * update the dataSource to point to this object. - * + * * This should be called whenever a set of world data is fetched. */ - public void updateDataSource() { + public void updateDataSource() + { this.groups.setDataSource(this); this.users.setDataSource(this); } /** - * 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 */ - public User getUser(String userName) { + public User getUser(String userName) + { - if (getUsers().containsKey(userName.toLowerCase())) { + if (getUsers().containsKey(userName.toLowerCase())) + { return getUsers().get(userName.toLowerCase()); } User newUser = createUser(userName); @@ -117,154 +121,189 @@ 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) { + public void addUser(User theUser) + { - if (theUser.getDataSource() != this) { + if (theUser.getDataSource() != this) + { theUser = theUser.clone(this); } - if (theUser == null) { + if (theUser == null) + { return; } - if ((theUser.getGroup() == null)) { + if ((theUser.getGroup() == null)) + { theUser.setGroup(groups.getDefaultGroup()); } removeUser(theUser.getName()); getUsers().put(theUser.getName().toLowerCase(), theUser); setUsersChanged(true); if (GroupManager.isLoaded()) + { GroupManagerEventHandler.callEvent(theUser, Action.USER_ADDED); + } } /** * 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) { + public boolean removeUser(String userName) + { - if (getUsers().containsKey(userName.toLowerCase())) { + if (getUsers().containsKey(userName.toLowerCase())) + { getUsers().remove(userName.toLowerCase()); setUsersChanged(true); if (GroupManager.isLoaded()) + { GroupManagerEventHandler.callEvent(userName, GMUserEvent.Action.USER_REMOVED); + } return true; } return false; } /** - * + * * @param userName * @return true if we have data for this player. */ - public boolean isUserDeclared(String userName) { + 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) { + public void setDefaultGroup(Group group) + { - if (!getGroups().containsKey(group.getName().toLowerCase()) || (group.getDataSource() != this)) { + if (!getGroups().containsKey(group.getName().toLowerCase()) || (group.getDataSource() != this)) + { addGroup(group); } groups.setDefaultGroup(getGroup(group.getName())); setGroupsChanged(true); if (GroupManager.isLoaded()) + { GroupManagerEventHandler.callEvent(GMSystemEvent.Action.DEFAULT_GROUP_CHANGED); + } } /** * Returns the default group of the file - * + * * @return the default group */ - public Group getDefaultGroup() { + 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) { + public Group getGroup(String groupName) + { if (groupName.toLowerCase().startsWith("g:")) + { return GroupManager.getGlobalGroups().getGroup(groupName); + } else + { return getGroups().get(groupName.toLowerCase()); + } } /** - * 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. */ - public boolean groupExists(String groupName) { + public boolean groupExists(String groupName) + { if (groupName.toLowerCase().startsWith("g:")) + { return GroupManager.getGlobalGroups().hasGroup(groupName); + } else + { return getGroups().containsKey(groupName.toLowerCase()); + } } /** * Add a group to the list - * + * * @param groupToAdd */ - public void addGroup(Group groupToAdd) { + public void addGroup(Group groupToAdd) + { - if (groupToAdd.getName().toLowerCase().startsWith("g:")) { + if (groupToAdd.getName().toLowerCase().startsWith("g:")) + { GroupManager.getGlobalGroups().addGroup(groupToAdd); GroupManagerEventHandler.callEvent(groupToAdd, GMGroupEvent.Action.GROUP_ADDED); return; } - if (groupToAdd.getDataSource() != this) { + if (groupToAdd.getDataSource() != this) + { groupToAdd = groupToAdd.clone(this); } removeGroup(groupToAdd.getName()); getGroups().put(groupToAdd.getName().toLowerCase(), groupToAdd); setGroupsChanged(true); if (GroupManager.isLoaded()) + { GroupManagerEventHandler.callEvent(groupToAdd, GMGroupEvent.Action.GROUP_ADDED); + } } /** * 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) { + public boolean removeGroup(String groupName) + { - if (groupName.toLowerCase().startsWith("g:")) { + if (groupName.toLowerCase().startsWith("g:")) + { return GroupManager.getGlobalGroups().removeGroup(groupName); } - if (getDefaultGroup() != null && groupName.equalsIgnoreCase(getDefaultGroup().getName())) { + if (getDefaultGroup() != null && groupName.equalsIgnoreCase(getDefaultGroup().getName())) + { return false; } - if (getGroups().containsKey(groupName.toLowerCase())) { + if (getGroups().containsKey(groupName.toLowerCase())) + { getGroups().remove(groupName.toLowerCase()); setGroupsChanged(true); if (GroupManager.isLoaded()) + { GroupManagerEventHandler.callEvent(groupName.toLowerCase(), GMGroupEvent.Action.GROUP_REMOVED); + } return true; } return false; @@ -272,15 +311,16 @@ 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 */ - public User createUser(String userName) { + public User createUser(String userName) + { - if (getUsers().containsKey(userName.toLowerCase())) { + if (getUsers().containsKey(userName.toLowerCase())) + { return null; } User newUser = new User(this, userName); @@ -291,20 +331,22 @@ 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 */ - public Group createGroup(String groupName) { + public Group createGroup(String groupName) + { - if (groupName.toLowerCase().startsWith("g:")) { + if (groupName.toLowerCase().startsWith("g:")) + { Group newGroup = new Group(groupName); return GroupManager.getGlobalGroups().newGroup(newGroup); } - if (getGroups().containsKey(groupName.toLowerCase())) { + if (getGroups().containsKey(groupName.toLowerCase())) + { return null; } @@ -315,19 +357,21 @@ public class WorldDataHolder { } /** - * + * * @return a collection of the groups */ - public Collection getGroupList() { + public Collection getGroupList() + { return getGroups().values(); } /** - * + * * @return a collection of the users */ - public Collection getUserList() { + public Collection getUserList() + { return getUsers().values(); } @@ -335,12 +379,16 @@ public class WorldDataHolder { /** * reads the file again */ - public void reload() { + public void reload() + { - try { + try + { reloadGroups(); reloadUsers(); - } catch (Exception ex) { + } + catch (Exception ex) + { Logger.getLogger(WorldDataHolder.class.getName()).log(Level.SEVERE, null, ex); } } @@ -348,17 +396,20 @@ public class WorldDataHolder { /** * Refresh Group data from file */ - public void reloadGroups() { + public void reloadGroups() + { GroupManager.setLoaded(false); - try { + try + { // temporary holder in case the load fails. WorldDataHolder ph = new WorldDataHolder(this.getName()); loadGroups(ph, getGroupsFile()); // transfer new data resetGroups(); - for (Group tempGroup : ph.getGroupList()) { + for (Group tempGroup : ph.getGroupList()) + { tempGroup.clone(this); } this.setDefaultGroup(getGroup(ph.getDefaultGroup().getName())); @@ -366,7 +417,9 @@ public class WorldDataHolder { this.setTimeStampGroups(getGroupsFile().lastModified()); ph = null; - } catch (Exception ex) { + } + catch (Exception ex) + { Logger.getLogger(WorldDataHolder.class.getName()).log(Level.WARNING, null, ex); } GroupManager.setLoaded(true); @@ -376,14 +429,17 @@ public class WorldDataHolder { /** * Refresh Users data from file */ - public void reloadUsers() { + public void reloadUsers() + { GroupManager.setLoaded(false); - try { + try + { // temporary holder in case the load fails. WorldDataHolder ph = new WorldDataHolder(this.getName()); // copy groups for reference - for (Group tempGroup : this.getGroupList()) { + for (Group tempGroup : this.getGroupList()) + { tempGroup.clone(ph); } // setup the default group before loading user data. @@ -391,30 +447,39 @@ public class WorldDataHolder { loadUsers(ph, getUsersFile()); // transfer new data resetUsers(); - for (User tempUser : ph.getUserList()) { + for (User tempUser : ph.getUserList()) + { tempUser.clone(this); } this.removeUsersChangedFlag(); this.setTimeStampUsers(getUsersFile().lastModified()); ph = null; - } catch (Exception ex) { + } + catch (Exception ex) + { Logger.getLogger(WorldDataHolder.class.getName()).log(Level.WARNING, null, ex); } GroupManager.setLoaded(true); GroupManagerEventHandler.callEvent(GMSystemEvent.Action.RELOADED); } - public void loadGroups(File groupsFile) { + public void loadGroups(File groupsFile) + { GroupManager.setLoaded(false); - try { + try + { setGroupsFile(groupsFile); loadGroups(this, groupsFile); - } catch (FileNotFoundException e) { + } + catch (FileNotFoundException e) + { e.printStackTrace(); throw new IllegalArgumentException("The file which should contain groups does not exist!\n" + groupsFile.getPath()); - } catch (IOException e) { + } + catch (IOException e) + { e.printStackTrace(); throw new IllegalArgumentException("Error access the groups file!\n" + groupsFile.getPath()); } @@ -422,16 +487,22 @@ public class WorldDataHolder { GroupManager.setLoaded(true); } - public void loadUsers(File usersFile) { + public void loadUsers(File usersFile) + { GroupManager.setLoaded(false); - try { + try + { setUsersFile(usersFile); loadUsers(this, usersFile); - } catch (FileNotFoundException e) { + } + catch (FileNotFoundException e) + { e.printStackTrace(); throw new IllegalArgumentException("The file which should contain users does not exist!\n" + usersFile.getPath()); - } catch (IOException e) { + } + catch (IOException e) + { e.printStackTrace(); throw new IllegalArgumentException("Error access the users file!\n" + usersFile.getPath()); } @@ -441,23 +512,28 @@ public class WorldDataHolder { /** * Returns a NEW data holder containing data read from the files - * + * * @param worldName * @param groupsFile * @param usersFile - * + * * @throws FileNotFoundException * @throws IOException */ - public static WorldDataHolder load(String worldName, File groupsFile, File usersFile) throws FileNotFoundException, 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); + } GroupManager.setLoaded(true); return ph; @@ -465,33 +541,44 @@ public class WorldDataHolder { /** * Updates the WorldDataHolder from the Groups file - * + * * @param ph * @param groupsFile - * + * * @throws FileNotFoundException * @throws IOException */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - protected static void loadGroups(WorldDataHolder ph, File groupsFile) throws FileNotFoundException, IOException { + @SuppressWarnings( + { + "rawtypes", "unchecked" + }) + protected static void loadGroups(WorldDataHolder ph, File groupsFile) throws FileNotFoundException, IOException + { // READ GROUPS FILE Yaml yamlGroups = new Yaml(new SafeConstructor()); Map groupsRootDataNode; - if (!groupsFile.exists()) { + if (!groupsFile.exists()) + { throw new IllegalArgumentException("The file which should contain groups does not exist!\n" + groupsFile.getPath()); } FileInputStream groupsInputStream = new FileInputStream(groupsFile); - try { - groupsRootDataNode = (Map) yamlGroups.load(new UnicodeReader(groupsInputStream)); - if (groupsRootDataNode == null) { + try + { + groupsRootDataNode = (Map)yamlGroups.load(new UnicodeReader(groupsInputStream)); + if (groupsRootDataNode == null) + { throw new NullPointerException(); } - } catch (Exception ex) { + } + catch (Exception ex) + { throw new IllegalArgumentException("The following file couldn't pass on Parser.\n" + groupsFile.getPath(), ex); - } finally { + } + finally + { groupsInputStream.close(); } @@ -503,9 +590,12 @@ public class WorldDataHolder { /* * Fetch all groups under the 'groups' entry. */ - try { - allGroupsNode = (Map) groupsRootDataNode.get("groups"); - } catch (Exception ex) { + try + { + allGroupsNode = (Map)groupsRootDataNode.get("groups"); + } + catch (Exception ex) + { throw new IllegalArgumentException("Your " + groupsFile.getPath() + " file is invalid. See console for details.", ex); } @@ -517,13 +607,17 @@ public class WorldDataHolder { * loop each group entry * and process it's data. */ - while (groupItr.hasNext()) { + while (groupItr.hasNext()) + { - try { + try + { groupCount++; // Attempt to fetch the next group name. groupKey = groupItr.next(); - } catch (Exception ex) { + } + catch (Exception ex) + { throw new IllegalArgumentException("Invalid group name for group entry (" + groupCount + ") in file: " + groupsFile.getPath(), ex); } @@ -532,9 +626,12 @@ public class WorldDataHolder { */ Map thisGroupNode = null; - try { - thisGroupNode = (Map) allGroupsNode.get(groupKey); - } catch (Exception ex) { + try + { + thisGroupNode = (Map)allGroupsNode.get(groupKey); + } + catch (Exception ex) + { throw new IllegalArgumentException("Invalid child nodes for group '" + groupKey + "' in file: " + groupsFile.getPath(), ex); } @@ -544,29 +641,37 @@ public class WorldDataHolder { */ Group thisGrp = ph.createGroup(groupKey); - if (thisGrp == null) { + if (thisGrp == null) + { throw new IllegalArgumentException("I think this Group was declared more than once: " + groupKey + " in file: " + groupsFile.getPath()); } // DEFAULT NODE Object nodeData = null; - try { + try + { nodeData = thisGroupNode.get("default"); - } catch (Exception ex) { + } + catch (Exception ex) + { throw new IllegalArgumentException("Bad format found in 'permissions' for group: " + groupKey + " in file: " + groupsFile.getPath()); } - if (nodeData == null) { + if (nodeData == null) + { /* * If no 'default' node is found do nothing. */ - } else if ((Boolean.parseBoolean(nodeData.toString()))) { + } + else if ((Boolean.parseBoolean(nodeData.toString()))) + { /* * Set this as the default group. * Warn if some other group has 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("Overriding first default request in file: " + groupsFile.getPath()); } @@ -576,51 +681,73 @@ public class WorldDataHolder { // PERMISSIONS NODE nodeData = null; - try { + try + { nodeData = thisGroupNode.get("permissions"); - } catch (Exception ex) { + } + catch (Exception ex) + { throw new IllegalArgumentException("Bad format found in 'permissions' for '" + groupKey + "' in file: " + groupsFile.getPath()); } - if (nodeData == null) { + if (nodeData == null) + { /* * If no permissions node is found, or it's empty * do nothing. */ - } else { + } + else + { /* * There is a permission list Which seems to hold some data */ - if (nodeData instanceof List) { + if (nodeData instanceof List) + { /* * Check each entry and add it as a new permission. */ - try { - for (Object o : ((List) nodeData)) { - try { + try + { + for (Object o : ((List)nodeData)) + { + try + { /* * Only add this permission if it's not empty. */ if (!o.toString().isEmpty()) + { thisGrp.addPermission(o.toString()); + } - } catch (NullPointerException ex) { + } + catch (NullPointerException ex) + { // Ignore this entry as it's null. It can be // safely dropped } } - } catch (Exception ex) { + } + 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) { + } + else if (nodeData instanceof String) + { /* * Only add this permission if it's not empty. */ if (!nodeData.toString().isEmpty()) - thisGrp.addPermission((String) nodeData); + { + thisGrp.addPermission((String)nodeData); + } - } else { + } + else + { throw new IllegalArgumentException("Unknown type of 'permissions' node(Should be String or List) for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); } /* @@ -633,13 +760,17 @@ public class WorldDataHolder { // INFO NODE nodeData = null; - try { + try + { nodeData = thisGroupNode.get("info"); - } catch (Exception ex) { + } + catch (Exception ex) + { throw new IllegalArgumentException("Bad format found in 'info' section for group: " + groupKey + " in file: " + groupsFile.getPath()); } - if (nodeData == null) { + if (nodeData == null) + { /* * No info section was found, so leave all variables as * defaults. @@ -647,75 +778,109 @@ public class WorldDataHolder { GroupManager.logger.warning("The group '" + thisGrp.getName() + "' has no 'info' section!"); GroupManager.logger.warning("Using default values: " + groupsFile.getPath()); - } else if (nodeData instanceof Map) { - try { - if (nodeData != null) { - thisGrp.setVariables((Map) nodeData); + } + else if (nodeData instanceof Map) + { + try + { + if (nodeData != null) + { + thisGrp.setVariables((Map)nodeData); } - } catch (Exception ex) { + } + catch (Exception ex) + { throw new IllegalArgumentException("Invalid formatting found in 'info' section for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath(), ex); } - } else + } + else + { throw new IllegalArgumentException("Unknown entry found in 'info' section for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); + } // INHERITANCE NODE nodeData = null; - try { + try + { nodeData = thisGroupNode.get("inheritance"); - } catch (Exception ex) { + } + catch (Exception ex) + { throw new IllegalArgumentException("Bad format found in 'inheritance' section for group: " + groupKey + " in file: " + groupsFile.getPath()); } - if (nodeData == null || nodeData instanceof List) { - if (nodeData == null) { + if (nodeData == null || nodeData instanceof List) + { + if (nodeData == null) + { /* * If no inheritance node is found, or it's empty * do nothing. */ - } else if (nodeData instanceof List) { - - try { - for (String grp : (List) nodeData) { - if (inheritance.get(groupKey) == null) { + } + else if (nodeData instanceof List) + { + + try + { + for (String grp : (List)nodeData) + { + if (inheritance.get(groupKey) == null) + { inheritance.put(groupKey, new ArrayList()); } inheritance.get(groupKey).add(grp); } - } catch (Exception ex) { + } + catch (Exception ex) + { throw new IllegalArgumentException("Invalid formatting found in 'inheritance' section for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath(), ex); } } - } else + } + else + { throw new IllegalArgumentException("Unknown entry found in 'inheritance' section for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); + } // END GROUP } - if (ph.getDefaultGroup() == null) { + if (ph.getDefaultGroup() == null) + { throw new IllegalArgumentException("There was no Default Group declared in file: " + groupsFile.getPath()); } /* * Build the inheritance map and recored any errors */ - for (String group : inheritance.keySet()) { + for (String group : inheritance.keySet()) + { List inheritedList = inheritance.get(group); Group thisGroup = ph.getGroup(group); if (thisGroup != null) - for (String inheritedKey : inheritedList) { - if (inheritedKey != null) { + { + for (String inheritedKey : inheritedList) + { + if (inheritedKey != null) + { Group inheritedGroup = ph.getGroup(inheritedKey); - if (inheritedGroup != null) { + if (inheritedGroup != null) + { thisGroup.addInherits(inheritedGroup); - } else + } + else + { GroupManager.logger.warning("Inherited group '" + inheritedKey + "' not found for group " + thisGroup.getName() + ". Ignoring entry in file: " + groupsFile.getPath()); + } } } + } } ph.removeGroupsChangedFlag(); @@ -728,31 +893,42 @@ public class WorldDataHolder { /** * Updates the WorldDataHolder from the Users file - * + * * @param ph * @param usersFile - * + * * @throws FileNotFoundException * @throws IOException */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - protected static void loadUsers(WorldDataHolder ph, File usersFile) throws FileNotFoundException, IOException { + @SuppressWarnings( + { + "rawtypes", "unchecked" + }) + protected static void loadUsers(WorldDataHolder ph, File usersFile) throws FileNotFoundException, IOException + { // READ USERS FILE Yaml yamlUsers = new Yaml(new SafeConstructor()); Map usersRootDataNode; - if (!usersFile.exists()) { + if (!usersFile.exists()) + { throw new IllegalArgumentException("The file which should contain users does not exist!\n" + usersFile.getPath()); } FileInputStream usersInputStream = new FileInputStream(usersFile); - try { - usersRootDataNode = (Map) yamlUsers.load(new UnicodeReader(usersInputStream)); - if (usersRootDataNode == null) { + try + { + usersRootDataNode = (Map)yamlUsers.load(new UnicodeReader(usersInputStream)); + if (usersRootDataNode == null) + { throw new NullPointerException(); } - } catch (Exception ex) { + } + catch (Exception ex) + { throw new IllegalArgumentException("The following file couldn't pass on Parser.\n" + usersFile.getPath(), ex); - } finally { + } + finally + { usersInputStream.close(); } @@ -763,72 +939,101 @@ public class WorldDataHolder { /* * Fetch all child nodes under the 'users' entry. */ - try { - allUsersNode = (Map) usersRootDataNode.get("users"); - } catch (Exception ex) { + try + { + allUsersNode = (Map)usersRootDataNode.get("users"); + } + catch (Exception ex) + { throw new IllegalArgumentException("Your " + usersFile.getPath() + " file is invalid. See console for details.", ex); } // Load users if the file is NOT empty - if (allUsersNode != null) { + if (allUsersNode != null) + { Iterator usersItr = allUsersNode.keySet().iterator(); String usersKey; Integer userCount = 0; - while (usersItr.hasNext()) { - try { + while (usersItr.hasNext()) + { + try + { userCount++; // Attempt to fetch the next user name. usersKey = usersItr.next(); - } catch (Exception ex) { + } + catch (Exception ex) + { throw new IllegalArgumentException("Invalid node type for user entry (" + userCount + ") in file: " + usersFile.getPath(), ex); } Map thisUserNode = null; - try { - thisUserNode = (Map) allUsersNode.get(usersKey); - } catch (Exception ex) { + try + { + thisUserNode = (Map)allUsersNode.get(usersKey); + } + catch (Exception ex) + { throw new IllegalArgumentException("Bad format found for user: " + usersKey + " in file: " + usersFile.getPath()); } User thisUser = ph.createUser(usersKey); - if (thisUser == null) { + if (thisUser == null) + { throw new IllegalArgumentException("I think this user was declared more than once: " + usersKey + " in file: " + usersFile.getPath()); } // USER PERMISSIONS NODES Object nodeData = null; - try { + try + { nodeData = thisUserNode.get("permissions"); - } catch (Exception ex) { + } + catch (Exception ex) + { throw new IllegalArgumentException("Bad format found in 'permissions' for user: " + usersKey + " in file: " + usersFile.getPath()); } - if (nodeData == null) { + if (nodeData == null) + { /* * If no permissions node is found, or it's empty * do nothing. */ - } else { - if (nodeData instanceof List) { - for (Object o : ((List) nodeData)) { + } + else + { + if (nodeData instanceof List) + { + for (Object o : ((List)nodeData)) + { /* * Only add this permission if it's not empty */ if (!o.toString().isEmpty()) + { thisUser.addPermission(o.toString()); + } } - } else if (nodeData instanceof String) { - try { + } + else if (nodeData instanceof String) + { + try + { /* * Only add this permission if it's not empty */ if (!nodeData.toString().isEmpty()) + { thisUser.addPermission(nodeData.toString()); - } catch (NullPointerException e) { + } + } + catch (NullPointerException e) + { // Ignore this entry as it's null. } } @@ -838,31 +1043,46 @@ public class WorldDataHolder { // SUBGROUPS NODES nodeData = null; - try { + try + { nodeData = thisUserNode.get("subgroups"); - } catch (Exception ex) { + } + catch (Exception ex) + { throw new IllegalArgumentException("Bad format found in 'subgroups' for user: " + usersKey + " in file: " + usersFile.getPath()); } - if (nodeData == null) { + if (nodeData == null) + { /* * If no subgroups node is found, or it's empty * do nothing. */ - } else if (nodeData instanceof List) { - for (Object o : ((List) nodeData)) { + } + else if (nodeData instanceof List) + { + for (Object o : ((List)nodeData)) + { Group subGrp = ph.getGroup(o.toString()); - if (subGrp != null) { + if (subGrp != null) + { thisUser.addSubGroup(subGrp); - } else { + } + else + { GroupManager.logger.warning("Subgroup '" + o.toString() + "' not found for user: " + thisUser.getName() + ". Ignoring entry in file: " + usersFile.getPath()); } } - } else if (nodeData instanceof String) { + } + else if (nodeData instanceof String) + { Group subGrp = ph.getGroup(nodeData.toString()); - if (subGrp != null) { + if (subGrp != null) + { thisUser.addSubGroup(subGrp); - } else { + } + else + { GroupManager.logger.warning("Subgroup '" + nodeData.toString() + "' not found for user: " + thisUser.getName() + ". Ignoring entry in file: " + usersFile.getPath()); } } @@ -870,42 +1090,58 @@ public class WorldDataHolder { // USER INFO NODE nodeData = null; - try { + try + { nodeData = thisUserNode.get("info"); - } catch (Exception ex) { + } + catch (Exception ex) + { throw new IllegalArgumentException("Bad format found in 'info' section for user: " + usersKey + " in file: " + usersFile.getPath()); } - if (nodeData == null) { + if (nodeData == null) + { /* * If no info node is found, or it's empty * do nothing. */ - } else if (nodeData instanceof Map) { - thisUser.setVariables((Map) nodeData); + } + else if (nodeData instanceof Map) + { + thisUser.setVariables((Map)nodeData); - } else + } + else + { throw new IllegalArgumentException("Unknown entry found in 'info' section for user: " + thisUser.getName() + " in file: " + usersFile.getPath()); + } // END INFO NODE // PRIMARY GROUP nodeData = null; - try { + try + { nodeData = thisUserNode.get("group"); - } catch (Exception ex) { + } + catch (Exception ex) + { throw new IllegalArgumentException("Bad format found in 'group' section for user: " + usersKey + " in file: " + usersFile.getPath()); } - if (nodeData != null) { + if (nodeData != null) + { Group hisGroup = ph.getGroup(nodeData.toString()); - if (hisGroup == null) { + if (hisGroup == null) + { GroupManager.logger.warning("There is no group " + thisUserNode.get("group").toString() + ", as stated for player " + thisUser.getName() + ": Set to '" + ph.getDefaultGroup().getName() + "' for file: " + usersFile.getPath()); hisGroup = ph.getDefaultGroup(); } thisUser.setGroup(hisGroup); - } else { + } + else + { thisUser.setGroup(ph.getDefaultGroup()); } } @@ -919,24 +1155,27 @@ public class WorldDataHolder { /** * Write a dataHolder in a specified file - * + * * @param ph * @param groupsFile */ - public static void writeGroups(WorldDataHolder ph, File groupsFile) { + public static void writeGroups(WorldDataHolder ph, File groupsFile) + { Map root = new HashMap(); Map groupsMap = new HashMap(); root.put("groups", groupsMap); - for (String groupKey : ph.getGroups().keySet()) { + for (String groupKey : ph.getGroups().keySet()) + { Group group = ph.getGroups().get(groupKey); Map aGroupMap = new HashMap(); groupsMap.put(group.getName(), aGroupMap); - if (ph.getDefaultGroup() == null) { + if (ph.getDefaultGroup() == null) + { GroupManager.logger.severe("There is no default group for world: " + ph.getName()); } aGroupMap.put("default", group.equals(ph.getDefaultGroup())); @@ -944,7 +1183,8 @@ public class WorldDataHolder { Map infoMap = new HashMap(); aGroupMap.put("info", infoMap); - for (String infoKey : group.getVariables().getVarKeyList()) { + for (String infoKey : group.getVariables().getVarKeyList()) + { infoMap.put(infoKey, group.getVariables().getVarObject(infoKey)); } @@ -953,11 +1193,13 @@ public class WorldDataHolder { aGroupMap.put("permissions", group.getPermissionList()); } - if (!root.isEmpty()) { + if (!root.isEmpty()) + { DumperOptions opt = new DumperOptions(); opt.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); final Yaml yaml = new Yaml(opt); - try { + try + { OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(groupsFile), "UTF-8"); String newLine = System.getProperty("line.separator"); @@ -975,9 +1217,15 @@ public class WorldDataHolder { yaml.dump(root, out); out.close(); - } catch (UnsupportedEncodingException ex) { - } catch (FileNotFoundException ex) { - } catch (IOException e) { + } + catch (UnsupportedEncodingException ex) + { + } + catch (FileNotFoundException ex) + { + } + catch (IOException e) + { } } @@ -987,7 +1235,9 @@ public class WorldDataHolder { ph.removeGroupsChangedFlag(); if (GroupManager.isLoaded()) + { GroupManagerEventHandler.callEvent(GMSystemEvent.Action.SAVED); + } /* * FileWriter tx = null; @@ -1007,35 +1257,43 @@ public class WorldDataHolder { /** * Write a dataHolder in a specified file - * + * * @param ph * @param usersFile */ - public static void writeUsers(WorldDataHolder ph, File usersFile) { + public static void writeUsers(WorldDataHolder ph, File usersFile) + { Map root = new HashMap(); Map usersMap = new HashMap(); root.put("users", usersMap); - for (String userKey : ph.getUsers().keySet()) { + 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()) { + if ((user.getGroup() == null || user.getGroup().equals(ph.getDefaultGroup())) && user.getPermissionList().isEmpty() && user.getVariables().isEmpty() && user.isSubGroupsEmpty()) + { continue; } Map aUserMap = new HashMap(); usersMap.put(user.getName(), aUserMap); - if (user.getGroup() == null) { + if (user.getGroup() == null) + { aUserMap.put("group", ph.getDefaultGroup().getName()); - } else { + } + else + { aUserMap.put("group", user.getGroup().getName()); } // USER INFO NODE - BETA - if (user.getVariables().getSize() > 0) { + if (user.getVariables().getSize() > 0) + { Map infoMap = new HashMap(); aUserMap.put("info", infoMap); - for (String infoKey : user.getVariables().getVarKeyList()) { + for (String infoKey : user.getVariables().getVarKeyList()) + { infoMap.put(infoKey, user.getVariables().getVarObject(infoKey)); } } @@ -1047,17 +1305,25 @@ public class WorldDataHolder { // END SUBGROUPS NODE - BETA } - if (!root.isEmpty()) { + if (!root.isEmpty()) + { DumperOptions opt = new DumperOptions(); opt.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); final Yaml yaml = new Yaml(opt); - try { + try + { OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(usersFile), "UTF-8"); yaml.dump(root, out); out.close(); - } catch (UnsupportedEncodingException ex) { - } catch (FileNotFoundException ex) { - } catch (IOException e) { + } + catch (UnsupportedEncodingException ex) + { + } + catch (FileNotFoundException ex) + { + } + catch (IOException e) + { } } @@ -1067,7 +1333,9 @@ public class WorldDataHolder { ph.removeUsersChangedFlag(); if (GroupManager.isLoaded()) + { GroupManagerEventHandler.callEvent(GMSystemEvent.Action.SAVED); + } /* * FileWriter tx = null; @@ -1086,32 +1354,31 @@ public class WorldDataHolder { } /** - * 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, - * without need to save the file. - * + * 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, 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) { + 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++) { + for (int i = 0; i < plugins.length; i++) + { // plugins[i].getConfiguration().load(); - try { + try + { plugins[i].getClass().getMethod("setupPermissions").invoke(plugins[i]); - } catch (Exception ex) { + } + catch (Exception ex) + { continue; } } @@ -1120,9 +1387,11 @@ public class WorldDataHolder { /** * @return the permissionsHandler */ - public AnjoPermissionsHandler getPermissionsHandler() { + public AnjoPermissionsHandler getPermissionsHandler() + { - if (permissionsHandler == null) { + if (permissionsHandler == null) + { permissionsHandler = new AnjoPermissionsHandler(this); } return permissionsHandler; @@ -1131,22 +1400,27 @@ public class WorldDataHolder { /** * @param haveUsersChanged the haveUsersChanged to set */ - public void setUsersChanged(boolean haveUsersChanged) { + public void setUsersChanged(boolean haveUsersChanged) + { users.setUsersChanged(haveUsersChanged); } /** - * + * * @return true if any user data has changed */ - public boolean haveUsersChanged() { + public boolean haveUsersChanged() + { - if (users.HaveUsersChanged()) { + if (users.HaveUsersChanged()) + { return true; } - for (User u : users.getUsers().values()) { - if (u.isChanged()) { + for (User u : users.getUsers().values()) + { + if (u.isChanged()) + { return true; } } @@ -1156,22 +1430,27 @@ public class WorldDataHolder { /** * @param setGroupsChanged the haveGroupsChanged to set */ - public void setGroupsChanged(boolean setGroupsChanged) { + public void setGroupsChanged(boolean setGroupsChanged) + { groups.setGroupsChanged(setGroupsChanged); } /** - * + * * @return true if any group data has changed. */ - public boolean haveGroupsChanged() { + public boolean haveGroupsChanged() + { - if (groups.HaveGroupsChanged()) { + if (groups.HaveGroupsChanged()) + { return true; } - for (Group g : groups.getGroups().values()) { - if (g.isChanged()) { + for (Group g : groups.getGroups().values()) + { + if (g.isChanged()) + { return true; } } @@ -1179,23 +1458,27 @@ public class WorldDataHolder { } /** - * - */ - public void removeUsersChangedFlag() { + * + */ + public void removeUsersChangedFlag() + { setUsersChanged(false); - for (User u : getUsers().values()) { + for (User u : getUsers().values()) + { u.flagAsSaved(); } } /** - * - */ - public void removeGroupsChangedFlag() { + * + */ + public void removeGroupsChangedFlag() + { setGroupsChanged(false); - for (Group g : getGroups().values()) { + for (Group g : getGroups().values()) + { g.flagAsSaved(); } } @@ -1203,7 +1486,8 @@ public class WorldDataHolder { /** * @return the usersFile */ - public File getUsersFile() { + public File getUsersFile() + { return users.getUsersFile(); } @@ -1211,7 +1495,8 @@ public class WorldDataHolder { /** * @param file the usersFile to set */ - public void setUsersFile(File file) { + public void setUsersFile(File file) + { users.setUsersFile(file); } @@ -1219,7 +1504,8 @@ public class WorldDataHolder { /** * @return the groupsFile */ - public File getGroupsFile() { + public File getGroupsFile() + { return groups.getGroupsFile(); } @@ -1227,7 +1513,8 @@ public class WorldDataHolder { /** * @param file the groupsFile to set */ - public void setGroupsFile(File file) { + public void setGroupsFile(File file) + { groups.setGroupsFile(file); } @@ -1235,7 +1522,8 @@ public class WorldDataHolder { /** * @return the name */ - public String getName() { + public String getName() + { return name; } @@ -1243,7 +1531,8 @@ public class WorldDataHolder { /** * Resets Groups. */ - public void resetGroups() { + public void resetGroups() + { // setDefaultGroup(null); groups.setGroups(new HashMap()); @@ -1252,7 +1541,8 @@ public class WorldDataHolder { /** * Resets Users */ - public void resetUsers() { + public void resetUsers() + { users.setUsers(new HashMap()); } @@ -1260,7 +1550,8 @@ public class WorldDataHolder { /** * @return the groups */ - public Map getGroups() { + public Map getGroups() + { return groups.getGroups(); } @@ -1268,7 +1559,8 @@ public class WorldDataHolder { /** * @return the users */ - public Map getUsers() { + public Map getUsers() + { return users.getUsers(); } @@ -1276,7 +1568,8 @@ public class WorldDataHolder { /** * @return the groups */ - public GroupsDataHolder getGroupsObject() { + public GroupsDataHolder getGroupsObject() + { return groups; } @@ -1284,7 +1577,8 @@ public class WorldDataHolder { /** * @param groupsDataHolder the GroupsDataHolder to set */ - public void setGroupsObject(GroupsDataHolder groupsDataHolder) { + public void setGroupsObject(GroupsDataHolder groupsDataHolder) + { groups = groupsDataHolder; } @@ -1292,7 +1586,8 @@ public class WorldDataHolder { /** * @return the users */ - public UsersDataHolder getUsersObject() { + public UsersDataHolder getUsersObject() + { return users; } @@ -1300,7 +1595,8 @@ public class WorldDataHolder { /** * @param usersDataHolder the UsersDataHolder to set */ - public void setUsersObject(UsersDataHolder usersDataHolder) { + public void setUsersObject(UsersDataHolder usersDataHolder) + { users = usersDataHolder; } @@ -1308,7 +1604,8 @@ public class WorldDataHolder { /** * @return the timeStampGroups */ - public long getTimeStampGroups() { + public long getTimeStampGroups() + { return groups.getTimeStampGroups(); } @@ -1316,7 +1613,8 @@ public class WorldDataHolder { /** * @return the timeStampUsers */ - public long getTimeStampUsers() { + public long getTimeStampUsers() + { return users.getTimeStampUsers(); } @@ -1324,7 +1622,8 @@ public class WorldDataHolder { /** * @param timeStampGroups the timeStampGroups to set */ - protected void setTimeStampGroups(long timeStampGroups) { + protected void setTimeStampGroups(long timeStampGroups) + { groups.setTimeStampGroups(timeStampGroups); } @@ -1332,17 +1631,22 @@ public class WorldDataHolder { /** * @param timeStampUsers the timeStampUsers to set */ - protected void setTimeStampUsers(long timeStampUsers) { + protected void setTimeStampUsers(long timeStampUsers) + { users.setTimeStampUsers(timeStampUsers); } - public void setTimeStamps() { + public void setTimeStamps() + { if (getGroupsFile() != null) + { setTimeStampGroups(getGroupsFile().lastModified()); + } if (getUsersFile() != null) + { setTimeStampUsers(getUsersFile().lastModified()); + } } - } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java index 27a7d9a59..b5238c058 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java @@ -25,55 +25,58 @@ import org.bukkit.World; import org.bukkit.configuration.MemorySection; import org.bukkit.entity.Player; + /** - * + * * @author gabrielcouto */ -public class WorldsHolder { - +public class WorldsHolder +{ /** * Map with instances of loaded worlds. */ private Map worldsData = new HashMap(); - /** - * Map of mirrors: - * The key is the mirror. - * The object is the mirrored. - * + * Map of mirrors: The key is the mirror. The object is the + * mirrored. + * * Mirror shows the same data of mirrored. */ private Map mirrorsGroup = new HashMap(); private Map mirrorsUser = new HashMap(); - private String serverDefaultWorldName; private GroupManager plugin; private File worldsFolder; /** - * + * * @param plugin */ - public WorldsHolder(GroupManager plugin) { + public WorldsHolder(GroupManager plugin) + { this.plugin = plugin; resetWorldsHolder(); } - - public void resetWorldsHolder() { - + + public void resetWorldsHolder() + { + worldsData = new HashMap(); mirrorsGroup = new HashMap(); mirrorsUser = new HashMap(); - + // Setup folders and check files exist for the primary world verifyFirstRun(); initialLoad(); if (serverDefaultWorldName == null) + { throw new IllegalStateException("There is no default group! OMG!"); + } } - private void initialLoad() { + private void initialLoad() + { // load the initial world initialWorldLoading(); @@ -83,14 +86,16 @@ public class WorldsHolder { loadAllSearchedWorlds(); } - private void initialWorldLoading() { + private void initialWorldLoading() + { //Load the default world loadWorld(serverDefaultWorldName); //defaultWorld = getUpdatedWorldData(serverDefaultWorldName); } - private void loadAllSearchedWorlds() { + private void loadAllSearchedWorlds() + { /* * Read all known worlds from Bukkit @@ -98,21 +103,28 @@ public class WorldsHolder { * 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())))) + { setupWorldFolder(world.getName()); + } + } /* * Loop over all folders within the worlds folder * and attempt to load the world data */ - for (File folder : worldsFolder.listFiles()) { - if (folder.isDirectory()) { + for (File folder : worldsFolder.listFiles()) + { + if (folder.isDirectory()) + { GroupManager.logger.info("World Found: " + folder.getName()); /* * 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 @@ -127,7 +139,8 @@ public class WorldsHolder { } @SuppressWarnings("rawtypes") - public void mirrorSetUp() { + public void mirrorSetUp() + { mirrorsGroup.clear(); mirrorsUser.clear(); @@ -135,25 +148,35 @@ public class WorldsHolder { HashSet mirroredWorlds = new HashSet(); - if (mirrorsMap != null) { - for (String source : mirrorsMap.keySet()) { + if (mirrorsMap != null) + { + for (String source : mirrorsMap.keySet()) + { // Make sure all non mirrored worlds have a set of data files. setupWorldFolder(source); // Load the world data if (!worldsData.containsKey(source.toLowerCase())) + { loadWorld(source); + } - if (mirrorsMap.get(source) instanceof ArrayList) { - ArrayList mirrorList = (ArrayList) mirrorsMap.get(source); + if (mirrorsMap.get(source) instanceof ArrayList) + { + ArrayList mirrorList = (ArrayList)mirrorsMap.get(source); // These worlds fully mirror their parent - for (Object o : mirrorList) { + for (Object o : mirrorList) + { String world = o.toString().toLowerCase(); - if (world != serverDefaultWorldName) { - try { + if (world != serverDefaultWorldName) + { + try + { mirrorsGroup.remove(world); mirrorsUser.remove(world); - } catch (Exception e) { + } + catch (Exception e) + { } mirrorsGroup.put(world, getWorldData(source).getName()); mirrorsUser.put(world, getWorldData(source).getName()); @@ -161,45 +184,70 @@ public class WorldsHolder { // Track this world so we can create a datasource for it later mirroredWorlds.add(o.toString()); - } else + } + else + { GroupManager.logger.log(Level.WARNING, "Mirroring error with " + o.toString() + ". Recursive loop detected!"); + } } - } else if (mirrorsMap.get(source) instanceof MemorySection) { - MemorySection subSection = (MemorySection) mirrorsMap.get(source); + } + else if (mirrorsMap.get(source) instanceof MemorySection) + { + MemorySection subSection = (MemorySection)mirrorsMap.get(source); - for (String key : subSection.getKeys(true)) { + for (String key : subSection.getKeys(true)) + { - if (key.toLowerCase() != serverDefaultWorldName) { + if (key.toLowerCase() != serverDefaultWorldName) + { - if (subSection.get(key) instanceof ArrayList) { - ArrayList mirrorList = (ArrayList) subSection.get(key); + if (subSection.get(key) instanceof ArrayList) + { + ArrayList mirrorList = (ArrayList)subSection.get(key); // These worlds have defined mirroring - for (Object o : mirrorList) { + for (Object o : mirrorList) + { String type = o.toString().toLowerCase(); - try { + try + { if (type.equals("groups")) + { mirrorsGroup.remove(key.toLowerCase()); + } if (type.equals("users")) + { mirrorsUser.remove(key.toLowerCase()); + } - } catch (Exception e) { + } + catch (Exception e) + { } if (type.equals("groups")) + { mirrorsGroup.put(key.toLowerCase(), getWorldData(source).getName()); + } if (type.equals("users")) + { mirrorsUser.put(key.toLowerCase(), getWorldData(source).getName()); + } } // Track this world so we can create a datasource for it later mirroredWorlds.add(key); - } else + } + else + { GroupManager.logger.log(Level.WARNING, "Mirroring error with " + key + ". Recursive loop detected!"); + } - } else { + } + else + { throw new IllegalStateException("Unknown mirroring format for " + key); } @@ -208,8 +256,10 @@ public class WorldsHolder { } // Create a datasource for any worlds not already loaded - for (String world : mirroredWorlds) { - if (!worldsData.containsKey(world.toLowerCase())) { + for (String world : mirroredWorlds) + { + if (!worldsData.containsKey(world.toLowerCase())) + { setupWorldFolder(world); loadWorld(world, true); } @@ -218,22 +268,29 @@ public class WorldsHolder { } /** - * - */ - public void reloadAll() { + * + */ + public void reloadAll() + { // Load global groups GroupManager.getGlobalGroups().load(); ArrayList alreadyDone = new ArrayList(); - for (WorldDataHolder w : worldsData.values()) { - if (alreadyDone.contains(w)) { + for (WorldDataHolder w : worldsData.values()) + { + if (alreadyDone.contains(w)) + { continue; } if (!mirrorsGroup.containsKey(w.getName().toLowerCase())) + { w.reloadGroups(); + } if (!mirrorsUser.containsKey(w.getName().toLowerCase())) + { w.reloadUsers(); + } alreadyDone.add(w); } @@ -241,134 +298,170 @@ public class WorldsHolder { } /** - * + * * @param worldName */ - public void reloadWorld(String worldName) { + public void reloadWorld(String worldName) + { if (!mirrorsGroup.containsKey(worldName.toLowerCase())) + { getWorldData(worldName).reloadGroups(); + } if (!mirrorsUser.containsKey(worldName.toLowerCase())) + { getWorldData(worldName).reloadUsers(); + } } /** - * Wrapper to retain backwards compatibility - * (call this function to auto overwrite files) + * Wrapper to retain backwards compatibility (call this function to auto overwrite files) */ - public void saveChanges() { + public void saveChanges() + { saveChanges(true); } /** - * - */ - public void saveChanges(boolean overwrite) { + * + */ + public void saveChanges(boolean overwrite) + { ArrayList alreadyDone = new ArrayList(); Tasks.removeOldFiles(plugin, plugin.getBackupFolder()); // Write Global Groups - if (GroupManager.getGlobalGroups().haveGroupsChanged()) { + if (GroupManager.getGlobalGroups().haveGroupsChanged()) + { GroupManager.getGlobalGroups().writeGroups(overwrite); - } else { - if (GroupManager.getGlobalGroups().getTimeStampGroups() < GroupManager.getGlobalGroups().getGlobalGroupsFile().lastModified()) { + } + else + { + if (GroupManager.getGlobalGroups().getTimeStampGroups() < GroupManager.getGlobalGroups().getGlobalGroupsFile().lastModified()) + { System.out.print("Newer GlobalGroups file found (Loading changes)!"); GroupManager.getGlobalGroups().load(); } } - for (OverloadedWorldHolder w : worldsData.values()) { - if (alreadyDone.contains(w)) { + for (OverloadedWorldHolder w : worldsData.values()) + { + if (alreadyDone.contains(w)) + { continue; } - if (w == null) { + if (w == null) + { GroupManager.logger.severe("WHAT HAPPENED?"); continue; } if (!mirrorsGroup.containsKey(w.getName().toLowerCase())) - if (w.haveGroupsChanged()) { - if (overwrite || (!overwrite && (w.getTimeStampGroups() >= w.getGroupsFile().lastModified()))) { + { + if (w.haveGroupsChanged()) + { + if (overwrite || (!overwrite && (w.getTimeStampGroups() >= w.getGroupsFile().lastModified()))) + { // Backup Groups file backupFile(w, true); WorldDataHolder.writeGroups(w, w.getGroupsFile()); //w.removeGroupsChangedFlag(); - } else { + } + else + { // Newer file found. GroupManager.logger.log(Level.WARNING, "Newer Groups file found for " + w.getName() + ", but we have local changes!"); throw new IllegalStateException("Unable to save unless you issue a '/mansave force'"); } - } else { + } + else + { //Check for newer file as no local changes. - if (w.getTimeStampGroups() < w.getGroupsFile().lastModified()) { + if (w.getTimeStampGroups() < w.getGroupsFile().lastModified()) + { System.out.print("Newer Groups file found (Loading changes)!"); // Backup Groups file backupFile(w, true); w.reloadGroups(); } } + } if (!mirrorsUser.containsKey(w.getName().toLowerCase())) - if (w.haveUsersChanged()) { - if (overwrite || (!overwrite && (w.getTimeStampUsers() >= w.getUsersFile().lastModified()))) { + { + if (w.haveUsersChanged()) + { + if (overwrite || (!overwrite && (w.getTimeStampUsers() >= w.getUsersFile().lastModified()))) + { // Backup Users file backupFile(w, false); WorldDataHolder.writeUsers(w, w.getUsersFile()); //w.removeUsersChangedFlag(); - } else { + } + else + { // Newer file found. GroupManager.logger.log(Level.WARNING, "Newer Users file found for " + w.getName() + ", but we have local changes!"); throw new IllegalStateException("Unable to save unless you issue a '/mansave force'"); } - } else { + } + else + { //Check for newer file as no local changes. - if (w.getTimeStampUsers() < w.getUsersFile().lastModified()) { + if (w.getTimeStampUsers() < w.getUsersFile().lastModified()) + { System.out.print("Newer Users file found (Loading changes)!"); // Backup Users file backupFile(w, false); w.reloadUsers(); } } + } alreadyDone.add(w); } } /** * Backup the Groups/Users file - * + * * @param w * @param groups */ - private void backupFile(OverloadedWorldHolder w, Boolean groups) { + private void backupFile(OverloadedWorldHolder w, Boolean groups) + { File backupFile = new File(plugin.getBackupFolder(), "bkp_" + w.getName() + (groups ? "_g_" : "_u_") + Tasks.getDateString() + ".yml"); - try { + try + { Tasks.copy((groups ? w.getGroupsFile() : w.getUsersFile()), backupFile); - } catch (IOException ex) { + } + catch (IOException ex) + { GroupManager.logger.log(Level.SEVERE, null, ex); } } /** - * Returns the dataHolder for the given world. - * If the world is not on the worlds list, returns the default world + * Returns the dataHolder for the given world. If the world is not on the worlds list, returns the default world * holder. - * - * Mirrors return their parent world data. - * If no mirroring data it returns the default world. - * + * + * Mirrors return their parent world data. If no mirroring data it returns the default world. + * * @param worldName * @return OverloadedWorldHolder */ - public OverloadedWorldHolder getWorldData(String worldName) { + public OverloadedWorldHolder getWorldData(String worldName) + { String worldNameLowered = worldName.toLowerCase(); // Find this worlds data if (worldsData.containsKey(worldNameLowered)) + { return getUpdatedWorldData(worldNameLowered); + } // Oddly no data source was found for this world so return the default. GroupManager.logger.finest("Requested world " + worldName + " not found or badly mirrored. Returning default world..."); @@ -376,17 +469,18 @@ 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) { + private OverloadedWorldHolder getUpdatedWorldData(String worldName) + { String worldNameLowered = worldName.toLowerCase(); - if (worldsData.containsKey(worldNameLowered)) { + if (worldsData.containsKey(worldNameLowered)) + { OverloadedWorldHolder data = worldsData.get(worldNameLowered); data.updateDataSource(); return data; @@ -396,134 +490,160 @@ public class WorldsHolder { } /** - * Do a matching of playerName, if its found only one player, do - * getWorldData(player) - * + * Do a matching of playerName, if its found only one player, do getWorldData(player) + * * @param playerName * @return null if matching returned no player, or more than one. */ - public OverloadedWorldHolder getWorldDataByPlayerName(String playerName) { + public OverloadedWorldHolder getWorldDataByPlayerName(String playerName) + { List matchPlayer = plugin.getServer().matchPlayer(playerName); - if (matchPlayer.size() == 1) { + if (matchPlayer.size() == 1) + { return getWorldData(matchPlayer.get(0)); } return null; } /** - * Retrieves the field player.getWorld().getName() and do - * getWorld(worldName) - * + * Retrieves the field player.getWorld().getName() and do getWorld(worldName) + * * @param player * @return OverloadedWorldHolder */ - public OverloadedWorldHolder getWorldData(Player player) { + public OverloadedWorldHolder getWorldData(Player player) + { return getWorldData(player.getWorld().getName()); } /** * It does getWorld(worldName).getPermissionsHandler() - * + * * @param worldName * @return AnjoPermissionsHandler */ - public AnjoPermissionsHandler getWorldPermissions(String worldName) { + 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) { + public AnjoPermissionsHandler getWorldPermissions(Player player) + { return getWorldData(player).getPermissionsHandler(); } /** - * Id does getWorldDataByPlayerName(playerName). - * If it doesnt return null, it will return result.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) { + public AnjoPermissionsHandler getWorldPermissionsByPlayerName(String playerName) + { WorldDataHolder dh = getWorldDataByPlayerName(playerName); - if (dh != null) { + if (dh != null) + { return dh.getPermissionsHandler(); } return null; } - private void verifyFirstRun() { + private void verifyFirstRun() + { Properties server = new Properties(); - try { + try + { server.load(new FileInputStream(new File("server.properties"))); serverDefaultWorldName = server.getProperty("level-name").toLowerCase(); setupWorldFolder(serverDefaultWorldName); - } catch (IOException ex) { + } + catch (IOException ex) + { GroupManager.logger.log(Level.SEVERE, null, ex); } } - public void setupWorldFolder(String worldName) { + public void setupWorldFolder(String worldName) + { String worldNameLowered = worldName.toLowerCase(); worldsFolder = new File(plugin.getDataFolder(), "worlds"); - if (!worldsFolder.exists()) { + if (!worldsFolder.exists()) + { worldsFolder.mkdirs(); } File defaultWorldFolder = new File(worldsFolder, worldNameLowered); - if ((!defaultWorldFolder.exists()) && ((!mirrorsGroup.containsKey(worldNameLowered))) || (!mirrorsUser.containsKey(worldNameLowered))) { + if ((!defaultWorldFolder.exists()) && ((!mirrorsGroup.containsKey(worldNameLowered))) || (!mirrorsUser.containsKey(worldNameLowered))) + { /* * check and convert all old case sensitive folders to lower case */ File casedWorldFolder = new File(worldsFolder, worldName); - if ((casedWorldFolder.exists()) && (casedWorldFolder.getName().toLowerCase().equals(worldNameLowered))) { + if ((casedWorldFolder.exists()) && (casedWorldFolder.getName().toLowerCase().equals(worldNameLowered))) + { /* * Rename the old folder to the new lower cased format */ casedWorldFolder.renameTo(new File(worldsFolder, worldNameLowered)); - } else { + } + else + { /* * Else we just create the folder */ defaultWorldFolder.mkdirs(); } } - if (defaultWorldFolder.exists()) { - if (!mirrorsGroup.containsKey(worldNameLowered)) { + if (defaultWorldFolder.exists()) + { + if (!mirrorsGroup.containsKey(worldNameLowered)) + { File groupsFile = new File(defaultWorldFolder, "groups.yml"); - if (!groupsFile.exists() || groupsFile.length() == 0) { + if (!groupsFile.exists() || groupsFile.length() == 0) + { InputStream template = plugin.getResourceAsStream("groups.yml"); - try { + try + { Tasks.copy(template, groupsFile); - } catch (IOException ex) { + } + catch (IOException ex) + { GroupManager.logger.log(Level.SEVERE, null, ex); } } } - if (!mirrorsUser.containsKey(worldNameLowered)) { + if (!mirrorsUser.containsKey(worldNameLowered)) + { File usersFile = new File(defaultWorldFolder, "users.yml"); - if (!usersFile.exists() || usersFile.length() == 0) { + if (!usersFile.exists() || usersFile.length() == 0) + { InputStream template = plugin.getResourceAsStream("users.yml"); - try { + try + { Tasks.copy(template, usersFile); - } catch (IOException ex) { + } + catch (IOException ex) + { GroupManager.logger.log(Level.SEVERE, null, ex); } @@ -534,30 +654,36 @@ public class WorldsHolder { /** * Copies the specified world data to another world - * + * * @param fromWorld * @param toWorld * @return true if successfully copied. */ - public boolean cloneWorld(String fromWorld, String toWorld) { + public boolean cloneWorld(String fromWorld, String toWorld) + { File fromWorldFolder = new File(worldsFolder, fromWorld.toLowerCase()); File toWorldFolder = new File(worldsFolder, toWorld.toLowerCase()); - if (toWorldFolder.exists() || !fromWorldFolder.exists()) { + if (toWorldFolder.exists() || !fromWorldFolder.exists()) + { return false; } File fromWorldGroups = new File(fromWorldFolder, "groups.yml"); File fromWorldUsers = new File(fromWorldFolder, "users.yml"); - if (!fromWorldGroups.exists() || !fromWorldUsers.exists()) { + if (!fromWorldGroups.exists() || !fromWorldUsers.exists()) + { return false; } File toWorldGroups = new File(toWorldFolder, "groups.yml"); File toWorldUsers = new File(toWorldFolder, "users.yml"); toWorldFolder.mkdirs(); - try { + try + { Tasks.copy(fromWorldGroups, toWorldGroups); Tasks.copy(fromWorldUsers, toWorldUsers); - } catch (IOException ex) { + } + catch (IOException ex) + { Logger.getLogger(WorldsHolder.class.getName()).log(Level.SEVERE, null, ex); return false; } @@ -566,43 +692,47 @@ public class WorldsHolder { /** * Wrapper for LoadWorld(String,Boolean) for backwards compatibility - * - * Load a world from file. - * If it already been loaded, summon reload method from dataHolder. - * + * + * Load a world from file. If it already been loaded, summon reload method from dataHolder. + * * @param worldName */ - public void loadWorld(String worldName) { + public void loadWorld(String worldName) + { loadWorld(worldName, false); } /** - * Load a world from file. - * If it already been loaded, summon reload method from dataHolder. - * + * Load a world from file. If it already been loaded, summon reload method from dataHolder. + * * @param worldName */ - public void loadWorld(String worldName, Boolean isMirror) { + public void loadWorld(String worldName, Boolean isMirror) + { String worldNameLowered = worldName.toLowerCase(); - if (worldsData.containsKey(worldNameLowered)) { + if (worldsData.containsKey(worldNameLowered)) + { worldsData.get(worldNameLowered).reload(); return; } GroupManager.logger.finest("Trying to load world " + worldName + "..."); File thisWorldFolder = new File(worldsFolder, worldNameLowered); - if ((isMirror) || (thisWorldFolder.exists() && thisWorldFolder.isDirectory())) { + 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"); - if ((groupsFile != null) && (!groupsFile.exists())) { + if ((groupsFile != null) && (!groupsFile.exists())) + { throw new IllegalArgumentException("Groups file for world '" + worldName + "' doesnt exist: " + groupsFile.getPath()); } - if ((usersFile != null) && (!usersFile.exists())) { + if ((usersFile != null) && (!usersFile.exists())) + { throw new IllegalArgumentException("Users file for world '" + worldName + "' doesnt exist: " + usersFile.getPath()); } @@ -610,15 +740,23 @@ public class WorldsHolder { // Map the group object for any mirror if (mirrorsGroup.containsKey(worldNameLowered)) + { tempHolder.setGroupsObject(this.getWorldData(mirrorsGroup.get(worldNameLowered)).getGroupsObject()); + } else + { tempHolder.loadGroups(groupsFile); + } // Map the user object for any mirror if (mirrorsUser.containsKey(worldNameLowered)) + { tempHolder.setUsersObject(this.getWorldData(mirrorsUser.get(worldNameLowered)).getUsersObject()); + } else + { tempHolder.loadUsers(usersFile); + } OverloadedWorldHolder thisWorldData = new OverloadedWorldHolder(tempHolder); @@ -628,7 +766,8 @@ public class WorldsHolder { // Set the file TimeStamps as it will be default from the initial load. thisWorldData.setTimeStamps(); - if (thisWorldData != null) { + if (thisWorldData != null) + { GroupManager.logger.finest("Successful load of world " + worldName + "..."); worldsData.put(worldNameLowered, thisWorldData); return; @@ -640,15 +779,17 @@ public class WorldsHolder { /** * Tells if the such world has been mapped. - * + * * It will return true if world is a mirror. - * + * * @param worldName * @return true if world is loaded or mirrored. false if not listed */ - public boolean isInList(String worldName) { + public boolean isInList(String worldName) + { - if (worldsData.containsKey(worldName.toLowerCase()) || mirrorsGroup.containsKey(worldName.toLowerCase()) || mirrorsUser.containsKey(worldName.toLowerCase())) { + if (worldsData.containsKey(worldName.toLowerCase()) || mirrorsGroup.containsKey(worldName.toLowerCase()) || mirrorsUser.containsKey(worldName.toLowerCase())) + { return true; } return false; @@ -656,13 +797,15 @@ public class WorldsHolder { /** * Verify if world has it's own file permissions. - * + * * @param worldName * @return true if it has its own holder. false if not. */ - public boolean hasOwnData(String worldName) { + public boolean hasOwnData(String worldName) + { - if (worldsData.containsKey(worldName.toLowerCase()) && (!mirrorsGroup.containsKey(worldName.toLowerCase()) || !mirrorsUser.containsKey(worldName.toLowerCase()))) { + if (worldsData.containsKey(worldName.toLowerCase()) && (!mirrorsGroup.containsKey(worldName.toLowerCase()) || !mirrorsUser.containsKey(worldName.toLowerCase()))) + { return true; } return false; @@ -671,37 +814,45 @@ public class WorldsHolder { /** * @return the defaultWorld */ - public OverloadedWorldHolder getDefaultWorld() { + public OverloadedWorldHolder getDefaultWorld() + { return getUpdatedWorldData(serverDefaultWorldName); } /** - * Returns all physically loaded worlds which have at least - * one of their own data sets for users or groups. - * + * Returns all physically loaded worlds which have at least one of their own data sets for users or groups. + * * @return ArrayList of all loaded worlds */ - public ArrayList allWorldsDataList() { + public ArrayList allWorldsDataList() + { ArrayList list = new ArrayList(); - for (OverloadedWorldHolder data : worldsData.values()) { - if ((!list.contains(data)) && (!mirrorsGroup.containsKey(data.getName().toLowerCase()) || !mirrorsUser.containsKey(data.getName().toLowerCase()))) { + for (OverloadedWorldHolder data : worldsData.values()) + { + if ((!list.contains(data)) && (!mirrorsGroup.containsKey(data.getName().toLowerCase()) || !mirrorsUser.containsKey(data.getName().toLowerCase()))) + { String worldNameLowered = data.getName().toLowerCase(); String usersMirror = mirrorsUser.get(worldNameLowered); String groupsMirror = mirrorsGroup.get(worldNameLowered); // is users mirrored? - if (usersMirror != null) { + if (usersMirror != null) + { // If both are mirrored - if (groupsMirror != null) { + if (groupsMirror != null) + { // if the data sources are the same, return the parent - if (usersMirror == groupsMirror) { + if (usersMirror == groupsMirror) + { if (!list.contains(usersMirror.toLowerCase())) + { list.add(worldsData.get(usersMirror.toLowerCase())); + } continue; } // Both data sources are mirrors, but they are from different parents diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMGroupEvent.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMGroupEvent.java index af3fb6135..cb438335b 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMGroupEvent.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMGroupEvent.java @@ -6,37 +6,37 @@ import org.bukkit.Bukkit; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; + /** * @author ElgarL - * + * */ -public class GMGroupEvent extends Event { - +public class GMGroupEvent extends Event +{ /** - * + * */ private static final HandlerList handlers = new HandlerList(); @Override - public HandlerList getHandlers() { + public HandlerList getHandlers() + { return handlers; } - public static HandlerList getHandlerList() { + public static HandlerList getHandlerList() + { return handlers; } - ////////////////////////////// - protected Group group; - protected String groupName; - protected Action action; - public GMGroupEvent(Group group, Action action) { + public GMGroupEvent(Group group, Action action) + { super(); @@ -45,7 +45,8 @@ public class GMGroupEvent extends Event { this.groupName = group.getName(); } - public GMGroupEvent(String groupName, Action action) { + public GMGroupEvent(String groupName, Action action) + { super(); @@ -53,35 +54,43 @@ public class GMGroupEvent extends Event { this.action = action; } - public Action getAction() { + public Action getAction() + { return this.action; } - public Group getGroup() { + public Group getGroup() + { return group; } - public String getGroupName() { + public String getGroupName() + { return groupName; } - public enum Action { - GROUP_PERMISSIONS_CHANGED, GROUP_INHERITANCE_CHANGED, GROUP_INFO_CHANGED, GROUP_ADDED, GROUP_REMOVED, - } - public void schedule(final GMGroupEvent event) { + public enum Action + { + GROUP_PERMISSIONS_CHANGED, GROUP_INHERITANCE_CHANGED, GROUP_INFO_CHANGED, GROUP_ADDED, GROUP_REMOVED,} - if (Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Bukkit.getPluginManager().getPlugin("GroupManager"), new Runnable() { + public void schedule(final GMGroupEvent event) + { + if (Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Bukkit.getPluginManager().getPlugin("GroupManager"), new Runnable() + { @Override - public void run() { + public void run() + { Bukkit.getServer().getPluginManager().callEvent(event); } }, 1) == -1) + { GroupManager.logger.warning("Could not schedule GM Event."); + } } } \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMSystemEvent.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMSystemEvent.java index d11581356..d7f2e276e 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMSystemEvent.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMSystemEvent.java @@ -5,58 +5,66 @@ import org.bukkit.Bukkit; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; + /** * @author ElgarL - * + * */ -public class GMSystemEvent extends Event { - +public class GMSystemEvent extends Event +{ /** - * + * */ private static final HandlerList handlers = new HandlerList(); @Override - public HandlerList getHandlers() { + public HandlerList getHandlers() + { return handlers; } - public static HandlerList getHandlerList() { + public static HandlerList getHandlerList() + { return handlers; } - ////////////////////////////// - protected Action action; - public GMSystemEvent(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, - } - public void schedule(final GMSystemEvent event) { + public enum Action + { + RELOADED, SAVED, DEFAULT_GROUP_CHANGED, VALIDATE_TOGGLE,} - if (Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Bukkit.getPluginManager().getPlugin("GroupManager"), new Runnable() { + public void schedule(final GMSystemEvent event) + { + if (Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Bukkit.getPluginManager().getPlugin("GroupManager"), new Runnable() + { @Override - public void run() { + public void run() + { Bukkit.getServer().getPluginManager().callEvent(event); } }, 1) == -1) + { GroupManager.logger.warning("Could not schedule GM Event."); + } } } \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMUserEvent.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMUserEvent.java index 0a503cd9c..ed3f71c53 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMUserEvent.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMUserEvent.java @@ -6,37 +6,37 @@ import org.bukkit.Bukkit; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; + /** * @author ElgarL - * + * */ -public class GMUserEvent extends Event { - +public class GMUserEvent extends Event +{ /** - * + * */ private static final HandlerList handlers = new HandlerList(); @Override - public HandlerList getHandlers() { + public HandlerList getHandlers() + { return handlers; } - public static HandlerList getHandlerList() { + public static HandlerList getHandlerList() + { return handlers; } - ////////////////////////////// - protected User user; - protected String userName; - protected Action action; - public GMUserEvent(User user, Action action) { + public GMUserEvent(User user, Action action) + { super(); @@ -45,7 +45,8 @@ public class GMUserEvent extends Event { this.userName = user.getName(); } - public GMUserEvent(String userName, Action action) { + public GMUserEvent(String userName, Action action) + { super(); @@ -53,35 +54,43 @@ public class GMUserEvent extends Event { this.action = action; } - public Action getAction() { + public Action getAction() + { return this.action; } - public User getUser() { + public User getUser() + { return user; } - public String getUserName() { + 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, - } - public void schedule(final GMUserEvent event) { + public enum Action + { + USER_PERMISSIONS_CHANGED, USER_INHERITANCE_CHANGED, USER_INFO_CHANGED, USER_GROUP_CHANGED, USER_SUBGROUP_CHANGED, USER_ADDED, USER_REMOVED,} - if (Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Bukkit.getPluginManager().getPlugin("GroupManager"), new Runnable() { + public void schedule(final GMUserEvent event) + { + if (Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Bukkit.getPluginManager().getPlugin("GroupManager"), new Runnable() + { @Override - public void run() { + public void run() + { Bukkit.getServer().getPluginManager().callEvent(event); } }, 1) == -1) + { GroupManager.logger.warning("Could not schedule GM Event."); + } } } \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMWorldListener.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMWorldListener.java index accb65acb..14e6dc43c 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMWorldListener.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMWorldListener.java @@ -6,41 +6,50 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.world.WorldInitEvent; + /** * @author ElgarL - * - * Handle new world creation from other plugins - * + * + * Handle new world creation from other plugins + * */ -public class GMWorldListener implements Listener { - +public class GMWorldListener implements Listener +{ private final GroupManager plugin; - public GMWorldListener(GroupManager instance) { + public GMWorldListener(GroupManager instance) + { plugin = instance; registerEvents(); } - private void registerEvents() { + private void registerEvents() + { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @EventHandler(priority = EventPriority.LOWEST) - public void onWorldInit(WorldInitEvent event) { + public void onWorldInit(WorldInitEvent event) + { String worldName = event.getWorld().getName(); - if (GroupManager.isLoaded() && !plugin.getWorldsHolder().isInList(worldName)) { + if (GroupManager.isLoaded() && !plugin.getWorldsHolder().isInList(worldName)) + { GroupManager.logger.info("New world detected..."); GroupManager.logger.info("Creating data for: " + worldName); plugin.getWorldsHolder().setupWorldFolder(worldName); plugin.getWorldsHolder().loadWorld(worldName); - if (plugin.getWorldsHolder().isInList(worldName)) { + if (plugin.getWorldsHolder().isInList(worldName)) + { GroupManager.logger.info("Don't forget to configure/mirror this world in config.yml."); - } else + } + else + { GroupManager.logger.severe("Failed to configure this world."); + } } } } \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GroupManagerEventHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GroupManagerEventHandler.java index 43d42da53..ee09cbda7 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GroupManagerEventHandler.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GroupManagerEventHandler.java @@ -3,50 +3,59 @@ package org.anjocaido.groupmanager.events; import org.anjocaido.groupmanager.data.Group; import org.anjocaido.groupmanager.data.User; + /** * @author ElgarL - * - * Handles all Event generation. - * + * + * Handles all Event generation. + * */ -public class GroupManagerEventHandler { - - protected static void callEvent(GMGroupEvent event) { +public class GroupManagerEventHandler +{ + protected static void callEvent(GMGroupEvent event) + { event.schedule(event); } - protected static void callEvent(GMUserEvent event) { + protected static void callEvent(GMUserEvent event) + { event.schedule(event); } - protected static void callEvent(GMSystemEvent event) { + protected static void callEvent(GMSystemEvent event) + { event.schedule(event); } - public static void callEvent(Group group, GMGroupEvent.Action action) { + public static void callEvent(Group group, GMGroupEvent.Action action) + { callEvent(new GMGroupEvent(group, action)); } - public static void callEvent(String groupName, GMGroupEvent.Action action) { + public static void callEvent(String groupName, GMGroupEvent.Action action) + { callEvent(new GMGroupEvent(groupName, action)); } - public static void callEvent(User user, GMUserEvent.Action action) { + public static void callEvent(User user, GMUserEvent.Action action) + { callEvent(new GMUserEvent(user, action)); } - public static void callEvent(String userName, GMUserEvent.Action action) { + public static void callEvent(String userName, GMUserEvent.Action action) + { callEvent(new GMUserEvent(userName, action)); } - public static void callEvent(GMSystemEvent.Action action) { + public static void callEvent(GMSystemEvent.Action action) + { callEvent(new GMSystemEvent(action)); } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java index efad11df4..01f646f00 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java @@ -18,89 +18,94 @@ import org.anjocaido.groupmanager.data.User; import org.anjocaido.groupmanager.utils.PermissionCheckResult; import org.bukkit.entity.Player; + /** * Everything here maintains the model created by Nijikokun - * - * But implemented to use GroupManager system. Which provides instant changes, - * without file access. - * + * + * But implemented to use GroupManager system. Which provides instant changes, without file access. + * * It holds permissions only for one single world. - * + * * @author gabrielcouto, ElgarL */ -public class AnjoPermissionsHandler extends PermissionsReaderInterface { - +public class AnjoPermissionsHandler extends PermissionsReaderInterface +{ WorldDataHolder ph = null; /** * It needs a WorldDataHolder to work with. - * + * * @param holder */ - public AnjoPermissionsHandler(WorldDataHolder holder) { + public AnjoPermissionsHandler(WorldDataHolder holder) + { ph = holder; } /** * A short name method, for permission method. - * + * * @param player * @param permission * @return true if the player has the permission */ @Override - public boolean has(Player player, String permission) { + public boolean has(Player player, String permission) + { return permission(player, permission); } /** * Checks if a player can use that permission node. - * + * * @param player * @param permission * @return true if the player has the permission */ @Override - public boolean permission(Player player, String permission) { + public boolean permission(Player player, String permission) + { return checkUserPermission(ph.getUser(player.getName()).updatePlayer(player), permission); } /** * Checks if a player can use that permission node. - * + * * @param playerName * @param permission * @return true if the player has the permission */ - public boolean permission(String playerName, String permission) { + 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 String of players group name. */ @Override - public String getGroup(String userName) { + public String getGroup(String userName) + { return ph.getUser(userName).getGroup().getName(); } /** - * Returns All permissions (including inheritance and sub groups) for the - * player, including child nodes from Bukkit. - * + * Returns All permissions (including inheritance and sub groups) for the player, including child nodes from Bukkit. + * * @param userName * @return List of all players permissions. */ @Override - public List getAllPlayersPermissions(String userName) { + public List getAllPlayersPermissions(String userName) + { List perms = new ArrayList(); @@ -110,14 +115,15 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Returns All permissions (including inheritance and sub groups) for the - * player. With or without Bukkit child nodes. - * + * Returns All permissions (including inheritance and sub groups) for the player. With or without Bukkit child + * nodes. + * * @param userName * @return Set of all players permissions. */ @Override - public Set getAllPlayersPermissions(String userName, Boolean includeChildren) { + public Set getAllPlayersPermissions(String userName, Boolean includeChildren) + { Set playerPermArray = new HashSet(); @@ -127,29 +133,37 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { ArrayList alreadyProcessed = new ArrayList(); // fetch all group permissions - for (String group : getGroups(userName)) { + for (String group : getGroups(userName)) + { // Don't process a group more than once. - if (!alreadyProcessed.contains(group)) { + if (!alreadyProcessed.contains(group)) + { alreadyProcessed.add(group); Set groupPermArray = new HashSet(); - if (group.startsWith("g:") && GroupManager.getGlobalGroups().hasGroup(group)) { + if (group.startsWith("g:") && GroupManager.getGlobalGroups().hasGroup(group)) + { // GlobalGroups groupPermArray = populatePerms(GroupManager.getGlobalGroups().getGroupsPermissions(group), includeChildren); - } else { + } + else + { // World Groups groupPermArray = populatePerms(ph.getGroup(group).getPermissionList(), includeChildren); } // Add all group permissions, unless negated by earlier permissions. - for (String perm : groupPermArray) { + for (String perm : groupPermArray) + { 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))) + { playerPermArray.add(perm); + } } } @@ -159,7 +173,8 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { return playerPermArray; } - private Set populatePerms(List permsList, boolean includeChildren) { + private Set populatePerms(List permsList, boolean includeChildren) + { // Create a new array so it's modifiable. List perms = new ArrayList(permsList); @@ -167,55 +182,76 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { Boolean allPerms = false; // Allow * node to populate ALL permissions to Bukkit. - if (perms.contains("*")) { + if (perms.contains("*")) + { permArray.addAll(GroupManager.BukkitPermissions.getAllRegisteredPermissions(includeChildren)); allPerms = true; perms.remove("*"); } - for (String perm : perms) { + for (String perm : perms) + { /** - * all permission sets are passed here pre-sorted, alphabetically. - * This means negated nodes will be processed before all permissions - * other than *. + * all permission sets are passed here pre-sorted, alphabetically. This means negated nodes will be + * processed before all permissions other than *. */ boolean negated = perm.startsWith("-"); - if (!permArray.contains(perm)) { + if (!permArray.contains(perm)) + { permArray.add(perm); if ((negated) && (permArray.contains(perm.substring(1)))) + { permArray.remove(perm.substring(1)); + } /** - * Process child nodes if required, - * or this is a negated node AND we used * to include all - * permissions, + * Process child nodes if required, 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)) { + if ((includeChildren) || (negated && allPerms)) + { Map children = GroupManager.BukkitPermissions.getAllChildren((negated ? perm.substring(1) : perm), new HashSet()); - if (children != null) { + if (children != null) + { if (negated) - if (allPerms) { + { + if (allPerms) + { // Remove children of negated nodes for (String child : children.keySet()) + { if (children.get(child)) + { if (permArray.contains(child)) + { permArray.remove(child); + } + } + } - } else { + } + else + { // Add child nodes for (String child : children.keySet()) + { if (children.get(child)) + { if ((!permArray.contains(child)) && (!permArray.contains("-" + child))) + { permArray.add(child); + } + } + } } + } } } } @@ -226,27 +262,29 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Verify if player is in such group. It will check it's groups inheritance. - * + * * So if you have a group Admin > Moderator - * - * And verify the player 'MyAdmin', which is Admin, it will return true for - * both Admin or Moderator groups. - * - * If you have a player 'MyModerator', which is Moderator, it will give - * false if you pass Admin in group parameter. - * + * + * And verify the player 'MyAdmin', which is Admin, it will return true for both Admin or Moderator groups. + * + * If you have a player 'MyModerator', which is Moderator, it will give false if you pass Admin in group parameter. + * * @param name * @param group * @return true if in group (with inheritance) */ @Override - public boolean inGroup(String name, String group) { + public boolean inGroup(String name, String group) + { - if (hasGroupInInheritance(ph.getUser(name).getGroup(), group)) { + if (hasGroupInInheritance(ph.getUser(name).getGroup(), group)) + { return true; } - for (Group subGroup : ph.getUser(name).subGroupListCopy()) { - if (hasGroupInInheritance(subGroup, group)) { + for (Group subGroup : ph.getUser(name).subGroupListCopy()) + { + if (hasGroupInInheritance(subGroup, group)) + { return true; } } @@ -254,20 +292,20 @@ 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 + * 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) { + public String getUserPrefix(String user) + { String prefix = ph.getUser(user).getVariables().getVarString("prefix"); - if (prefix.length() != 0) { + if (prefix.length() != 0) + { return prefix; } @@ -275,20 +313,20 @@ 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 + * 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) { + public String getUserSuffix(String user) + { String suffix = ph.getUser(user).getVariables().getVarString("suffix"); - if (suffix.length() != 0) { + if (suffix.length() != 0) + { return suffix; } @@ -297,15 +335,14 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * 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 + * 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) { + public String getPrimaryGroup(String user) + { return getGroup(user); @@ -313,12 +350,12 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Check if user can build. Checks inheritance and subgroups. - * - * @param userName - * Player's name + * + * @param userName Player's name * @return true if the user can build */ - public boolean canUserBuild(String userName) { + public boolean canUserBuild(String userName) + { return getPermissionBoolean(userName, "build"); @@ -326,15 +363,17 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Returns the String prefix for the given group - * + * * @param groupName * @return empty string if found none. */ @Override - public String getGroupPrefix(String groupName) { + public String getGroupPrefix(String groupName) + { Group g = ph.getGroup(groupName); - if (g == null) { + if (g == null) + { return ""; } return g.getVariables().getVarString("prefix"); @@ -342,120 +381,131 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Return the suffix for the given group name - * + * * @param groupName * @return empty string if not found. */ @Override - public String getGroupSuffix(String groupName) { + public String getGroupSuffix(String groupName) + { Group g = ph.getGroup(groupName); - if (g == null) { + if (g == null) + { return ""; } return g.getVariables().getVarString("suffix"); } /** - * Checks the specified group for the Info Build node. Does NOT check - * inheritance - * + * Checks the specified group for the Info Build node. Does NOT check inheritance + * * @param groupName * @return true if can build */ @Override - public boolean canGroupBuild(String groupName) { + public boolean canGroupBuild(String groupName) + { Group g = ph.getGroup(groupName); - if (g == null) { + if (g == null) + { return false; } return g.getVariables().getVarBoolean("build"); } /** - * It returns a string variable value, set in the INFO node of the group. It - * will harvest inheritance for value. - * + * It returns a string variable value, set in the INFO node of the group. It will harvest inheritance for value. + * * @param groupName * @param variable * @return null if no group with that variable is found. */ @Override - public String getGroupPermissionString(String groupName, String variable) { + public String getGroupPermissionString(String groupName, String variable) + { Group start = ph.getGroup(groupName); - if (start == null) { + if (start == null) + { return null; } Group result = nextGroupWithVariable(start, variable); - if (result == null) { + if (result == null) + { return null; } return result.getVariables().getVarString(variable); } /** - * It returns a Integer variable value It will harvest inheritance for - * value. - * + * It returns a Integer variable value It will harvest inheritance for value. + * * @param groupName * @param variable * @return -1 if none found or not parseable. */ @Override - public int getGroupPermissionInteger(String groupName, String variable) { + public int getGroupPermissionInteger(String groupName, String variable) + { Group start = ph.getGroup(groupName); - if (start == null) { + if (start == null) + { return -1; } Group result = nextGroupWithVariable(start, variable); - if (result == null) { + if (result == null) + { return -1; } return result.getVariables().getVarInteger(variable); } /** - * Returns a boolean for given variable in INFO node. It will harvest - * inheritance for value. - * + * Returns a boolean for given variable in INFO node. It will harvest inheritance for value. + * * @param group * @param variable * @return false if not found/not parseable. */ @Override - public boolean getGroupPermissionBoolean(String group, String variable) { + public boolean getGroupPermissionBoolean(String group, String variable) + { Group start = ph.getGroup(group); - if (start == null) { + if (start == null) + { return false; } Group result = nextGroupWithVariable(start, variable); - if (result == null) { + if (result == null) + { return false; } return result.getVariables().getVarBoolean(variable); } /** - * Returns a double value for the given variable name in INFO node. It will - * harvest inheritance for value. - * + * Returns a double value for the given variable name in INFO node. It will harvest inheritance for value. + * * @param group * @param variable * @return -1 if not found / not parseable. */ @Override - public double getGroupPermissionDouble(String group, String variable) { + public double getGroupPermissionDouble(String group, String variable) + { Group start = ph.getGroup(group); - if (start == null) { + if (start == null) + { return -1; } Group result = nextGroupWithVariable(start, variable); - if (result == null) { + if (result == null) + { return -1; } return result.getVariables().getVarDouble(variable); @@ -463,16 +513,18 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Returns the variable value of the user, in INFO node. - * + * * @param user * @param variable * @return empty string if not found */ @Override - public String getUserPermissionString(String user, String variable) { + public String getUserPermissionString(String user, String variable) + { User auser = ph.getUser(user); - if (auser == null) { + if (auser == null) + { return ""; } return auser.getVariables().getVarString(variable); @@ -480,16 +532,18 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Returns the variable value of the user, in INFO node. - * + * * @param user * @param variable * @return -1 if not found */ @Override - public int getUserPermissionInteger(String user, String variable) { + public int getUserPermissionInteger(String user, String variable) + { User auser = ph.getUser(user); - if (auser == null) { + if (auser == null) + { return -1; } return auser.getVariables().getVarInteger(variable); @@ -497,16 +551,18 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Returns the variable value of the user, in INFO node. - * + * * @param user * @param variable * @return boolean value */ @Override - public boolean getUserPermissionBoolean(String user, String variable) { + public boolean getUserPermissionBoolean(String user, String variable) + { User auser = ph.getUser(user); - if (auser == null) { + if (auser == null) + { return false; } return auser.getVariables().getVarBoolean(variable); @@ -514,176 +570,222 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Returns the variable value of the user, in INFO node. - * + * * @param user * @param variable * @return -1 if not found */ @Override - public double getUserPermissionDouble(String user, String variable) { + public double getUserPermissionDouble(String user, String variable) + { User auser = ph.getUser(user); - if (auser == null) { + if (auser == null) + { return -1; } return auser.getVariables().getVarDouble(variable); } /** - * Returns the variable value of the user, in INFO node. If not found, it - * will search for his Group variables. It will harvest the inheritance and - * subgroups. - * + * Returns the variable value of the user, in INFO node. If not found, it will search for his Group variables. It + * will harvest the inheritance and subgroups. + * * @param user * @param variable * @return empty string if not found */ @Override - public String getPermissionString(String user, String variable) { + public String getPermissionString(String user, String variable) + { User auser = ph.getUser(user); - if (auser == null) { + if (auser == null) + { return ""; } - if (auser.getVariables().hasVar(variable)) { + if (auser.getVariables().hasVar(variable)) + { return auser.getVariables().getVarString(variable); } Group start = auser.getGroup(); - if (start == null) { + if (start == null) + { return ""; } Group result = nextGroupWithVariable(start, variable); - if (result == null) { + if (result == null) + { // Check sub groups if (!auser.isSubGroupsEmpty()) - for (Group subGroup : auser.subGroupListCopy()) { + { + for (Group subGroup : auser.subGroupListCopy()) + { result = nextGroupWithVariable(subGroup, variable); // Found value? if (result != null) + { continue; + } } + } if (result == null) + { return ""; + } } return result.getVariables().getVarString(variable); // return getUserPermissionString(user, variable); } /** - * Returns the variable value of the user, in INFO node. If not found, it - * will search for his Group variables. It will harvest the inheritance and - * subgroups. - * + * Returns the variable value of the user, in INFO node. If not found, it will search for his Group variables. It + * will harvest the inheritance and subgroups. + * * @param user * @param variable * @return -1 if not found */ @Override - public int getPermissionInteger(String user, String variable) { + public int getPermissionInteger(String user, String variable) + { User auser = ph.getUser(user); - if (auser == null) { + if (auser == null) + { return -1; } - if (auser.getVariables().hasVar(variable)) { + if (auser.getVariables().hasVar(variable)) + { return auser.getVariables().getVarInteger(variable); } Group start = auser.getGroup(); - if (start == null) { + if (start == null) + { return -1; } Group result = nextGroupWithVariable(start, variable); - if (result == null) { + if (result == null) + { // Check sub groups if (!auser.isSubGroupsEmpty()) - for (Group subGroup : auser.subGroupListCopy()) { + { + for (Group subGroup : auser.subGroupListCopy()) + { result = nextGroupWithVariable(subGroup, variable); // Found value? if (result != null) + { continue; + } } + } if (result == null) + { return -1; + } } return result.getVariables().getVarInteger(variable); // return getUserPermissionInteger(string, string1); } /** - * Returns the variable value of the user, in INFO node. If not found, it - * will search for his Group variables. It will harvest the inheritance and - * subgroups. - * + * Returns the variable value of the user, in INFO node. If not found, it will search for his Group variables. It + * will harvest the inheritance and subgroups. + * * @param user * @param variable * @return false if not found or not parseable to true. */ @Override - public boolean getPermissionBoolean(String user, String variable) { + public boolean getPermissionBoolean(String user, String variable) + { User auser = ph.getUser(user); - if (auser == null) { + if (auser == null) + { return false; } - if (auser.getVariables().hasVar(variable)) { + if (auser.getVariables().hasVar(variable)) + { return auser.getVariables().getVarBoolean(variable); } Group start = auser.getGroup(); - if (start == null) { + if (start == null) + { return false; } Group result = nextGroupWithVariable(start, variable); - if (result == null) { + if (result == null) + { // Check sub groups if (!auser.isSubGroupsEmpty()) - for (Group subGroup : auser.subGroupListCopy()) { + { + for (Group subGroup : auser.subGroupListCopy()) + { result = nextGroupWithVariable(subGroup, variable); // Found value? if (result != null) + { continue; + } } + } if (result == null) + { return false; + } } return result.getVariables().getVarBoolean(variable); // return getUserPermissionBoolean(user, string1); } /** - * Returns the variable value of the user, in INFO node. If not found, it - * will search for his Group variables. It will harvest the inheritance and - * subgroups. - * + * Returns the variable value of the user, in INFO node. If not found, it will search for his Group variables. It + * will harvest the inheritance and subgroups. + * * @param user * @param variable * @return -1 if not found. */ @Override - public double getPermissionDouble(String user, String variable) { + public double getPermissionDouble(String user, String variable) + { User auser = ph.getUser(user); - if (auser == null) { + if (auser == null) + { return -1.0D; } - if (auser.getVariables().hasVar(variable)) { + if (auser.getVariables().hasVar(variable)) + { return auser.getVariables().getVarDouble(variable); } Group start = auser.getGroup(); - if (start == null) { + if (start == null) + { return -1.0D; } Group result = nextGroupWithVariable(start, variable); - if (result == null) { + if (result == null) + { // Check sub groups if (!auser.isSubGroupsEmpty()) - for (Group subGroup : auser.subGroupListCopy()) { + { + for (Group subGroup : auser.subGroupListCopy()) + { result = nextGroupWithVariable(subGroup, variable); // Found value? if (result != null) + { continue; + } } + } if (result == null) + { return -1.0D; + } } return result.getVariables().getVarDouble(variable); // return getUserPermissionDouble(string, string1); @@ -691,20 +793,23 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Does not include User's group permission - * + * * @param user * @param permission * @return PermissionCheckResult */ - public PermissionCheckResult checkUserOnlyPermission(User user, String permission) { + public PermissionCheckResult checkUserOnlyPermission(User user, String permission) + { user.sortPermissions(); PermissionCheckResult result = new PermissionCheckResult(); result.askedPermission = permission; result.owner = user; - for (String access : user.getPermissionList()) { + for (String access : user.getPermissionList()) + { result.resultType = comparePermissionString(access, permission); - if (result.resultType != PermissionCheckResult.Type.NOTFOUND) { + if (result.resultType != PermissionCheckResult.Type.NOTFOUND) + { return result; } } @@ -713,22 +818,24 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Returns the node responsible for that permission. Does not include User's - * group permission. - * + * Returns the node responsible for that permission. Does not include User's group permission. + * * @param group * @param permission * @return the node if permission is found. if not found, return null */ - public PermissionCheckResult checkGroupOnlyPermission(Group group, String permission) { + public PermissionCheckResult checkGroupOnlyPermission(Group group, String permission) + { group.sortPermissions(); PermissionCheckResult result = new PermissionCheckResult(); result.owner = group; result.askedPermission = permission; - for (String access : group.getPermissionList()) { + for (String access : group.getPermissionList()) + { result.resultType = comparePermissionString(access, permission); - if (result.resultType != PermissionCheckResult.Type.NOTFOUND) { + if (result.resultType != PermissionCheckResult.Type.NOTFOUND) + { return result; } } @@ -738,15 +845,17 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Check permissions, including it's group and inheritance. - * + * * @param user * @param permission * @return true if permission was found. false if not, or was negated. */ - public boolean checkUserPermission(User user, String permission) { + public boolean checkUserPermission(User user, String permission) + { PermissionCheckResult result = checkFullGMPermission(user, permission, true); - if (result.resultType == PermissionCheckResult.Type.EXCEPTION || result.resultType == PermissionCheckResult.Type.FOUND) { + if (result.resultType == PermissionCheckResult.Type.EXCEPTION || result.resultType == PermissionCheckResult.Type.FOUND) + { return true; } @@ -754,43 +863,46 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Do what checkUserPermission did before. But now returning a - * PermissionCheckResult. - * + * Do what checkUserPermission did before. But now returning a PermissionCheckResult. + * * @param user * @param targetPermission * @return PermissionCheckResult */ - public PermissionCheckResult checkFullUserPermission(User user, String targetPermission) { + public PermissionCheckResult checkFullUserPermission(User user, String targetPermission) + { return checkFullGMPermission(user, targetPermission, true); } /** - * Check user and groups with inheritance and Bukkit if bukkit = true return - * a PermissionCheckResult. - * + * Check user and groups with inheritance and Bukkit if bukkit = true return a PermissionCheckResult. + * * @param user * @param targetPermission * @param checkBukkit * @return PermissionCheckResult */ - public PermissionCheckResult checkFullGMPermission(User user, String targetPermission, Boolean checkBukkit) { + public PermissionCheckResult checkFullGMPermission(User user, String targetPermission, Boolean checkBukkit) + { PermissionCheckResult result = new PermissionCheckResult(); result.accessLevel = targetPermission; result.resultType = PermissionCheckResult.Type.NOTFOUND; - if (user == null || targetPermission == null || targetPermission.isEmpty()) { + if (user == null || targetPermission == null || targetPermission.isEmpty()) + { return result; } - if (checkBukkit) { + if (checkBukkit) + { // Check Bukkit perms to support plugins which add perms via code // (Heroes). final Player player = user.getBukkitPlayer(); //final Permission bukkitPerm = Bukkit.getPluginManager().getPermission(targetPermission); - if ((player != null) && player.hasPermission(targetPermission)) { + if ((player != null) && player.hasPermission(targetPermission)) + { result.resultType = PermissionCheckResult.Type.FOUND; result.owner = user; return result; @@ -798,22 +910,26 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } PermissionCheckResult resultUser = checkUserOnlyPermission(user, targetPermission); - if (resultUser.resultType != PermissionCheckResult.Type.NOTFOUND) { + if (resultUser.resultType != PermissionCheckResult.Type.NOTFOUND) + { resultUser.accessLevel = targetPermission; return resultUser; } // IT ONLY CHECKS GROUPS PERMISSIONS IF RESULT FOR USER IS NOT FOUND PermissionCheckResult resultGroup = checkGroupPermissionWithInheritance(user.getGroup(), targetPermission); - if (resultGroup.resultType != PermissionCheckResult.Type.NOTFOUND) { + if (resultGroup.resultType != PermissionCheckResult.Type.NOTFOUND) + { resultGroup.accessLevel = targetPermission; return resultGroup; } // SUBGROUPS CHECK - for (Group subGroup : user.subGroupListCopy()) { + for (Group subGroup : user.subGroupListCopy()) + { PermissionCheckResult resultSubGroup = checkGroupPermissionWithInheritance(subGroup, targetPermission); - if (resultSubGroup.resultType != PermissionCheckResult.Type.NOTFOUND) { + if (resultSubGroup.resultType != PermissionCheckResult.Type.NOTFOUND) + { resultSubGroup.accessLevel = targetPermission; return resultSubGroup; } @@ -824,32 +940,37 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Returns the next group, including inheritance, which contains that - * variable name. - * + * Returns the next group, including inheritance, which contains that variable name. + * * It does Breadth-first search - * + * * @param start the starting group to look for * @param targetVariable the variable name * @return The group if found. Null if not. */ - public Group nextGroupWithVariable(Group start, String targetVariable) { + public Group nextGroupWithVariable(Group start, String targetVariable) + { - if (start == null || targetVariable == null) { + if (start == null || targetVariable == null) + { return null; } LinkedList stack = new LinkedList(); ArrayList alreadyVisited = new ArrayList(); stack.push(start); alreadyVisited.add(start); - while (!stack.isEmpty()) { + while (!stack.isEmpty()) + { Group now = stack.pop(); - if (now.getVariables().hasVar(targetVariable)) { + if (now.getVariables().hasVar(targetVariable)) + { return now; } - for (String sonName : now.getInherits()) { + for (String sonName : now.getInherits()) + { Group son = ph.getGroup(sonName); - if (son != null && !alreadyVisited.contains(son)) { + if (son != null && !alreadyVisited.contains(son)) + { stack.push(son); alreadyVisited.add(son); } @@ -858,33 +979,38 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { return null; } - /** * Check if given group inherits another group. - * + * * It does Breadth-first search - * + * * @param start The group to start the search. * @param askedGroup Name of the group you're looking for * @return true if it inherits the group. */ - public boolean hasGroupInInheritance(Group start, String askedGroup) { + public boolean hasGroupInInheritance(Group start, String askedGroup) + { - if (start == null || askedGroup == null) { + if (start == null || askedGroup == null) + { return false; } LinkedList stack = new LinkedList(); ArrayList alreadyVisited = new ArrayList(); stack.push(start); alreadyVisited.add(start); - while (!stack.isEmpty()) { + while (!stack.isEmpty()) + { Group now = stack.pop(); - if (now.getName().equalsIgnoreCase(askedGroup)) { + if (now.getName().equalsIgnoreCase(askedGroup)) + { return true; } - for (String sonName : now.getInherits()) { + for (String sonName : now.getInherits()) + { Group son = ph.getGroup(sonName); - if (son != null && !alreadyVisited.contains(son)) { + if (son != null && !alreadyVisited.contains(son)) + { stack.push(son); alreadyVisited.add(son); } @@ -894,37 +1020,41 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Returns the result of permission check. Including inheritance. If found - * anything, the PermissionCheckResult that retuns will include the Group - * name, and the result type. Result types will be EXCEPTION, NEGATION, - * FOUND. - * + * Returns the result of permission check. Including inheritance. If found anything, the PermissionCheckResult that + * retuns will include the Group name, and the result type. Result types will be EXCEPTION, NEGATION, FOUND. + * * If returned type NOTFOUND, the owner will be null, and ownerType too. - * + * * It does Breadth-first search - * + * * @param start * @param targetPermission * @return PermissionCheckResult */ - public PermissionCheckResult checkGroupPermissionWithInheritance(Group start, String targetPermission) { + public PermissionCheckResult checkGroupPermissionWithInheritance(Group start, String targetPermission) + { - if (start == null || targetPermission == null) { + if (start == null || targetPermission == null) + { return null; } LinkedList stack = new LinkedList(); List alreadyVisited = new ArrayList(); stack.push(start); alreadyVisited.add(start); - while (!stack.isEmpty()) { + while (!stack.isEmpty()) + { Group now = stack.pop(); PermissionCheckResult resultNow = checkGroupOnlyPermission(now, targetPermission); - if (!resultNow.resultType.equals(PermissionCheckResult.Type.NOTFOUND)) { + if (!resultNow.resultType.equals(PermissionCheckResult.Type.NOTFOUND)) + { return resultNow; } - for (String sonName : now.getInherits()) { + for (String sonName : now.getInherits()) + { Group son = ph.getGroup(sonName); - if (son != null && !alreadyVisited.contains(son)) { + if (son != null && !alreadyVisited.contains(son)) + { // Add rather than push to retain inheritance order. stack.add(son); alreadyVisited.add(son); @@ -938,28 +1068,32 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Return whole list of names of groups in a inheritance chain. Including a - * starting group. - * + * Return whole list of names of groups in a inheritance chain. Including a starting group. + * * It does Breadth-first search. So closer groups will appear first in list. - * + * * @param start * @return the group that passed on test. null if no group passed. */ - public ArrayList listAllGroupsInherited(Group start) { + public ArrayList listAllGroupsInherited(Group start) + { - if (start == null) { + if (start == null) + { return null; } LinkedList stack = new LinkedList(); ArrayList alreadyVisited = new ArrayList(); stack.push(start); alreadyVisited.add(start.getName()); - while (!stack.isEmpty()) { + while (!stack.isEmpty()) + { Group now = stack.pop(); - for (String sonName : now.getInherits()) { + for (String sonName : now.getInherits()) + { Group son = ph.getGroup(sonName); - if (son != null && !alreadyVisited.contains(son.getName())) { + if (son != null && !alreadyVisited.contains(son.getName())) + { stack.push(son); alreadyVisited.add(son.getName()); } @@ -969,69 +1103,79 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Compare a user permission like 'myplugin.*' against a full plugin - * permission name, like 'myplugin.dosomething'. As the example above, will - * return true. - * - * Please sort permissions before sending them here. So negative tokens get - * priority. - * - * You must test if it start with negative outside this method. It will only - * tell if the nodes are matching or not. - * - * Every '-' or '+' in the beginning is ignored. It will match only node - * names. - * + * Compare a user permission like 'myplugin.*' against a full plugin permission name, like 'myplugin.dosomething'. + * As the example above, will return true. + * + * Please sort permissions before sending them here. So negative tokens get priority. + * + * You must test if it start with negative outside this method. It will only tell if the nodes are matching or not. + * + * Every '-' or '+' in the beginning is ignored. It will match only node names. + * * @param userAccessLevel * @param fullPermissionName * @return PermissionCheckResult.Type */ - public PermissionCheckResult.Type comparePermissionString(String userAccessLevel, String fullPermissionName) { + public PermissionCheckResult.Type comparePermissionString(String userAccessLevel, String fullPermissionName) + { int userAccessLevelLength; - if (userAccessLevel == null || fullPermissionName == null || fullPermissionName.length() == 0 || (userAccessLevelLength = userAccessLevel.length()) == 0) { + if (userAccessLevel == null || fullPermissionName == null || fullPermissionName.length() == 0 || (userAccessLevelLength = userAccessLevel.length()) == 0) + { return PermissionCheckResult.Type.NOTFOUND; } PermissionCheckResult.Type result = PermissionCheckResult.Type.FOUND; int userAccessLevelOffset = 0; - if (userAccessLevel.charAt(0) == '+') { + if (userAccessLevel.charAt(0) == '+') + { userAccessLevelOffset = 1; result = PermissionCheckResult.Type.EXCEPTION; - } else if (userAccessLevel.charAt(0) == '-') { + } + else if (userAccessLevel.charAt(0) == '-') + { userAccessLevelOffset = 1; result = PermissionCheckResult.Type.NEGATION; } - if ("*".regionMatches(0, userAccessLevel, userAccessLevelOffset, userAccessLevelLength - userAccessLevelOffset)) { + if ("*".regionMatches(0, userAccessLevel, userAccessLevelOffset, userAccessLevelLength - userAccessLevelOffset)) + { return result; } int fullPermissionNameOffset; - if (fullPermissionName.charAt(0) == '+' || fullPermissionName.charAt(0) == '-') { + if (fullPermissionName.charAt(0) == '+' || fullPermissionName.charAt(0) == '-') + { fullPermissionNameOffset = 1; - } else { + } + else + { fullPermissionNameOffset = 0; } - if (userAccessLevel.charAt(userAccessLevel.length() - 1) == '*') { + if (userAccessLevel.charAt(userAccessLevel.length() - 1) == '*') + { return userAccessLevel.regionMatches(true, userAccessLevelOffset, fullPermissionName, fullPermissionNameOffset, userAccessLevelLength - userAccessLevelOffset - 1) ? result : PermissionCheckResult.Type.NOTFOUND; - } else { + } + else + { return userAccessLevel.regionMatches(true, userAccessLevelOffset, fullPermissionName, fullPermissionNameOffset, Math.max(userAccessLevelLength - userAccessLevelOffset, fullPermissionName.length() - fullPermissionNameOffset)) ? result : PermissionCheckResult.Type.NOTFOUND; } } /** * Returns a list of all groups. - * + * * Including subgroups. - * + * * @param userName * @return String[] of all group names. */ @Override - public String[] getGroups(String userName) { + public String[] getGroups(String userName) + { ArrayList allGroups = listAllGroupsInherited(ph.getUser(userName).getGroup()); - for (Group subg : ph.getUser(userName).subGroupListCopy()) { + for (Group subg : ph.getUser(userName).subGroupListCopy()) + { allGroups.addAll(listAllGroupsInherited(subg)); } @@ -1041,36 +1185,42 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * A Breadth-first search thru inheritance model. - * - * Just a model to copy and paste. This will guarantee the closer groups - * will be checked first. - * + * + * Just a model to copy and paste. This will guarantee the closer groups will be checked first. + * * @param start * @param targerPermission * @return */ @SuppressWarnings("unused") - private Group breadthFirstSearch(Group start, String targerPermission) { + private Group breadthFirstSearch(Group start, String targerPermission) + { - if (start == null || targerPermission == null) { + if (start == null || targerPermission == null) + { return null; } LinkedList stack = new LinkedList(); ArrayList alreadyVisited = new ArrayList(); stack.push(start); alreadyVisited.add(start); - while (!stack.isEmpty()) { + while (!stack.isEmpty()) + { Group now = stack.pop(); PermissionCheckResult resultNow = checkGroupOnlyPermission(now, targerPermission); - if (resultNow.resultType.equals(PermissionCheckResult.Type.EXCEPTION) || resultNow.resultType.equals(PermissionCheckResult.Type.FOUND)) { + if (resultNow.resultType.equals(PermissionCheckResult.Type.EXCEPTION) || resultNow.resultType.equals(PermissionCheckResult.Type.FOUND)) + { return now; } - if (resultNow.resultType.equals(PermissionCheckResult.Type.NEGATION)) { + if (resultNow.resultType.equals(PermissionCheckResult.Type.NEGATION)) + { return null; } - for (String sonName : now.getInherits()) { + for (String sonName : now.getInherits()) + { Group son = ph.getGroup(sonName); - if (son != null && !alreadyVisited.contains(son)) { + if (son != null && !alreadyVisited.contains(son)) + { stack.push(son); alreadyVisited.add(son); } @@ -1080,23 +1230,30 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } @Override - public Group getDefaultGroup() { + public Group getDefaultGroup() + { return ph.getDefaultGroup(); } @Override - public String getInfoString(String entryName, String path, boolean isGroup) { + public String getInfoString(String entryName, String path, boolean isGroup) + { - if (isGroup) { + if (isGroup) + { Group data = ph.getGroup(entryName); - if (data == null) { + if (data == null) + { return null; } return data.getVariables().getVarString(path); - } else { + } + else + { User data = ph.getUser(entryName); - if (data == null) { + if (data == null) + { return null; } return data.getVariables().getVarString(path); @@ -1104,17 +1261,23 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } @Override - public int getInfoInteger(String entryName, String path, boolean isGroup) { + public int getInfoInteger(String entryName, String path, boolean isGroup) + { - if (isGroup) { + if (isGroup) + { Group data = ph.getGroup(entryName); - if (data == null) { + if (data == null) + { return -1; } return data.getVariables().getVarInteger(path); - } else { + } + else + { User data = ph.getUser(entryName); - if (data == null) { + if (data == null) + { return -1; } return data.getVariables().getVarInteger(path); @@ -1122,17 +1285,23 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } @Override - public double getInfoDouble(String entryName, String path, boolean isGroup) { + public double getInfoDouble(String entryName, String path, boolean isGroup) + { - if (isGroup) { + if (isGroup) + { Group data = ph.getGroup(entryName); - if (data == null) { + if (data == null) + { return -1; } return data.getVariables().getVarDouble(path); - } else { + } + else + { User data = ph.getUser(entryName); - if (data == null) { + if (data == null) + { return -1; } return data.getVariables().getVarDouble(path); @@ -1141,17 +1310,23 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } @Override - public boolean getInfoBoolean(String entryName, String path, boolean isGroup) { + public boolean getInfoBoolean(String entryName, String path, boolean isGroup) + { - if (isGroup) { + if (isGroup) + { Group data = ph.getGroup(entryName); - if (data == null) { + if (data == null) + { return false; } return data.getVariables().getVarBoolean(path); - } else { + } + else + { User data = ph.getUser(entryName); - if (data == null) { + if (data == null) + { return false; } return data.getVariables().getVarBoolean(path); @@ -1159,25 +1334,29 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } @Override - public void addUserInfo(String name, String path, Object data) { + public void addUserInfo(String name, String path, Object data) + { ph.getUser(name).getVariables().addVar(path, data); } @Override - public void removeUserInfo(String name, String path) { + public void removeUserInfo(String name, String path) + { ph.getUser(name).getVariables().removeVar(path); } @Override - public void addGroupInfo(String name, String path, Object data) { + public void addGroupInfo(String name, String path, Object data) + { ph.getGroup(name).getVariables().addVar(path, data); } @Override - public void removeGroupInfo(String name, String path) { + public void removeGroupInfo(String name, String path) + { ph.getGroup(name).getVariables().removeVar(path); } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index fb14c39f6..74fbd4541 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -14,7 +14,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, * USA. */ - package org.anjocaido.groupmanager.permissions; import java.lang.reflect.Field; @@ -49,14 +48,15 @@ import org.bukkit.permissions.PermissionAttachment; import org.bukkit.permissions.PermissionAttachmentInfo; import org.bukkit.plugin.PluginManager; + /** - * + * * BukkitPermissions overrides to force GM reponses to Superperms - * + * * @author ElgarL */ -public class BukkitPermissions { - +public class BukkitPermissions +{ protected WeakHashMap attachments = new WeakHashMap(); protected LinkedHashMap registeredPermissions = new LinkedHashMap(); protected GroupManager plugin; @@ -67,7 +67,8 @@ public class BukkitPermissions { /** * @return the player_join */ - public boolean isPlayer_join() { + public boolean isPlayer_join() + { return player_join; } @@ -75,41 +76,50 @@ public class BukkitPermissions { /** * @param player_join the player_join to set */ - public void setPlayer_join(boolean player_join) { + public void setPlayer_join(boolean player_join) + { this.player_join = player_join; } - private static Field permissions; // Setup reflection (Thanks to Codename_B for the reflection source) - static { - try { + static + { + try + { permissions = PermissionAttachment.class.getDeclaredField("permissions"); permissions.setAccessible(true); - } catch (SecurityException e) { + } + catch (SecurityException e) + { e.printStackTrace(); - } catch (NoSuchFieldException e) { + } + catch (NoSuchFieldException e) + { e.printStackTrace(); } } - public BukkitPermissions(GroupManager plugin) { + public BukkitPermissions(GroupManager plugin) + { this.plugin = plugin; this.reset(); this.registerEvents(); - + GroupManager.logger.info("Superperms support enabled."); } - - public void reset() { + + public void reset() + { this.collectPermissions(); this.updateAllPlayers(); } - private void registerEvents() { + private void registerEvents() + { PluginManager manager = plugin.getServer().getPluginManager(); @@ -117,51 +127,61 @@ public class BukkitPermissions { manager.registerEvents(new BukkitEvents(), plugin); } - public void collectPermissions() { + public void collectPermissions() + { registeredPermissions.clear(); - for (Permission perm : Bukkit.getPluginManager().getPermissions()) { + for (Permission perm : Bukkit.getPluginManager().getPermissions()) + { registeredPermissions.put(perm.getName().toLowerCase(), perm); } } - public void updatePermissions(Player player) { + 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 - * and make it update for the child nodes. - * + * 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) { + public void updatePermissions(Player player, String world) + { - if (player == null || !GroupManager.isLoaded()) { + if (player == null || !GroupManager.isLoaded()) + { return; } - + // Reset the User objects player reference. User user = plugin.getWorldsHolder().getWorldData(player.getWorld().getName()).getUser(player.getName()); if (user != null) + { user.updatePlayer(player); + } PermissionAttachment attachment; // Find the players current attachment, or add a new one. - if (this.attachments.containsKey(player)) { + if (this.attachments.containsKey(player)) + { attachment = this.attachments.get(player); - } else { + } + else + { attachment = player.addAttachment(plugin); this.attachments.put(player, attachment); } - if (world == null) { + if (world == null) + { world = player.getWorld().getName(); } @@ -174,19 +194,20 @@ public class BukkitPermissions { playerPermArray = sort(playerPermArray); Boolean value = false; - for (String permission : playerPermArray) { + for (String permission : playerPermArray) + { value = (!permission.startsWith("-")); 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 + try + { // Codename_B source @SuppressWarnings("unchecked") - Map orig = (Map) permissions.get(attachment); + Map orig = (Map)permissions.get(attachment); // Clear the map (faster than removing the attachment and recalculating) orig.clear(); // Then whack our map into there @@ -194,36 +215,45 @@ public class BukkitPermissions { // That's all folks! //attachment.getPermissible().recalculatePermissions(); player.recalculatePermissions(); - } catch (IllegalArgumentException e) { + } + catch (IllegalArgumentException e) + { e.printStackTrace(); - } catch (IllegalAccessException e) { + } + catch (IllegalAccessException e) + { e.printStackTrace(); } } /** * Sort a permission node list by parent/child - * + * * @param permList * @return List sorted for priority */ - private List sort(List permList) { + private List sort(List permList) + { List result = new ArrayList(); - for (String key : permList) { + for (String key : permList) + { String a = key.charAt(0) == '-' ? key.substring(1) : key; Map allchildren = GroupManager.BukkitPermissions.getAllChildren(a, new HashSet()); - if (allchildren != null) { + if (allchildren != null) + { ListIterator itr = result.listIterator(); - while (itr.hasNext()) { - String node = (String) itr.next(); + while (itr.hasNext()) + { + String node = (String)itr.next(); String b = node.charAt(0) == '-' ? node.substring(1) : node; // Insert the parent node before the child - if (allchildren.containsKey(b)) { + if (allchildren.containsKey(b)) + { itr.set(key); itr.add(node); break; @@ -231,33 +261,43 @@ public class BukkitPermissions { } } if (!result.contains(key)) + { result.add(key); + } } return result; } /** - * Fetch all permissions which are registered with superperms. - * {can include child nodes) - * + * Fetch all permissions which are registered with superperms. {can include child nodes) + * * @param includeChildren * @return List of all permission nodes */ - public List getAllRegisteredPermissions(boolean includeChildren) { + public List getAllRegisteredPermissions(boolean includeChildren) + { List perms = new ArrayList(); - for (String key : registeredPermissions.keySet()) { - if (!perms.contains(key)) { + for (String key : registeredPermissions.keySet()) + { + if (!perms.contains(key)) + { perms.add(key); - if (includeChildren) { + if (includeChildren) + { Map children = getAllChildren(key, new HashSet()); - if (children != null) { + if (children != null) + { for (String node : children.keySet()) + { if (!perms.contains(node)) + { perms.add(node); + } + } } } } @@ -267,29 +307,32 @@ public class BukkitPermissions { } /** - * Returns a map of ALL child permissions registered with bukkit - * null is empty - * + * Returns a map of ALL child permissions registered with bukkit 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 getAllChildren(String node, Set playerPermArray) { + public Map getAllChildren(String node, Set playerPermArray) + { LinkedList stack = new LinkedList(); Map alreadyVisited = new HashMap(); stack.push(node); alreadyVisited.put(node, true); - while (!stack.isEmpty()) { + while (!stack.isEmpty()) + { String now = stack.pop(); Map children = getChildren(now); - if ((children != null) && (!playerPermArray.contains("-" + now))) { - for (String childName : children.keySet()) { - if (!alreadyVisited.containsKey(childName)) { + if ((children != null) && (!playerPermArray.contains("-" + now))) + { + for (String childName : children.keySet()) + { + if (!alreadyVisited.containsKey(childName)) + { stack.push(childName); alreadyVisited.put(childName, children.get(childName)); } @@ -298,24 +341,27 @@ public class BukkitPermissions { } alreadyVisited.remove(node); if (!alreadyVisited.isEmpty()) + { return alreadyVisited; + } return null; } /** - * Returns a map of the child permissions (1 node deep) as registered with - * Bukkit. - * null is empty - * + * Returns a map of the child permissions (1 node deep) as registered with Bukkit. null is empty + * * @param node * @return Map of child permissions */ - public Map getChildren(String node) { + public Map getChildren(String node) + { Permission perm = registeredPermissions.get(node.toLowerCase()); if (perm == null) + { return null; + } return perm.getChildren(); @@ -323,11 +369,12 @@ public class BukkitPermissions { /** * List all effective permissions for this player. - * + * * @param player * @return List of permissions */ - public List listPerms(Player player) { + public List listPerms(Player player) + { List perms = new ArrayList(); @@ -342,9 +389,12 @@ public class BukkitPermissions { */ perms.add("Effective Permissions:"); - for (PermissionAttachmentInfo info : player.getEffectivePermissions()) { + for (PermissionAttachmentInfo info : player.getEffectivePermissions()) + { if (info.getValue() == true) + { perms.add(" " + info.getPermission() + " = " + info.getValue()); + } } return perms; } @@ -352,9 +402,11 @@ public class BukkitPermissions { /** * force Bukkit to update every OnlinePlayers permissions. */ - public void updateAllPlayers() { + public void updateAllPlayers() + { - for (Player player : Bukkit.getServer().getOnlinePlayers()) { + for (Player player : Bukkit.getServer().getOnlinePlayers()) + { updatePermissions(player); } } @@ -362,23 +414,31 @@ public class BukkitPermissions { /** * force Bukkit to update this Players permissions. */ - public void updatePlayer(Player player) { + public void updatePlayer(Player player) + { if (player != null) + { this.updatePermissions(player, null); + } } /** * Force remove any attachments - * + * * @param player */ - private void removeAttachment(Player player) { + private void removeAttachment(Player player) + { - if (attachments.containsKey(player)) { - try { + if (attachments.containsKey(player)) + { + try + { player.removeAttachment(attachments.get(player)); - } catch (IllegalArgumentException e) { + } + catch (IllegalArgumentException e) + { /* * Failed to remove attachment * This usually means Bukkit no longer knows of it. @@ -391,15 +451,20 @@ public class BukkitPermissions { /** * Remove all attachments in case of a restart or reload. */ - public void removeAllAttachments() { + public void removeAllAttachments() + { Iterator itr = attachments.keySet().iterator(); - while (itr.hasNext()) { + while (itr.hasNext()) + { Player player = itr.next(); - try { + try + { player.removeAttachment(attachments.get(player)); - } catch (IllegalArgumentException e) { + } + catch (IllegalArgumentException e) + { /* * Failed to remove attachment * This usually means Bukkit no longer knows of it. @@ -409,16 +474,18 @@ public class BukkitPermissions { attachments.clear(); } + /** * Player events tracked to cause Superperms updates - * + * * @author ElgarL - * + * */ - protected class PlayerEvents implements Listener { - + protected class PlayerEvents implements Listener + { @EventHandler(priority = EventPriority.LOWEST) - public void onPlayerJoin(PlayerJoinEvent event) { + public void onPlayerJoin(PlayerJoinEvent event) + { setPlayer_join(true); Player player = event.getPlayer(); @@ -429,7 +496,8 @@ public class BukkitPermissions { removeAttachment(player); // force GM to create the player if they are not already listed. - if (plugin.getWorldsHolder().getWorldData(player.getWorld().getName()).getUser(player.getName()) != null) { + if (plugin.getWorldsHolder().getWorldData(player.getWorld().getName()).getUser(player.getName()) != null) + { setPlayer_join(false); updatePermissions(event.getPlayer()); } @@ -437,16 +505,18 @@ public class BukkitPermissions { } @EventHandler(priority = EventPriority.LOWEST) - public void onPlayerChangeWorld(PlayerChangedWorldEvent event) { // has changed worlds + public void onPlayerChangeWorld(PlayerChangedWorldEvent event) + { // has changed worlds updatePermissions(event.getPlayer(), event.getPlayer().getWorld().getName()); } @EventHandler(priority = EventPriority.LOWEST) - public void onPlayerKick(PlayerKickEvent event) { + public void onPlayerKick(PlayerKickEvent event) + { Player player = event.getPlayer(); - + /* * force remove any attachments as bukkit may not */ @@ -454,10 +524,13 @@ public class BukkitPermissions { } @EventHandler(priority = EventPriority.LOWEST) - public void onPlayerQuit(PlayerQuitEvent event) { + public void onPlayerQuit(PlayerQuitEvent event) + { if (!GroupManager.isLoaded()) + { return; + } Player player = event.getPlayer(); @@ -468,24 +541,28 @@ public class BukkitPermissions { } } - protected class BukkitEvents implements Listener { + protected class BukkitEvents implements Listener + { @EventHandler(priority = EventPriority.NORMAL) - public void onPluginEnable(PluginEnableEvent event) { + public void onPluginEnable(PluginEnableEvent event) + { if (!GroupManager.isLoaded()) + { return; + } collectPermissions(); updateAllPlayers(); } @EventHandler(priority = EventPriority.NORMAL) - public void onPluginDisable(PluginDisableEvent event) { + public void onPluginDisable(PluginDisableEvent event) + { collectPermissions(); // updateAllPlayers(); } } - } \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java index 69f098949..7c6e51367 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java @@ -10,19 +10,20 @@ import org.anjocaido.groupmanager.data.Group; //import org.anjocaido.groupmanager.data.User; import org.bukkit.entity.Player; + /** * Made by Nijikokun. Changed by Gabriel Couto - * + * * This class is intended to *read* permissions from a single world. - * + * * @author Nijikokun * @author Gabriel Couto * @author ElgarL */ -public abstract class PermissionsReaderInterface { - +public abstract class PermissionsReaderInterface +{ /** - * + * * @param player * @param string * @return true if has permission @@ -30,7 +31,7 @@ public abstract class PermissionsReaderInterface { public abstract boolean has(Player player, String string); /** - * + * * @param player * @param string * @return true if has permission @@ -38,14 +39,14 @@ public abstract class PermissionsReaderInterface { public abstract boolean permission(Player player, String string); /** - * + * * @param userName * @return group name for this player. */ public abstract String getGroup(String userName); /** - * + * * @param userName * @param groupName * @return true if in group @@ -53,28 +54,28 @@ public abstract class PermissionsReaderInterface { public abstract boolean inGroup(String userName, String groupName); /** - * + * * @param groupName * @return String of prefix */ public abstract String getGroupPrefix(String groupName); /** - * + * * @param groupName * @return String of suffix */ public abstract String getGroupSuffix(String groupName); /** - * + * * @param groupName * @return true if can build */ public abstract boolean canGroupBuild(String groupName); /** - * + * * @param groupName * @param node * @return String value @@ -82,7 +83,7 @@ public abstract class PermissionsReaderInterface { public abstract String getGroupPermissionString(String groupName, String node); /** - * + * * @param groupName * @param node * @return integer value @@ -90,7 +91,7 @@ public abstract class PermissionsReaderInterface { public abstract int getGroupPermissionInteger(String groupName, String node); /** - * + * * @param groupName * @param node * @return boolean value @@ -98,7 +99,7 @@ public abstract class PermissionsReaderInterface { public abstract boolean getGroupPermissionBoolean(String groupName, String node); /** - * + * * @param groupName * @param node * @return double value @@ -106,7 +107,7 @@ public abstract class PermissionsReaderInterface { public abstract double getGroupPermissionDouble(String groupName, String node); /** - * + * * @param userName * @param node * @return String value @@ -114,7 +115,7 @@ public abstract class PermissionsReaderInterface { public abstract String getUserPermissionString(String userName, String node); /** - * + * * @param userName * @param node * @return integer value @@ -122,7 +123,7 @@ public abstract class PermissionsReaderInterface { public abstract int getUserPermissionInteger(String userName, String node); /** - * + * * @param userName * @param node * @return boolean value @@ -130,7 +131,7 @@ public abstract class PermissionsReaderInterface { public abstract boolean getUserPermissionBoolean(String userName, String node); /** - * + * * @param userName * @param node * @return double value @@ -138,7 +139,7 @@ public abstract class PermissionsReaderInterface { public abstract double getUserPermissionDouble(String userName, String node); /** - * + * * @param userName * @param node * @return String value @@ -146,7 +147,7 @@ public abstract class PermissionsReaderInterface { public abstract String getPermissionString(String userName, String node); /** - * + * * @param userName * @param node * @return integer value @@ -154,7 +155,7 @@ public abstract class PermissionsReaderInterface { public abstract int getPermissionInteger(String userName, String node); /** - * + * * @param userName * @param node * @return boolean value @@ -162,7 +163,7 @@ public abstract class PermissionsReaderInterface { public abstract boolean getPermissionBoolean(String userName, String node); /** - * + * * @param userName * @param node * @return double value @@ -171,58 +172,50 @@ public abstract class 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. - * + * 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 */ 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. - * + * 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 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. + * 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 comparator); - public abstract int getInfoInteger(String entryName, String path, boolean isGroup); //public abstract int getInfoInteger(String entryName, String path, boolean isGroup, Comparator comparator); - /** * Gets a double from the Info node without inheritance. - * + * * @param entryName * @param path * @param isGroup @@ -231,11 +224,9 @@ public abstract class PermissionsReaderInterface { public abstract double getInfoDouble(String entryName, String path, boolean isGroup); //public abstract double getInfoDouble(String entryName, String path, boolean isGroup, Comparator comparator); - public abstract boolean getInfoBoolean(String entryName, String path, boolean isGroup); //public abstract boolean getInfoBoolean(String entryName, String path, boolean isGroup, Comparator comparator); - public abstract void addUserInfo(String name, String path, Object data); public abstract void removeUserInfo(String name, String path); @@ -245,7 +236,6 @@ public abstract class PermissionsReaderInterface { public abstract void removeGroupInfo(String name, String path); ////////////////////////////// - public abstract List getAllPlayersPermissions(String userName); public abstract Set getAllPlayersPermissions(String userName, Boolean includeChildren); diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/GMLoggerHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/GMLoggerHandler.java index de5348b17..df305aa38 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/GMLoggerHandler.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/GMLoggerHandler.java @@ -8,19 +8,24 @@ import java.util.logging.ConsoleHandler; import java.util.logging.Level; import java.util.logging.LogRecord; + /** - * + * * @author gabrielcouto */ -public class GMLoggerHandler extends ConsoleHandler { - +public class GMLoggerHandler extends ConsoleHandler +{ @Override - public void publish(LogRecord record) { + public void publish(LogRecord record) + { String message = "GroupManager - " + record.getLevel() + " - " + record.getMessage(); - if (record.getLevel().equals(Level.SEVERE) || record.getLevel().equals(Level.WARNING)) { + if (record.getLevel().equals(Level.SEVERE) || record.getLevel().equals(Level.WARNING)) + { System.err.println(message); - } else { + } + else + { System.out.println(message); } } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/GroupManagerPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/GroupManagerPermissions.java index 4a7298b9c..624c6769a 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/GroupManagerPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/GroupManagerPermissions.java @@ -4,13 +4,14 @@ */ package org.anjocaido.groupmanager.utils; + /** * Just a list of commands for this plugin - * + * * @author gabrielcouto */ -public enum GroupManagerPermissions { - +public enum GroupManagerPermissions +{ manuadd, manudel, manuaddsub, diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/PermissionCheckResult.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/PermissionCheckResult.java index eb6633863..df6e4b1cc 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/PermissionCheckResult.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/PermissionCheckResult.java @@ -6,15 +6,16 @@ package org.anjocaido.groupmanager.utils; import org.anjocaido.groupmanager.data.DataUnit; + /** - * + * * @author gabrielcouto */ -public class PermissionCheckResult { - +public class PermissionCheckResult +{ /** * It should be the owner of the access level found. - * + * * Use instanceof to find the owner type */ public DataUnit owner; @@ -27,40 +28,34 @@ public class PermissionCheckResult { */ public String askedPermission; /** - * The result conclusion of the search. - * It determines if the owner can do, or not. - * + * The result conclusion of the search. It determines if the owner can do, or not. + * * It even determines if it has an owner. */ public Type resultType = Type.NOTFOUND; + /** * The type of result the search can give. */ - public enum Type { - + public enum Type + { /** - * If found a matching node starting with '+'. - * It means the user CAN do the permission. + * If found a matching node starting with '+'. It means the user CAN do the permission. */ EXCEPTION, /** - * If found a matching node starting with '-'. - * It means the user CANNOT do the permission. + * If found a matching node starting with '-'. It means the user CANNOT do the permission. */ NEGATION, /** - * If just found a common matching node. - * IT means the user CAN do the permission. + * If just found a common matching node. IT means the user CAN do the permission. */ FOUND, /** - * If no matchin node was found. - * It means the user CANNOT do the permission. - * - * owner field and accessLevel field should not be considered, - * when type is - * NOTFOUND + * If no matchin node was found. It means the user CANNOT do the permission. + * + * owner field and accessLevel field should not be considered, when type is NOTFOUND */ NOTFOUND } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/StringPermissionComparator.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/StringPermissionComparator.java index 5a56cd9fc..38cb15349 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/StringPermissionComparator.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/StringPermissionComparator.java @@ -6,45 +6,54 @@ package org.anjocaido.groupmanager.utils; import java.util.Comparator; + /** - * + * * @author gabrielcouto */ -public class StringPermissionComparator implements Comparator { - +public class StringPermissionComparator implements Comparator +{ @Override - public int compare(String permA, String permB) { + public int compare(String permA, String permB) + { boolean ap = permA.startsWith("+"); boolean bp = permB.startsWith("+"); boolean am = permA.startsWith("-"); boolean bm = permB.startsWith("-"); - if (ap && bp) { + if (ap && bp) + { return 0; } - if (ap && !bp) { + if (ap && !bp) + { return -1; } - if (!ap && bp) { + if (!ap && bp) + { return 1; } - if (am && bm) { + if (am && bm) + { return 0; } - if (am && !bm) { + if (am && !bm) + { return -1; } - if (!am && bm) { + if (!am && bm) + { return 1; } return permA.compareToIgnoreCase(permB); } - private static StringPermissionComparator instance; - public static StringPermissionComparator getInstance() { + public static StringPermissionComparator getInstance() + { - if (instance == null) { + if (instance == null) + { instance = new StringPermissionComparator(); } return instance; diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/Tasks.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/Tasks.java index d75737c66..da345338d 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/Tasks.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/utils/Tasks.java @@ -22,19 +22,21 @@ import java.util.List; import org.anjocaido.groupmanager.GroupManager; import org.anjocaido.groupmanager.data.Group; + /** - * + * * @author gabrielcouto */ -public abstract class Tasks { - +public abstract class Tasks +{ /** * Gets the exception stack trace as a string. - * + * * @param exception * @return stack trace as a string */ - public static String getStackTraceAsString(Exception exception) { + public static String getStackTraceAsString(Exception exception) + { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); @@ -42,7 +44,8 @@ public abstract class Tasks { return sw.toString(); } - public static void copy(InputStream src, File dst) throws IOException { + public static void copy(InputStream src, File dst) throws IOException + { InputStream in = src; OutputStream out = new FileOutputStream(dst); @@ -50,17 +53,22 @@ public abstract class Tasks { // Transfer bytes from in to out byte[] buf = new byte[1024]; int len; - while ((len = in.read(buf)) > 0) { + while ((len = in.read(buf)) > 0) + { out.write(buf, 0, len); } out.close(); - try { + try + { in.close(); - } catch (Exception e) { + } + catch (Exception e) + { } } - public static void copy(File src, File dst) throws IOException { + public static void copy(File src, File dst) throws IOException + { InputStream in = new FileInputStream(src); copy(in, dst); @@ -68,11 +76,12 @@ public abstract class Tasks { /** * Appends a string to a file - * + * * @param data * @param file */ - public static void appendStringToFile(String data, String file) throws IOException { + public static void appendStringToFile(String data, String file) throws IOException + { FileWriter outStream = new FileWriter("." + System.getProperty("file.separator") + file, true); @@ -88,16 +97,24 @@ public abstract class Tasks { out.close(); } - public static void removeOldFiles(GroupManager gm, File folder) { - - if (folder.isDirectory()) { - long oldTime = System.currentTimeMillis() - (((long) gm.getGMConfig().getBackupDuration() * 60 * 60) * 1000); - for (File olds : folder.listFiles()) { - if (olds.isFile()) { - if (olds.lastModified() < oldTime) { - try { + public static void removeOldFiles(GroupManager gm, File folder) + { + + if (folder.isDirectory()) + { + long oldTime = System.currentTimeMillis() - (((long)gm.getGMConfig().getBackupDuration() * 60 * 60) * 1000); + for (File olds : folder.listFiles()) + { + if (olds.isFile()) + { + if (olds.lastModified() < oldTime) + { + try + { olds.delete(); - } catch (Exception e) { + } + catch (Exception e) + { } } } @@ -105,7 +122,8 @@ public abstract class Tasks { } } - public static String getDateString() { + public static String getDateString() + { GregorianCalendar now = new GregorianCalendar(); String date = ""; @@ -117,59 +135,75 @@ public abstract class Tasks { return date; } - public static String getStringListInString(List list) { + public static String getStringListInString(List list) + { - if (list == null) { + if (list == null) + { return ""; } String result = ""; - for (int i = 0; i < list.size(); i++) { + for (int i = 0; i < list.size(); i++) + { result += list.get(i); - if (i < list.size() - 1) { + if (i < list.size() - 1) + { result += ", "; } } return result; } - public static String getStringArrayInString(String[] list) { + public static String getStringArrayInString(String[] list) + { - if (list == null) { + if (list == null) + { return ""; } String result = ""; - for (int i = 0; i < list.length; i++) { + for (int i = 0; i < list.length; i++) + { result += list[i]; - if (i < ((list.length) - 1)) { + if (i < ((list.length) - 1)) + { result += ", "; } } return result; } - public static String getGroupListInString(List list) { + public static String getGroupListInString(List list) + { - if (list == null) { + if (list == null) + { return ""; } String result = ""; - for (int i = 0; i < list.size(); i++) { + for (int i = 0; i < list.size(); i++) + { result += list.get(i).getName(); - if (i < list.size() - 1) { + if (i < list.size() - 1) + { result += ", "; } } return result; } - public static String join(String[] arr, String separator) { + public static String join(String[] arr, String separator) + { if (arr.length == 0) + { return ""; + } String out = arr[0].toString(); for (int i = 1; i < arr.length; i++) + { out += separator + arr[i]; + } return out; } - } -- cgit v1.2.3