Class CsvRow

java.lang.Object
com.onenetwork.platform.integ.csv.CsvRow

public class CsvRow
extends java.lang.Object
Represents a row of values parsed from a CSV (comma-separated values) file. During construction, zero-based index positions are mapped to logical column names, and all access to values after construction is required to use the logical column names.

All column names are supplied to this class externally - see such as CsvTransformer for column naming conventions.

  • Field Summary

    Fields 
    Modifier and Type Field Description
    static char DEFAULT_COMMENT  
    static char DEFAULT_DELIMITER  
    static char DEFAULT_QUOTE  
    static java.util.regex.Pattern FORMULA_INJECTION  
    static java.lang.String NEWLINE  
  • Constructor Summary

    Constructors 
    Constructor Description
    CsvRow​(java.util.Map<java.lang.String,​java.lang.Integer> positionByColumnName, java.util.List<java.lang.String> values)  
    CsvRow​(java.util.Map<java.lang.String,​java.lang.Integer> positionByColumnName, java.util.List<java.lang.String> values, java.lang.String delimiter)  
  • Method Summary

    Modifier and Type Method Description
    static java.lang.String escapeValIfNecessary​(java.lang.String val)  
    static java.lang.String escapeValIfNecessary​(java.lang.String val, java.lang.String delimiter, java.lang.String quote)  
    static java.lang.String escapeValIfNecessary​(java.lang.String val, java.lang.String delimiter, java.lang.String quote, boolean preventFormulaInjection)  
    java.lang.String get​(java.lang.String column)  
    java.util.List<java.lang.String> getAllColumnNames()  
    static char getDelimiterCharValue​(java.lang.String delimiter)
    Returns the char value for provided string delimiter.
    int getPosition​(java.lang.String column)  
    void set​(int position, java.lang.String value)  
    void set​(java.lang.String column, java.lang.String value)  
    void set​(java.util.List<java.lang.String> values)
    Performance method to avoid creating CsvRow every time that in turn avoids constructing header metadata everytime.
    void setLocalizedColumnNames​(java.util.Map<java.lang.String,​java.lang.String> localizedColumnNames)
    Sets map of column name to localized column names
    java.lang.String toCsvRowString​(boolean preventFormulaInjection)
    Returns CsvRow into delimiter separated string format.
    java.lang.String toString()  
    void write​(java.io.Writer writer)
    Writes this CSV row's data to a Writer.
    static void write​(java.util.Collection<? extends CsvRow> rows, java.io.Writer writer)
    Writes a "header" row using the column names in the first CsvRow given, then writes all the given CsvRow data as string to the given Writer.
    static void write​(java.util.Collection<? extends CsvRow> rows, java.io.Writer writer, boolean includesHeader)
    Writes all the given CsvRows as string to the given Writer; optionally, the column information in the first row can be written as a header row.
    void writeHeader​(java.io.Writer writer)
    Writes a header representing this CSV's column names to a Writer.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

  • Constructor Details

    • CsvRow

      public CsvRow​(java.util.Map<java.lang.String,​java.lang.Integer> positionByColumnName, java.util.List<java.lang.String> values)
      Parameters:
      positionByColumnName - lookup of column name to indexed position (zero-based) location in list
      values - list of String values in the CSV row (uses comma as delimiter)
    • CsvRow

      public CsvRow​(java.util.Map<java.lang.String,​java.lang.Integer> positionByColumnName, java.util.List<java.lang.String> values, java.lang.String delimiter)
      Parameters:
      positionByColumnName - lookup of column name to indexed position (zero-based) location in list
      values - list of String values in the CSV row
      delimiter - delimiter to be used
  • Method Details

    • set

      public void set​(java.util.List<java.lang.String> values)
      Performance method to avoid creating CsvRow every time that in turn avoids constructing header metadata everytime.
      Parameters:
      values - list of String values in the CSV row, the list should be contain any null values.
    • get

      public java.lang.String get​(java.lang.String column)
      Parameters:
      column - column name
      Returns:
      value
    • set

      public void set​(java.lang.String column, java.lang.String value)
      Parameters:
      column - column name
      value - new value; may not be null. If the value is unspecified, use the empty string ("")
    • set

      public void set​(int position, java.lang.String value)
      Parameters:
      position -
      value - new value; may not be null. If the value is unspecified, use the empty string ("")
    • getPosition

      public int getPosition​(java.lang.String column)
    • getAllColumnNames

      public java.util.List<java.lang.String> getAllColumnNames()
    • setLocalizedColumnNames

      public void setLocalizedColumnNames​(java.util.Map<java.lang.String,​java.lang.String> localizedColumnNames)
      Sets map of column name to localized column names
    • toCsvRowString

      public java.lang.String toCsvRowString​(boolean preventFormulaInjection)
      Returns CsvRow into delimiter separated string format.
      Parameters:
      preventFormulaInjectionis - If the flag is set/true then it prevent formula injection while creating CsvRow.
    • writeHeader

      public void writeHeader​(java.io.Writer writer) throws java.io.IOException
      Writes a header representing this CSV's column names to a Writer.
      Parameters:
      writer - destination
      Throws:
      java.io.IOException
    • write

      public void write​(java.io.Writer writer) throws java.io.IOException
      Writes this CSV row's data to a Writer.
      Parameters:
      writer - destination
      Throws:
      java.io.IOException
    • toString

      public java.lang.String toString()
      Overrides:
      toString in class java.lang.Object
      See Also:
      toString implementation useful for debugging only.
    • escapeValIfNecessary

      public static java.lang.String escapeValIfNecessary​(java.lang.String val)
      Parameters:
      val - value to escape if required
      Returns:
      escaped value, using default delimiter (comma) and quote (double-quote)
    • escapeValIfNecessary

      public static java.lang.String escapeValIfNecessary​(java.lang.String val, java.lang.String delimiter, java.lang.String quote)
      Parameters:
      val - value to escape if required
      delimiter - delimiter to escape
      quote - quote character to use for escaping
      Returns:
      escaped value
    • escapeValIfNecessary

      public static java.lang.String escapeValIfNecessary​(java.lang.String val, java.lang.String delimiter, java.lang.String quote, boolean preventFormulaInjection)
    • write

      public static void write​(java.util.Collection<? extends CsvRow> rows, java.io.Writer writer) throws java.io.IOException
      Writes a "header" row using the column names in the first CsvRow given, then writes all the given CsvRow data as string to the given Writer.

      User write(Collection rows, Writer writer, boolean includeHeader) with false flag instead if the first row is not the header row.

      Parameters:
      rows - csv rows to be written
      writer - destination
      Throws:
      java.io.IOException
    • write

      public static void write​(java.util.Collection<? extends CsvRow> rows, java.io.Writer writer, boolean includesHeader) throws java.io.IOException
      Writes all the given CsvRows as string to the given Writer; optionally, the column information in the first row can be written as a header row.
      Parameters:
      rows - csvs to be written
      writer - destination
      includesHeader - whether to write the first row's columns as a header row
      Throws:
      java.io.IOException
    • getDelimiterCharValue

      public static char getDelimiterCharValue​(java.lang.String delimiter)
      Returns the char value for provided string delimiter.