Working with filters

Filters are saved in the database as filter entries containing a search filter (а query) and a name by which the query can be reused. They serve as dynamic groups whose members vary according to the current state of the devices being filtered.

The following examples show you how to create a filter entry, how to get an existing one, list all created filter entries, as well as how to list all devices matching the filter saved in the particular filter entry.

Create a filter entry

Execute the following code to create a filter entry according to the specified parameters - a name and a query. In the example, the filter entry name will be myAttributeDevices and the query will filter all devices having the attribute myAttribute:

deviceInventory.createFilterEntry(
 
FilterEntryParameters.newBuilder()
 
.filter(Filter.newBuilder().query("exists(attributes/myAttribute)").build())
 
.name("myAttributeDevices")
 
.build()
 
);

Get a filter entry

Get an existing filter entry, such as myAttributeDevices from the example above:

deviceInventory.filterEntry("myAttributeDevices");

List filter entries

List all filter entries recorded in the database, grouped in pages of 10 elements each:

deviceInventory.filterEntries(10);

List devices using а FilterEntry object

List all devices matching the filter of a particular filter entry, grouped in pages of 10 elements each:

filterEntry.devices(10);

Get devices using a filter entry

Use an existing filter entry to get devices:

deviceInventory.filterEntry("myAttributeDevices")
 
 .thenCompose(filterEntry -> deviceInventory.devices(filterEntry.filter()));

Filters can have attributes, described in more detail in Working with attributes.