package brickhouse.udf.sketch;
import brickhouse.analytics.uniques.SketchSet;
import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator.AggregationBuffer;
import java.util.List;
import java.util.Map;
class SketchSetBuffer implements AggregationBuffer {
private SketchSet sketchSet = null;
public void init(int size) {
if (sketchSet == null ||
((sketchSet.getMaxItems() != size) && (size != -1))) {
sketchSet = new SketchSet(size);
} else {
sketchSet.clear();
}
}
public void reset() {
sketchSet.clear();
}
public int getSize() {
if (sketchSet != null) {
return sketchSet.getMaxItems();
} else {
return -1;
}
}
public List<String> getSketchItems() {
return sketchSet.getMinHashItems();
}
public Map<Long, String> getPartialMap() {
Map<Long, String> partial = sketchSet.getHashItemMap();
partial.put((long) sketchSet.getMaxItems(), SketchSetUDAF.SKETCH_SIZE_STR);
return partial;
}
public void addItem(String str) {
sketchSet.addItem(str);
}
public void addHash(Long hash, String str) {
sketchSet.addHashItem(hash, str);
}
}