public static TYPE getType(final String part) { if (part.contains(RANGE.getTag())) // Range is parsed first Always! return RANGE; if (part.contains(REMOVE.getTag())) // since this 1 doesn't need special priority handling return REMOVE; if (part.contains(BIT.getTag())) // Parse bit before data. return BIT; if (part.lastIndexOf(DATA.getTag()) > part.lastIndexOf(AMOUNT.getTag())) return DATA; else { if (part.contains(AMOUNT.getTag())) return AMOUNT; else return NONE; } }
@Override double aggregate(final List<Integer> values) { // avoid division by zero if (values.isEmpty()) { return 0.0; } return SUM.aggregate(values) / AMOUNT.aggregate(values); }