org.jfree.report.flow.layoutprocessor

Class BufferingLayoutController

Implemented Interfaces:
Cloneable, LayoutController

public abstract class BufferingLayoutController
extends AbstractLayoutController

Todo: Document me!
Author:
Thomas Morgner
Since:
05.03.2007

Constructor Summary

BufferingLayoutController()

Method Summary

LayoutController
advance(ReportTarget target)
Advances the processing position.
Object
clone()
protected abstract LayoutController
getInitialDelegate()
void
initialize(Object node, FlowController flowController, LayoutController parent)
Initializes the layout controller.
boolean
isAdvanceable()
LayoutController
join(FlowController flowController)
Joins with a delegated process flow.
protected LayoutController
joinWithParent()
Joins the layout controller with the parent.

Methods inherited from class org.jfree.report.flow.layoutprocessor.AbstractLayoutController

clone, createPrecomputeInstance, getFlowController, getNode, getParent, initialize, isInitialized

Constructor Details

BufferingLayoutController

protected BufferingLayoutController()

Method Details

advance

public LayoutController advance(ReportTarget target)
            throws DataSourceException,
                   ReportDataFactoryException,
                   ReportProcessingException
Advances the processing position.
Specified by:
advance in interface LayoutController
Parameters:
target - the report target that receives generated events.
Returns:
the new layout controller instance representing the new state.
Throws:
DataSourceException - if there was a problem reading data from the datasource.
ReportProcessingException - if there was a general problem during the report processing.
ReportDataFactoryException - if a query failed.

clone

public Object clone()
Specified by:
clone in interface LayoutController
Overrides:
clone in interface AbstractLayoutController

getInitialDelegate

protected abstract LayoutController getInitialDelegate()

initialize

public void initialize(Object node,
                       FlowController flowController,
                       LayoutController parent)
            throws DataSourceException,
                   ReportDataFactoryException,
                   ReportProcessingException
Initializes the layout controller. This method is called exactly once. It is the creators responsibility to call this method.

Calling initialize after the first advance must result in a IllegalStateException.

Specified by:
initialize in interface LayoutController
Overrides:
initialize in interface AbstractLayoutController
Parameters:
node - the currently processed object or layout node.
flowController - the current flow controller.
parent - the parent layout controller that was responsible for instantiating this controller.
Throws:
DataSourceException - if there was a problem reading data from the datasource.
ReportProcessingException - if there was a general problem during the report processing.
ReportDataFactoryException - if a query failed.

isAdvanceable

public boolean isAdvanceable()
Specified by:
isAdvanceable in interface LayoutController

join

public LayoutController join(FlowController flowController)
            throws ReportProcessingException,
                   DataSourceException
Joins with a delegated process flow. This is generally called from a child flow and should *not* (I mean it!) be called from outside. If you do, you'll suffer.
Specified by:
join in interface LayoutController
Parameters:
flowController - the flow controller of the parent.
Returns:
the joined layout controller that incorperates all changes from the delegate.

joinWithParent

protected LayoutController joinWithParent()
            throws ReportProcessingException,
                   ReportDataFactoryException,
                   DataSourceException
Joins the layout controller with the parent. This simply calls join(FlowController) on the parent. A join operation is necessary to propagate changes in the flow-controller to the parent for further processing.
Returns:
the joined parent.