Package csv.impl

Class AbstractColumnFilter

java.lang.Object
csv.impl.AbstractColumnFilter
All Implemented Interfaces:
TableReader, Iterable<Object[]>, Iterator<Object[]>
Direct Known Subclasses:
DefaultColumnFilter

public abstract class AbstractColumnFilter extends Object implements TableReader
Filters columns from underlying table reader. This is an abstract implementation only that eases filtering. Most of the methods are forwared to underlying reader.
Author:
ralph
  • Constructor Details

    • AbstractColumnFilter

      public AbstractColumnFilter(TableReader reader)
      Constructor.
      Parameters:
      reader - the reader this filter shall process
  • Method Details

    • getReader

      protected TableReader getReader()
      Returns the underlying reader.
      Returns:
      the reader
    • close

      public void close()
      Closes the underlying reader.
      Specified by:
      close in interface TableReader
      See Also:
    • get

      public Object get(String name, Object[] row)
      Forwarded to underlying reader.
      Parameters:
      name - name of column (from header row)
      row - row of values
      Returns:
      the value in the respective column
      See Also:
    • getColumnIndex

      public int getColumnIndex(String name)
      Returns the column index of given column name. The first column with given name will be returned.
      Specified by:
      getColumnIndex in interface TableReader
      Parameters:
      name - name of column
      Returns:
      index of column or -1 if it does not exist.
    • getHeaderRow

      public Object[] getHeaderRow()
      Returns the header row. Please note that header rows are never delivered through Iterator.next().
      Specified by:
      getHeaderRow in interface TableReader
      Returns:
      header row if such was defined.
    • getMinimumColumnCount

      public int getMinimumColumnCount()
      Returns the minimum number of columns to be returned by Iterator.next().
      Specified by:
      getMinimumColumnCount in interface TableReader
      Returns:
      length number of columns
    • hasHeaderRow

      public boolean hasHeaderRow()
      Tells whether the underlying stream has a header row or not
      Specified by:
      hasHeaderRow in interface TableReader
      Returns:
      true if there is a header row.
    • open

      public void open()
      Opens the reader or resets it.
      Specified by:
      open in interface TableReader
    • iterator

      public Iterator<Object[]> iterator()
      Specified by:
      iterator in interface Iterable<Object[]>
    • registerCommentCallBack

      public void registerCommentCallBack(CommentCallback callback)
      Registers a comment callback. The callback will be executed when a comment is detected in input. Note that not all implementations actually support comments.
      Specified by:
      registerCommentCallBack in interface TableReader
      Parameters:
      callback - callback to be registered
    • reset

      public void reset()
      Resets the reader.
      Specified by:
      reset in interface TableReader
    • setHasHeaderRow

      public void setHasHeaderRow(boolean hasHeaderRow)
      Tells the reader whether the underlying stream will treat first row as header row.
      Specified by:
      setHasHeaderRow in interface TableReader
      Parameters:
      hasHeaderRow - true if there is a header row.
    • setMinimumColumnCount

      public void setMinimumColumnCount(int length)
      Sets the minimum number of columns to be returned by Iterator.next().
      Specified by:
      setMinimumColumnCount in interface TableReader
      Parameters:
      length - number of columns
    • unregisterCommentCallBack

      public void unregisterCommentCallBack(CommentCallback callback)
      Unregisters a comment callback. Note that not all implementations actually support comments.
      Specified by:
      unregisterCommentCallBack in interface TableReader
      Parameters:
      callback - callback to be unregistered
    • hasNext

      public boolean hasNext()
      Specified by:
      hasNext in interface Iterator<Object[]>
    • getRowIndex

      protected int getRowIndex()
      Returns the index of current row (delivered rows only)
      Returns:
      the rowIndex
    • next

      public Object[] next()
      Specified by:
      next in interface Iterator<Object[]>
    • filter

      protected Object[] filter(Object[] row)
      Filters columns within a row. Do not override here but override getFilteredIndex(int) instead.
      Parameters:
      row - row to be filtered
      Returns:
      row with filtered column sonly
      See Also:
    • getFilteredIndex

      protected abstract int getFilteredIndex(int originalIndex)
      Returns the index in filtered row of the specified original column index.
      Parameters:
      originalIndex - index of value in row from underlying reader
      Returns:
      index of value in filtered row or -1 if column will not be visible.
    • remove

      public void remove()
      Specified by:
      remove in interface Iterator<Object[]>