Class MessagePrinter.Indenting<M extends Message>

java.lang.Object
eu.bandm.tools.message.MessagePrinter<M>
eu.bandm.tools.message.MessagePrinter.Indenting<M>
All Implemented Interfaces:
MessageReceiver<M>
Enclosing class:
MessagePrinter<M extends Message>

public static class MessagePrinter.Indenting<M extends Message> extends MessagePrinter<M>
Specialization of MessagePrinter with addtional features.
  • indenting of messages according to Message.Kind.logStart and Message.Kind.logEnd
  • a SimpleMessage.Ping message is printed as a single character without line feed, for progress indication.
  • colors can be set to highlight errors and warnings.
  • the time between a logstart and corresponding logend can be printed
The string values for indentation and pinging are defined at construction.

Error, warning and hint messages are not indented, for not disturbing their recognition by a parser, e.g. by XEmac's "next-error" function.

  • Field Details

    • pingString

      protected final String pingString
      String given out when receiving a SimpleMessage.Ping message.
    • indentString

      protected final String indentString
      String used to show the current indentation level.
    • showStackTraces

      protected boolean showStackTraces
      Whether stack traces shall be printed.
    • colorStartCritical

      protected String colorStartCritical
      Terminal escape sequence to start the printing of critical errros.
    • colorEndCritical

      protected String colorEndCritical
      Terminal escape sequence to end the printing of critical errros.
    • colorStartWarning

      protected String colorStartWarning
      Terminal escape sequence to start the printing of warnings.
    • colorEndWarning

      protected String colorEndWarning
      Terminal escape sequence to end the printing of warnings.
    • wasPing

      protected boolean wasPing
      Local storage whether the last message received was a SimpleMessage.Ping.
    • level

      protected int level
      Local storage for the current nesting level.
    • timingKey

      @Opt protected @Opt Function<Message,Object> timingKey
      Translating the corresponding Message.Kind.logStart and Message.Kind.logEnd messages to the same key. (For SimpleMessage this would be "m->m.getText()"). When set != null, the timing information will be printed.
    • startTime

      protected Map<Object,Long> startTime
      Memorizes the time stamp for an incoming Message.Kind.logStart
    • DEFAULT_INDENT_STRING

      public static final String DEFAULT_INDENT_STRING
      default value for the indent string, is "| ".
      See Also:
    • DEFAULT_PING_STRING

      public static final String DEFAULT_PING_STRING
      default value for the ping string, is ".".
      See Also:
  • Constructor Details

    • Indenting

      public Indenting(OutputStream os)
      Takes default values for indent and ping string, behaves like the super constructor.
      Parameters:
      os - the target of all text output
    • Indenting

      public Indenting(PrintWriter out)
      Takes default values for indent and ping string, behaves like the super constructor.
      Parameters:
      out - the target of all text output
    • Indenting

      public Indenting(OutputStream os, String ps, String is, boolean sst)
      Takes explitly values for ping string and indent string. Apart from that it behaves like the super constructor.
      Parameters:
      os - the target of all text output
      ps - the string to write a "Ping" to output.
      is - the string to make indentation for log-message nesting.
      sst - whether to show stack traces in of error messages.
    • Indenting

      public Indenting(PrintWriter out, String ps, String is, boolean sst)
      Constructor which takes explitly values for ping string and indent string. Apart from that behaves like the super constructor.
      Parameters:
      out - the target of all text output
      ps - the string to write a "Ping" to output.
      is - the string to make indentation for log-message nesting.
      sst - whether to show stack traces in of error messages.
  • Method Details

    • setShowStackTraces

      public void setShowStackTraces(boolean sst)
      Whether the stack traces of Message.cause shall be printed.
      Parameters:
      sst - new value of that flag.
    • setCriticalColor

      public void setCriticalColor(@Opt @Opt String colorStartCritical, @Opt @Opt String colorEndCritical)
      Sets the terminal escape sequences for starting and ending the printing of a critical message (error or failure, etc). Null inputs are permitted and mean empty strings.
      Parameters:
      colorStartCritical - the terminal control string to switch to a critical warning color.
      colorEndCritical - the terminal control string to switch back from critical warning color to normal color.
    • setWarningColor

      public void setWarningColor(@Opt @Opt String colorStartWarning, @Opt @Opt String colorEndWarning)
      Sets the terminal escape sequences for starting and ending the printing of a warning message. Null inputs are permitted and mean empty strings.
      Parameters:
      colorStartWarning - the terminal control string to switch to a critical warning color.
      colorEndWarning - the terminal control string to switch back from critical warning color to normal color.
    • receive

      public void receive(M message)
      Receive a message, format its text and arguments, and send the text result to the drain MessagePrinter.out. Possibly color-change terminal command strings are sent.
      Specified by:
      receive in interface MessageReceiver<M extends Message>
      Overrides:
      receive in class MessagePrinter<M extends Message>
      Parameters:
      message - the message to vsualizs.