Example #1
0
 private static List<PlayerRanking> filterFirstPlayers(Collection<PlayerRanking> values) {
   List<PlayerRanking> rankings = new ArrayList<>();
   for (PlayerRanking ranking : values) {
     if (ranking.getTotalGames() >= 8) {
       rankings.add(ranking);
     }
   }
   return rankings;
 }
Example #2
0
  public static void calculateRankings() {
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.DATE, -30);
    List<Match> matchesList =
        ofy().load().type(Match.class).filter("startDate > ", calendar.getTime()).list();
    Matches matches = new Matches();
    matches.setMatches(matchesList);

    // Initialize player ranking map
    Map<String, PlayerRanking> playerRankingMap = new HashMap<>();
    for (String player : matches.getPlayers()) {
      PlayerRanking ranking = new PlayerRanking();
      ranking.setPlayer(player);
      ranking.setGamesWon(0);
      ranking.setGamesLost(0);
      playerRankingMap.put(player, ranking);
    }

    List<RankingTask> rankingTasks = new ArrayList<>();
    rankingTasks.add(new ScoreTask());
    rankingTasks.add(new SpecialResultPerGameTask());
    rankingTasks.add(new BestPositionTask());
    rankingTasks.add(new SlamTask());
    rankingTasks.add(new StrikeTask());
    rankingTasks.add(new PartnerOpponentTask());
    rankingTasks.add(new AverageTimePerMatchTask());
    rankingTasks.add(new ManualBadgeTask());
    rankingTasks.add(new CurrentShapeTask());
    rankingTasks.add(new IncestuousTask());
    for (RankingTask task : rankingTasks) {
      task.rankMatches(playerRankingMap, matches);
    }

    // ofy().save().entities(matchesList).now();
    List<PlayerRanking> rankings = filterFirstPlayers(playerRankingMap.values());
    Collections.sort(
        rankings,
        new Comparator<PlayerRanking>() {

          @Override
          public int compare(PlayerRanking o1, PlayerRanking o2) {
            int result = o2.getSuccessRate().compareTo(o1.getSuccessRate());
            if (result == 0) {
              return o2.getGoalRate().compareTo(o1.getGoalRate());
            }
            return result;
          }
        });
    int index = 1;
    for (PlayerRanking ranking : rankings) {
      ranking.setRanking(index);
      index++;
    }
    calculateBadges(rankings);
    Ranking ranking = new Ranking();
    ranking.setCreatedDate(new Date());
    ranking.setPlayerRankings(rankings);
    ofy().save().entities(ranking);
  }
Example #3
0
 private static void calculateBadges(List<PlayerRanking> rankings) {
   for (PlayerRanking ranking : rankings) {
     if (ranking.getRanking() == 1) {
       ranking.getBadges().add(BadgeEnum.King.name());
     }
     if (ranking.getRanking() == 2) {
       ranking.getBadges().add(BadgeEnum.Queen.name());
     }
     if (ranking.getRanking() == rankings.size()) {
       ranking.getBadges().add(BadgeEnum.Pawn.name());
     }
   }
 }