THeaderObject
- Represents a header of the target reportTRowObject
- Represents a row of the target reportTFooterObject
- Represents a footer of the target reportpublic abstract class AbstractReportBuilder<THeaderObject extends AbstractReportBuilder.Header,TRowObject,TFooterObject extends AbstractReportBuilder.Footer> extends java.lang.Object implements PdfReportBuilder
Modifier and Type | Class and Description |
---|---|
static interface |
AbstractReportBuilder.CellValueRenderer<TRowObject>
Defines a cell renderer.
|
static interface |
AbstractReportBuilder.ColumnHeaderRenderer
Defines methods to draw column headers.
|
static class |
AbstractReportBuilder.ColumnInfo<TRowObject>
The column info provides with an access getter to its cell's value and its cell's layout and
size.
|
(package private) class |
AbstractReportBuilder.DefaultCellRenderer
The Default Cell Renderer.
|
(package private) class |
AbstractReportBuilder.DefaultColumnHeaderRenderer
The Default Column Header Renderer.
|
(package private) class |
AbstractReportBuilder.DefaultFooterRenderer
The Default Footer Renderer.
|
(package private) class |
AbstractReportBuilder.DefaultHeaderRenderer
The Default Header Renderer.
|
static class |
AbstractReportBuilder.ExtendedColumnInfo<TRowObject extends ExtendedRowInfo>
The Extended Column Info.
|
static interface |
AbstractReportBuilder.Footer
Defines the footer data.
|
static interface |
AbstractReportBuilder.Header
Defines the header data.
|
static interface |
AbstractReportBuilder.IPageCanvas
Defines the page canvas.
|
(package private) class |
AbstractReportBuilder.PageCanvas
Implements IPageCanvas based on the PDFBox API
|
static class |
AbstractReportBuilder.PageState
Defines the current page state
|
static interface |
AbstractReportBuilder.Renderer<T>
Defines methods to draw the report data on the page
|
private class |
AbstractReportBuilder.ReportDirector
The report director.
|
static interface |
AbstractReportBuilder.SectionRenderer<T>
The Interface SectionRenderer.
|
static class |
AbstractReportBuilder.SimpleFooter
The Class SimpleFooter.
|
static class |
AbstractReportBuilder.SimpleHeader
The Class SimpleHeader.
|
static class |
AbstractReportBuilder.StaticColumnInfo<TRowObject extends ExtendedRowInfo>
The Static Column Info.
|
PdfReportBuilder.PdfDocument, PdfReportBuilder.PdfReportSettings
ReportBuilder.Document, ReportBuilder.ReportSettings
Modifier and Type | Field and Description |
---|---|
(package private) org.apache.pdfbox.pdmodel.font.PDFont |
boldFont
The bold font used for the built report
|
private boolean |
breakPageForNewSection
True value indicates that new section must be printed on the next new page, otherwise
the new section must be printed on the current page if it is possible.
|
(package private) float |
cellFontSize
The size of the table cell font
|
private float |
cellMargin
Defines a cell margin.
|
private float |
cellPadding
Defines a cell pading.
|
(package private) float |
columnFontSize
The size of the table column font
|
(package private) org.apache.pdfbox.pdmodel.PDDocument |
doc
The current instance of the created pdf document
|
private java.util.function.Predicate<TRowObject> |
filterRecords
The filter records predicate that tests if a row should be present in new reports
|
(package private) org.apache.pdfbox.pdmodel.font.PDFont |
font
The normal font used for the built report
|
(package private) float |
footerFontSize
The size of the footer font
|
private float |
footerMargin
Defines top and bottom margin for the footer.
|
private AbstractReportBuilder.Renderer<TFooterObject> |
footerRenderer
The render of the report footer
|
private AbstractReportBuilder.SectionRenderer<TRowObject> |
footerSectionRenderer
The render of the section footer
|
(package private) float |
headerFontSize
The size of the header font
|
private float |
headerMargin
Defines top and bottom margin for the header.
|
private AbstractReportBuilder.Renderer<THeaderObject> |
headerRenderer
The render of the report header
|
private float[] |
margin
Defines page margin in this order: left, top, right and bottom.
|
private int |
maxPagesNumber
Maximal number of report pages that this builder can produce in a one document.
|
(package private) PaperOrientation |
orient
The page orientation of the built report
|
private java.lang.Integer |
previewPage
The page to preview, in the preview mode PDF is built only for the selected page, to do
list of pages to preview.
|
private java.lang.String |
reportId
Report id
|
(package private) org.apache.pdfbox.pdmodel.common.PDRectangle |
reportSize
The page size of the built report
|
private AbstractReportBuilder.SectionRenderer<TRowObject> |
sectionRenderer
The render of the section header
|
private boolean |
selfPrintedDocument
True value indicates that PDF report will request to print itself if while it is opened or
rendered by PDF viewer with enabled java script support.
|
private java.util.LinkedList<byte[]> |
splittedDoc
Holds binary documents that comprise the all report and their maximal numbers of pages don't
exceed the defined limit given by MAX_PAGE_NUMBER.
|
BOTTOM, LEFT, RIGHT, TOP
Constructor and Description |
---|
AbstractReportBuilder(java.lang.String reportId)
Creates a report builder per a report request.
|
Modifier and Type | Method and Description |
---|---|
PdfReportBuilder.PdfDocument |
buildReport(PdfReportBuilder.PdfReportSettings parameters)
Builds a document according to the provided report settings.
|
float |
getAvailablePageSpace()
Returns available space for content between its page header and footer.
|
org.apache.pdfbox.pdmodel.font.PDFont |
getBoldFont()
Gets the bold font.
|
float |
getCellFontSize()
Gets the cell font size.
|
float |
getCellMargin()
Gets the cell margin.
|
float |
getCellOuterSpace()
Gets the cell outer space.
|
float |
getCellPadding()
Gets the cell padding.
|
float |
getColumnFontSize()
Gets the column font size.
|
protected abstract java.util.List<AbstractReportBuilder.ColumnInfo<TRowObject>> |
getColumns()
Returns the list of report columns.
|
float |
getContentLowBound()
Returns the low bound for the page content.
|
protected abstract java.util.stream.Stream<TRowObject> |
getDataStream()
Returns the report data stream.
|
org.apache.pdfbox.pdmodel.PDDocument |
getDoc()
Gets the doc.
|
java.util.function.Predicate<TRowObject> |
getFilterRecords()
Returns the current records filter used internally to select the target sub set of data.
|
org.apache.pdfbox.pdmodel.font.PDFont |
getFont()
Gets the font.
|
float |
getFooterFontSize()
Gets the footer font size.
|
float |
getFooterMargin()
Gets the footer margin.
|
AbstractReportBuilder.Renderer<TFooterObject> |
getFooterRenderer()
Returns the current header renderer.
|
AbstractReportBuilder.SectionRenderer<TRowObject> |
getFooterSectionRenderer()
Returns the current renderer to draw a page section footer.
|
float |
getHeaderFontSize()
Gets the header font size.
|
float |
getHeaderMargin()
Gets the header margin.
|
AbstractReportBuilder.Renderer<THeaderObject> |
getHeaderRenderer()
Returns the current header renderer.
|
float[] |
getMargin()
Gets the margin.
|
float |
getMinCellHeight()
Gets the min cell height.
|
PaperOrientation |
getOrient()
Gets the orient.
|
java.lang.Integer |
getPreviewPage()
Returns the page number to preview.
|
protected abstract TFooterObject |
getReportFooter()
Returns the footer data.
|
protected abstract THeaderObject |
getReportHeader()
Returns the header data.
|
java.lang.String |
getReportId()
Returns the report id.
|
org.apache.pdfbox.pdmodel.common.PDRectangle |
getReportSize()
Gets the report size.
|
AbstractReportBuilder.SectionRenderer<TRowObject> |
getSectionRenderer()
Returns the current section renderer.
|
boolean |
isBreakPageForNewSection()
The returned true value indicates that the current page should be interrupted if it is
followed by a new section.
|
boolean |
isSelfPrintedDocument()
Returned true value indicates that PDF report will request to print itself if it will be
rendered.
|
void |
setBreakPageForNewSection(boolean breakPageForNewSection)
Sets a boolean value indicating the current page should be interrupted or not if it is
followed by a new section.
|
void |
setFilterRecords(java.util.function.Predicate<TRowObject> filterRecords)
Sets the current records filter that will be used to build reports for the target sub set of
data.
|
void |
setFooterRenderer(AbstractReportBuilder.Renderer<TFooterObject> footerRenderer)
Sets the current footer renderer to draw a page footer.
|
void |
setFooterSectionRenderer(AbstractReportBuilder.SectionRenderer<TRowObject> footerSectionRenderer)
Sets the current renderer to draw a page section footer.
|
void |
setHeaderRenderer(AbstractReportBuilder.Renderer<THeaderObject> headerRenderer)
Sets the current header renderer to draw a page header.
|
void |
setPreviewPage(java.lang.Integer previewPage)
Sets the page number to preview.
|
void |
setSectionRenderer(AbstractReportBuilder.SectionRenderer<TRowObject> sectionRenderer)
Sets the current section renderer to draw a page section header.
|
void |
setSelfPrintedDocument(boolean selfPrintedDocument)
Sets the boolean value indicating if the produced PDF report will print itself or not
while it is opened or rendered by PDF viewer with enabled java script support.
|
private int maxPagesNumber
private float[] margin
private float cellMargin
private float cellPadding
private float headerMargin
private float footerMargin
private final java.lang.String reportId
private final java.util.LinkedList<byte[]> splittedDoc
org.apache.pdfbox.pdmodel.PDDocument doc
org.apache.pdfbox.pdmodel.common.PDRectangle reportSize
PaperOrientation orient
float headerFontSize
float columnFontSize
float cellFontSize
float footerFontSize
org.apache.pdfbox.pdmodel.font.PDFont font
org.apache.pdfbox.pdmodel.font.PDFont boldFont
private AbstractReportBuilder.Renderer<THeaderObject extends AbstractReportBuilder.Header> headerRenderer
private AbstractReportBuilder.Renderer<TFooterObject extends AbstractReportBuilder.Footer> footerRenderer
private java.util.function.Predicate<TRowObject> filterRecords
private AbstractReportBuilder.SectionRenderer<TRowObject> sectionRenderer
private AbstractReportBuilder.SectionRenderer<TRowObject> footerSectionRenderer
private boolean breakPageForNewSection
private java.lang.Integer previewPage
private boolean selfPrintedDocument
public AbstractReportBuilder(java.lang.String reportId)
reportId
- Report id.public java.util.function.Predicate<TRowObject> getFilterRecords()
public void setFilterRecords(java.util.function.Predicate<TRowObject> filterRecords)
filterRecords
- The records filter.public AbstractReportBuilder.Renderer<THeaderObject> getHeaderRenderer()
public void setHeaderRenderer(AbstractReportBuilder.Renderer<THeaderObject> headerRenderer)
headerRenderer
- The header rendererpublic AbstractReportBuilder.Renderer<TFooterObject> getFooterRenderer()
public void setFooterRenderer(AbstractReportBuilder.Renderer<TFooterObject> footerRenderer)
footerRenderer
- The footer rendererpublic AbstractReportBuilder.SectionRenderer<TRowObject> getSectionRenderer()
public void setSectionRenderer(AbstractReportBuilder.SectionRenderer<TRowObject> sectionRenderer)
sectionRenderer
- The section rendererpublic AbstractReportBuilder.SectionRenderer<TRowObject> getFooterSectionRenderer()
public void setFooterSectionRenderer(AbstractReportBuilder.SectionRenderer<TRowObject> footerSectionRenderer)
footerSectionRenderer
- The section footer rendererpublic boolean isBreakPageForNewSection()
public void setBreakPageForNewSection(boolean breakPageForNewSection)
breakPageForNewSection
- The break page boolean valuepublic java.lang.String getReportId()
public java.lang.Integer getPreviewPage()
public void setPreviewPage(java.lang.Integer previewPage)
previewPage
- The page number to previewpublic boolean isSelfPrintedDocument()
public void setSelfPrintedDocument(boolean selfPrintedDocument)
selfPrintedDocument
- The self printed boolean valuepublic final PdfReportBuilder.PdfDocument buildReport(PdfReportBuilder.PdfReportSettings parameters) throws java.io.IOException
buildReport
in interface ReportBuilder<PdfReportBuilder.PdfReportSettings,PdfReportBuilder.PdfDocument>
parameters
- The provided report parametersjava.io.IOException
- This exception can be thrown if there are failed output operationspublic float getContentLowBound()
public float getAvailablePageSpace()
public float getMinCellHeight()
public float getCellOuterSpace()
public float[] getMargin()
public float getCellMargin()
public float getCellPadding()
public float getHeaderMargin()
public float getFooterMargin()
public org.apache.pdfbox.pdmodel.PDDocument getDoc()
public org.apache.pdfbox.pdmodel.common.PDRectangle getReportSize()
public PaperOrientation getOrient()
public float getHeaderFontSize()
public float getColumnFontSize()
public float getCellFontSize()
public float getFooterFontSize()
public org.apache.pdfbox.pdmodel.font.PDFont getFont()
public org.apache.pdfbox.pdmodel.font.PDFont getBoldFont()
protected abstract java.util.stream.Stream<TRowObject> getDataStream()
protected abstract java.util.List<AbstractReportBuilder.ColumnInfo<TRowObject>> getColumns()
protected abstract THeaderObject getReportHeader()
protected abstract TFooterObject getReportFooter()