All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.dynamicreports.report.builder.subtotal.Subtotals Maven / Gradle / Ivy

/*
 * DynamicReports - Free Java reporting library for creating reports dynamically
 *
 * Copyright (C) 2010 - 2018 Ricardo Mariaca and the Dynamic Reports Contributors
 *
 * This file is part of DynamicReports.
 *
 * DynamicReports is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * DynamicReports is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with DynamicReports. If not, see .
 */
package net.sf.dynamicreports.report.builder.subtotal;

import net.sf.dynamicreports.report.builder.DynamicReports;
import net.sf.dynamicreports.report.builder.FieldBuilder;
import net.sf.dynamicreports.report.builder.column.ColumnBuilder;
import net.sf.dynamicreports.report.builder.column.ValueColumnBuilder;
import net.sf.dynamicreports.report.builder.expression.Expressions;
import net.sf.dynamicreports.report.constant.Calculation;
import net.sf.dynamicreports.report.definition.expression.DRIExpression;
import org.apache.commons.lang3.Validate;

/**
 * A set of methods of creating column subtotals
 *
 * @author Ricardo Mariaca
 */
public class Subtotals {

    // calculation
    public static  AggregationSubtotalBuilder aggregate(ValueColumnBuilder subtotalColumn, Calculation calculation) {
        Validate.notNull(subtotalColumn, "subtotalColumn must not be null");
        return new AggregationSubtotalBuilder(subtotalColumn, calculation);
    }

    public static  AggregationSubtotalBuilder aggregate(String fieldName, Class valueClass, ColumnBuilder showInColumn, Calculation calculation) {
        return aggregate(DynamicReports.field(fieldName, valueClass), showInColumn, calculation);
    }

    public static  AggregationSubtotalBuilder aggregate(FieldBuilder field, ColumnBuilder showInColumn, Calculation calculation) {
        Validate.notNull(showInColumn, "showInColumn must not be null");
        return new AggregationSubtotalBuilder(field, showInColumn, calculation);
    }

    public static  AggregationSubtotalBuilder aggregate(DRIExpression expression, ColumnBuilder showInColumn, Calculation calculation) {
        Validate.notNull(showInColumn, "showInColumn must not be null");
        return new AggregationSubtotalBuilder(expression, showInColumn, calculation);
    }

    // sum
    public static  AggregationSubtotalBuilder sum(ValueColumnBuilder subtotalColumn) {
        return aggregate(subtotalColumn, Calculation.SUM);
    }

    public static  AggregationSubtotalBuilder sum(String fieldName, Class valueClass, ColumnBuilder showInColumn) {
        return aggregate(fieldName, valueClass, showInColumn, Calculation.SUM);
    }

    public static  AggregationSubtotalBuilder sum(FieldBuilder field, ColumnBuilder showInColumn) {
        return aggregate(field, showInColumn, Calculation.SUM);
    }

    public static  AggregationSubtotalBuilder sum(DRIExpression expression, ColumnBuilder showInColumn) {
        return aggregate(expression, showInColumn, Calculation.SUM);
    }

    // average
    public static  AggregationSubtotalBuilder avg(ValueColumnBuilder subtotalColumn) {
        return aggregate(subtotalColumn, Calculation.AVERAGE);
    }

    public static  AggregationSubtotalBuilder avg(String fieldName, Class valueClass, ColumnBuilder showInColumn) {
        return aggregate(fieldName, valueClass, showInColumn, Calculation.AVERAGE);
    }

    public static  AggregationSubtotalBuilder avg(FieldBuilder field, ColumnBuilder showInColumn) {
        return aggregate(field, showInColumn, Calculation.AVERAGE);
    }

    public static  AggregationSubtotalBuilder avg(DRIExpression expression, ColumnBuilder showInColumn) {
        return aggregate(expression, showInColumn, Calculation.AVERAGE);
    }

    // count
    public static AggregationSubtotalBuilder count(ValueColumnBuilder subtotalColumn) {
        return aggregate(subtotalColumn, Calculation.COUNT);
    }

    public static AggregationSubtotalBuilder count(String fieldName, Class valueClass, ColumnBuilder showInColumn) {
        return aggregate(fieldName, valueClass, showInColumn, Calculation.COUNT);
    }

    public static AggregationSubtotalBuilder count(FieldBuilder field, ColumnBuilder showInColumn) {
        return aggregate(field, showInColumn, Calculation.COUNT);
    }

    public static AggregationSubtotalBuilder count(DRIExpression expression, ColumnBuilder showInColumn) {
        return aggregate(expression, showInColumn, Calculation.COUNT);
    }

    // distinct count
    public static AggregationSubtotalBuilder distinctCount(ValueColumnBuilder subtotalColumn) {
        return aggregate(subtotalColumn, Calculation.DISTINCT_COUNT);
    }

    public static AggregationSubtotalBuilder distinctCount(String fieldName, Class valueClass, ColumnBuilder showInColumn) {
        return aggregate(fieldName, valueClass, showInColumn, Calculation.DISTINCT_COUNT);
    }

    public static AggregationSubtotalBuilder distinctCount(FieldBuilder field, ColumnBuilder showInColumn) {
        return aggregate(field, showInColumn, Calculation.DISTINCT_COUNT);
    }

    public static AggregationSubtotalBuilder distinctCount(DRIExpression expression, ColumnBuilder showInColumn) {
        return aggregate(expression, showInColumn, Calculation.DISTINCT_COUNT);
    }

    // first
    public static  AggregationSubtotalBuilder first(ValueColumnBuilder subtotalColumn) {
        return aggregate(subtotalColumn, Calculation.FIRST);
    }

    public static  AggregationSubtotalBuilder first(String fieldName, Class valueClass, ColumnBuilder showInColumn) {
        return aggregate(fieldName, valueClass, showInColumn, Calculation.FIRST);
    }

    public static  AggregationSubtotalBuilder first(FieldBuilder field, ColumnBuilder showInColumn) {
        return aggregate(field, showInColumn, Calculation.FIRST);
    }

    public static  AggregationSubtotalBuilder first(DRIExpression expression, ColumnBuilder showInColumn) {
        return aggregate(expression, showInColumn, Calculation.FIRST);
    }

    // highest
    public static  AggregationSubtotalBuilder max(ValueColumnBuilder subtotalColumn) {
        return aggregate(subtotalColumn, Calculation.HIGHEST);
    }

    public static  AggregationSubtotalBuilder max(String fieldName, Class valueClass, ColumnBuilder showInColumn) {
        return aggregate(fieldName, valueClass, showInColumn, Calculation.HIGHEST);
    }

    public static  AggregationSubtotalBuilder max(FieldBuilder field, ColumnBuilder showInColumn) {
        return aggregate(field, showInColumn, Calculation.HIGHEST);
    }

    public static  AggregationSubtotalBuilder max(DRIExpression expression, ColumnBuilder showInColumn) {
        return aggregate(expression, showInColumn, Calculation.HIGHEST);
    }

    // lowest
    public static  AggregationSubtotalBuilder min(ValueColumnBuilder subtotalColumn) {
        return aggregate(subtotalColumn, Calculation.LOWEST);
    }

    public static  AggregationSubtotalBuilder min(String fieldName, Class valueClass, ColumnBuilder showInColumn) {
        return aggregate(fieldName, valueClass, showInColumn, Calculation.LOWEST);
    }

    public static  AggregationSubtotalBuilder min(FieldBuilder field, ColumnBuilder showInColumn) {
        return aggregate(field, showInColumn, Calculation.LOWEST);
    }

    public static  AggregationSubtotalBuilder min(DRIExpression expression, ColumnBuilder showInColumn) {
        return aggregate(expression, showInColumn, Calculation.LOWEST);
    }

    // standard deviation
    public static  AggregationSubtotalBuilder stdDev(ValueColumnBuilder subtotalColumn) {
        return aggregate(subtotalColumn, Calculation.STANDARD_DEVIATION);
    }

    public static  AggregationSubtotalBuilder stdDev(String fieldName, Class valueClass, ColumnBuilder showInColumn) {
        return aggregate(fieldName, valueClass, showInColumn, Calculation.STANDARD_DEVIATION);
    }

    public static  AggregationSubtotalBuilder stdDev(FieldBuilder field, ColumnBuilder showInColumn) {
        return aggregate(field, showInColumn, Calculation.STANDARD_DEVIATION);
    }

    public static  AggregationSubtotalBuilder stdDev(DRIExpression expression, ColumnBuilder showInColumn) {
        return aggregate(expression, showInColumn, Calculation.STANDARD_DEVIATION);
    }

    // variance
    public static  AggregationSubtotalBuilder var(ValueColumnBuilder subtotalColumn) {
        return aggregate(subtotalColumn, Calculation.VARIANCE);
    }

    public static  AggregationSubtotalBuilder var(String fieldName, Class valueClass, ColumnBuilder showInColumn) {
        return aggregate(fieldName, valueClass, showInColumn, Calculation.VARIANCE);
    }

    public static  AggregationSubtotalBuilder var(FieldBuilder field, ColumnBuilder showInColumn) {
        return aggregate(field, showInColumn, Calculation.VARIANCE);
    }

    public static  AggregationSubtotalBuilder var(DRIExpression expression, ColumnBuilder showInColumn) {
        return aggregate(expression, showInColumn, Calculation.VARIANCE);
    }

    // custom
    public static  CustomSubtotalBuilder customValue(DRIExpression expression, ColumnBuilder showInColumn) {
        Validate.notNull(showInColumn, "showInColumn must not be null");
        return new CustomSubtotalBuilder(expression, showInColumn);
    }

    // percentage
    public static PercentageSubtotalBuilder percentage(ValueColumnBuilder subtotalColumn) {
        Validate.notNull(subtotalColumn, "subtotalColumn must not be null");
        return new PercentageSubtotalBuilder(subtotalColumn);
    }

    public static PercentageSubtotalBuilder percentage(String fieldName, Class valueClass, ColumnBuilder showInColumn) {
        return percentage(DynamicReports.field(fieldName, valueClass), showInColumn);
    }

    public static PercentageSubtotalBuilder percentage(FieldBuilder field, ColumnBuilder showInColumn) {
        Validate.notNull(showInColumn, "showInColumn must not be null");
        return new PercentageSubtotalBuilder(field, showInColumn);
    }

    /*public static PercentageSubtotalBuilder percentage(DRISimpleExpression expression, ColumnBuilder showInColumn) {
        Validate.notNull(showInColumn, "showInColumn must not be null");
        return new PercentageSubtotalBuilder(expression, showInColumn);
    }*/

    // text
    public static AggregationSubtotalBuilder text(String text, ColumnBuilder showInColumn) {
        return aggregate(Expressions.text(text), showInColumn, Calculation.NOTHING);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy