package io.datakernel.aggregation;
import com.google.common.collect.Multimap;
import io.datakernel.async.CompletionCallback;
import io.datakernel.async.ResultCallback;
import io.datakernel.cube.Cube;
import java.util.Map;
import static io.datakernel.aggregation.AggregationChunk.createChunk;
public class CommitCallbackStub extends ResultCallback<Multimap<String, AggregationChunk.NewChunk>> {
private final Cube cube;
private final CompletionCallback callback;
public CommitCallbackStub(Cube cube) {
this(cube, null);
}
public CommitCallbackStub(Cube cube, CompletionCallback callback) {
this.cube = cube;
this.callback = callback;
}
@Override
public void onResult(Multimap<String, AggregationChunk.NewChunk> newChunks) {
cube.incrementLastRevisionId();
for (Map.Entry<String, AggregationChunk.NewChunk> entry : newChunks.entries()) {
String aggregationId = entry.getKey();
AggregationChunk.NewChunk newChunk = entry.getValue();
cube.getAggregation(aggregationId).getMetadata().addToIndex(createChunk(cube.getLastRevisionId(), newChunk));
}
if (callback != null)
callback.setComplete();
}
@Override
public void onException(Exception exception) {
if (callback != null)
callback.setException(exception);
}
}