package com.jasonrobinson.racer.util; import com.jasonrobinson.racer.enumeration.PoeClass; import com.jasonrobinson.racer.model.Ladder.Entry; import com.jasonrobinson.racer.model.WatchType; import java.util.List; public class LadderUtils { private LadderUtils() { } public static Entry findEntry(List<Entry> entries, String name, WatchType type) { for (Entry entry : entries) { switch (type) { case ACCOUNT: if (entry.getAccount().getName().equalsIgnoreCase(name)) { return entry; } break; case CHARACTER: if (entry.getCharacter().getName().equalsIgnoreCase(name)) { return entry; } break; } } return null; } public static int getClassCount(List<Entry> entries, PoeClass poeClass) { int count = 0; for (Entry entry : entries) { if (poeClass == PoeClass.getClassForName(entry.getCharacter().getPoeClass())) { count++; } } return count; } public static void filterEntriesByClass(List<Entry> entries, PoeClass poeClass) { if (poeClass == null) { return; } for (int i = entries.size() - 1; i >= 0; i--) { Entry entry = entries.get(i); if (PoeClass.getClassForName(entry.getCharacter().getPoeClass()) != poeClass) { entries.remove(i); } } } public static void addClassRankToEntry(List<Entry> entries, Entry entry, int startRank) { int rank = startRank + 1; String name = entry.getCharacter().getName(); PoeClass poeClass = PoeClass.getClassForName(entry.getCharacter().getPoeClass()); for (Entry nextEntry : entries) { String nextName = nextEntry.getCharacter().getName(); if (nextName.equalsIgnoreCase(name)) { entry.setClassRank(rank); break; } PoeClass nextPoeClass = PoeClass.getClassForName(nextEntry.getCharacter().getPoeClass()); if (nextPoeClass == poeClass) { rank++; } } } public static void addClassRanksToEntries(List<Entry> entries) { int marauderRank = 1; int duelistRank = 1; int witchRank = 1; int templarRank = 1; int shadowRank = 1; int rangerRank = 1; int scionRank = 1; for (Entry entry : entries) { PoeClass poeClass = PoeClass.getClassForName(entry.getCharacter().getPoeClass()); switch (poeClass) { case DUELIST: entry.setClassRank(duelistRank); duelistRank++; break; case MARAUDER: entry.setClassRank(marauderRank); marauderRank++; break; case RANGER: entry.setClassRank(rangerRank); rangerRank++; break; case SCION: entry.setClassRank(scionRank); scionRank++; break; case SHADOW: entry.setClassRank(shadowRank); shadowRank++; break; case TEMPLAR: entry.setClassRank(templarRank); templarRank++; break; case WITCH: entry.setClassRank(witchRank); witchRank++; break; } } } }