# Package org.eclipse.birt.report.engine.extension

package org.eclipse.birt.report.engine.extension
This package defines 3 key interfaces ---- IReportItemQuery, IReportItemGeneration, and IReportItemPresentation ---- that are used to process an extended item at query preparation, report generation and report rendering times. Among the three interfaces, only IReportItemPresentation is required, and the other two are optional. The execution flow is as follows:

- Design engine creates a new instance of the extended item.
- At report query preparation time, generation engine detects that the element is an extended item. It dynamically creates the `IReportItemQuery` object and calls `getReportQueries()` to receive all the queries.
- When report is generating, an `IReportItemGeneration` object is created for each instance of the extended item.
- The onRowSets methos is called, and an array of rowsets is passed to the extension.
- On each of the row set, the extension could retrieve data row-by-row, and does processing.
- Check if the extension has state information to be serialized. If so, call serialize method.
- Does generation time clean up.
- At presentation time, an `IReportItemPresentation` object is created for each instance of the extended item.
- Check if the extension needs deserialization. If so, restores the generation time state.
- The onRowSets methos is called, and an array of rowsets is passed to the extension.
- On each of the row set, the extension could retrieve data row-by-row, and does processing.
- Receives the returned results from the onRowSets method.
- Does generation time clean up.

## Package Specification

Provides interfaces and classes to support engine extensions.

Since:
  1.0

Interfaces
Class
Description
IBaseResultSet
ICubeResultSet
IDataExtractionExtension
An extension-point for data extraction.
IExecutorContext
IExtendedItem
IExtendedItemFactory
IOnCreateEvent
IOnPrepareEvent
IOnRenderEvent
IPreparationContext
IQueryContext
IQueryResultSet
IReportEvent
IReportEventContext
IReportEventHandler
IReportItemExecutor
IReportItemGeneration
Represents the extended item generation extension, which processes the report item at report geenration time.
IReportItemGenerationInfo
IReportItemPreparation
IReportItemPreparation is initially designed for extended item, which handles its nested items.
IReportItemPreparationInfo
IReportItemPresentation
Represents the extended item presentation time extension.
IReportItemPresentationInfo
IReportItemQuery
Defines the extended item query extension, which handles report query preparation.
IRowMetaData
Defines a row that the extension might receive.
IRowSet
defines an interface that wraps around a row set.