# FILTER event hooks

Filters will help you build customized permission schemes. They are called for **both** LIST and ITEM commands.

```java
@Override
protected boolean dataFilterActive() {
    return true;
}
@Override
protected void dataFilterHandler(StringBuilder sql) {
    sql.append(" AND something");
}
```

In some cases you only want the filter to trigger for **either** LIST or ITEM commands

```java
itemFilterActive() {}
itemFilterHandler(StringBuilder sql) { return sql; }
listFilterActive() {}
listFilterHandler(StringBuilder sql) { return sql; }
```

### <span class="mw-headline" id="bkmrk-examples-1">Examples</span>

The xxxFilterActive tells if the filter is active

```java
boolean dataFilterActive() { return !s.isAdministor(); }
```

The xxxFilterHandler modifies the SQL used to fetch data

```java
void dataFilterHandler(StringBuilder sql) { sql.append(" AND CATEGORY NOT IN (123,456,789)"); }
```