/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.kapti.pointsmanager.pointevents.RankingEvents;
import com.kapti.client.user.PointsType;
import com.kapti.client.user.User;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
/**
* Deze klasse berekent een ranking van de cashpositie van de spelers.
*
* @author Dieter
*/
public class CashRanking extends ARankingEvent {
private static int RANKINGPLAATSEN = 25; //Hoeveel 'podiumplaatsen' er zijn
public CashRanking(Collection<User> users) {
super(users);
}
@Override
public PointsType getType() {
return PointsType.CASH;
}
@Override
protected HashMap<User, Integer> calculateWinners(Collection<User> users) {
//Gebruikers sorteren op cashpositie
List<User> usersList = new ArrayList<User>(users);
Collections.sort(usersList, new CashComparer());
//Hoogst gerankte spelers eruithalen
HashMap<User, Integer> winningUsers = new HashMap<User, Integer>();
for(int i=0 ; i<RANKINGPLAATSEN ; i++) {
if (i < usersList.size())
winningUsers.put(usersList.get(i), RANKINGPLAATSEN-i);
}
return winningUsers;
}
@Override
public String getDescription(User user) {
if(winners.containsKey(user)) {
DecimalFormat df = new DecimalFormat("#.##");
return "Nr. " + (RANKINGPLAATSEN-winners.get(user)+1) + " (" + df.format(user.getCash()) + "€)";
}
else
return null;
}
@Override
public int getPoints(User user) {
if(winners.containsKey(user))
return winners.get(user);
else
return 0;
}
//Rangschikt van hoog naar laag
private class CashComparer implements Comparator<User> {
public int compare(User o1, User o2) {
if(o1.getCash() < o2.getCash())
return 1;
else if(o1.getCash() == o2.getCash())
return 0;
else
return -1;
}
}
}