Module org.jooq
Package org.jooq

Interface Formattable

All Known Subinterfaces:
Cursor<R>, EmbeddableRecord<R>, QualifiedRecord<R>, Record, Record1<T1>, Record10<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10>, Record11<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11>, Record12<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12>, Record13<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13>, Record14<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14>, Record15<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14,​T15>, Record16<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14,​T15,​T16>, Record17<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14,​T15,​T16,​T17>, Record18<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14,​T15,​T16,​T17,​T18>, Record19<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14,​T15,​T16,​T17,​T18,​T19>, Record2<T1,​T2>, Record20<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14,​T15,​T16,​T17,​T18,​T19,​T20>, Record21<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14,​T15,​T16,​T17,​T18,​T19,​T20,​T21>, Record22<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14,​T15,​T16,​T17,​T18,​T19,​T20,​T21,​T22>, Record3<T1,​T2,​T3>, Record4<T1,​T2,​T3,​T4>, Record5<T1,​T2,​T3,​T4,​T5>, Record6<T1,​T2,​T3,​T4,​T5,​T6>, Record7<T1,​T2,​T3,​T4,​T5,​T6,​T7>, Record8<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8>, Record9<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9>, Result<R>, TableRecord<R>, UDTRecord<R>, UpdatableRecord<R>
All Known Implementing Classes:
ArrayRecordImpl, CustomRecord, EmbeddableRecordImpl, TableRecordImpl, UDTRecordImpl, UpdatableRecordImpl

public interface Formattable
A type that can format its contents.

This type provides a common interface for Result and Cursor formatting functionality, which includes formatting results to:

  • Charts
  • CSV
  • HTML
  • INSERT statements
  • JSON
  • Text
  • XML

Calling formatting methods on a Result is repeatable as the Result has been previously materialised in memory and the database resource is closed. Calling these methods on a Cursor is not repeatable as the Cursor (and the underlying JDBC ResultSet) is consumed entirely, and closed eagerly after consumption.

Author:
Lukas Eder
  • Method Details

    • format

      @NotNull @NotNull String format()
      Get a simple formatted representation of this result.

      This is the same as calling format(int) with maxRows = Integer.MAX_VALUE

      Returns:
      The formatted result
    • format

      @NotNull @NotNull String format(int maxRecords)
      Get a simple formatted representation of this result.
      Parameters:
      maxRecords - The maximum number of records to include in the formatted result
      Returns:
      The formatted result
    • format

      @NotNull @NotNull String format(TXTFormat format)
      Get a simple formatted representation of this result.
      Parameters:
      format - The formatting information
      Returns:
      The formatted result
    • formatHTML

      @NotNull @NotNull String formatHTML()
      Get a simple formatted representation of this result as HTML.

      The HTML code is formatted as follows:

       <table>
         <thead>
           <tr>
             <th>field-1</th>
             <th>field-2</th>
             ...
             <th>field-n</th>
           </tr>
         </thead>
         <tbody>
           <tr>
             <th>value-1-1</th>
             <th>value-1-2</th>
             ...
             <th>value-1-n</th>
           </tr>
           <tr>
             <th>value-2-1</th>
             <th>value-2-2</th>
             ...
             <th>value-2-n</th>
           </tr>
           ...
         </tbody>
       </table>
       
      Returns:
      The formatted result
    • formatCSV

      @NotNull @NotNull String formatCSV()
      Get a simple formatted representation of this result as CSV.

      This is the same as calling formatCSV(true, ',', "")

      Returns:
      The formatted result
    • formatCSV

      @NotNull @NotNull String formatCSV(char delimiter)
      Get a simple formatted representation of this result as CSV.

      This is the same as calling formatCSV(true, delimiter, "")

      Parameters:
      delimiter - The delimiter to use between records
      Returns:
      The formatted result
    • formatCSV

      @NotNull @NotNull String formatCSV(char delimiter, String nullString)
      Get a simple formatted representation of this result as CSV.

      This is the same as calling formatCSV(true, delimiter, nullString)

      Parameters:
      delimiter - The delimiter to use between records
      nullString - A special string for encoding NULL values.
      Returns:
      The formatted result
    • formatCSV

      @NotNull @NotNull String formatCSV(boolean header)
      Get a simple formatted representation of this result as CSV.

      This is the same as calling formatCSV(',', "")

      Parameters:
      header - Whether to emit a CSV header line
      Returns:
      The formatted result
    • formatCSV

      @NotNull @NotNull String formatCSV(boolean header, char delimiter)
      Get a simple formatted representation of this result as CSV.

      This is the same as calling formatCSV(delimiter, "")

      Parameters:
      header - Whether to emit a CSV header line
      delimiter - The delimiter to use between records
      Returns:
      The formatted result
    • formatCSV

      @NotNull @NotNull String formatCSV(boolean header, char delimiter, String nullString)
      Get a simple formatted representation of this result as CSV.
      Parameters:
      header - Whether to emit a CSV header line
      delimiter - The delimiter to use between records
      nullString - A special string for encoding NULL values.
      Returns:
      The formatted result
    • formatCSV

      @NotNull @NotNull String formatCSV(CSVFormat format)
      Get a simple formatted representation of this result as CSV.
      Returns:
      The formatted result
    • formatJSON

      @NotNull @NotNull String formatJSON()
      Get a simple formatted representation of this result as a JSON array of array.

      The format is the following:

       {"fields":[{"name":"field-1","type":"type-1"},
                  {"name":"field-2","type":"type-2"},
                  ...,
                  {"name":"field-n","type":"type-n"}],
        "records":[[value-1-1,value-1-2,...,value-1-n],
                   [value-2-1,value-2-2,...,value-2-n]]}
       
      Returns:
      The formatted result
    • formatJSON

      @NotNull @NotNull String formatJSON(JSONFormat format)
      Get a simple formatted representation of this result as a JSON data structure, according to the format.
      Returns:
      The formatted result
      See Also:
      JSONFormat
    • formatXML

      @NotNull @NotNull String formatXML()
      Get this result formatted as XML.
      See Also:
      http://www.jooq.org/xsd/jooq-export-3.10.0.xsd
    • formatXML

      @NotNull @NotNull String formatXML(XMLFormat format)
      Get this result formatted as XML.
      See Also:
      http://www.jooq.org/xsd/jooq-export-3.10.0.xsd
    • formatChart

      @NotNull @NotNull String formatChart()
      Get this result as an ASCII chart.
      See Also:
      formatChart(ChartFormat)
    • formatChart

      @NotNull @NotNull String formatChart(ChartFormat format)
      Get this result as an ASCII chart.

      When running a query like this:

       String chart =
       create.select(
                  BOOK_TO_BOOK_STORE.BOOK_STORE_NAME,
                  count(BOOK_TO_BOOK_STORE.BOOK_ID).as("books")
              )
              .from(BOOK_TO_BOOK_STORE)
              .groupBy(BOOK_TO_BOOK_STORE.BOOK_STORE_NAME)
              .fetch()
              .formatChart();
       
      Where the formatted result would look like this:
       +-------------------------+-----+
       |BOOK_STORE_NAME          |books|
       +-------------------------+-----+
       |Buchhandlung im Volkshaus|    1|
       |Ex Libris                |    2|
       |Orell Füssli             |    3|
       +-------------------------+-----+
       
      Then the chart might look something like this:
       3.00|                                                  █████████████████████████
       2.91|                                                  █████████████████████████
       2.82|                                                  █████████████████████████
       2.73|                                                  █████████████████████████
       2.64|                                                  █████████████████████████
       2.55|                                                  █████████████████████████
       2.45|                                                  █████████████████████████
       2.36|                                                  █████████████████████████
       2.27|                                                  █████████████████████████
       2.18|                                                  █████████████████████████
       2.09|                                                  █████████████████████████
       2.00|                         ██████████████████████████████████████████████████
       1.91|                         ██████████████████████████████████████████████████
       1.82|                         ██████████████████████████████████████████████████
       1.73|                         ██████████████████████████████████████████████████
       1.64|                         ██████████████████████████████████████████████████
       1.55|                         ██████████████████████████████████████████████████
       1.45|                         ██████████████████████████████████████████████████
       1.36|                         ██████████████████████████████████████████████████
       1.27|                         ██████████████████████████████████████████████████
       1.18|                         ██████████████████████████████████████████████████
       1.09|                         ██████████████████████████████████████████████████
       1.00|███████████████████████████████████████████████████████████████████████████
       ----+---------------------------------------------------------------------------
           | Buchhandlung im Volkshaus         Ex Libris               Orell Füssli
       
      It is possible to specify a variety of ChartFormat formatting specifications, such as the width, height, display type (default, stacked, 100% stacked), the column index of the category and value columns, etc.
      See Also:
      formatChart(ChartFormat)
    • formatInsert

      @NotNull @NotNull String formatInsert()
      Get this result as a set of INSERT statements.

      This uses the the first record's TableRecord.getTable(), if the first record is a TableRecord. Otherwise, this generates INSERT statements into an "UNKNOWN_TABLE". In both cases, the Fields.fields() are used for column names.

    • formatInsert

      @NotNull @NotNull String formatInsert(Table<?> table, Field<?>... fields)
      Get this result as a set of INSERT statements.

      This explicitly specifies the table (and optionally the fields) to insert into. If the fields argument is left empty, the Fields.fields() are used, instead.

    • format

      void format(OutputStream stream) throws IOException
      Like format(), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • format

      void format(OutputStream stream, int maxRecords) throws IOException
      Like format(int), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • format

      void format(OutputStream stream, TXTFormat format) throws IOException
      Like format(TXTFormat), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatHTML

      void formatHTML(OutputStream stream) throws IOException
      Like formatHTML(), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatCSV

      void formatCSV(OutputStream stream) throws IOException
      Like formatCSV(), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatCSV

      void formatCSV(OutputStream stream, char delimiter) throws IOException
      Like formatCSV(char), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatCSV

      void formatCSV(OutputStream stream, char delimiter, String nullString) throws IOException
      Like formatCSV(char, String), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatCSV

      void formatCSV(OutputStream stream, boolean header) throws IOException
      Like formatCSV(boolean), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatCSV

      void formatCSV(OutputStream stream, boolean header, char delimiter) throws IOException
      Like formatCSV(boolean, char), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatCSV

      void formatCSV(OutputStream stream, boolean header, char delimiter, String nullString) throws IOException
      Like formatCSV(boolean, char, String), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatCSV

      void formatCSV(OutputStream stream, CSVFormat format) throws IOException
      Like formatCSV(CSVFormat), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatJSON

      void formatJSON(OutputStream stream) throws IOException
      Like formatJSON(), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatJSON

      void formatJSON(OutputStream stream, JSONFormat format) throws IOException
      Like formatJSON(JSONFormat), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatXML

      void formatXML(OutputStream stream) throws IOException
      Like formatXML(), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatXML

      void formatXML(OutputStream stream, XMLFormat format) throws IOException
      Like formatXML(XMLFormat), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatChart

      void formatChart(OutputStream stream) throws IOException
      Like formatChart(), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatChart

      void formatChart(OutputStream stream, ChartFormat format) throws IOException
      Like formatChart(ChartFormat), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatInsert

      void formatInsert(OutputStream stream) throws IOException
      Like formatInsert(), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatInsert

      void formatInsert(OutputStream stream, Table<?> table, Field<?>... fields) throws IOException
      Like formatInsert(Table, Field...), but the data is output onto an OutputStream.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • format

      void format(Writer writer) throws IOException
      Like format(), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • format

      void format(Writer writer, int maxRecords) throws IOException
      Like format(int), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • format

      void format(Writer writer, TXTFormat format) throws IOException
      Like format(TXTFormat), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatHTML

      void formatHTML(Writer writer) throws IOException
      Like formatHTML(), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatCSV

      void formatCSV(Writer writer) throws IOException
      Like formatCSV(), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatCSV

      void formatCSV(Writer writer, char delimiter) throws IOException
      Like formatCSV(char), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatCSV

      void formatCSV(Writer writer, char delimiter, String nullString) throws IOException
      Like formatCSV(char, String), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatCSV

      void formatCSV(Writer writer, boolean header) throws IOException
      Like formatCSV(boolean), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatCSV

      void formatCSV(Writer writer, boolean header, char delimiter) throws IOException
      Like formatCSV(boolean, char), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatCSV

      void formatCSV(Writer writer, boolean header, char delimiter, String nullString) throws IOException
      Like formatCSV(boolean, char, String), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatCSV

      void formatCSV(Writer writer, CSVFormat format) throws IOException
      Like formatCSV(CSVFormat), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatJSON

      void formatJSON(Writer writer) throws IOException
      Like formatJSON(), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatJSON

      void formatJSON(Writer writer, JSONFormat format) throws IOException
      Like formatJSON(JSONFormat), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatXML

      void formatXML(Writer writer) throws IOException
      Like formatXML(), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatXML

      void formatXML(Writer writer, XMLFormat format) throws IOException
      Like formatXML(XMLFormat), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatChart

      void formatChart(Writer writer) throws IOException
      Like formatChart(), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatChart

      void formatChart(Writer writer, ChartFormat format) throws IOException
      Like formatChart(ChartFormat), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatInsert

      void formatInsert(Writer writer) throws IOException
      Like formatInsert(), but the data is output onto a Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • formatInsert

      void formatInsert(Writer writer, Table<?> table, Field<?>... fields) throws IOException
      Like formatInsert(Table, Field...), but the data is output onto an Writer.
      Throws:
      IOException - - an unchecked wrapper for IOException, if anything goes wrong.
    • intoXML

      @NotNull @NotNull Document intoXML()
      Get this result as XML.
      See Also:
      formatXML(), http://www.jooq.org/xsd/jooq-export-3.10.0.xsd
    • intoXML

      @NotNull @NotNull Document intoXML(XMLFormat format)
      Get this result as XML.
      See Also:
      formatXML(), http://www.jooq.org/xsd/jooq-export-3.10.0.xsd
    • intoXML

      @NotNull <H extends ContentHandler> H intoXML(H handler) throws SAXException
      Get this result as XML using a SAX ContentHandler.
      Parameters:
      handler - The custom content handler.
      Returns:
      The argument content handler is returned for convenience.
      Throws:
      SAXException
      See Also:
      formatXML(), http://www.jooq.org/xsd/jooq-export-3.10.0.xsd
    • intoXML

      @NotNull <H extends ContentHandler> H intoXML(H handler, XMLFormat format) throws SAXException
      Get this result as XML using a SAX ContentHandler.
      Parameters:
      handler - The custom content handler.
      Returns:
      The argument content handler is returned for convenience.
      Throws:
      SAXException
      See Also:
      formatXML(), http://www.jooq.org/xsd/jooq-export-3.10.0.xsd