Search in sources :

Example 1 with AggregationInfo

use of com.haulmont.cuba.gui.components.AggregationInfo in project cuba by cuba-platform.

the class AggregatableDelegate method doAggregation.

protected Map<AggregationInfo, String> doAggregation(Collection<K> itemIds, AggregationInfo[] aggregationInfos) {
    final Map<AggregationInfo, String> aggregationResults = new HashMap<>();
    for (AggregationInfo aggregationInfo : aggregationInfos) {
        final Object value = doPropertyAggregation(aggregationInfo, itemIds);
        String formattedValue;
        if (aggregationInfo.getFormatter() != null) {
            // noinspection unchecked
            formattedValue = aggregationInfo.getFormatter().format(value);
        } else {
            MetaPropertyPath propertyPath = aggregationInfo.getPropertyPath();
            final Range range = propertyPath.getRange();
            if (range.isDatatype()) {
                if (aggregationInfo.getType() != AggregationInfo.Type.COUNT) {
                    Class resultClass;
                    if (aggregationInfo.getStrategy() == null) {
                        Class rangeJavaClass = propertyPath.getRangeJavaClass();
                        Aggregation aggregation = Aggregations.get(rangeJavaClass);
                        resultClass = aggregation.getResultClass();
                    } else {
                        resultClass = aggregationInfo.getStrategy().getResultClass();
                    }
                    UserSessionSource userSessionSource = AppBeans.get(UserSessionSource.NAME);
                    Locale locale = userSessionSource.getLocale();
                    formattedValue = Datatypes.getNN(resultClass).format(value, locale);
                } else {
                    formattedValue = value.toString();
                }
            } else {
                if (aggregationInfo.getStrategy() != null) {
                    Class resultClass = aggregationInfo.getStrategy().getResultClass();
                    UserSessionSource userSessionSource = AppBeans.get(UserSessionSource.NAME);
                    Locale locale = userSessionSource.getLocale();
                    formattedValue = Datatypes.getNN(resultClass).format(value, locale);
                } else {
                    formattedValue = value.toString();
                }
            }
        }
        aggregationResults.put(aggregationInfo, formattedValue);
    }
    return aggregationResults;
}
Also used : Aggregation(com.haulmont.cuba.gui.data.aggregation.Aggregation) UserSessionSource(com.haulmont.cuba.core.global.UserSessionSource) MetaPropertyPath(com.haulmont.chile.core.model.MetaPropertyPath) AggregationInfo(com.haulmont.cuba.gui.components.AggregationInfo) Range(com.haulmont.chile.core.model.Range)

Aggregations

MetaPropertyPath (com.haulmont.chile.core.model.MetaPropertyPath)1 Range (com.haulmont.chile.core.model.Range)1 UserSessionSource (com.haulmont.cuba.core.global.UserSessionSource)1 AggregationInfo (com.haulmont.cuba.gui.components.AggregationInfo)1 Aggregation (com.haulmont.cuba.gui.data.aggregation.Aggregation)1