Class ReportBuilder<D>

java.lang.Object
org.ujorm.tools.web.report.ReportBuilder<D>
Direct Known Subclasses:
TableBuilder

public class ReportBuilder<D> extends Object
A HTML page builder for table based report with an AJAX support.

Usage

  ReportBuilder.of("Hotel Report")
          .add(Hotel::getName, "Hotel", NAME)
          .add(Hotel::getCity, "City", CITY)
          .add(Hotel::getStreet, "Street")
          .build(ServletRequest, ServletResponse, resource);
 
Author:
Pavel Ponec
  • Field Details

    • gridBuilder

      @NotNull protected final @NotNull GridBuilder<D> gridBuilder
      Grid builder
    • config

      protected final ReportBuilderConfig config
      Table builder config
    • ajaxRequestParam

      @NotNull protected @NotNull HttpParameter ajaxRequestParam
      AJAX request param
    • htmlHeader

      @NotNull protected @NotNull Injector htmlHeader
      Extension is empty by default
    • formAdditions

      @NotNull protected @NotNull Injector formAdditions
      Form injector
    • javascritWriter

      @NotNull protected @NotNull Supplier<Injector> javascritWriter
      Javascript writer
    • ajaxEnabled

      protected boolean ajaxEnabled
      is An AJAX enabled?
    • autoSubmmitOnLoad

      protected boolean autoSubmmitOnLoad
      Call an autosubmit on first load
  • Constructor Details

  • Method Details

    • add

      @NotNull public <V> @NotNull ReportBuilder<D> add(Function<D,V> column)
    • add

      @NotNull public <V> @NotNull ReportBuilder<D> add(Function<D,V> column, CharSequence title)
    • add

      @NotNull public <V> @NotNull ReportBuilder<D> add(Function<D,V> column, Injector title)
    • add

      @NotNull public <V> @NotNull ReportBuilder<D> add(Function<D,V> column, CharSequence title, @Nullable @Nullable HttpParameter param)
    • add

      @NotNull public <V> @NotNull ReportBuilder<D> add(Function<D,V> column, Injector title, @Nullable @Nullable HttpParameter param)
    • addColumn

      @NotNull public @NotNull ReportBuilder<D> addColumn(@NotNull @NotNull Column<D> column, @NotNull @NotNull CharSequence title)
    • addColumn

      @NotNull public @NotNull ReportBuilder<D> addColumn(@NotNull @NotNull Column<D> column, @NotNull @NotNull Injector title)
    • addOrder

      @NotNull public @NotNull ReportBuilder<D> addOrder(@NotNull @NotNull CharSequence title)
      Add new column for a row counting
    • getColumn

      public ColumnModel<D,?> getColumn(int index)
      Get column model by index
    • getColumnSize

      public int getColumnSize()
      Returns a count of columns
    • sortable

      @NotNull public <V> @NotNull ReportBuilder<D> sortable()
      Add a sortable indicator to the last column model
      Returns:
    • sortable

      @NotNull public <V> @NotNull ReportBuilder<D> sortable(@Nullable @org.jetbrains.annotations.Nullable boolean ascending)
      Add a sortable indicator to the last column model
      Parameters:
      ascending - Ascending or descending direction of the sort
      Returns:
    • sortable

      @NotNull public <V> @NotNull ReportBuilder<D> sortable(@NotNull @NotNull Direction direction)
      Add a sortable indicator to the last column model
      Parameters:
      direction - The null value shows an unused sorting action.
      Returns:
    • getSortedColumn

      @NotNull public @NotNull ColumnModel<D,?> getSortedColumn()
      Get sorted column or a stub if the sorted column not found
    • setAjaxRequestParam

      @NotNull public @NotNull ReportBuilder<D> setAjaxRequestParam(@NotNull @NotNull HttpParameter ajaxRequestParam)
    • setHtmlHeader

      @NotNull public @NotNull ReportBuilder<D> setHtmlHeader(@NotNull @NotNull Injector htmlHeader)
    • setHeader

      @NotNull public @NotNull ReportBuilder<D> setHeader(@NotNull @NotNull Injector header)
    • setFooter

      @NotNull public @NotNull ReportBuilder<D> setFooter(@NotNull @NotNull Injector footer)
    • setFormItem

      @NotNull public @NotNull ReportBuilder<D> setFormItem(@NotNull @NotNull Injector formItem)
    • setAjaxEnabled

      public ReportBuilder<D> setAjaxEnabled(boolean ajaxEnabled)
      Enable of disable an AJAX feature, default value si true
    • setJavascritWriter

      public ReportBuilder<D> setJavascritWriter(@NotNull @NotNull Supplier<Injector> javascritWriter)
    • setEmbeddedIcons

      public ReportBuilder<D> setEmbeddedIcons(boolean embeddedIcons) throws IllegalStateException
      Throws:
      IllegalStateException
    • build

      public void build(@NotNull @NotNull HttpContext context, @NotNull @NotNull Stream<D> resource)
      Build the HTML page including a table
    • build

      public void build(@NotNull @NotNull HttpContext context, @NotNull @NotNull Function<GridBuilder<D>,Stream<D>> resource)
      Build the HTML page including a table
    • setSort

      protected void setSort(@NotNull @NotNull ColumnModel sort)
      Mark a column as sortable
    • printHtmlBody

      protected void printHtmlBody(@NotNull @NotNull HttpContext context, @NotNull @NotNull HtmlElement html, @NotNull @NotNull Function<GridBuilder<D>,Stream<D>> resource)
    • printSortedField

      protected void printSortedField(Element parent, HttpContext context)
      The hidden field contains an index of the last sorted column
    • printTableBody

      protected void printTableBody(@NotNull @NotNull Element table, @NotNull @NotNull HttpContext context, @NotNull @NotNull Function<GridBuilder<D>,Stream<D>> resource)
    • doAjax

      protected void doAjax(@NotNull @NotNull HttpContext context, @NotNull @NotNull JsonBuilder output, @NotNull @NotNull Function<GridBuilder<D>,Stream<D>> resource) throws IOException
      Return lighlited text in HTML format according a regular expression
      Parameters:
      context - servlet context
      output - A JSON writer
      Throws:
      IOException - if an I/O error occurs