Cleanup: Comment and simplify /list code - More to do.

This commit is contained in:
KHobbits 2013-03-18 08:53:12 +00:00
parent 5b55fd97e6
commit 984eca9723
2 changed files with 39 additions and 60 deletions

View file

@ -130,24 +130,20 @@ public class Commandlist extends EssentialsCommand
final StringBuilder outputString = new StringBuilder(); final StringBuilder outputString = new StringBuilder();
Set<String> configGroups = ess.getSettings().getListGroupConfig().keySet(); Set<String> configGroups = ess.getSettings().getListGroupConfig().keySet();
List<String> usedGroups = new ArrayList<String>(); List<String> usedGroups = new ArrayList<String>();
List<String> usedGroupsAsterisk = new ArrayList<String>(); List<String> asterisk = new ArrayList<String>();
Map<String, Boolean> asterisk = new HashMap<String, Boolean>();
boolean hasAsterisk = false;
for (String group : configGroups) for (String group : configGroups)
{ {
boolean userLimit = false;
String groupValue = ess.getSettings().getListGroupConfig().get(group).toString().trim(); String groupValue = ess.getSettings().getListGroupConfig().get(group).toString().trim();
group = group.toLowerCase();
// If the group value is an asterisk, then skip it, and handle it later // If the group value is an asterisk, then skip it, and handle it later
if (groupValue.equals("*")) if (groupValue.equals("*"))
{ {
asterisk.put(group, true); asterisk.add(group);
hasAsterisk = true;
continue; continue;
} }
group = group.toLowerCase();
usedGroups.add(group); usedGroups.add(group);
// If the group value is hidden, we don't need to display it // If the group value is hidden, we don't need to display it
@ -156,18 +152,13 @@ public class Commandlist extends EssentialsCommand
continue; continue;
} }
if (Util.isInt(groupValue))
{
userLimit = true;
}
final List<User> users = new ArrayList<User>(); final List<User> users = new ArrayList<User>();
List<User> u = playerList.get(group); List<User> u = playerList.get(group);
if (u != null && !u.isEmpty())
{
if (userLimit) // If the group value is an int, then we might need to truncate it
if (Util.isInt(groupValue))
{
if (u != null && !u.isEmpty())
{ {
users.addAll(u); users.addAll(u);
int limit = Integer.parseInt(groupValue); int limit = Integer.parseInt(groupValue);
@ -181,8 +172,10 @@ public class Commandlist extends EssentialsCommand
continue; continue;
} }
} }
} }
// If the group value is a list, we need to merge groups together.
if (groupValue.contains(",") || playerList.containsKey(groupValue.toLowerCase())) if (groupValue.contains(",") || playerList.containsKey(groupValue.toLowerCase()))
{ {
if (playerList.containsKey(groupValue)) if (playerList.containsKey(groupValue))
@ -193,7 +186,6 @@ public class Commandlist extends EssentialsCommand
continue; continue;
} }
users.addAll(u); users.addAll(u);
usedGroupsAsterisk.add(groupValue);
} }
else else
{ {
@ -211,18 +203,16 @@ public class Commandlist extends EssentialsCommand
continue; continue;
} }
users.addAll(u); users.addAll(u);
usedGroupsAsterisk.add(g);
} }
} }
} }
// If we have no users, than we don't need to continue parsing this group
if (users == null || users.isEmpty()) if (users == null || users.isEmpty())
{ {
continue; continue;
} }
if (ess.getPermissionsHandler().getName().equals("ConfigPermissions"))
{
group = _("connectedPlayers");
}
outputString.append(_("listGroupTag", Util.replaceFormat(group))); outputString.append(_("listGroupTag", Util.replaceFormat(group)));
outputString.append(listUsers(users)); outputString.append(listUsers(users));
outputString.setCharAt(0, Character.toTitleCase(outputString.charAt(0))); outputString.setCharAt(0, Character.toTitleCase(outputString.charAt(0)));
@ -230,61 +220,50 @@ public class Commandlist extends EssentialsCommand
outputString.setLength(0); outputString.setLength(0);
} }
final String[] groups = playerList.keySet().toArray(new String[0]); String[] onlineGroups = playerList.keySet().toArray(new String[0]);
Arrays.sort(groups, String.CASE_INSENSITIVE_ORDER); Arrays.sort(onlineGroups, String.CASE_INSENSITIVE_ORDER);
if (!asterisk.isEmpty())
{
List<User> asteriskUsers = new ArrayList<User>(); List<User> asteriskUsers = new ArrayList<User>();
String asteriskGroup = "";
if (hasAsterisk) for (String group : onlineGroups)
{
for (String key : asterisk.keySet())
{
if (asterisk.get(key) == true)
{
asteriskGroup = key.toLowerCase();
for (String group : groups)
{
group = group.toLowerCase().trim();
if (usedGroups.contains(group) || usedGroupsAsterisk.contains(group))
{
continue;
}
asteriskUsers.addAll(playerList.get(group));
}
}
}
}
for (String group : groups)
{ {
group = group.toLowerCase().trim(); group = group.toLowerCase().trim();
if (usedGroups.contains(group)) if (usedGroups.contains(group))
{ {
continue; continue;
} }
asteriskUsers.addAll(playerList.get(group));
}
for (String key : asterisk)
{
playerList.put(key, asteriskUsers);
}
onlineGroups = asterisk.toArray(new String[0]);
}
for (String group : onlineGroups)
{
group = group.toLowerCase().trim();
if (usedGroups.contains(group))
{
continue;
}
List<User> users = playerList.get(group); List<User> users = playerList.get(group);
if (ess.getPermissionsHandler().getName().equals("ConfigPermissions")) if (ess.getPermissionsHandler().getName().equals("ConfigPermissions"))
{ {
group = _("connectedPlayers"); group = _("connectedPlayers");
} }
if (hasAsterisk)
{
if (asteriskUsers == null || asteriskUsers.isEmpty())
{
break;
}
users = asteriskUsers;
group = asteriskGroup;
}
outputString.append(_("listGroupTag", Util.replaceFormat(group)));
outputString.append(_("listGroupTag", Util.replaceFormat(group)));
outputString.append(listUsers(users)); outputString.append(listUsers(users));
outputString.setCharAt(0, Character.toTitleCase(outputString.charAt(0))); outputString.setCharAt(0, Character.toTitleCase(outputString.charAt(0)));
sender.sendMessage(outputString.toString()); sender.sendMessage(outputString.toString());
outputString.setLength(0); outputString.setLength(0);
if (hasAsterisk)
{
break;
}
} }
} }

View file

@ -294,7 +294,7 @@ list:
#builder: 20 #builder: 20
# To hide groups, set the group as hidden # To hide groups, set the group as hidden
#default: hidden #default: hidden
Players: * Players: '*'
# More output to the console. # More output to the console.
debug: false debug: false