Class CachedOutput

  • All Implemented Interfaces:
    DocumentOutput, java.lang.Comparable<CachedOutput>

    public class CachedOutput
    extends java.lang.Object
    implements DocumentOutput, java.lang.Comparable<CachedOutput>
    Implementation of DocumentOutput that saves in the report cache.
    Since:
    16.2
    • Constructor Detail

      • CachedOutput

        public CachedOutput​(ReportCacheKey key,
                            ReportGenerator engine)
        Create a new instance.
        Parameters:
        key - the report key
        engine - the related Engine
        Since:
        16.2
    • Method Detail

      • getPageCount

        public int getPageCount()
        Get the current count of pages.
        Specified by:
        getPageCount in interface DocumentOutput
        Returns:
        the page count
      • clear

        public void clear()
        Reset this output in the initial state. So getPageCount() == 0 and getFontCount() == 0.
        Specified by:
        clear in interface DocumentOutput
      • getPageData

        public byte[] getPageData​(int idx)
                           throws java.lang.ArrayIndexOutOfBoundsException
        Get the binary data of a page/chunk.
        Specified by:
        getPageData in interface DocumentOutput
        Parameters:
        idx - the index, starts with 1
        Returns:
        the data, never null
        Throws:
        java.lang.ArrayIndexOutOfBoundsException - if index is out of range
      • getGroupTree

        public byte[] getGroupTree()
        Get the data of the group tree.
        Specified by:
        getGroupTree in interface DocumentOutput
        Returns:
        Can be null, if not set.
      • addPage

        public void addPage​(byte[] page)
                     throws java.lang.IllegalStateException
        Add a page/chunk. Increment DocumentOutput.getPageCount()
        Specified by:
        addPage in interface DocumentOutput
        Parameters:
        page - the binary data, never null
        Throws:
        java.lang.IllegalStateException - if this output is finish or stopped.
      • setPageData

        public void setPageData​(byte[] page,
                                int idx)
                         throws java.lang.IllegalStateException
        Override/patched an existing page/chunk.
        Specified by:
        setPageData in interface DocumentOutput
        Parameters:
        page - die binary data, never null
        idx - the index, starts with 1
        Throws:
        java.lang.IllegalStateException - if this output is finish or stopped.
      • setGroupTree

        public void setGroupTree​(byte[] data)
                          throws java.lang.IllegalStateException
        Set the group tree. After this call this output is finish and any try to change this object should throw an exception. This call does not change DocumentOutput.getPageCount().
        Specified by:
        setGroupTree in interface DocumentOutput
        Parameters:
        data - the binary data, never null, but can be an empty array
        Throws:
        java.lang.IllegalStateException - if this output is finish or stopped.
      • setErrorData

        public void setErrorData​(byte[] error)
                          throws java.lang.IllegalStateException
        Set error data. After this call this output is finish and any try to change this object should throw an exception.
        Specified by:
        setErrorData in interface DocumentOutput
        Parameters:
        error - serialized Exception
        Throws:
        java.lang.IllegalStateException - if this output is finish or stopped.
      • stop

        public void stop​(java.lang.String cause)
        The rendering was stopped. This is called from Engine.stop(). After this call any try to change this object should throw an exception.
        Specified by:
        stop in interface DocumentOutput
        Parameters:
        cause - an optional message
      • addFontData

        public void addFontData​(byte[] fontData)
                         throws java.lang.IllegalStateException
        Add the data for an embedded font. Increment DocumentOutput.getFontCount(). This method is only used from the Java/C# output format.
        Specified by:
        addFontData in interface DocumentOutput
        Parameters:
        fontData - binary data in the current protocol format.
        Throws:
        java.lang.IllegalStateException - if this output is finish or stopped.
      • setFontData

        public void setFontData​(byte[] fontData,
                                int idx)
                         throws java.lang.IllegalStateException
        Override the font data with a new version.
        Specified by:
        setFontData in interface DocumentOutput
        Parameters:
        fontData - binary data in the current protocol format.
        idx - the index, starts with 0
        Throws:
        java.lang.IllegalStateException - if this output is finish or stopped.
      • getFontData

        public byte[] getFontData​(int idx)
                           throws java.lang.ArrayIndexOutOfBoundsException
        Get the font data from the given index.
        Specified by:
        getFontData in interface DocumentOutput
        Parameters:
        idx - the index, starts with 0
        Returns:
        the font data, never null
        Throws:
        java.lang.ArrayIndexOutOfBoundsException - if index is out of range
      • getFontCount

        public int getFontCount()
        Get the count of added fonts.
        Specified by:
        getFontCount in interface DocumentOutput
        Returns:
        the font count
      • setPageLimitExceeded

        public void setPageLimitExceeded()
        Set that a PageLimitException exception occur.
        Specified by:
        setPageLimitExceeded in interface DocumentOutput
      • isPageLimitExceeded

        public boolean isPageLimitExceeded()
        Check if the rendering of the report ran into a page limit. This means does not all possible pages exist.
        Specified by:
        isPageLimitExceeded in interface DocumentOutput
        Returns:
        true, if PageLimitException was occur
      • setUsingTotalPage

        public void setUsingTotalPage()
        Set that a total page is used in the report.
        Specified by:
        setUsingTotalPage in interface DocumentOutput
      • getKey

        public ReportCacheKey getKey()
        Get the key of this DocumentOutput.
        Returns:
        the key
        Since:
        16.3
      • getEngine

        public ReportGenerator getEngine()
        Get the Engine/EngineBundle that produce the data for this output.
        Returns:
        the engine
        Since:
        16.2
      • compareTo

        public int compareTo​(CachedOutput o)
        Specified by:
        compareTo in interface java.lang.Comparable<CachedOutput>