Package org.pentaho.reporting.engine.classic.core.states.datarow

Examples of org.pentaho.reporting.engine.classic.core.states.datarow.DefaultFlowController


    if (dataFactory == null)
    {
      throw new ReportProcessingException("No data factory on restart()? Somewhere we went wrong.");
    }

    final DefaultFlowController fc = state.getFlowController();
    final DefaultFlowController cfc = fc.restart();
    final DefaultFlowController qfc = cfc.performQuery
        (dataFactory, query, queryLimit.intValue(), queryTimeout.intValue(), fc.getMasterRow().getResourceBundleFactory());
    final Expression[] expressions = getFunctionStorage().restore
        (FunctionStorageKey.createKey(null, state.getReport()));
    final DefaultFlowController efc = qfc.activateExpressions(expressions, true);
    state.setFlowController(efc);
    state.sequenceCounter += 1;
    state.processKey = createKey();
    return state;
  }
View Full Code Here


  }

  public ProcessState commit(final ProcessState next) throws ReportProcessingException
  {
    next.leaveGroup();
    final DefaultFlowController fc = next.getFlowController();
    final boolean advanceRequested = fc.isAdvanceRequested();
    final boolean advanceable = fc.getMasterRow().isAdvanceable();
    if (isRootGroup(next))
    {
      // there is no parent group. So if there is more data, print the next header for this group,
      // else print the report-footer and finish the report processing.
      if (advanceRequested && advanceable)
      {
        final DefaultFlowController cfc = fc.performCommit();
        next.setFlowController(cfc);
        next.setAdvanceHandler(BeginGroupHandler.HANDLER);
        return next;
      }
      else
      {
        next.setAdvanceHandler(ReportFooterHandler.HANDLER);
        return next;
      }
    }

    if (advanceRequested == false || advanceable == false)
    {
      // This happens for empty - reports. Empty-Reports are never advanceable, therefore we can
      // reach an non-advance state where inner group-footers are printed.
      next.setAdvanceHandler(EndGroupHandler.HANDLER);
      return next;
    }

    // This group is not the outer-most group ..
    final Group group = next.getReport().getGroup(next.getCurrentGroupIndex());
    final DefaultFlowController cfc = fc.performCommit();
    if (ProcessState.isLastItemInGroup(group, fc.getMasterRow(), cfc.getMasterRow()))
    {
      // continue with an other EndGroup-State ...
      next.setAdvanceHandler(EndGroupHandler.HANDLER);
      return next;
    }
View Full Code Here

  public ProcessState commit(final ProcessState state) throws ReportProcessingException
  {
    // better clone twice than to face the subtle errors that crawl out here..
    final ProcessState next = state.deriveForAdvance();
    final DefaultFlowController flowController = next.getFlowController();
    final MasterDataRow masterRow = flowController.getMasterRow();
    final ExpressionDataRow expressionDataRow = masterRow.getExpressionDataRow();
    final Expression[] expressions = expressionDataRow.getExpressions();

    if (next.isSubReportEvent())
    {
      next.setAdvanceHandler(EndSubReportHandler.HANDLER);
    }
    else
    {
      next.setAdvanceHandler(EndReportHandler.HANDLER);
    }
    final ReportStateKey parentStateKey;
    final ReportState parentState = next.getParentSubReportState();
    if (parentState == null)
    {
      parentStateKey = null;
    }
    else
    {
      parentStateKey = parentState.getProcessKey();
    }
    final FunctionStorageKey functionStorageKey =
        FunctionStorageKey.createKey(parentStateKey, next.getReport());
    next.getFunctionStorage().store (functionStorageKey, expressions, expressionDataRow.getColumnCount());
    final StructureFunction[] structureFunctions = next.getLayoutProcess().getCollectionFunctions();
    next.getStructureFunctionStorage().store(functionStorageKey, structureFunctions, structureFunctions.length);

    final DefaultFlowController pfc = flowController.performClearExportedParameters();
    final DefaultFlowController efc = pfc.deactivateExpressions();
    if (next.isSubReportEvent())
    {
      final DefaultFlowController qfcSr = efc.performReturnFromSubreport();
      next.setFlowController(qfcSr);
    }
    else
    {
      final DefaultFlowController qfc = efc.performReturnFromQuery();
      next.setFlowController(qfc);
    }
    return next;
  }
View Full Code Here

    final ProcessState next = state.deriveForAdvance();
    next.enterGroup();
    next.fireReportEvent();

    final CrosstabSpecification cs = findCrosstabSpecification(next);
    final DefaultFlowController controller = next.getFlowController().startCrosstabMode(cs);
    next.setFlowController(controller);
    final Group group = next.getReport().getGroup(next.getCurrentGroupIndex());
    return InlineSubreportProcessor.processInline(next, group.getHeader());
  }
View Full Code Here

  public ProcessState commit(final ProcessState next) throws ReportProcessingException
  {
    final Group group = next.getReport().getGroup(next.getCurrentGroupIndex());

    final DefaultFlowController fc = next.getFlowController().performAdvance();
    final DefaultFlowController cfc = fc.performCommit();
    if (ProcessState.isLastItemInGroup(group, fc.getMasterRow(), cfc.getMasterRow()))
    {
      next.setFlowController(fc);
      next.setAdvanceHandler(EndDetailsHandler.HANDLER);
    }
    else
View Full Code Here

                                            final ReportPreProcessor processor) throws ReportProcessingException
  {
    final PerformanceMonitorContext pmc = new NoOpPerformanceMonitorContext();
    final DefaultProcessingContext processingContext = new DefaultProcessingContext(report);
    final DataSchemaDefinition definition = report.getDataSchemaDefinition();
    final DefaultFlowController flowController = new DefaultFlowController(processingContext,
        definition, StateUtilities.computeParameterValueSet(report), pmc);
    final CachingDataFactory dataFactory = new CachingDataFactory(report.getDataFactory(), false);
    dataFactory.initialize(new ProcessingDataFactoryContext(processingContext, dataFactory));

    try
    {
      final DefaultFlowController postQueryFlowController = flowController.performQuery
          (dataFactory, report.getQuery(), report.getQueryLimit(),
              report.getQueryTimeout(), flowController.getMasterRow().getResourceBundleFactory(),
              Collections.<SortConstraint>emptyList());

      return processor.performPreProcessing(report, postQueryFlowController);
View Full Code Here

      throws ReportProcessingException
  {
    final PerformanceMonitorContext pmc = new NoOpPerformanceMonitorContext();
    final DefaultProcessingContext processingContext = new DefaultProcessingContext(report);
    final DataSchemaDefinition definition = report.getDataSchemaDefinition();
    final DefaultFlowController flowController = new DefaultFlowController(processingContext,
        definition, StateUtilities.computeParameterValueSet(report), pmc);
    return reportPreProcessor.performPreDataProcessing(report, flowController);
  }
View Full Code Here

  public ProcessState commit(final ProcessState state) throws ReportProcessingException
  {
    // better clone twice than to face the subtle errors that crawl out here..
    final ProcessState next = state.deriveForAdvance();
    final DefaultFlowController flowController = next.getFlowController();
    final MasterDataRow masterRow = flowController.getMasterRow();
    final ExpressionDataRow expressionDataRow = masterRow.getExpressionDataRow();
    final Expression[] expressions = expressionDataRow.getExpressions();

    if (next.isSubReportEvent())
    {
      next.setAdvanceHandler(EndSubReportHandler.HANDLER);
    }
    else
    {
      next.setAdvanceHandler(EndReportHandler.HANDLER);
    }
    final ReportStateKey parentStateKey;
    final ReportState parentState = next.getParentSubReportState();
    if (parentState == null)
    {
      parentStateKey = null;
    }
    else
    {
      parentStateKey = parentState.getProcessKey();
    }
    final FunctionStorageKey functionStorageKey =
        FunctionStorageKey.createKey(parentStateKey, next.getReport());
    next.getFunctionStorage().store (functionStorageKey, expressions, expressionDataRow.getColumnCount());
    final StructureFunction[] structureFunctions = next.getLayoutProcess().getCollectionFunctions();
    next.getStructureFunctionStorage().store(functionStorageKey, structureFunctions, structureFunctions.length);

    final DefaultFlowController pfc = flowController.performClearExportedParameters();
    final DefaultFlowController efc = pfc.deactivateExpressions();
    if (next.isSubReportEvent())
    {
      final DefaultFlowController qfcSr = efc.performReturnFromSubreport();
      next.setFlowController(qfcSr);
    }
    else
    {
      final DefaultFlowController qfc = efc.performReturnFromQuery();
      next.setFlowController(qfc);
    }
    return next;
  }
View Full Code Here

  {
    final ProcessState next = state.deriveForAdvance();
    next.enterGroup();

    final CrosstabSpecification cs = findCrosstabSpecification(next);
    final DefaultFlowController controller = next.getFlowController().startCrosstabMode(cs);
    next.setFlowController(controller);

    next.fireReportEvent();
    next.enterPresentationGroup();
    return next;
View Full Code Here

  }

  public ProcessState commit(final ProcessState next) throws ReportProcessingException
  {
    next.leaveGroup();
    final DefaultFlowController fc = next.getFlowController();
    final boolean advanceRequested = fc.isAdvanceRequested();
    final boolean advanceable = fc.getMasterRow().isAdvanceable();
    if (isRootGroup(next))
    {
      throw new ReportProcessingException("This report is invalid. A CR-Col-Group cannot be a root group.");
    }

    final Group parentGroup = next.getReport().getGroup(next.getCurrentGroupIndex());
    if (advanceRequested == false || advanceable == false)
    {
      // This happens for empty - reports. Empty-Reports are never advanceable, therefore we can
      // reach an non-advance state where inner group-footers are printed.
      if (parentGroup instanceof CrosstabRowGroup)
      {
        if (next.getCurrentGroupIndex() > next.getReplayStoredCrosstabGroup())
        {
          next.setAdvanceHandler(PrintSummaryEndCrosstabColumnAxisHandler.HANDLER);
        }
        else
        {
          next.setAdvanceHandler(PrintSummaryRowEndReportHandler.HANDLER);
        }
      }
      else if (parentGroup instanceof CrosstabColumnGroup)
      {
        next.setAdvanceHandler(PrintSummaryEndCrosstabColumnAxisHandler.HANDLER);
      }
      else
      {
        next.setAdvanceHandler(PrintSummaryRowEndReportHandler.HANDLER);
      }
      return next;
    }

    // This group is not the outer-most group ..
    final DefaultFlowController cfc = fc.performCommit();
    if (ProcessState.isLastItemInGroup(parentGroup, fc.getMasterRow(), cfc.getMasterRow()))
    {
      if (parentGroup instanceof CrosstabRowGroup)
      {
        // If the next group would be row, we have finished the summary processing and we can
        // fire the Summary-Row-End event next...
View Full Code Here

TOP

Related Classes of org.pentaho.reporting.engine.classic.core.states.datarow.DefaultFlowController

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.