Package csv.impl
Class AbstractColumnFilter
java.lang.Object
csv.impl.AbstractColumnFilter
- All Implemented Interfaces:
TableReader,java.lang.Iterable<java.lang.Object[]>,java.util.Iterator<java.lang.Object[]>
- Direct Known Subclasses:
DefaultColumnFilter
public abstract class AbstractColumnFilter extends java.lang.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 Summary
Constructors Constructor Description AbstractColumnFilter(TableReader reader)Constructor. -
Method Summary
Modifier and Type Method Description voidclose()Closes the underlying reader.protected java.lang.Object[]filter(java.lang.Object[] row)Filters columns within a row.java.lang.Objectget(java.lang.String name, java.lang.Object[] row)Forwarded to underlying reader.intgetColumnIndex(java.lang.String name)Returns the column index of given column name.protected abstract intgetFilteredIndex(int originalIndex)Returns the index in filtered row of the specified original column index.java.lang.Object[]getHeaderRow()Returns the header row.intgetMinimumColumnCount()Returns the minimum number of columns to be returned byIterator.next().protected TableReadergetReader()Returns the underlying reader.protected intgetRowIndex()Returns the index of current row (delivered rows only)booleanhasHeaderRow()Tells whether the underlying stream has a header row or notbooleanhasNext()java.util.Iterator<java.lang.Object[]>iterator()java.lang.Object[]next()voidopen()Opens the reader or resets it.voidregisterCommentCallBack(CommentCallback callback)Registers a comment callback.voidremove()voidreset()Resets the reader.voidsetHasHeaderRow(boolean hasHeaderRow)Tells the reader whether the underlying stream will treat first row as header row.voidsetMinimumColumnCount(int length)Sets the minimum number of columns to be returned byIterator.next().voidunregisterCommentCallBack(CommentCallback callback)Unregisters a comment callback.
-
Constructor Details
-
AbstractColumnFilter
Constructor.- Parameters:
reader- the reader this filter shall process
-
-
Method Details
-
getReader
Returns the underlying reader.- Returns:
- the reader
-
close
public void close()Closes the underlying reader.- Specified by:
closein interfaceTableReader- See Also:
TableReader.close()
-
get
public java.lang.Object get(java.lang.String name, java.lang.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:
AbstractTableReader.get(String, Object[])
-
getColumnIndex
public int getColumnIndex(java.lang.String name)Returns the column index of given column name. The first column with given name will be returned.- Specified by:
getColumnIndexin interfaceTableReader- Parameters:
name- name of column- Returns:
- index of column or -1 if it does not exist.
-
getHeaderRow
public java.lang.Object[] getHeaderRow()Returns the header row. Please note that header rows are never delivered throughIterator.next().- Specified by:
getHeaderRowin interfaceTableReader- Returns:
- header row if such was defined.
-
getMinimumColumnCount
public int getMinimumColumnCount()Returns the minimum number of columns to be returned byIterator.next().- Specified by:
getMinimumColumnCountin interfaceTableReader- Returns:
- length number of columns
-
hasHeaderRow
public boolean hasHeaderRow()Tells whether the underlying stream has a header row or not- Specified by:
hasHeaderRowin interfaceTableReader- Returns:
- true if there is a header row.
-
open
public void open()Opens the reader or resets it.- Specified by:
openin interfaceTableReader
-
iterator
public java.util.Iterator<java.lang.Object[]> iterator()- Specified by:
iteratorin interfacejava.lang.Iterable<java.lang.Object[]>
-
registerCommentCallBack
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:
registerCommentCallBackin interfaceTableReader- Parameters:
callback- callback to be registered
-
reset
public void reset()Resets the reader.- Specified by:
resetin interfaceTableReader
-
setHasHeaderRow
public void setHasHeaderRow(boolean hasHeaderRow)Tells the reader whether the underlying stream will treat first row as header row.- Specified by:
setHasHeaderRowin interfaceTableReader- Parameters:
hasHeaderRow- true if there is a header row.
-
setMinimumColumnCount
public void setMinimumColumnCount(int length)Sets the minimum number of columns to be returned byIterator.next().- Specified by:
setMinimumColumnCountin interfaceTableReader- Parameters:
length- number of columns
-
unregisterCommentCallBack
Unregisters a comment callback. Note that not all implementations actually support comments.- Specified by:
unregisterCommentCallBackin interfaceTableReader- Parameters:
callback- callback to be unregistered
-
hasNext
public boolean hasNext()- Specified by:
hasNextin interfacejava.util.Iterator<java.lang.Object[]>
-
getRowIndex
protected int getRowIndex()Returns the index of current row (delivered rows only)- Returns:
- the rowIndex
-
next
public java.lang.Object[] next()- Specified by:
nextin interfacejava.util.Iterator<java.lang.Object[]>
-
filter
protected java.lang.Object[] filter(java.lang.Object[] row)Filters columns within a row. Do not override here but overridegetFilteredIndex(int)instead.- Parameters:
row- row to be filtered- Returns:
- row with filtered column sonly
- See Also:
getFilteredIndex(int)
-
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:
removein interfacejava.util.Iterator<java.lang.Object[]>
-