Index: src/main/java/hudson/plugins/cigame/ScoreCardAction.java =================================================================== --- src/main/java/hudson/plugins/cigame/ScoreCardAction.java (revision 21038) +++ src/main/java/hudson/plugins/cigame/ScoreCardAction.java (working copy) @@ -58,20 +58,31 @@ @Exported public Collection getParticipants() { + Comparator userIdComparator = new UserIdComparator(); List players = new ArrayList(); ChangeLogSet changeSet = build.getChangeSet(); for (Entry entry : changeSet) { User user = entry.getAuthor(); UserScoreProperty property = user.getProperty(UserScoreProperty.class); - if ((property != null) && property.isParticipatingInGame()) { + if ((property != null) + && property.isParticipatingInGame() + && (Collections.binarySearch(players, user, userIdComparator) < 0)) { players.add(user); } } - Collections.sort(players, new Comparator() { - public int compare(User arg0, User arg1) { - return arg0.getDisplayName().compareToIgnoreCase(arg1.getDisplayName()); - } - }); + Collections.sort(players, new UserDisplayNameComparator()); return players; } + + private static class UserDisplayNameComparator implements Comparator { + public int compare(User arg0, User arg1) { + return arg0.getDisplayName().compareToIgnoreCase(arg1.getDisplayName()); + } + } + + private static class UserIdComparator implements Comparator { + public int compare(User arg0, User arg1) { + return arg0.getId().compareToIgnoreCase(arg1.getId()); + } + } }