private void validate(AggFuncEnum func2, AbstractSearchField aggreField) {
if (aggreField != null) {
CheckConditions.checkArgument(aggreField.getRootField().getDataType() != DataTypeEnum.RELATIONSHIP,
"Invalid aggregation on referece type!");
CheckConditions.checkArgument(aggreField.getRootField().getDataType() != DataTypeEnum.JSON, "Invalid aggregation on json type!");
}
switch (func2) {
case AVG:
case SUM:
DataTypeEnum dte = aggreField.getRootField().getDataType();
CheckConditions.checkArgument(
(dte == DataTypeEnum.LONG || dte == DataTypeEnum.INTEGER || dte == DataTypeEnum.DOUBLE),
MessageFormat.format("{0} function could only applied on long/integer/double fields while field {1} is {2}", func2.getName(), aggreField.getFieldName(), dte.toString()));
break;
case COUNT:
CheckConditions.checkArgument(aggreField == null, "count function can't have parameter. ");
break;
case MAX:
case MIN:
CheckConditions.checkArgument(aggreField != null, MessageFormat.format("{0} function must have a field parameter.", func2.getName()));
break;
default:
break;
}
}