Class EcsvEncoder


  • public abstract class EcsvEncoder
    extends java.lang.Object
    Converts values for a given column into strings suitable for inclusion in the body of an ECSV file.
    Since:
    28 Apr 2020
    Author:
    Mark Taylor
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected EcsvEncoder​(java.lang.String datatype, java.lang.String subtype)
      Constructor.
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      static EcsvEncoder createEncoder​(uk.ac.starlink.table.ColumnInfo info, char delimiter)
      Returns an encoder suitable for encoding data from a column with given metadata.
      abstract java.lang.String encode​(java.lang.Object value)
      Formats a value of this encoder's datatype for insertion into the body of an ECSV file.
      java.lang.String getDatatype()
      Returns the ECSV datatype handled by this encoder.
      java.lang.String getSubtype()
      Returns the ECSV subtype for this decoder.
      static java.lang.String quoteString​(java.lang.String txt, char delimiter)
      Returns a suitably escaped value of a string, ensuring that no ECSV control characters are present in the result.
      • Methods inherited from class java.lang.Object

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

      • EcsvEncoder

        protected EcsvEncoder​(java.lang.String datatype,
                              java.lang.String subtype)
        Constructor.
        Parameters:
        datatype - datatype name as declared by ECSV
        subtype - subtype string as declared by ECSV, may be null
    • Method Detail

      • encode

        public abstract java.lang.String encode​(java.lang.Object value)
        Formats a value of this encoder's datatype for insertion into the body of an ECSV file. The output string must include any required quoting, for instance it may not include unescaped delimiters, newlines or double quote characters. As a special case, null may be returned instead if no conversion can be performed.
        Parameters:
        value - typed value to encode
        Returns:
        formatted string representation, or null
      • getDatatype

        public java.lang.String getDatatype()
        Returns the ECSV datatype handled by this encoder.
        Returns:
        datatype string
      • getSubtype

        public java.lang.String getSubtype()
        Returns the ECSV subtype for this decoder.
        Returns:
        subtype, may be null
      • createEncoder

        public static EcsvEncoder createEncoder​(uk.ac.starlink.table.ColumnInfo info,
                                                char delimiter)
        Returns an encoder suitable for encoding data from a column with given metadata.
        Parameters:
        info - column metadata
        delimiter - delimiter value, must be comma or space, required to determine quoting details
        Returns:
        encoder, or null for unknown or unsupported data type
      • quoteString

        public static java.lang.String quoteString​(java.lang.String txt,
                                                   char delimiter)
        Returns a suitably escaped value of a string, ensuring that no ECSV control characters are present in the result.
        Parameters:
        txt - raw string
        delimiter - delimiter character to be avoided, must be comma or space
        Returns:
        sanitised version of the string