package kickr.util; import java.util.ArrayList; import java.util.List; import java.util.function.Function; import kickr.db.entity.Match; import kickr.db.entity.Player; import kickr.db.entity.Score; import kickr.db.entity.ScoreChange; import kickr.db.entity.ScoreType; import kickr.db.entity.Team; /** * * @author nikku */ public class ScoreUpdates { private final Match match; private final ArrayList<ScoreChange> updates; private final Function<Player, Score> fetchScore; public ScoreUpdates(Match match, Function<Player, Score> fetchScore) { this.match = match; this.fetchScore = fetchScore; this.updates = new ArrayList<>(); } public void add(Side side, ScoreType type, int value) { Team team = match.getTeam(side); Player offense = team.getOffense(); add(offense, type, value); if (!team.isSingle()) { Player defense = team.getDefense(); add(defense, type, value); } } protected void add(Player player, ScoreType type, int value) { updates.add(new ScoreChange(type, value, player, match, fetchScore.apply(player))); } public List<ScoreChange> asList() { return updates; } }