Package org.pentaho.reporting.engine.classic.core.layout.build

Examples of org.pentaho.reporting.engine.classic.core.layout.build.LayoutModelBuilder


  public void groupStarted(final DefaultOutputFunction outputFunction,
                           final ReportEvent event) throws ReportProcessingException
  {
    final RenderedCrosstabLayout crosstabLayout = outputFunction.getCurrentRenderedCrosstabLayout();
    final LayoutModelBuilder layoutModelBuilder = outputFunction.getRenderer().getNormalFlowLayoutModelBuilder();
    final int gidx = event.getState().getCurrentGroupIndex();
    final CrosstabColumnGroup group = (CrosstabColumnGroup) event.getReport().getGroup(gidx);

    if (crosstabLayout.getFirstColGroupIndex() == -1)
    {
      // record the start of the column groups.
      crosstabLayout.setFirstColGroupIndex(gidx);
    }

    if (crosstabLayout.isCrosstabHeaderOpen() == false)
    {
      return;
    }

    expandColumnSpanAfterRowStart(crosstabLayout, layoutModelBuilder, gidx);

    if (crosstabLayout.isGenerateColumnTitleHeaders())
    {
      layoutModelBuilder.startSubFlow(crosstabLayout.getColumnTitleHeaderSubflowId(gidx));
      CrosstabOutputHelper.createAutomaticCell(layoutModelBuilder);
      crosstabLayout.setColumnTitleHeaderCellId(gidx - crosstabLayout.getFirstColGroupIndex(), layoutModelBuilder.dangerousRawAccess().getInstanceId());
      outputFunction.getRenderer().add(group.getTitleHeader(), outputFunction.getRuntime());
      layoutModelBuilder.finishBox();
      layoutModelBuilder.suspendSubFlow();
    }

    layoutModelBuilder.startSubFlow(crosstabLayout.getColumnHeaderSubflowId(gidx));
    CrosstabOutputHelper.createAutomaticCell(layoutModelBuilder);
    crosstabLayout.setColumnHeaderCellId(gidx - crosstabLayout.getFirstColGroupIndex(), layoutModelBuilder.dangerousRawAccess().getInstanceId());
    outputFunction.getRenderer().add(group.getHeader(), outputFunction.getRuntime());
    layoutModelBuilder.finishBox();
    layoutModelBuilder.suspendSubFlow();

  }
View Full Code Here


  public void itemsStarted(final DefaultOutputFunction outputFunction,
                           final ReportEvent event) throws ReportProcessingException
  {
    generateMeasureHeader(outputFunction, event);

    final LayoutModelBuilder layoutModelBuilder = outputFunction.getRenderer().getNormalFlowLayoutModelBuilder();
    CrosstabOutputHelper.createAutomaticCell(layoutModelBuilder);
    layoutModelBuilder.legacyFlagNotEmpty();

    final RenderedCrosstabLayout crosstabLayout = outputFunction.getCurrentRenderedCrosstabLayout();
    crosstabLayout.setDetailsRendered(false);
    crosstabLayout.setProcessingCrosstabHeader(false);
  }
View Full Code Here

    if (dataBody == null)
    {
      throw new InvalidReportStateException();
    }

    final LayoutModelBuilder layoutModelBuilder = outputFunction.getRenderer().getNormalFlowLayoutModelBuilder();
    layoutModelBuilder.startSubFlow(crosstabLayout.getMeasureHeaderSubflowId());
    CrosstabOutputHelper.createAutomaticCell(layoutModelBuilder);
    outputFunction.getRenderer().add(dataBody.getHeader(), outputFunction.getRuntime());
    layoutModelBuilder.finishBox();
    layoutModelBuilder.suspendSubFlow();
  }
View Full Code Here

        outputFunction.getRenderer().add(element, outputFunction.getRuntime());
        outputFunction.addSubReportMarkers(outputFunction.getRenderer().endSection());
      }
    }

    final LayoutModelBuilder layoutModelBuilder = outputFunction.getRenderer().getNormalFlowLayoutModelBuilder();
    layoutModelBuilder.finishBox();
  }
View Full Code Here

      return;
    }

    // handle column summary. This can happen inline, with no new states fired.
    final RenderedCrosstabLayout crosstabLayout = outputFunction.getCurrentRenderedCrosstabLayout();
    final LayoutModelBuilder layoutModelBuilder = outputFunction.getRenderer().getNormalFlowLayoutModelBuilder();

    if (crosstabLayout.isCrosstabHeaderOpen())
    {
      // Expand all parent group cell-spans by one.

      expandColumnHeaderSpan(crosstabLayout, layoutModelBuilder, gidx);

      // and finally print the title-header and the summary header
      if (crosstabLayout.isGenerateColumnTitleHeaders())
      {
        layoutModelBuilder.startSubFlow(crosstabLayout.getColumnTitleHeaderSubflowId(gidx));
        createAutomaticCell(layoutModelBuilder);
        crosstabLayout.setColumnTitleHeaderCellId(gidx - crosstabLayout.getFirstColGroupIndex(), layoutModelBuilder.dangerousRawAccess().getInstanceId());
        outputFunction.getRenderer().add(group.getTitleHeader(), outputFunction.getRuntime());
        layoutModelBuilder.finishBox();
        layoutModelBuilder.suspendSubFlow();
      }

      layoutModelBuilder.startSubFlow(crosstabLayout.getColumnHeaderSubflowId(gidx));
      createAutomaticCell(layoutModelBuilder);
      crosstabLayout.setColumnHeaderCellId(gidx - crosstabLayout.getFirstColGroupIndex(), layoutModelBuilder.dangerousRawAccess().getInstanceId());
      outputFunction.getRenderer().add(group.getSummaryHeader(), outputFunction.getRuntime());
      layoutModelBuilder.finishBox();
      layoutModelBuilder.suspendSubFlow();

      if (crosstabLayout.isGenerateMeasureHeaders())
      {
        layoutModelBuilder.startSubFlow(crosstabLayout.getMeasureHeaderSubflowId());
        createAutomaticCell(layoutModelBuilder);
        outputFunction.getRenderer().add(dataBody.getHeader(), outputFunction.getRuntime());
        layoutModelBuilder.finishBox();
        layoutModelBuilder.suspendSubFlow();
      }
    }

    // now print the summary cell.
    createAutomaticCell(layoutModelBuilder);
    layoutModelBuilder.legacyFlagNotEmpty();

    outputFunction.getRenderer().startSection(Renderer.SectionType.NORMALFLOW);
    outputFunction.getRenderer().add(element, outputFunction.getRuntime());
    outputFunction.addSubReportMarkers(outputFunction.getRenderer().endSection());

    layoutModelBuilder.finishBox();
  }
View Full Code Here

  public void groupStarted(final DefaultOutputFunction outputFunction,
                           final ReportEvent event) throws ReportProcessingException
  {
    final RenderedCrosstabLayout crosstabLayout = outputFunction.getCurrentRenderedCrosstabLayout();
    final LayoutModelBuilder layoutModelBuilder = outputFunction.getRenderer().getNormalFlowLayoutModelBuilder();
    final int gidx = event.getState().getCurrentGroupIndex();
    final CrosstabRowGroup group = (CrosstabRowGroup) event.getReport().getGroup(gidx);

    if (crosstabLayout.isCrosstabTableOpen() == false)
    {
      buildHeaderPlaceholder(crosstabLayout, layoutModelBuilder);
      crosstabLayout.setFirstRowGroupIndex(gidx);
      crosstabLayout.setCrosstabTableOpen(true);
    }

    if (crosstabLayout.isCrosstabHeaderOpen())
    {
      layoutModelBuilder.startSubFlow(crosstabLayout.getRowTitleHeaderId());
      CrosstabOutputHelper.createAutomaticCell(layoutModelBuilder);
      outputFunction.getRenderer().add(group.getTitleHeader(), outputFunction.getRuntime());
      layoutModelBuilder.finishBox();
      layoutModelBuilder.suspendSubFlow();
    }

    if (crosstabLayout.isCrosstabRowOpen() == false)
    {
      // start a new row if needed ..
      layoutModelBuilder.startBox(CrosstabOutputHelper.createTableRow());
      crosstabLayout.setCrosstabRowOpen(true);

      // flag not empty is needed to connect the new node with the rest of the layout model.
      layoutModelBuilder.legacyFlagNotEmpty();
      final TableSectionRenderBox rowRenderNode = CrosstabOutputHelper.findTableSection(layoutModelBuilder.dangerousRawAccess());

      for (int i = crosstabLayout.getFirstRowGroupIndex(), count = 0; i < gidx; i += 1, count += 1)
      {
        final InstanceID rowHeader = crosstabLayout.getRowHeader(i - crosstabLayout.getFirstRowGroupIndex());
        final RenderNode cell = CrosstabOutputHelper.findNode(rowRenderNode, rowHeader);
        if (cell instanceof TableCellRenderBox)
        {
          final TableCellRenderBox cellBox = (TableCellRenderBox) cell;
          cellBox.update(cellBox.getRowSpan() + 1, cellBox.getColSpan());
        }
        else
        {
          throw new IllegalStateException("Unable to find previously defined row header. Aborting report processing.");
        }
      }
    }

    final int firstRowGroupIndex = crosstabLayout.getFirstRowGroupIndex();
    if (gidx == firstRowGroupIndex)
    {
      RenderNode renderNode = layoutModelBuilder.dangerousRawAccess();
      RenderBox parentNode = (RenderBox) CrosstabOutputHelper.findParentNode(renderNode, crosstabLayout.getCrosstabId());
      parentNode.setPreventPagination(true);
    }

    CrosstabOutputHelper.createAutomaticCell(layoutModelBuilder, 1, 1, group.getHeader());
    crosstabLayout.setRowHeader(gidx - crosstabLayout.getFirstRowGroupIndex(), layoutModelBuilder.dangerousRawAccess().getInstanceId());
    outputFunction.getRenderer().add(group.getHeader(), outputFunction.getRuntime());
    layoutModelBuilder.finishBox();
  }
View Full Code Here

                            final ReportEvent event) throws ReportProcessingException
  {
    CrosstabOutputHelper.printCrosstabSummary(outputFunction, event);

    final RenderedCrosstabLayout crosstabLayout = outputFunction.getCurrentRenderedCrosstabLayout();
    final LayoutModelBuilder layoutModelBuilder = outputFunction.getRenderer().getNormalFlowLayoutModelBuilder();

    if (crosstabLayout.isCrosstabRowOpen())
    {
      layoutModelBuilder.finishBox(); // Table-Row
      crosstabLayout.setCrosstabRowOpen(false);
    }

    if (crosstabLayout.isCrosstabHeaderOpen())
    {
      // close all header rows
      final InstanceID[] columnHeaders = crosstabLayout.getColumnHeaderSubFlows();
      for (int i = 0; i < columnHeaders.length; i++)
      {
        final InstanceID columnHeader = columnHeaders[i];
        layoutModelBuilder.startSubFlow(columnHeader);
        layoutModelBuilder.endSubFlow();
      }
      crosstabLayout.setCrosstabHeaderOpen(false);
    }

    final int gidx = event.getState().getCurrentGroupIndex();
    final int firstRowGroupIndex = crosstabLayout.getFirstRowGroupIndex();
    if (gidx == firstRowGroupIndex)
    {
      RenderNode renderNode = layoutModelBuilder.dangerousRawAccess();
      RenderBox parentNode = (RenderBox) CrosstabOutputHelper.findParentNode(renderNode, crosstabLayout.getCrosstabId());
      parentNode.setPreventPagination(false);
    }
  }
View Full Code Here

  public void summaryRowStart(final DefaultOutputFunction outputFunction,
                              final ReportEvent event) throws ReportProcessingException
  {
    final RenderedCrosstabLayout crosstabLayout = outputFunction.getCurrentRenderedCrosstabLayout();
    final LayoutModelBuilder layoutModelBuilder = outputFunction.getRenderer().getNormalFlowLayoutModelBuilder();

    if (crosstabLayout.isCrosstabRowOpen())
    {
      throw new IllegalStateException("Event Order Error: A summary row cannot be printed while a row is still open.");
    }

    final int gidx = event.getState().getCurrentGroupIndex() + 1;
    final CrosstabRowGroup group = (CrosstabRowGroup) event.getReport().getGroup(gidx);

    if (group.isPrintSummary() == false)
    {
      crosstabLayout.startSummaryRowProcessing(false, gidx, null);
      return;
    }
   
    if (group.getField() == null)
    {
      crosstabLayout.startSummaryRowProcessing(false, gidx, null);
      return;
    }

    final CrosstabCellBody dataBody = event.getReport().getCrosstabCellBody();
    final CrosstabCell element = dataBody.findElement(group.getField(), null);
    if (element == null)
    {
      crosstabLayout.startSummaryRowProcessing(false, gidx, null);
      return;
    }

    if (crosstabLayout.isCrosstabRowOpen() == false)
    {
      // start a new row if needed ..
      layoutModelBuilder.startBox(CrosstabOutputHelper.createTableRow());
      crosstabLayout.setCrosstabRowOpen(true);

      // flag not empty is needed to connect the new node with the rest of the layout model.
      layoutModelBuilder.legacyFlagNotEmpty();
      final TableSectionRenderBox rowRenderNode = CrosstabOutputHelper.findTableSection(layoutModelBuilder.dangerousRawAccess());
      for (int i = crosstabLayout.getFirstRowGroupIndex(), count = 0; i < gidx; i += 1, count += 1)
      {
        final InstanceID rowHeader = crosstabLayout.getRowHeader(i - crosstabLayout.getFirstRowGroupIndex());
        final RenderNode cell = CrosstabOutputHelper.findNode(rowRenderNode, rowHeader);
        if (cell instanceof TableCellRenderBox)
        {
          final TableCellRenderBox cellBox = (TableCellRenderBox) cell;
          cellBox.update(cellBox.getRowSpan() + 1, cellBox.getColSpan());
        }
        else
        {
          throw new IllegalStateException("Unable to find previously defined row header. Aborting report processing.");
        }
      }
    }

    // An outer row-group's summary cell spans across all inner row-group header-columns up to the start
    // of the data area.
    final int colSpan = crosstabLayout.getFirstColGroupIndex() - gidx;
    CrosstabOutputHelper.createAutomaticCell(layoutModelBuilder, colSpan, 1, group.getSummaryHeader());
    crosstabLayout.setRowHeader(gidx - crosstabLayout.getFirstRowGroupIndex(), layoutModelBuilder.dangerousRawAccess().getInstanceId());
    outputFunction.getRenderer().add(group.getSummaryHeader(), outputFunction.getRuntime());
    layoutModelBuilder.finishBox();

    crosstabLayout.startSummaryRowProcessing(true, gidx, group.getField());
    crosstabLayout.setDetailsRendered(false);
    crosstabLayout.setProcessingCrosstabHeader(false);
  }
View Full Code Here

    if (crosstabLayout.isSummaryRowPrintable() == false)
    {
      return;
    }

    final LayoutModelBuilder layoutModelBuilder = outputFunction.getRenderer().getNormalFlowLayoutModelBuilder();

    if (crosstabLayout.isCrosstabRowOpen())
    {
      printSummaryCell(outputFunction, event);

      layoutModelBuilder.finishBox(); // Table-Row
      crosstabLayout.setCrosstabRowOpen(false);
    }
  }
View Full Code Here

    {
      // a detail level summary row cell.
      columnField = null;
    }

    final LayoutModelBuilder layoutModelBuilder = outputFunction.getRenderer().getNormalFlowLayoutModelBuilder();
    final CrosstabCellBody dataBody = event.getReport().getCrosstabCellBody();
    final CrosstabCell element = dataBody.findElement(crosstabLayout.getSummaryRowField(), columnField);

    if (element != null)
    {
      CrosstabOutputHelper.createAutomaticCell(layoutModelBuilder);
      layoutModelBuilder.legacyFlagNotEmpty();
      outputFunction.getRenderer().startSection(Renderer.SectionType.NORMALFLOW);
      outputFunction.getRenderer().add(element, outputFunction.getRuntime());
      outputFunction.addSubReportMarkers(outputFunction.getRenderer().endSection());
      layoutModelBuilder.finishBox();
    }
    else
    {
      CrosstabOutputHelper.createAutomaticCell(layoutModelBuilder);
      layoutModelBuilder.legacyFlagNotEmpty();
      logger.debug(String.format("Unable to find summary cell: %s - %s", // NON-NLS
          crosstabLayout.getSummaryRowField(), columnField));
      layoutModelBuilder.finishBox();
    }

  }
View Full Code Here

TOP

Related Classes of org.pentaho.reporting.engine.classic.core.layout.build.LayoutModelBuilder

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.