package kickr.web.model;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import kickr.db.entity.Score;
import kickr.db.entity.ScoreChange;
import kickr.db.entity.ScoreWithChanges;
/**
*
* @author nikku
*/
public class ScoreData {
private final PlayerData player;
private final int value;
private final long added;
private final Date lastUpdated;
private final List<ScoreChangeData> changes;
public ScoreData(PlayerData player, int value, Date lastUpdated, int added, List<ScoreChangeData> changes) {
this.player = player;
this.value = value;
this.added = added;
this.changes = changes;
this.lastUpdated = lastUpdated;
}
public static ScoreData fromScore(ScoreWithChanges scoreWithChanges) {
Score score = scoreWithChanges.getScore();
List<ScoreChange> changes = scoreWithChanges.getChanges();
int added = (int) changes.stream().collect(Collectors.summarizingInt(c -> c.getValue())).getSum();
return new ScoreData(
PlayerData.fromPlayer(score.getPlayer()),
score.getValue(),
score.getLastUpdated(),
added,
ScoreChangeData.fromChanges(changes));
}
public static List<ScoreData> fromScores(List<ScoreWithChanges> scoresWithChanges) {
return scoresWithChanges.stream()
.map(ScoreData::fromScore)
.collect(Collectors.toList());
}
public PlayerData getPlayer() {
return player;
}
public int getValue() {
return value;
}
public Date getLastUpdated() {
return lastUpdated;
}
public long getAdded() {
return added;
}
public List<ScoreChangeData> getChanges() {
return changes;
}
}