package com.yem.wm.utils.groupfunc;

import kd.bos.algo.CustomAggFunction;
import kd.bos.algo.DataType;

import java.util.ArrayList;
import java.util.List;

/**
 * 去重计数函数构造器
 * @description:实现groupBy自定义聚合函数
 * @author longh
 * @date 2021年12月11日 下午3:56:04
 */
public class GroupDistinctCountFunction extends CustomAggFunction<List<Object>> {

	public GroupDistinctCountFunction() {
		super("GroupDistinctCountFunction", DataType.IntegerType);
	}

	@Override
	public List<Object> newAggValue() {
		return new ArrayList<>();
	}

	@Override
	public List<Object> addValue(List<Object> arg0, Object arg1) {
		if(arg1 != null) {
			if(arg1 instanceof String && ((String)arg1).isEmpty() ) {
				return arg0;
			}
			if(!arg0.contains(arg1)) {
				arg0.add(arg1);
			}
		}
		return arg0;
	}

	@Override
	public List<Object> combineAggValue(List<Object> arg0, List<Object> arg1) {
		arg0.addAll(arg1);
		return arg0;
	}

	@Override
	public Integer getResult(List<Object> arg0) {
		return arg0.size();
	}
	
}
