Interface RenderData

  • All Known Implementing Classes:
    CacheRenderData, EngineRenderData, URLRenderData

    public interface RenderData
    This is the interface used by ReportViews to fetch the report data. In order to create a working ReportView and add it to the ReportViewer, an instance of RenderData must be given, which will then be used to fetch the report's render data.

    Notes for implementing

    • Implementations of this interface must be thread safe except for the methods getExportChunkCount and getNextExportChunk.
    • Note that each ReportView can have its own instance of RenderData, so the RenderData methods may be called simultaneously for different ReportViews and different RenderData instances.
    • Note that getCopy() should be implemented if extending from another RenderData, since it otherwise will create an instance of the superclass rather than your own RenderData.
    Since:
    7.0
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int CASE_SENSITIVE
      Search option: Search results must match the case of the search term.
      static int REGULAR_EXPRESSION
      Search option: Search result must fit to the search term's regular expression (Java Regex)
      static int WHOLE_WORD
      Search option: Only a search result if the entire word is equal to the search term.
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      RenderData getCopy()
      "Clones" this RenderData object with all its properties and returns the copy.
      int getExportChunkCount​(java.util.Properties expProps)
      Returns the total number of export "chunks" for the report for the specified export format.
      byte[] getFontData​(int fontID)
      Returns the byte array of the embedded font at the specified fontId, which is encoded in the Viewer's protocol.
      byte[] getGroupTree()
      Returns the group tree which can be sent to the java viewer as a byte array.
      byte[] getNextExportChunk()
      Returns the next chunk of the exported report if there is at least one more chunk available.
      int getPageCount()
      Returns the number of pages in the report.
      byte[] getPageData​(int page)
      Returns the binary data of one page for the Java Viewer.
      java.util.Properties getProperties()
      Returns the Properties object used by this RenderData object.
      java.lang.String getReportLocation()
      Returns the location of the report set by setReportLocation.
      java.lang.String getReportProperty​(java.lang.String key)
      Returns the chosen property value which has been set either via setReportProperty or otherwise.
      java.lang.String getReportTitle()
      Returns the manually set title of the report if there is one, that is, what would be typically displayed in a title bar, e.g.
      boolean isPageLimitExceeded()
      Check if the rendering of the report ran into a page limit.
      boolean isPromptOnRefresh()
      Returns the property "promptOnRefresh", that is, whether prompts are to be shown whenever new data is fetched from the server.
      byte[] refreshPageData​(int page)
      Enforces the whole report to be re-rendered on server side and returns the refreshed binary data of one page for the Java Viewer.
      void resetServerCacheTimeout()
      Notifies the server that the report with the currently set properties is still being viewed and therefore should not be removed from the cache yet if there is one.
      byte[] search​(java.lang.String phrase, int startPage, int flags)
      Searches the given phrase in the report, starting at a certain page and using the search options given in the flags.
      void setPromptOnRefresh​(boolean promptOnRefresh)
      Sets the property "promptOnRefresh", that is, whether prompts are to be shown whenever the report is refreshed, that is, whenever new data is fetched from the server.
      void setReportLocation​(java.lang.String location)
      Sets the location of the report which this RenderData is to obtain its data for.
      void setReportProperty​(java.lang.String key, java.lang.String value)
      Sets the given property for the report.
      void setReportTitle​(java.lang.String title)
      Sets the title of the report.
      void stop()
      Stops and cancels the rendering process if one is running.
    • Method Detail

      • setReportTitle

        void setReportTitle​(java.lang.String title)
        Sets the title of the report. This title is what would be typically displayed in a title bar, e.g. "Employee Report 2005". Note that if this is not manually set, the title will be whatever the report has set as its title. If a title is set, it overrides the "actual" report title.
        Parameters:
        title - Title of the report as simple string.
        Since:
        7.0
      • getReportTitle

        java.lang.String getReportTitle()
        Returns the manually set title of the report if there is one, that is, what would be typically displayed in a title bar, e.g. "Employee Report 2005". This will return null if no title was manually set.
        Returns:
        Title of report
        Since:
        7.0
      • setReportLocation

        void setReportLocation​(java.lang.String location)
        Sets the location of the report which this RenderData is to obtain its data for. Any properties can be attached to the end using "=" for separating property name and value, and "&" for separating the various properties, e.g. "...&init=pdf&promptABC=test..." The location may not be null.
        Parameters:
        location - The location at which the report can be found. May not be null. *
        Since:
        7.0
      • getReportLocation

        java.lang.String getReportLocation()
        Returns the location of the report set by setReportLocation. This will never be null. An uninitialized location will be returned as an empty string.
        Returns:
        Report Location (e.g URL)
        Since:
        7.0
        See Also:
        *
      • getPageData

        byte[] getPageData​(int page)
                    throws ViewerException
        Returns the binary data of one page for the Java Viewer. Note that this method is thread-safe, that is, two or more threads concurrently calling this method and the other thread-safe methods in RenderData should cause no problems.
        Parameters:
        page - The number of the page. The first page is 1, the second is 2, ... .
        If the page number is not valid (usually meaning the page number is outside the page range), null can be returned.
        Returns:
        The binary data of the page for the Java viewer, or possibly null if page number is not valid.
        Throws:
        ViewerException - If an exception is returned from the server, it is wrapped in a ViewerException. Often this will be a com.inet.report.ReportException
        Since:
        7.0
        See Also:
        getPageCount()
      • getPageCount

        int getPageCount()
                  throws ViewerException
        Returns the number of pages in the report.
        This method blocks until the rendering process is finished. This is useful if you use i-net Clear Reports with external result sets or connections and you want to know when the rendering process is finished and you can close these external result sets or connections - once this method returns, the rendering process is finished. Note that this method is thread-safe, that is, two or more threads concurrently calling this method and the other thread-safe methods in RenderData should cause no problems.
        Returns:
        number of pages (1-based)
        Throws:
        ViewerException - If there are rendering problems, etc.
        Since:
        7.0
        See Also:
        getPageData(int)
      • isPageLimitExceeded

        boolean isPageLimitExceeded()
                             throws ViewerException
        Check if the rendering of the report ran into a page limit. This means does not all possible pages exist.
        Returns:
        true, if there is a limit
        Throws:
        ViewerException - If there are rendering problems, etc.
        Since:
        10.0
      • getNextExportChunk

        byte[] getNextExportChunk()
                           throws ViewerException
        Returns the next chunk of the exported report if there is at least one more chunk available. It is required that getExportChunkCount(Properties) has been called once for this report.
        This method blocks until the rendering process of the requested chunk or the complete report is finished.
        Returns:
        Next chunk of the report, or null if the export is finished.
        Throws:
        ViewerException - If there are connection problems or other issues while fetching the data
        Since:
        7.0
        See Also:
        getExportChunkCount(Properties)
      • getExportChunkCount

        int getExportChunkCount​(java.util.Properties expProps)
                         throws ViewerException
        Returns the total number of export "chunks" for the report for the specified export format.
        A "chunk" is a unit of export data which can be retrieved using getNextExportChunk(). This method blocks until the rendering process is finished on the server. Note that this method is thread-safe, that is, two or more threads concurrently calling this method and the other thread-safe methods in RenderData should cause no problems.
        In case of gzip compression, the number of chunks can not be determined and "0" is returned. The chunks can be retrieved in a loop until getNextExportChunk() returns NULL.
        Parameters:
        expProps - Properties to be appended to the current report properties for this export. The properties should contain at least the export format with the key "export_fmt". The following formats are valid:
        "pdf" - pdf file
        "rtf" - rtf file
        "xls" - xls file
        "csv" - csv file
        "ps" - ps file
        "xml" -xml file
        "htm" - html files, The file name is the base filename, because there are more files with links.
        For a complete list of report URL properties see the documentation.
        Returns:
        Total number of export "chunks" (i.e. units) which can be fetched using getNextExportChunk()
        Throws:
        ViewerException - If there are connection problems or other issues while fetching the data
        Since:
        7.0
        See Also:
        getNextExportChunk(), getProperties()
      • getGroupTree

        byte[] getGroupTree()
                     throws ViewerException
        Returns the group tree which can be sent to the java viewer as a byte array. Note that this method is thread-safe, that is, two or more threads concurrently calling this method and the other thread-safe methods in RenderData should cause no problems.
        Returns:
        byte[] Group Tree as byte array, encoded by i-net Clear Reports.
        Throws:
        ViewerException - If there are connection problems or other issues while fetching the data
        Since:
        7.0
      • refreshPageData

        byte[] refreshPageData​(int page)
                        throws ViewerException
        Enforces the whole report to be re-rendered on server side and returns the refreshed binary data of one page for the Java Viewer. This page is rendered anew rather than possibly taking a cached version.
        Parameters:
        page - The number of the page. The first page is 1, the second is 2, ... . If the page number is bigger than the page count the data from the last page will be returned.
        Returns:
        the binary data for the Java Viewer
        Throws:
        ViewerException - If there are connection problems or other issues while fetching the data
        Since:
        7.0
        See Also:
        getPageCount()
      • setReportProperty

        void setReportProperty​(java.lang.String key,
                               java.lang.String value)
        Sets the given property for the report. See https://www.inetsoftware.de/documentation/clear-reports/plugins/clear-reports/documentation/en/report-url-parameters for a list of possible properties to set here and what they mean.
        Setting null as the value will cause the removal of the property. If a prompt property is to be explicitly set to the value "null", simply set the string "formula:null" as the value.
        Parameters:
        key - Name of property to set, will be converted to lower case
        value - Value of property to set, null to remove this property
        Since:
        7.0
      • getReportProperty

        java.lang.String getReportProperty​(java.lang.String key)
        Returns the chosen property value which has been set either via setReportProperty or otherwise.
        Parameters:
        key - Name of property to get value for
        Returns:
        Value of property with the given name
        Since:
        7.0
      • getProperties

        java.util.Properties getProperties()
        Returns the Properties object used by this RenderData object. Note this is NOT a clone but rather the exact object used by RenderData - any changes made to this Properties object will influence the RenderData. See https://www.inetsoftware.de/documentation/clear-reports/plugins/clear-reports/documentation/en/report-url-parameters for a list of possible properties to set here and what they mean.

        Note also that any key values should be set in lower case. This Properties object will never be null, at most it will be empty.

        Returns:
        Properties object used by RenderData, never null
        Since:
        7.0
      • setPromptOnRefresh

        void setPromptOnRefresh​(boolean promptOnRefresh)
        Sets the property "promptOnRefresh", that is, whether prompts are to be shown whenever the report is refreshed, that is, whenever new data is fetched from the server.
        Parameters:
        promptOnRefresh - Value to set for this property
        Since:
        7.0
      • isPromptOnRefresh

        boolean isPromptOnRefresh()
        Returns the property "promptOnRefresh", that is, whether prompts are to be shown whenever new data is fetched from the server.
        Returns:
        The property "promptOnRefresh"
        Since:
        7.0
      • getCopy

        RenderData getCopy()
        "Clones" this RenderData object with all its properties and returns the copy. Useful for deriving from existing RenderData objects by copying them and adding or changing properties. This method is called by the viewer for drilling down, for example - the drilldown property is set on the copy while all other properties remain the same, and the copy is used to open a new report view.
        Returns:
        A cloned copy of this RenderData object with all its properties.
        Since:
        7.0
        See Also:
        ReportViewer.addNewReportView(RenderData), getProperties()
      • stop

        void stop()
        Stops and cancels the rendering process if one is running. This command ends up being passed through to i-net Clear Reports rendering engine and running Engine.stop.
        Since:
        7.0
      • search

        byte[] search​(java.lang.String phrase,
                      int startPage,
                      int flags)
        Searches the given phrase in the report, starting at a certain page and using the search options given in the flags. These flags are:

        WHOLE_WORD : search only the word in its entirety, not parts of words.
        CASE_SENSITIVE : observe upper and lower cases in the search, that is "Search" != "search"
        REGULAR_EXPRESSION : The search phrase is to be handled as a regular expression (using Java's Regex methods for the search).

        Desired flags should be connected by the OR operator "|". So, for example, to search with the flags WHOLE_WORD and CASE_SENSITIVE, simply use WHOLE_WORD | CASE_SENSITIVE as the flags option.

        Note that phrases going over more than one page will not be found, nor will text parts with formatting inside the word itself, such as this word. Note that this method is thread-safe, that is, two or more threads concurrently calling this method and the other thread-safe methods in RenderData should cause no problems.

        Parameters:
        phrase - Word or phrase to search. Should be a regular expression if this flag is set.
        startPage - Page to start searching on (1-based)
        flags - Desired search options (see above)
        Returns:
        Search result by the server, encoded in the i-net Clear Reports protocol.
        Since:
        7.0
        See Also:
        WHOLE_WORD, CASE_SENSITIVE, REGULAR_EXPRESSION
      • getFontData

        byte[] getFontData​(int fontID)
        Returns the byte array of the embedded font at the specified fontId, which is encoded in the Viewer's protocol. You need not and should not call this method yourself - rather the Viewer will call this method on its own when an embedded font needs to be fetched for the report.

        The fontID is 1-based. null will be returned if there are no fonts embedded for the report of this Engine. If fontID is greater than the number of embedded fonts available it will return the last font available. This method is the mirror method to com.inet.report.Engine.getFontData(int), so implementations can either call that if an engine is available, or a running i-net Clear Reports server also returns the font data with an HTTP request of the form "http://server:9000/?report=report.rpt&export_fmt=font&page=FONTID&cmd=get_pg" where FONTID is replaced with the given font ID. Note that this method is thread-safe, that is, two or more threads concurrently calling this method and the other thread-safe methods in RenderData should cause no problems.

        Parameters:
        fontID - ID of font as specified in the i-net Clear Reports protocol
        Returns:
        Partial or whole font with the ID, and with the most current version of this font known to the server.
        Since:
        7.0
      • resetServerCacheTimeout

        void resetServerCacheTimeout()
        Notifies the server that the report with the currently set properties is still being viewed and therefore should not be removed from the cache yet if there is one. This method does NOT cause the report to be re-rendered under any circumstance, rather it resets the cache timeout on the server if there is one.

        This method will be called in regular intervals (default is every 5 minutes) by its corresponding ReportView(s).

        Throws:
        ViewerException - if resetting the cache timeout is not supported by the RenderData implementation. This will cause the viewer to stop calling this method in regular intervals.
        Since:
        7.8