org.jfree.report.flow.layoutprocessor

Class ElementLayoutController

public abstract class ElementLayoutController extends Object implements LayoutController

Creation-Date: 24.11.2006, 13:56:30

Author: Thomas Morgner

Nested Class Summary
protected static classElementLayoutController.ElementPrecomputeKey
Field Summary
static intFINISHED
static intFINISHING
static intNOT_STARTED
static intOPENED
static intWAITING_FOR_JOIN
Constructor Summary
protected ElementLayoutController()
Method Summary
LayoutControlleradvance(ReportTarget target)
Advances the layout controller to the next state.
Objectclone()
protected AttributeMapcomputeAttributes(FlowController fc, Element element, ReportTarget target)
LayoutControllercreatePrecomputeInstance(FlowController fc)
Derives a copy of this controller that is suitable to perform a precomputation.
protected LayoutControllerfinishElement(ReportTarget target)
Finishes the processing of this element.
AttributeMapgetAttributeMap()
ElementgetElement()
intgetExpressionsCount()
FlowControllergetFlowController()
intgetIterationCount()
ObjectgetNode()
LayoutControllergetParent()
Retrieves the parent of this layout controller.
intgetProcessingState()
protected FlowControllerhandleDefaultEndElement(ReportTarget target)
voidinitialize(Object node, FlowController flowController, LayoutController parent)
Initializes the layout controller.
booleanisAdvanceable()
booleanisPrecomputing()
protected FlowControllerperformElementPrecomputation(Expression[] expressions, FlowController fc)
protected abstract LayoutControllerprocessContent(ReportTarget target)
Processes any content in this element.
voidsetFlowController(FlowController flowController)
voidsetParent(LayoutController parent)
voidsetProcessingState(int processingState)
protected FlowControllerstartData(ReportTarget target, FlowController fc)
protected LayoutControllerstartElement(ReportTarget target)
This method is called for each newly instantiated layout controller.
StringtoString()
protected FlowControllertryRepeatingCommit(FlowController fc)

Field Detail

FINISHED

public static final int FINISHED

FINISHING

public static final int FINISHING

NOT_STARTED

public static final int NOT_STARTED

OPENED

public static final int OPENED

WAITING_FOR_JOIN

public static final int WAITING_FOR_JOIN

Constructor Detail

ElementLayoutController

protected ElementLayoutController()

Method Detail

advance

public final LayoutController advance(ReportTarget target)
Advances the layout controller to the next state. This method delegates the call to one of the following methods:

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()

computeAttributes

protected AttributeMap computeAttributes(FlowController fc, Element element, ReportTarget target)

createPrecomputeInstance

public LayoutController createPrecomputeInstance(FlowController fc)
Derives a copy of this controller that is suitable to perform a precomputation.

Parameters: fc

Returns:

finishElement

protected LayoutController finishElement(ReportTarget target)
Finishes the processing of this element. This method is called when the processing state is 'FINISHING'. The element should be closed now and all privatly owned resources should be freed. If the element has a parent, it would be time to join up with the parent now, else the processing state should be set to 'FINISHED'.

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 there was an error trying query data.

getAttributeMap

public AttributeMap getAttributeMap()

getElement

public Element getElement()

getExpressionsCount

public int getExpressionsCount()

getFlowController

public FlowController getFlowController()

getIterationCount

public int getIterationCount()

getNode

public Object getNode()

getParent

public LayoutController getParent()
Retrieves the parent of this layout controller. This allows childs to query their context.

Returns: the layout controller's parent to null if there is no parent.

getProcessingState

public int getProcessingState()

handleDefaultEndElement

protected FlowController handleDefaultEndElement(ReportTarget target)

initialize

public void initialize(Object node, FlowController flowController, LayoutController parent)
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.

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()

isPrecomputing

public boolean isPrecomputing()

performElementPrecomputation

protected FlowController performElementPrecomputation(Expression[] expressions, FlowController fc)

processContent

protected abstract LayoutController processContent(ReportTarget target)
Processes any content in this element. This method is called when the processing state is 'OPENED'. The returned layout controller will retain the 'OPENED' state as long as there is more content available. Once all content has been processed, the returned layout controller should carry a 'FINISHED' state.

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.

setFlowController

public void setFlowController(FlowController flowController)

setParent

public void setParent(LayoutController parent)

setProcessingState

public void setProcessingState(int processingState)

startData

protected FlowController startData(ReportTarget target, FlowController fc)

startElement

protected LayoutController startElement(ReportTarget target)
This method is called for each newly instantiated layout controller. The returned layout controller instance should have a processing state of either 'OPEN' or 'FINISHING' depending on whether there is any content or any child nodes to process.

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.

toString

public String toString()

tryRepeatingCommit

protected FlowController tryRepeatingCommit(FlowController fc)