mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-01-06 16:37:58 +01:00
Fixed NPE when player has no 'favorite server'
Favorite server is determined by playtime and if player has no sessions the player's favorite server will be null, leading to NPE while parsing JSON. Added Optional to the source of the null value
This commit is contained in:
parent
e5a233ae0e
commit
64f26f1df6
@ -73,7 +73,7 @@ public class PerServerMutator {
|
||||
return timesMap;
|
||||
}
|
||||
|
||||
public UUID favoriteServer() {
|
||||
public Optional<UUID> favoriteServer() {
|
||||
long max = 0;
|
||||
UUID maxServer = null;
|
||||
|
||||
@ -85,7 +85,7 @@ public class PerServerMutator {
|
||||
}
|
||||
}
|
||||
|
||||
return maxServer;
|
||||
return Optional.ofNullable(maxServer);
|
||||
}
|
||||
|
||||
public Map<UUID, List<Session>> sessionsPerServer() {
|
||||
|
@ -92,7 +92,7 @@ public class PlayerJSONParser {
|
||||
PlayerContainer player = db.query(new PlayerContainerQuery(playerUUID));
|
||||
SessionsMutator sessionsMutator = SessionsMutator.forContainer(player);
|
||||
Map<UUID, WorldTimes> worldTimesPerServer = PerServerMutator.forContainer(player).worldTimesPerServer();
|
||||
List<Map<String, Object>> serverAccordion = new ServerAccordion(player, serverNames, graphs, year, timeAmount, locale.get(GenericLang.UNKNOWN).toString()).asMaps();
|
||||
List<Map<String, Object>> serverAccordion = new ServerAccordion(player, serverNames, graphs, year, timeAmount, locale.getString(GenericLang.UNKNOWN)).asMaps();
|
||||
List<PlayerKill> kills = player.getValue(PlayerKeys.PLAYER_KILLS).orElse(Collections.emptyList());
|
||||
List<PlayerKill> deaths = player.getValue(PlayerKeys.PLAYER_DEATHS_KILLS).orElse(Collections.emptyList());
|
||||
|
||||
@ -176,8 +176,7 @@ public class PlayerJSONParser {
|
||||
info.put("session_median", timeAmount.apply(sessions.toMedianSessionLength()));
|
||||
info.put("activity_index", decimals.apply(activityIndex.getValue()));
|
||||
info.put("activity_index_group", activityIndex.getGroup());
|
||||
UUID favoriteServer = perServer.favoriteServer();
|
||||
info.put("favorite_server", serverNames.getOrDefault(favoriteServer, favoriteServer.toString()));
|
||||
info.put("favorite_server", perServer.favoriteServer().map(favoriteServer -> serverNames.getOrDefault(favoriteServer, favoriteServer.toString())).orElse(locale.getString(GenericLang.UNKNOWN)));
|
||||
double averagePing = ping.average();
|
||||
int worstPing = ping.max();
|
||||
int bestPing = ping.min();
|
||||
|
Loading…
Reference in New Issue
Block a user