public DynamicReport build() {

        if (built) {
            throw new DJBuilderException("DynamicReport already built. Cannot use more than once.");
        } else {
            built = true;
        }

        report.setOptions(options);
        if (!globalVariablesGroup.getFooterVariables().isEmpty() || !globalVariablesGroup.getHeaderVariables().isEmpty() || !globalVariablesGroup.getVariables().isEmpty() || hasPercentageColumn()) {
            report.getColumnsGroups().add(0, globalVariablesGroup);
        }

        createChartGroups();

        addGlobalCrosstabs();

        addSubreportsToGroups();

        concatenateReports();

        report.setAutoTexts(autoTexts);
        return report;
    }
public DynamicReport build ( ) { if ( built ) { throw new DJBuilderException ( "DynamicReport already built. Cannot use more than once." ) ; } else { built = true ; } report . setOptions ( options ) ; if ( ! globalVariablesGroup . getFooterVariables ( ) . isEmpty ( ) || ! globalVariablesGroup . getHeaderVariables ( ) . isEmpty ( ) || ! globalVariablesGroup . getVariables ( ) . isEmpty ( ) || hasPercentageColumn ( ) ) { report . getColumnsGroups ( ) . add ( 0 , globalVariablesGroup ) ; } createChartGroups ( ) ; addGlobalCrosstabs ( ) ; addSubreportsToGroups ( ) ; concatenateReports ( ) ; report . setAutoTexts ( autoTexts ) ; return report ; }
Builds the DynamicReport object. Cannot be used twice since this produced
undesired results on the generated DynamicReport object

@return