package com.packtpub.storm.operators;
import backtype.storm.tuple.Values;
import com.esotericsoftware.minlog.Log;
import com.packtpub.storm.model.BestMove;
import com.packtpub.storm.model.Board;
import storm.trident.operation.BaseAggregator;
import storm.trident.operation.TridentCollector;
import storm.trident.tuple.TridentTuple;
public class FindBestMove extends BaseAggregator<BestMove> {
private static final long serialVersionUID = 1L;
@Override
public BestMove init(Object batchId, TridentCollector collector) {
Log.info("Batch Id = [" + batchId + "]");
return new BestMove();
}
@Override
public void aggregate(BestMove currentBestMove, TridentTuple tuple, TridentCollector collector) {
Board board = (Board) tuple.get(0);
Integer score = tuple.getInteger(1);
if (score > currentBestMove.score) {
currentBestMove.score = score;
currentBestMove.bestMove = board;
}
}
@Override
public void complete(BestMove bestMove, TridentCollector collector) {
collector.emit(new Values(bestMove));
}
}