Class JRResultSetDataSource

  • All Implemented Interfaces:
    JRDataSource

    public class JRResultSetDataSource
    extends java.lang.Object
    implements JRDataSource
    This is a default implementation of the JRDataSource interface. Since most reports are generated using data from a relational database, JasperReports includes by default this implementation that wraps a java.sql.ResultSet object.

    This class can be instantiated intentionally to wrap already loaded result sets before passing them to the report-filling routines, but it is also used by the reporting engine to wrap the data retrieved from the database after having executed the report query (if present) through JDBC.

    Author:
    Teodor Danciu (teodord@users.sourceforge.net)
    • Field Detail

      • PROPERTY_FIELD_COLUMN_NAME

        public static final java.lang.String PROPERTY_FIELD_COLUMN_NAME
        Property specifying the result set column name for the dataset field.
        See Also:
        Constant Field Values
      • PROPERTY_FIELD_COLUMN_LABEL

        public static final java.lang.String PROPERTY_FIELD_COLUMN_LABEL
        Property specifying the result set column label for the dataset field.
        See Also:
        Constant Field Values
      • PROPERTY_FIELD_COLUMN_INDEX

        public static final java.lang.String PROPERTY_FIELD_COLUMN_INDEX
        Property specifying the result set column index for the dataset field.
        See Also:
        Constant Field Values
      • INDEXED_COLUMN_PREFIX

        public static final java.lang.String INDEXED_COLUMN_PREFIX
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_RESULT_SET_CLOB_VALUE_READ_FAILURE

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_RESULT_SET_CLOB_VALUE_READ_FAILURE
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_RESULT_SET_COLUMN_INDEX_OUT_OF_RANGE

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_RESULT_SET_COLUMN_INDEX_OUT_OF_RANGE
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_RESULT_SET_FIELD_VALUE_NOT_RETRIEVED

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_RESULT_SET_FIELD_VALUE_NOT_RETRIEVED
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_RESULT_SET_METADATA_NOT_RETRIEVED

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_RESULT_SET_METADATA_NOT_RETRIEVED
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_RESULT_SET_UNKNOWN_COLUMN_NAME

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_RESULT_SET_UNKNOWN_COLUMN_NAME
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_RESULT_SET_UNKNOWN_COLUMN_LABEL

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_RESULT_SET_UNKNOWN_COLUMN_LABEL
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_RESULT_SET_NEXT_RECORD_NOT_RETRIEVED

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_RESULT_SET_NEXT_RECORD_NOT_RETRIEVED
        See Also:
        Constant Field Values
    • Method Detail

      • getResultSet

        public java.sql.ResultSet getResultSet()
        Access the result set that this data source is based on.
        Returns:
        the result set used by this data source
      • next

        public boolean next()
                     throws JRException
        Description copied from interface: JRDataSource
        Tries to position the cursor on the next element in the data source.
        Specified by:
        next in interface JRDataSource
        Returns:
        true if there is a next record, false otherwise
        Throws:
        JRException - if any error occurs while trying to move to the next element
      • getFieldValue

        public java.lang.Object getFieldValue​(JRField field)
                                       throws JRException
        Description copied from interface: JRDataSource
        Gets the field value for the current position.
        Specified by:
        getFieldValue in interface JRDataSource
        Returns:
        an object containing the field value. The object type must be the field object type.
        Throws:
        JRException
      • readDate

        protected java.lang.Object readDate​(java.lang.Integer columnIndex,
                                            JRField field)
                                     throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • readTimestamp

        protected java.lang.Object readTimestamp​(java.lang.Integer columnIndex,
                                                 JRField field)
                                          throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • readTime

        protected java.lang.Object readTime​(java.lang.Integer columnIndex,
                                            JRField field)
                                     throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • searchColumnByName

        protected java.lang.Integer searchColumnByName​(JRField field)
                                                throws java.sql.SQLException,
                                                       JRException
        Throws:
        java.sql.SQLException
        JRException
      • searchColumnByName

        protected java.lang.Integer searchColumnByName​(java.lang.String name)
                                                throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • searchColumnByLabel

        protected java.lang.Integer searchColumnByLabel​(JRField field)
                                                 throws java.sql.SQLException,
                                                        JRException
        Throws:
        java.sql.SQLException
        JRException
      • searchColumnByLabel

        protected java.lang.Integer searchColumnByLabel​(java.lang.String label)
                                                 throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • searchColumnByIndex

        protected java.lang.Integer searchColumnByIndex​(JRField field)
                                                 throws java.sql.SQLException,
                                                        JRException
        Throws:
        java.sql.SQLException
        JRException
      • searchColumnByIndex

        protected java.lang.Integer searchColumnByIndex​(java.lang.String index)
                                                 throws java.sql.SQLException,
                                                        JRException
        Throws:
        java.sql.SQLException
        JRException
      • clobToString

        protected java.lang.String clobToString​(java.sql.Clob clob)
                                         throws JRException
        Throws:
        JRException
      • getArrayReader

        protected java.io.CharArrayReader getArrayReader​(java.io.Reader reader,
                                                         long size)
                                                  throws java.io.IOException
        Throws:
        java.io.IOException
      • readBytes

        protected byte[] readBytes​(java.lang.Integer columnIndex)
                            throws java.sql.SQLException,
                                   java.io.IOException
        Throws:
        java.sql.SQLException
        java.io.IOException
      • readBytes

        protected byte[] readBytes​(java.io.InputStream is,
                                   long size)
                            throws java.io.IOException
        Throws:
        java.io.IOException
      • setTimeZone

        public void setTimeZone​(java.util.TimeZone timeZone,
                                boolean override)
        Sets the default time zone to be used for retrieving date/time values from the result set. In most cases no explicit time zone conversion would be required for retrieving date/time values from the DB, and this parameter should be null.
        Parameters:
        timeZone - the default time zone
        override - whether the default time zone overrides time zones specified as field-level properties
        See Also:
        JRJdbcQueryExecuterFactory.PROPERTY_TIME_ZONE
      • setReportTimeZone

        public void setReportTimeZone​(java.util.TimeZone reportTimeZone)
        Sets the report time zone, which is the one used to display datetime values in the report. The time zone is used when the JRJdbcQueryExecuterFactory.PROPERTY_TIME_ZONE property is set to REPORT_TIME_ZONE.
        Parameters:
        reportTimeZone - the time zone used to display datetime values in the report
      • getFieldCalendar

        protected java.util.Calendar getFieldCalendar​(JRField field)
      • createFieldCalendar

        protected java.util.Calendar createFieldCalendar​(JRField field)
      • resolveTimeZone

        protected java.util.TimeZone resolveTimeZone​(java.lang.String timezoneId)