All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.robertograham.fortnite2.implementation.DefaultStatistic Maven / Gradle / Ivy

There is a newer version: 3.1.0
Show newest version
package io.github.robertograham.fortnite2.implementation;

import io.github.robertograham.fortnite2.domain.Statistic;

import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;


final class DefaultStatistic implements Statistic {

    private final long wins;
    private final long matches;
    private final long kills;
    private final long score;
    private final long timesPlacedTop10;
    private final long timesPlacedTop25;
    private final long timesPlacedTop5;
    private final long timesPlacedTop12;
    private final long timesPlacedTop3;
    private final long timesPlacedTop6;

    DefaultStatistic(Set rawStatistics) {
        final Map summedValuesGroupedByStatType =
                rawStatistics.stream()
                        .collect(
                                Collectors.groupingBy(
                                        RawStatistic::type,
                                        Collectors.summingLong(RawStatistic::value)
                                )
                        );
        wins = summedValuesGroupedByStatType.getOrDefault("placetop1", 0L);
        matches = summedValuesGroupedByStatType.getOrDefault("matchesplayed", 0L);
        kills = summedValuesGroupedByStatType.getOrDefault("kills", 0L);
        score = summedValuesGroupedByStatType.getOrDefault("score", 0L);
        timesPlacedTop10 = summedValuesGroupedByStatType.getOrDefault("placetop10", 0L);
        timesPlacedTop25 = summedValuesGroupedByStatType.getOrDefault("placetop25", 0L);
        timesPlacedTop5 = summedValuesGroupedByStatType.getOrDefault("placetop5", 0L);
        timesPlacedTop12 = summedValuesGroupedByStatType.getOrDefault("placetop12", 0L);
        timesPlacedTop3 = summedValuesGroupedByStatType.getOrDefault("placetop3", 0L);
        timesPlacedTop6 = summedValuesGroupedByStatType.getOrDefault("placetop6", 0L);
    }

    @Override
    public long wins() {
        return wins;
    }

    @Override
    public long matches() {
        return matches;
    }

    @Override
    public long kills() {
        return kills;
    }

    @Override
    public long score() {
        return score;
    }

    @Override
    public long timesPlacedTop10() {
        return timesPlacedTop10;
    }

    @Override
    public long timesPlacedTop25() {
        return timesPlacedTop25;
    }

    @Override
    public long timesPlacedTop5() {
        return timesPlacedTop5;
    }

    @Override
    public long timesPlacedTop12() {
        return timesPlacedTop12;
    }

    @Override
    public long timesPlacedTop3() {
        return timesPlacedTop3;
    }

    @Override
    public long timesPlacedTop6() {
        return timesPlacedTop6;
    }

    @Override
    public String toString() {
        return "DefaultStatistic{" +
                "wins=" + wins +
                ", matches=" + matches +
                ", kills=" + kills +
                ", score=" + score +
                ", timesPlacedTop10=" + timesPlacedTop10 +
                ", timesPlacedTop25=" + timesPlacedTop25 +
                ", timesPlacedTop5=" + timesPlacedTop5 +
                ", timesPlacedTop12=" + timesPlacedTop12 +
                ", timesPlacedTop3=" + timesPlacedTop3 +
                ", timesPlacedTop6=" + timesPlacedTop6 +
                '}';
    }

    @Override
    public boolean equals(Object object) {
        if (this == object)
            return true;
        if (!(object instanceof DefaultStatistic))
            return false;
        DefaultStatistic defaultStatistic = (DefaultStatistic) object;
        return wins == defaultStatistic.wins &&
                matches == defaultStatistic.matches &&
                kills == defaultStatistic.kills &&
                score == defaultStatistic.score &&
                timesPlacedTop10 == defaultStatistic.timesPlacedTop10 &&
                timesPlacedTop25 == defaultStatistic.timesPlacedTop25 &&
                timesPlacedTop5 == defaultStatistic.timesPlacedTop5 &&
                timesPlacedTop12 == defaultStatistic.timesPlacedTop12 &&
                timesPlacedTop3 == defaultStatistic.timesPlacedTop3 &&
                timesPlacedTop6 == defaultStatistic.timesPlacedTop6;
    }

    @Override
    public int hashCode() {
        return Objects.hash(wins, matches, kills, score, timesPlacedTop10, timesPlacedTop25, timesPlacedTop5, timesPlacedTop12, timesPlacedTop3, timesPlacedTop6);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy