This page describes the data fields of a contactfilter and how to de-/serialize a contact filter as XML.

Contact Filter

This section describes the attributes of a contact filter. The entry “Passed as XML” describes whether this attribute is submitted to the API as XML (if “yes”) or as parameter of the REST call (if “no”).

Attribute Type Default Passed as XML Description
id / long No The ID of a contactfilter
name String Yes The (display) name of a contactfilter
author String Yes The email adress of the author of a contactfilter
state String Yes The state of the contact filter, can be one of: ‘outofdate’,’updating’,’uptodate’
created String Yes At the date when the contactfilter was created in standard SQL format:/ yyyy-MM-dd HH:mm:ss
updated String Yes The last date when the contactfilter was updated in standard SQL format:/ yyyy-MM-dd HH:mm:ss
count_contacts int Yes The number of contacts that match the filter
count_rules int Yes The number of rules in the filter

XML Representation

This is an example of an XML representation of a contactfilter:

<?xml version="1.0" encoding="UTF-8"?>
<contactfilter>
   <id>1</id>
   <name>MySampleFilter</name>
   <author>xq-freiburg@xqueue.com</author>
   <state>uptodate</state>
   <created>2013-02-15 10:48:38</created>
   <count_contacts>12</count_contacts>
   <count_rules>1</count_rules>
</contactfilter>

Sample Java-Deserializer

This code example shows a deserializer for contactfilters (written in Java):

public static final String XML_ID = "id";
public static final String XML_NAME = "name";
public static final String XML_AUTHOR = "author";
public static final String XML_STATE = "state";
public static final String XML_CREATED = "created";
public static final String XML_COUNT_CONTACTS = "count_contacts";
public static final String XML_COUNT_RULES = "count_rules";
public static final String XML_CONTACT_FILTER = "contactfilter";
public static final String XML_CONTACT_FILTERS = "contactfilters";

public static ContactFilter deserializeSingleElement(Element filter) throws Exception {
 
 if (XML_CONTACT_FILTER.equals(filter.getName())) {
 	ContactFilter cf = new ContactFilter();
 	
 	// ID
 	Element id = filter.element(XML_ID);
 	if (id != null) {
 		try {
 			cf.setId(Long.parseLong(id.getText()));
		} catch (Exception e) {
			throw new NumberFormatException("Not a valid ID: " + id.getText());
		}
 	}
 	
 	// Name
 	Element name = filter.element(XML_NAME);
 	if (name != null) {
 		cf.setName(name.getText());
 	}
 	
 	// Author
 	Element author = filter.element(XML_AUTHOR);
 	if (author != null) {
 		cf.setAuthor(author.getText());
 	}
 	
 	// State
 	Element state = filter.element(XML_STATE);
 	if (state != null) {
 		cf.setStatus(state.getText());
 	}
 	
 	// Created
 	Element created = filter.element(XML_CREATED);
 	if (created != null) {
 		try {
 			cf.setCreated(created.getText());
		} catch (Exception e) {
			throw new NumberFormatException("Not a valid date: " + created);
		}
 	}
 	
 	// Count Contacts
 	Element count_contacts = filter.element(XML_COUNT_CONTACTS);
 	if (count_contacts != null) {
 		try {
 			cf.setCountContacts(Integer.parseInt(count_contacts.getText()));
		} catch (Exception e) {
			throw new NumberFormatException("Not a int number for counted contacts: " + count_contacts.getText());
		}
 	}
 	
 	// Count Rules
 	Element count_rules = filter.element(XML_COUNT_RULES);
 	if (count_rules != null) {
 		try {
 			cf.setCountRules(Integer.parseInt(count_rules.getText()));
		} catch (Exception e) {
			throw new NumberFormatException("Not a int number for counted rules: " + count_rules.getText());
		}
 	}
 	
 	return cf;
 	
 } else throw new Exception(String.format("Root element of a single contact filter must be named '%s' but is named: '%s'", XML_CONTACT_FILTERS, XML_CONTACT_FILTER, filter.getName()));	 
}

De-/Serializing Several Contacts

Some methods like getContactfilters/ require to pass several contactfilters at the same time. Serializing several contactfilters is done using a wrapping <contactfilters></contactfilters> tag.

<contactfilters>
    <contactfilter>
        <id>1</id>
        [...]
    </contactfilter>
    <contactfilter>
        <id>007</id>
        [...]
    </contactfilter>
</contactfilters>