use of org.activityinfo.shared.report.content.PivotTableData in project activityinfo by bedatadriven.
the class ExcelPivotTableRenderer method render.
@Override
public void render(Workbook book, PivotTableReportElement element) {
/* Generate the actual pivot table data */
final PivotTableData table = element.getContent().getData();
/* Generate the excel sheet */
new BaseExcelTableRenderer<PivotTableReportElement, PivotTableData.Axis>(book, element) {
@Override
public List<FilterDescription> generateFilterDescriptions() {
return element.getContent().getFilterDescriptions();
}
private CellStyle[] rowHeaderStyles;
@Override
public void generate() {
/* Initialize Cell Styles */
initColHeaderStyles(table.getRootColumn());
initRowHeaderStyles();
/* Generate the column headers */
generateColumnHeaders(1, table.getRootColumn());
int headerHeight = rowIndex;
/* Create the rows */
// row headers are in column 1
sheet.setColumnWidth(0, 40 * 256);
generateRows(table.getRootRow().getChildList(), 0);
/* Finalize the sheet */
sheet.setRowSumsBelow(false);
sheet.createFreezePane(1, headerHeight);
}
protected void initRowHeaderStyles() {
int depth = table.getRootRow().getDepth();
rowHeaderStyles = new CellStyle[depth];
for (int i = 0; i != depth; ++i) {
CellStyle style = book.createCellStyle();
style.setIndention((short) i);
style.setWrapText(true);
Font font = createBaseFont();
if (i + 1 != depth) {
/* Has sub headers */
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
} else {
font.setBoldweight(Font.BOLDWEIGHT_NORMAL);
}
style.setFont(font);
rowHeaderStyles[i] = style;
}
}
protected void generateRows(List<PivotTableData.Axis> rows, int indent) {
for (PivotTableData.Axis pivotRow : rows) {
Row row = sheet.createRow(rowIndex++);
Cell headerCell = row.createCell(0);
headerCell.setCellValue(factory.createRichTextString(pivotRow.getLabel()));
headerCell.setCellStyle(rowHeaderStyles[indent]);
if (pivotRow.isLeaf()) {
for (Entry<PivotTableData.Axis, Integer> entry : colIndexMap.entrySet()) {
PivotTableData.Cell pivotCell = pivotRow.getCell(entry.getKey());
if (pivotCell != null) {
Cell cell = row.createCell(entry.getValue());
cell.setCellValue(pivotCell.getValue());
}
}
} else {
int groupStart = rowIndex;
generateRows(pivotRow.getChildList(), indent + 1);
int groupEnd = rowIndex;
sheet.groupRow(groupStart, groupEnd);
}
}
}
};
}
use of org.activityinfo.shared.report.content.PivotTableData in project activityinfo by bedatadriven.
the class ChartRendererJC method createAxisChart.
protected Chart createAxisChart(PivotChartReportElement element, boolean includeTitle, int width, int height, int dpi) throws IOException, ChartDataException, PropertyException {
PivotTableData table = element.getContent().getData();
// find our categories and series leaves
List<PivotTableData.Axis> categories = table.getRootRow().getLeaves();
List<PivotTableData.Axis> series = table.getRootColumn().getLeaves();
IAxisDataSeries dataSeries = new DataSeries(toLabelArray(element.getContent(), categories), element.getContent().getXAxisTitle(), element.getContent().getYAxisTitle(), includeTitle ? element.getTitle() : null);
dataSeries.addIAxisPlotDataSet(new AxisChartDataSet(toDataArray(categories, series), toLabelArray(element.getContent(), series), computePaints(series), computeChartType(element), computeAxisChartProperties(dpi, element)));
return new AxisChart(dataSeries, computeChartProperties(dpi), computeAxisProperties(dpi, element.getContent()), computeLegendProperties(element, dpi, series), width, height);
}
use of org.activityinfo.shared.report.content.PivotTableData in project activityinfo by bedatadriven.
the class ChartRendererJC method createPieChart.
/**
* Creates a JChart PieChart from our report element
*/
protected Chart createPieChart(PivotChartReportElement element, boolean includeTitle, int width, int height, int dpi) throws IOException, ChartDataException {
PivotTableData table = element.getContent().getData();
List<PivotTableData.Axis> categories = table.getRootCategory().getLeaves();
PivotTableData.Axis series = table.getRootSeries().getLeaves().get(0);
PieChart2DProperties pieProps = new PieChart2DProperties();
pieProps.setValueLabelFont(new ChartFont(new Font(SANS_SERIF, Font.PLAIN, fontSize(10, dpi)), Color.black));
pieProps.setShowGrouping(true);
pieProps.setPieLabelType(PieLabelType.VALUE_LABELS);
pieProps.setBorderChartStroke(ChartStroke.DEFAULT_ZERO_LINE);
PieChartDataSet dataSet = new PieChartDataSet(includeTitle ? element.getTitle() : null, toDataArray(categories, series), toLabelArray(element.getContent(), categories), computePaints(categories), pieProps);
LegendProperties legendProps = computeLegendProperties(element, dpi, categories);
ChartProperties chartProps = computeChartProperties(dpi);
return new PieChart2D(dataSet, legendProps, chartProps, width, height);
}
use of org.activityinfo.shared.report.content.PivotTableData in project activityinfo by bedatadriven.
the class GeneratePivotTableHandler method buildResult.
protected PivotContent buildResult(PivotTableReportElement model, PivotResult result) {
PivotTableDataBuilder builder = new PivotTableDataBuilder();
PivotTableData data = builder.build(model, model.getRowDimensions(), model.getColumnDimensions(), result.getBuckets());
PivotContent content = new PivotContent();
content.setEffectiveFilter(model.getFilter());
content.setData(data);
return content;
}
use of org.activityinfo.shared.report.content.PivotTableData in project activityinfo by bedatadriven.
the class PivotTableDataBuilder method build.
public PivotTableData build(PivotReportElement<?> element, List<Dimension> rowDims, List<Dimension> colDims, List<Bucket> buckets) {
PivotTableData table = new PivotTableData();
Map<Dimension, Comparator<PivotTableData.Axis>> comparators = createComparators(element.allDimensions());
for (Bucket bucket : buckets) {
PivotTableData.Axis column = colDims.isEmpty() ? table.getRootColumn() : find(table.getRootColumn(), colDims.iterator(), comparators, bucket);
PivotTableData.Axis row = rowDims.isEmpty() ? table.getRootRow() : find(table.getRootRow(), rowDims.iterator(), comparators, bucket);
row.setValue(column, bucket.doubleValue());
}
return table;
}
Aggregations