package com.packtpub.storm.operators;
import com.packtpub.storm.model.Board;
import com.packtpub.storm.model.GameState;
import com.packtpub.storm.model.Player;
import storm.trident.operation.BaseFunction;
import storm.trident.operation.TridentCollector;
import storm.trident.tuple.TridentTuple;
import java.util.ArrayList;
import java.util.List;
public class ScoreFunction extends BaseFunction {
private static final long serialVersionUID = 1L;
@Override
public void execute(TridentTuple tuple, TridentCollector collector) {
GameState gameState = (GameState) tuple.get(0);
String player = gameState.getPlayer();
int score = gameState.score();
List<Object> values = new ArrayList<Object>();
values.add(gameState.getBoard());
values.add(score);
values.add(player);
collector.emit(values);
for (Board b : gameState.getHistory()) {
player = Player.next(player);
values = new ArrayList<Object>();
values.add(b);
values.add(score);
values.add(player);
collector.emit(values);
}
}
}