Add native Cross-Tab support
Task description
Analytical reports with multidimensional data require crosstabbing or pivot tables. (1) If the data comes as flat table, transform it into a multidimensional dataset. (2) Create a suitable processing system to work on these datasets.
Solution approach
Create a couple of new report-state implementations to traverse the multidimensional datasource. Add a couple of new report events to the output targets so that crosstab-specific layout information can be generated. It is a very dangerous idea to try to abuse the banded reporting mode for crosstabbing, so dont even think about it. The resulting engine would be unmaintainable.
Affected components
Pivot-table are not easy to print when using a simple banded reporting engine. We most certainly have to extend the output processors to handle non-banded input. For the paginated output, this can be done at the meta-page layer. For table outputs, the table-generator should already be able to deal with such input. Raw output targets may not support cross-tabbing at all as there is no layouting involved.
Estaminated time
1 month for the implementation and testing, if no sideeffects occur and the new code does not break anything else.