package gamification;
import java.util.List;
import persistency.entities.LoggedUser;
import persistency.entities.gamification.PointsCategory;
public class Player implements Comparable<Player> {
private long id;
private String name;
private long points = 0;
private String rank = "";
private int rankInt = 0;
private int position = 0;
public Player(LoggedUser p) {
id = p.getId()+42;
name = p.getName();
points = p.getPoints();
setRank(computeRank(p));
}
private String computeRank(LoggedUser p) {
List<PointsCategory> uniqueCategories = p.getUniqueCategories();
int rankRaw1 = 0;
int rankRaw2 = 0;
int rankRaw3 = 0;
for(PointsCategory cat : uniqueCategories) {
int rank = cat.getRank();
switch (rank) {
case 1:
rankRaw1 += 1;
break;
case 2:
rankRaw2 += 1;
break;
case 3:
rankRaw3 += 1;
break;
}
}
rankInt = 0;
if(rankRaw1 >= 3 && rankRaw2 >=3 && rankRaw3 >=3){
rankInt = 3;
} else if(rankRaw1 >= 3 && rankRaw2 >=3){
rankInt = 2;
} else if(rankRaw1 >= 3){
rankInt = 1;
}
return "rank"+rankInt;
}
public long getPoints() {
return points;
}
public void setPoints(long points) {
this.points = points;
}
@Override
public int compareTo(Player o) {
if(this.getPoints() == o.getPoints()){
return 0;
}
return this.getPoints() > o.getPoints() ? -1 : 1;
}
public void setPosition(int position){
this.position = position;
}
public long getId() {
return id;
}
public String getRank() {
return rank;
}
private void setRank(String rank) {
this.rank = rank;
}
public int getRankInt() {
return rankInt;
}
}