package com.taobao.top.analysis.statistics.reduce.group; /** * * 组方法工厂 * 报表Entry统计模式,支持最小,最大,总和,计数,平均,直接显示,去重计数 * * @author fangweng * */ public class GroupFunctionFactory { private static final GroupFunction MIN = new MinFunction(); private static final GroupFunction MAX = new MaxFunction(); private static final GroupFunction SUM = new SumFunction(); private static final GroupFunction COUNT = new CountFunction(); private static final GroupFunction AVERAGE = new AvgFunction(); private static final GroupFunction PLAIN = new PlainFunction(); private static final GroupFunction DISTINCTCOUNT = new DistinctCountFunction(); public static GroupFunction getFunction(String value) { if (value.equalsIgnoreCase("min")) return MIN; if (value.equalsIgnoreCase("max")) return MAX; if (value.equalsIgnoreCase("sum")) return SUM; if (value.equalsIgnoreCase("count")) return COUNT; if (value.equalsIgnoreCase("average")) return AVERAGE; if (value.equalsIgnoreCase("plain")) return PLAIN; if (value.equalsIgnoreCase("dcount")) return DISTINCTCOUNT; throw new java.lang.RuntimeException(new StringBuilder( "no such ReportEntryValueType: ").append(value).toString()); } }