Class CsvRow


  • public final class CsvRow
    extends Object
    A row in a CSV file.

    Represents a single row in a CSV file, accessed via CsvFile. Each row object provides access to the data in the row by field index. If the CSV file has headers, the headers can also be used to lookup the fields.

    • Method Detail

      • headers

        public ImmutableList<String> headers()
        Gets the header row.

        If there is no header row, an empty list is returned.

        Returns:
        the header row
      • lineNumber

        public int lineNumber()
        Gets the line number in the source file.
        Returns:
        the line number
      • fields

        public ImmutableList<String> fields()
        Gets all fields in the row.
        Returns:
        the fields
      • fieldCount

        public int fieldCount()
        Gets the number of fields.

        This will never be less than the number of headers.

        Returns:
        the number of fields
      • field

        public String field​(int index)
        Gets the specified field.
        Parameters:
        index - the field index
        Returns:
        the field
        Throws:
        IndexOutOfBoundsException - if the field index is invalid
      • getField

        public String getField​(String header)
        Gets a single field value from the row by header.

        This returns the value of the first column where the header matches the specified header. Matching is case insensitive.

        Parameters:
        header - the column header
        Returns:
        the field value, trimmed unless surrounded by quotes
        Throws:
        IllegalArgumentException - if the header is not found
      • findField

        public Optional<String> findField​(String header)
        Gets a single field value from the row by header.

        This returns the value of the first column where the header matches the specified header. Matching is case insensitive.

        Parameters:
        header - the column header
        Returns:
        the field value, trimmed unless surrounded by quotes, empty if not found
      • getField

        public String getField​(Pattern headerPattern)
        Gets a single field value from the row by header pattern.

        This returns the value of the first column where the header matches the specified header pattern.

        Parameters:
        headerPattern - the header pattern to match
        Returns:
        the field value, trimmed unless surrounded by quotes
        Throws:
        IllegalArgumentException - if the header is not found
      • findField

        public Optional<String> findField​(Pattern headerPattern)
        Gets a single field value from the row by header pattern.

        This returns the value of the first column where the header matches the specified header pattern.

        Parameters:
        headerPattern - the header pattern to match
        Returns:
        the field value, trimmed unless surrounded by quotes, empty if not found
      • getValue

        public String getValue​(String header)
        Gets a single field value from the row by header

        This returns the value of the first column where the header matches the specified header. If the header is not found or the value found is an empty string, then an IllegalArgumentException is thrown.

        Parameters:
        header - the column header
        Returns:
        the field value, trimmed unless surrounded by quotes
        Throws:
        IllegalArgumentException - if the header is not found or if the value in the field is empty.
      • findValue

        public Optional<String> findValue​(String header)
        Gets a single value from the row by header.

        This returns the value of the first column where the header matches the specified header pattern. If the value is an empty string, then an empty optional is returned.

        Parameters:
        header - the column header
        Returns:
        the field value, trimmed unless surrounded by quotes, empty if not found
      • getValue

        public String getValue​(Pattern headerPattern)
        Gets a single field value from the row by header pattern

        This returns the value of the first column where the header matches the specified header pattern. If the header is not found or the value found is an empty string, then an IllegalArgumentException is thrown.

        Parameters:
        headerPattern - the header pattern to match
        Returns:
        the field value, trimmed unless surrounded by quotes
        Throws:
        IllegalArgumentException - if the header is not found or if the value in the field is empty.
      • findValue

        public Optional<String> findValue​(Pattern headerPattern)
        Gets a single value from the row by header pattern.

        This returns the value of the first column where the header matches the specified header pattern. If the value is an empty string, then an empty optional is returned.

        Parameters:
        headerPattern - the header pattern to match
        Returns:
        the field value, trimmed unless surrounded by quotes, empty if not found
      • subRow

        public CsvRow subRow​(int startInclusive)
        Obtains a sub-row, containing a selection of fields by index.

        All fields after the specified index are included.

        Parameters:
        startInclusive - the start index, zero-based, inclusive
        Returns:
        the sub row
      • subRow

        public CsvRow subRow​(int startInclusive,
                             int endExclusive)
        Obtains a sub-row, containing a selection of fields by index.
        Parameters:
        startInclusive - the start index, zero-based, inclusive
        endExclusive - the end index, zero-based, exclusive
        Returns:
        the sub row
      • equals

        public boolean equals​(Object obj)
        Checks if this CSV file equals another.

        The comparison checks the content.

        Overrides:
        equals in class Object
        Parameters:
        obj - the other file, null returns false
        Returns:
        true if equal
      • hashCode

        public int hashCode()
        Returns a suitable hash code for the CSV file.
        Overrides:
        hashCode in class Object
        Returns:
        the hash code
      • toString

        public String toString()
        Returns a string describing the CSV file.
        Overrides:
        toString in class Object
        Returns:
        the descriptive string