From f40260acef8ca6a9deff7c005b2b9d70816b1ef2 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Mon, 7 Nov 2011 15:33:15 +0000 Subject: Minor optimization for Group loading/clone --- .../src/org/anjocaido/groupmanager/GlobalGroups.java | 14 +++++++++++--- .../anjocaido/groupmanager/dataholder/WorldDataHolder.java | 8 ++++++-- 2 files changed, 17 insertions(+), 5 deletions(-) (limited to 'EssentialsGroupManager') diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java index eef5ba59e..861c5e3d4 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java @@ -83,7 +83,6 @@ public class GlobalGroups { public void load() { GGroups = new YamlConfiguration(); - groups = new HashMap(); GroupManager.setLoaded(false); @@ -110,7 +109,9 @@ public class GlobalGroups { Map allGroups = (Map) GGroups.getConfigurationSection("groups").getValues(false); // Load each groups permissions list. - if (allGroups != null) + if (allGroups != null) { + // Clear out old groups + resetGlobalGroups(); for (String groupName : allGroups.keySet()) { Group newGroup = new Group(groupName.toLowerCase()); Object element; @@ -144,12 +145,12 @@ public class GlobalGroups { // Push a new group addGroup(newGroup); } + } removeGroupsChangedFlag(); setTimeStampGroups(GlobalGroupsFile.lastModified()); GroupManager.setLoaded(true); //GlobalGroupsFile = null; - } /** @@ -351,6 +352,13 @@ public class GlobalGroups { return groups.keySet(); } + /** + * Resets GlobalGroups. + */ + public void resetGlobalGroups() { + this.groups = new HashMap(); + } + /** * * @return a collection of the groups diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java index 80291d066..8f5fad5cf 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java @@ -334,11 +334,13 @@ public class WorldDataHolder { // transfer new data resetGroups(); for (Group tempGroup : ph.getGroupList()) { - if (tempGroup.getDataSource() != null) tempGroup.clone(this); + tempGroup.clone(this); } this.setDefaultGroup(this.getGroup(ph.getDefaultGroup().getName())); this.removeGroupsChangedFlag(); this.timeStampGroups = ph.getTimeStampGroups(); + + ph = null; } catch (Exception ex) { Logger.getLogger(WorldDataHolder.class.getName()).log(Level.WARNING, null, ex); } @@ -355,7 +357,7 @@ public class WorldDataHolder { WorldDataHolder ph = new WorldDataHolder(this.getName()); // copy groups for reference for (Group tempGroup : this.getGroupList()) { - if (tempGroup.getDataSource() != null) tempGroup.clone(ph); + tempGroup.clone(ph); } // setup the default group before loading user data. ph.setDefaultGroup(ph.getGroup(this.getDefaultGroup().getName())); @@ -367,6 +369,8 @@ public class WorldDataHolder { } this.removeUsersChangedFlag(); this.timeStampUsers = ph.getTimeStampUsers(); + + ph = null; } catch (Exception ex) { Logger.getLogger(WorldDataHolder.class.getName()).log(Level.WARNING, null, ex); } -- cgit v1.2.3