Class BaseFileWriter

  • All Implemented Interfaces:
    Closeable, Flushable, Appendable, AutoCloseable

    public class BaseFileWriter
    extends TableWriter
    Wraps a writer stream and provides methods for easier creation of BASEfiles. All methods that start with base are used for BASEfile specified formatting. It is also possible to use the regular PrintWriter methods for special cases.

    A BASEfile is divided in sections. Each section has a header part and a data part. To start a new section use baseBeginSection(String). When a section has been started use basePrintHeader(String, Object) or one of the overloaded methods to print headers for that section. To end the header part and start the data part, use baseBeginDataPart() and then basePrintData(Object...) to print data lines. When all data has been printed either start a new section or end the current section with baseEndSection().

    Version:
    2.12
    Author:
    Nicklas
    Last modified
    $Date: 2010-08-13 10:50:27 +0200 (fr, 13 aug 2010) $
    • Field Detail

      • metadataPrefix

        private String metadataPrefix
      • currentSection

        private String currentSection
      • hasBom

        private boolean hasBom
      • headerPart

        private boolean headerPart
      • dataPart

        private boolean dataPart
    • Constructor Detail

      • BaseFileWriter

        public BaseFileWriter​(Writer out)
        Create a new BASEfile writer that is writing it's output to the given writer. The file prefix 'BASEfile' is automatically written.
        Parameters:
        out - The writer to write the data to
    • Method Detail

      • getCurrentSection

        public String getCurrentSection()
        Returns:
        The name of the current section, or null if no section has been started.
      • isWritingHeaders

        public boolean isWritingHeaders()
        Returns:
        TRUE if this writer is currently in the header part of a section, FALSE if no section is started or if the writer is in the data part
      • isWritingData

        public boolean isWritingData()
        Returns:
        TRUE if this writer is currently in the data part of a section, FALSE if no section is started or if the writer is in the header part
      • setMode

        protected void setMode​(boolean headerPart,
                               boolean dataPart)
      • getMetadataPrefix

        public String getMetadataPrefix()
        The metadata prefix is written to the beginning of each line that is not a data line. The default value is an empty string.

        Tip! Settting this value to '#' makes it possible to send a BASEfile to gnuplot.

        Returns:
        The current value of the metadata prefix
      • setMetadataPrefix

        public void setMetadataPrefix​(String metaDataPrefix)
        Change the metadata prefix string.
        Parameters:
        metaDataPrefix - The new metadata prefix
      • baseWriteBom

        public void baseWriteBom()
        Write the beginning-of-file marker (BASEfile) to the output. This method must be called before it is possible to writer other data to the file.
      • baseBeginSection

        public void baseBeginSection​(String name)
        Start a new section in the BASEfile. If the current section hasn't been ended, baseEndSection() is automatically called to end it. After this call the BASEfile is ready for writing headers to the new section.

        If the beginning-of-file-marker hasn't been written the baseWriteBom() is automatically called.

        Parameters:
        name - The name of the section
      • baseEndSection

        public void baseEndSection()
        Ends the current section by writing an empty line.
      • basePrintHeader

        public <T> void basePrintHeader​(String key,
                                        Object value)
        Prints a header in the BASEfile. This call is ignored if no section has been started or if the current section is currently in data writing mode. Line breaks (\n) and carriage returns (\r) in the value are converted to the literal string values '\n' and '\r'.
        Parameters:
        key - The header key, 'section' is not allowed
        value - The value, if null the configured null value is used, otherwise the toString() method is called
        Throws:
        InvalidDataException - If the key is 'section'
      • baseBeginDataPart

        public void baseBeginDataPart()
        End the header part of the current section (by writing a single % on a line by itself) and start the data part. The call to this method is ignored if no section has been started or if the data part of the current section has alredy been started.
      • basePrintData

        public void basePrintData​(Object... data)
        Print a data line to the BASEfile. Each value is separated by the data separator string ('tab' by default). Null values are replaced with the null value string (empty string by default). Non-null objects are converted to strings values by calling their toString() method.

        This call is ignored if the data part has not been started.

        Parameters:
        data - The values to write
        See Also:
        isWritingData(), baseBeginDataPart()
      • baseEscape

        public String baseEscape​(String in)
        Escape new line and carrige return characters in the input to the literal string '\n' and '\r' in the output.
        Parameters:
        in - The input string