org.knime.base.node.preproc.filter.row.rowfilter
Class RowFilter

java.lang.Object
  extended by org.knime.base.node.preproc.filter.row.rowfilter.RowFilter
All Implemented Interfaces:
Cloneable
Direct Known Subclasses:
AndRowFilter, AttrValueRowFilter, ColValFilterOldObsolete, FalseRowFilter, LinearSamplingRowFilter, MissingCellRowFilter, NegRowFilter, OrRowFilter, RandomFractionRowFilter, RandomNumberRowFilter, RowIDRowFilter, RowNoRowFilter, StratifiedSamplingRowFilter, TrueRowFilter

public abstract class RowFilter
extends Object
implements Cloneable

Used by the RowFilterIterator to determine whether a row should be filtered or not.
New row filter implementations MUST also modify the RowFilterFactory in order to get load and save work.

Author:
Peter Ohl, University of Konstanz

Constructor Summary
RowFilter()
           
 
Method Summary
 Object clone()
          
abstract  DataTableSpec configure(DataTableSpec inSpec)
          Called when a new DataTableSpec is available.
abstract  void loadSettingsFrom(NodeSettingsRO cfg)
          Load your internal settings from the configuration object.
abstract  boolean matches(DataRow row, int rowIndex)
          Return true if the specified row matches the criteria set in the filter.
protected abstract  void saveSettings(NodeSettingsWO cfg)
          Do not call this function - rather call saveSettingsTo(NodeSettingsWO).
 void saveSettingsTo(NodeSettingsWO cfg)
          Save your internal settings into the specified configuration object.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RowFilter

public RowFilter()
Method Detail

matches

public abstract boolean matches(DataRow row,
                                int rowIndex)
                         throws EndOfTableException,
                                IncludeFromNowOn
Return true if the specified row matches the criteria set in the filter. Can throw a EndOfTableException if the filter can tell that no more rows of the table will be able to fulfill the criteria.

Parameters:
row - the row to test
rowIndex - the row index of the passed row in the original table
Returns:
true if the row matches the criteria set in the filter, false if not
Throws:
EndOfTableException - if there is no chance that any of the rows coming (including the current rowIndex) will fulfill the criteria, thus no further row in the original table will be a match to this filter. (In general this is hard to tell, but a row number filter can certainly use it.) If the exception is received the row filter table iterator will flag an end of table.
IncludeFromNowOn - if the current and all following rows from now on are to be included into the result table

loadSettingsFrom

public abstract void loadSettingsFrom(NodeSettingsRO cfg)
                               throws InvalidSettingsException
Load your internal settings from the configuration object. Throw an exception if the config is invalid/incorrect/inconsistent.

Parameters:
cfg - the object holding the settings to load
Throws:
InvalidSettingsException - if cfg contains invalid/incorrect/inconsistent settings

saveSettingsTo

public final void saveSettingsTo(NodeSettingsWO cfg)
Save your internal settings into the specified configuration object. Passing the object then to the loadSettingsFrom method should flawlessly work.

Parameters:
cfg - the object to add the current internal settings to

saveSettings

protected abstract void saveSettings(NodeSettingsWO cfg)
Do not call this function - rather call saveSettingsTo(NodeSettingsWO). This is just a helper function for saveSettingsTo(NodeSettingsWO). Row filters implement this and do the work usually done in saveSettingsTo(NodeSettingsWO). The passed config is prepared in a way that the factory will be able to recreate this object from it.

Parameters:
cfg - object to add the current internal settings to

configure

public abstract DataTableSpec configure(DataTableSpec inSpec)
                                 throws InvalidSettingsException
Called when a new DataTableSpec is available. The filters can grab whatever they need from that new config (e.g. a comparator), should do some error checking (e.g. col number against number of columns) - throw an InvalidSettingsException if settings are invalid, and can return a new table spec according to their settings - if they can. If a filter cannot tell how it would modify the spec, it should return null. (Returned table specs are not used right now anyway.)

Parameters:
inSpec - the new spec propagated into the row filter node. Could be null or empty!
Returns:
a new table spec, if you can
Throws:
InvalidSettingsException - if the settings in the row filter are not compatible with the table spec coming in

clone

public Object clone()

Overrides:
clone in class Object


Copyright, 2003 - 2010. All rights reserved.
University of Konstanz, Germany.
Chair for Bioinformatics and Information Mining, Prof. Dr. Michael R. Berthold.
You may not modify, publish, transmit, transfer or sell, reproduce, create derivative works from, distribute, perform, display, or in any way exploit any of the content, in whole or in part, except as otherwise expressly permitted in writing by the copyright owner or as specified in the license file distributed with this product.