Class IndentingReporter

java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
java.io.PrintStream
eu.pedu.lib20s.dbg.IndentingPrintStream
eu.pedu.lib20s.dbg.IndentingReporter
All Implemented Interfaces:
java.io.Closeable, java.io.Flushable, java.lang.Appendable, java.lang.AutoCloseable

public class IndentingReporter
extends IndentingPrintStream
Instance třídy IndentingReporter představují zpravodaje, kteří jsou schopni získávat informace o volajících metodách a zapisovat požadované informace do zadaného výstupního proudu tak, aby vynikla hierarchie volání, případně jiná požadovaná hierarchie.
  • Field Summary

    Fields inherited from class eu.pedu.lib20s.dbg.IndentingPrintStream

    DEFAULT_ENCODING

    Fields inherited from class java.io.FilterOutputStream

    out
  • Constructor Summary

    Constructors 
    Constructor Description
    IndentingReporter​(java.io.OutputStream stream, java.lang.String codepage)
    Vytvoří zpravodaje zapisujícího do zadaného výstupního proudu a používajícího zadané kódování.
  • Method Summary

    Modifier and Type Method Description
    IndentingReporter append​(char c)
    IndentingReporter append​(java.lang.CharSequence csq)
    Přebíjím jenom proto, abych dostal požadovaný typ návratové hodnoty.
    IndentingReporter append​(java.lang.CharSequence csq, int start, int end)
    IndentingReporter format​(java.lang.String format, java.lang.Object... args)
    IndentingReporter format​(java.util.Locale l, java.lang.String format, java.lang.Object... args)
    static java.lang.String getCallerName()
    Vrátí řetězec s jednoduchým názvem třídy a její metody volající tuto metodu.
    static IndentingReporter getInstance​(java.io.OutputStream stream)
    Vytvoří zpravodaje zapisujícího do zadaného výstupního proudu a používajícího kódování DEFAULT_ENCODING.
    static IndentingReporter getInstance​(java.io.OutputStream stream, java.lang.String codepage)
    Vytvoří zpravodaje zapisujícího do zadaného výstupního proudu a používajícího zadané kódování.
    static IndentingReporter getSensitiveSystemReporter()
    Vrátí instanci zpravodaje zapisující na standardní výstup.
    static IndentingReporter getSystemReporter()
    Vrátí instanci zpravodaje zapisující na standardní výstup.
    static IndentingReporter getSystemReporter​(java.lang.String encoding)
    Vrátí instanci zpravodaje zapisující na standardní výstup.
    IndentingReporter indent()
    Přidá další úroveň odsazení a odřádkuje.
    IndentingReporter outdent()
    Odebere jednu úroveň odsazení a odřádkuje.
    IndentingReporter printf​(java.lang.String format, java.lang.Object... args)
    IndentingReporter printf​(java.util.Locale l, java.lang.String format, java.lang.Object... args)
    Rodič to převádí na format, který přebíjím
    IndentingReporter report​(java.lang.String text)
    Do odsazovaného výstupu vypíše zadaný text.
    IndentingReporter reportEnd()
    Zmenší pro příští řádky počáteční odsazení, odřádkuje a na další řádek vypíše jednoduchý název třídy a její metody, která tuto metodu zavolala.
    IndentingReporter reportEnd​(int depth, java.lang.String text)
    Je-li zadán text, odřádkuje a vypíše jej; pak zmenší pro příští řádky počáteční odsazení, odřádkuje a na další řádek vypíše jednoduchý název třídy a její metody volající tuto metodu.
    IndentingReporter reportEnd​(int depth, java.util.function.Consumer<IndentingReporter> action)
    Provede zadanou akci, zmenší pro příští řádky počáteční odsazení, odřádkuje a na další řádek vypíše jednoduchý název třídy a její metody volající tuto metodu.
    IndentingReporter reportEnd​(java.lang.String text)
    Vypíše zadaný text, zmenší pro příští řádky počáteční odsazení, odřádkuje a na další řádek vypíše jednoduchý název třídy a její metody volající tuto metodu.
    IndentingReporter reportEnd​(java.util.function.Consumer<IndentingReporter> action)
    Provede zadanou akci, zmenší pro příští řádky počáteční odsazení, odřádkuje a na další řádek vypíše jednoduchý název třídy a její metody volající tuto metodu.
    IndentingReporter reportln​(java.lang.String text)
    Do odsazovaného výstupu vypíše zadaný text a odřádkuje.
    IndentingReporter reportStart()
    Vypíše jednoduchý název třídy a její metody volající tuto metodu, zvýší pro příští řádky odsazení a odřádkuje.
    IndentingReporter reportStart​(int depth, java.lang.String text)
    Vypíše jednoduchý název třídy a její metody volající tuto metodu, zvýší pro příští řádky počáteční odsazení, odřádkuje a vypíše zadaný text.
    IndentingReporter reportStart​(int depth, java.util.function.Consumer<IndentingReporter> action)
    Vypíše jednoduchý název třídy a její metody volající tuto metodu, zvýší pro příští řádky počáteční odsazení, odřádkuje a provede zadanou akci.
    IndentingReporter reportStart​(java.lang.String text)
    Vypíše jednoduchý název třídy a její metody, která tuto metodu zavolala, zvýší pro příští řádky počáteční odsazení, odřádkuje a vypíše zadaný text.
    IndentingReporter reportStart​(java.util.function.Consumer<IndentingReporter> action)
    Vypíše jednoduchý název třídy a její metody volající tuto metodu, zvýší pro příští řádky počáteční odsazení, odřádkuje a provede zadanou akci.

    Methods inherited from class java.io.PrintStream

    clearError, close, flush, checkError, print, print, print, print, print, print, print, print, println, println, println, println, println, println, println, println, println, println, setError, write, write, writeBytes

    Methods inherited from class java.io.OutputStream

    nullOutputStream

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • IndentingReporter

      public IndentingReporter​(java.io.OutputStream stream, java.lang.String codepage) throws java.io.UnsupportedEncodingException
      Vytvoří zpravodaje zapisujícího do zadaného výstupního proudu a používajícího zadané kódování.
      Parameters:
      stream - Dekorovaný proud
      codepage - Kódová stránka vytvořeného proudu
      Throws:
      java.io.UnsupportedEncodingException - Při zadání nepodporovaného kódování
  • Method Details

    • getSensitiveSystemReporter

      public static IndentingReporter getSensitiveSystemReporter()
      Vrátí instanci zpravodaje zapisující na standardní výstup. Pokud taková instance ještě neexistuje, vytvoří ji a nastaví jí kódování DEFAULT_ENCODING.

      Potřebujeme-li změnit kódování systémového výstupu, je třeba nejprve nastavit původní stav (zavolat IndentingPrintStream.returnSystemOut()) a pak požádat o nastavení standardního výstupu se zadaným kódováním.

      Returns:
      Zpravodaj zapisující na standardní výstup
    • getSystemReporter

      public static IndentingReporter getSystemReporter()
      Vrátí instanci zpravodaje zapisující na standardní výstup. Pokud taková instance ještě neexistuje, vytvoří ji a nastaví jí kódování DEFAULT_ENCODING.

      Potřebujeme-li změnit kódování systémového výstupu, je třeba nejprve nastavit původní stav (zavolat IndentingPrintStream.returnSystemOut()) a pak požádat o nastavení standardního výstupu se zadaným kódováním.

      Returns:
      Zpravodaj zapisující na standardní výstup
    • getSystemReporter

      public static IndentingReporter getSystemReporter​(java.lang.String encoding)
      Vrátí instanci zpravodaje zapisující na standardní výstup. Pokud taková instance ještě neexistuje, vytvoří ji a nastaví jí kódování DEFAULT_ENCODING.

      Potřebujeme-li změnit kódování systémového výstupu, je třeba nejprve nastavit původní stav (zavolat IndentingPrintStream.returnSystemOut()) a pak požádat o nastavení standardního výstupu se zadaným kódováním.

      Parameters:
      encoding - Použité kódování výstupu
      Returns:
      Zpravodaj zapisující na standardní výstup
    • getCallerName

      public static java.lang.String getCallerName()
      Vrátí řetězec s jednoduchým názvem třídy a její metody volající tuto metodu.
      Returns:
      Jednoduchý název třídy a její metody volající tuto metodu
    • getInstance

      public static IndentingReporter getInstance​(java.io.OutputStream stream)
      Vytvoří zpravodaje zapisujícího do zadaného výstupního proudu a používajícího kódování DEFAULT_ENCODING.
      Parameters:
      stream - Dekorovaný proud
      Returns:
      Vytvořený zpravodaj
    • getInstance

      public static IndentingReporter getInstance​(java.io.OutputStream stream, java.lang.String codepage)
      Vytvoří zpravodaje zapisujícího do zadaného výstupního proudu a používajícího zadané kódování.
      Parameters:
      stream - Dekorovaný proud
      codepage - Kódová stránka vytvořeného proudu
      Returns:
      Vytvořený zpravodaj
    • reportStart

      public IndentingReporter reportStart()
      Vypíše jednoduchý název třídy a její metody volající tuto metodu, zvýší pro příští řádky odsazení a odřádkuje.
      Returns:
      Odkaz na svoji instanci, aby bylo možno příkazy řetězit
    • reportEnd

      public IndentingReporter reportEnd()
      Zmenší pro příští řádky počáteční odsazení, odřádkuje a na další řádek vypíše jednoduchý název třídy a její metody, která tuto metodu zavolala.
      Returns:
      Odkaz na svoji instanci, aby bylo možno příkazy řetězit
    • reportStart

      public IndentingReporter reportStart​(java.lang.String text)
      Vypíše jednoduchý název třídy a její metody, která tuto metodu zavolala, zvýší pro příští řádky počáteční odsazení, odřádkuje a vypíše zadaný text.
      Parameters:
      text - Text, vypsaný za řádkem s oznámením vstupu do metody Je-li zadán prázdný řetězec nebo null, řádek se nevygeneruje.
      Returns:
      Odkaz na svoji instanci, aby bylo možno příkazy řetězit
    • reportEnd

      public IndentingReporter reportEnd​(java.lang.String text)
      Vypíše zadaný text, zmenší pro příští řádky počáteční odsazení, odřádkuje a na další řádek vypíše jednoduchý název třídy a její metody volající tuto metodu.
      Parameters:
      text - Text, vypsaný za řádkem s oznámením vstupu do metody Je-li zadán prázdný řetězec nebo null, řádek se nevygeneruje.
      Returns:
      Odkaz na svoji instanci, aby bylo možno příkazy řetězit
    • reportStart

      public IndentingReporter reportStart​(int depth, java.lang.String text)
      Vypíše jednoduchý název třídy a její metody volající tuto metodu, zvýší pro příští řádky počáteční odsazení, odřádkuje a vypíše zadaný text.
      Parameters:
      depth - Hloubka dotazu na metodu, jejíž název se vypisuje, pro případ, že by se neměl vypsat název metody bezprostředně volající tuto metodu (pro ni je depth=1, ale název některé z metod, které ji volají až zprostředkovaně – viz CallerReporter.getCallerName(int, int)
      text - Text, vypsaný za řádkem s názvem metody Je-li zadán prázdný řetězec nebo null, řádek se nevygeneruje.
      Returns:
      Odkaz na svoji instanci, aby bylo možno příkazy řetězit
    • reportEnd

      public IndentingReporter reportEnd​(int depth, java.lang.String text)
      Je-li zadán text, odřádkuje a vypíše jej; pak zmenší pro příští řádky počáteční odsazení, odřádkuje a na další řádek vypíše jednoduchý název třídy a její metody volající tuto metodu.
      Parameters:
      depth - Hloubka dotazu na metodu, jejíž název se vypisuje, pro případ, že by se neměl vypsat název metody bezprostředně volající tuto metodu (pro ni je depth=1, ale název některé z metod, které ji volají až zprostředkovaně – viz CallerReporter.getCallerName(int, int)
      text - Text, vypsaný před řádkem s oznámením výstupu z metody Je-li zadán prázdný řetězec nebo null, řádek se nevygeneruje.
      Returns:
      Jednoduchý název třídy a její metody volající tuto metodu
    • reportStart

      public IndentingReporter reportStart​(java.util.function.Consumer<IndentingReporter> action)
      Vypíše jednoduchý název třídy a její metody volající tuto metodu, zvýší pro příští řádky počáteční odsazení, odřádkuje a provede zadanou akci.
      Parameters:
      action - Akce, která se má provést po vypsání řádku s názvem třídy a metody
      Returns:
      Jednoduchý název třídy a její metody volající tuto metodu
    • reportEnd

      public IndentingReporter reportEnd​(java.util.function.Consumer<IndentingReporter> action)
      Provede zadanou akci, zmenší pro příští řádky počáteční odsazení, odřádkuje a na další řádek vypíše jednoduchý název třídy a její metody volající tuto metodu.
      Parameters:
      action - Akce, která se má provést po vypsání řádku s názvem třídy a metody
      Returns:
      Jednoduchý název třídy a její metody volající tuto metodu
    • reportStart

      public IndentingReporter reportStart​(int depth, java.util.function.Consumer<IndentingReporter> action)
      Vypíše jednoduchý název třídy a její metody volající tuto metodu, zvýší pro příští řádky počáteční odsazení, odřádkuje a provede zadanou akci.
      Parameters:
      depth - Hloubka dotazu na metodu, jejíž název se vypisuje, pro případ, že by se neměl vypsat název metody bezprostředně volající tuto metodu (pro ni je depth=1, ale název některé z metod, které ji volají až zprostředkovaně – viz CallerReporter.getCallerName(int, int)
      action - Akce, která se má provést po vypsání řádku s názvem třídy a metody
      Returns:
      Jednoduchý název třídy a její metody volající tuto metodu
    • reportEnd

      public IndentingReporter reportEnd​(int depth, java.util.function.Consumer<IndentingReporter> action)
      Provede zadanou akci, zmenší pro příští řádky počáteční odsazení, odřádkuje a na další řádek vypíše jednoduchý název třídy a její metody volající tuto metodu.
      Parameters:
      depth - Hloubka dotazu na metodu, jejíž název se vypisuje, pro případ, že by se neměl vypsat název metody bezprostředně volající tuto metodu (pro ni je depth=1, ale název některé z metod, které ji volají až zprostředkovaně – viz CallerReporter.getCallerName(int, int)
      action - Akce, která se má provést po vypsání řádku s názvem třídy a metody
      Returns:
      Jednoduchý název třídy a její metody volající tuto metodu
    • report

      public IndentingReporter report​(java.lang.String text)
      Do odsazovaného výstupu vypíše zadaný text.
      Parameters:
      text - Vypisovaný text
      Returns:
      Odkaz na instanci pro možnost zřetězení
    • reportln

      public IndentingReporter reportln​(java.lang.String text)
      Do odsazovaného výstupu vypíše zadaný text a odřádkuje.
      Parameters:
      text - Vypisovaný text
      Returns:
      Odkaz na svoji instanci, aby bylo možno příkazy řetězit
    • append

      public IndentingReporter append​(java.lang.CharSequence csq)
      Přebíjím jenom proto, abych dostal požadovaný typ návratové hodnoty.
      Specified by:
      append in interface java.lang.Appendable
      Overrides:
      append in class IndentingPrintStream
      Parameters:
      csq - Připojovaná posloupnost znaků
      Returns:
      Odkaz na svoji instanci, aby bylo možno příkazy řetězit
    • append

      public IndentingReporter append​(java.lang.CharSequence csq, int start, int end)
      Specified by:
      append in interface java.lang.Appendable
      Overrides:
      append in class IndentingPrintStream
      Parameters:
      csq - Připojovaná posloupnost znaků
      start - Index prvního přidávaného znaku
      end - Index znaku za posledním přidávaným znakem
      Returns:
      Odkaz na svoji instanci, aby bylo možno příkazy řetězit
    • append

      public IndentingReporter append​(char c)
      Specified by:
      append in interface java.lang.Appendable
      Overrides:
      append in class IndentingPrintStream
      Parameters:
      c - Přidávaný znak
      Returns:
      Odkaz na svoji instanci, aby bylo možno příkazy řetězit
    • format

      public IndentingReporter format​(java.lang.String format, java.lang.Object... args)
      Overrides:
      format in class IndentingPrintStream
      Parameters:
      format - Formát vraceného textu
      args - Parametry, jejichž hodnoty se budou tisknout
      Returns:
      Odkaz na svoji instanci, aby bylo možno příkazy řetězit
    • format

      public IndentingReporter format​(java.util.Locale l, java.lang.String format, java.lang.Object... args)
      Overrides:
      format in class IndentingPrintStream
      Parameters:
      l - Použité Locale
      format - Formát vraceného textu
      args - Parametry, jejichž hodnoty se budou tisknout
      Returns:
      Odkaz na svoji instanci, aby bylo možno příkazy řetězit
    • indent

      public IndentingReporter indent()
      Přidá další úroveň odsazení a odřádkuje. Další řádek tak bude o jedno odsazení bohatší.
      Overrides:
      indent in class IndentingPrintStream
      Returns:
      Odkaz na svoji instanci, aby bylo možno příkazy řetězit
    • outdent

      public IndentingReporter outdent()
      Odebere jednu úroveň odsazení a odřádkuje. Další řádek tak bude o jedno odsazení chudší.
      Overrides:
      outdent in class IndentingPrintStream
      Returns:
      Odkaz na svoji instanci, aby bylo možno příkazy řetězit
    • printf

      public IndentingReporter printf​(java.lang.String format, java.lang.Object... args)
      Overrides:
      printf in class IndentingPrintStream
      Parameters:
      format - Formát vraceného textu
      args - Parametry, jejichž hodnoty se budou tisknout
      Returns:
      Odkaz na svoji instanci, aby bylo možno příkazy řetězit
    • printf

      public IndentingReporter printf​(java.util.Locale l, java.lang.String format, java.lang.Object... args)
      Rodič to převádí na format, který přebíjím
      Overrides:
      printf in class IndentingPrintStream
      Parameters:
      l - Použité Locale
      format - Formát vraceného textu
      args - Parametry, jejichž hodnoty se budou tisknout
      Returns:
      Odkaz na svoji instanci, aby bylo možno příkazy řetězit