# Poco::Data

# class RowFilter

Library: Data
Package: DataCore
Header: Poco/Data/RowFilter.h

## Description

RowFilter class provides row filtering functionality. A filter contains a set of criteria (field name, value and logical operation) for row filtering. Additionally, a row filter contains a map of pointers to other filters with related logical operations between filters. RowFilter is typically added to recordset in order to filter its content. Since the recordset own iteration is dependent upon filtering, whenever the filtering criteria is changed, the filter automatically notifies all associated recordsets by rewinding them to the first position.

## Inheritance

Direct Base Classes: Poco::RefCountedObject

All Base Classes: Poco::RefCountedObject

## Member Summary

Member Functions: add, addAnd, addFilter, addOr, exists, isAllowed, isEmpty, isNot, remove, removeFilter, toggleNot

Inherited Functions: duplicate, referenceCount, release

## Types

### CompT

typedef bool (* CompT)(const Poco::Dynamic::Var &, const Poco::Dynamic::Var &);

### ComparisonEntry

typedef Tuple < Poco::Dynamic::Var, Comparison, LogicOperator > ComparisonEntry;

### ComparisonMap

typedef std::multimap < std::string, ComparisonEntry > ComparisonMap;

### Comparisons

typedef std::map < std::string, Comparison > Comparisons;

### FilterMap

typedef std::map < AutoPtr < RowFilter >, LogicOperator > FilterMap;

### Ptr

typedef AutoPtr < RowFilter > Ptr;

## Enumerations

### Comparison

VALUE_LESS_THAN

VALUE_LESS_THAN_OR_EQUAL

VALUE_EQUAL

VALUE_GREATER_THAN

VALUE_GREATER_THAN_OR_EQUAL

VALUE_NOT_EQUAL

VALUE_IS_NULL

### LogicOperator

OP_AND

OP_OR

OP_NOT

## Constructors

### RowFilter

RowFilter(
RecordSet * pRecordSet
);

Creates the top-level RowFilter and associates it with the recordset.

### RowFilter

RowFilter(
Ptr pParent,
LogicOperator op = OP_OR
);

Creates child RowFilter and associates it with the parent filter.

## Destructor

### ~RowFilter

~RowFilter();

Destroys the RowFilter.

## Member Functions

### add

template < typename T > void add(
const std::string & name,
Comparison comparison,
const T & value,
LogicOperator op = OP_OR
);

Adds value to the filter.

### add

template < typename T > void add(
const std::string & name,
const std::string & comp,
const T & value,
LogicOperator op = OP_OR
);

Adds value to the filter.

### addAnd

template < typename T > void addAnd(
const std::string & name,
const std::string & comp,
const T & value
);

Adds logically AND-ed value to the filter.

### addFilter

void addFilter(
const Ptr & pFilter,
LogicOperator comparison
);

Appends another filter to this one.

### addOr

template < typename T > void addOr(
const std::string & name,
const std::string & comp,
const T & value
);

Adds logically OR-ed value to the filter.

### exists

bool exists(
const std::string & name
) const;

Returns true if name is known to this row filter.

### isAllowed

bool isAllowed(
std::size_t row
) const;

Returns true if name and value are allowed.

### isEmpty

bool isEmpty() const;

Returns true if there is not filtering criteria specified.

### isNot

bool isNot() const;

Returns true if filter is NOT-ed, false otherwise.

### remove

int remove(
const std::string & name
);

Removes named comparisons from the filter. All comparisons with specified name are removed. Returns the number of comparisons removed.

### removeFilter

void removeFilter(
const Ptr & pFilter
);

Removes filter from this filter.

### toggleNot

void toggleNot();

Togless the NOT operator for this filter;