
com.fnklabs.draenei.analytics.SearchResultReducerFactory Maven / Gradle / Ivy
package com.fnklabs.draenei.analytics;
import com.fnklabs.draenei.MetricsFactory;
import com.hazelcast.mapreduce.Reducer;
import com.hazelcast.mapreduce.ReducerFactory;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class SearchResultReducerFactory implements ReducerFactory {
private final long totalDocuments;
public SearchResultReducerFactory(long totalDocuments) {
this.totalDocuments = totalDocuments;
}
@Override
public Reducer newReducer(Long key) {
return new ResultReducer(totalDocuments);
}
private enum MetricsType implements MetricsFactory.Type {
SEARCH_REDUCER;
}
private static class ResultReducer extends Reducer {
private final long totalDocuments;
private List searchResults = Collections.synchronizedList(new ArrayList<>());
public ResultReducer(long totalDocuments) {
this.totalDocuments = totalDocuments;
}
@Override
public void reduce(Double value) {
searchResults.add(value);
}
@Override
public Double finalizeReduce() {
return searchResults.stream().mapToDouble(item -> item).sum();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy