summaryrefslogtreecommitdiffstats
blob: 3edfe23dee1165103109d0494e3825ef0f605bf8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
 * Copyright (c) 2010-2015, Isode Limited, London, England.
 * All rights reserved.
 */
package com.isode.stroke.serializer.payloadserializers;

import com.isode.stroke.elements.SearchPayload;
import com.isode.stroke.serializer.GenericPayloadSerializer;
import com.isode.stroke.serializer.xml.XMLElement;

/**
 * SearchPayload to String.
 */
public class SearchPayloadSerializer extends GenericPayloadSerializer<SearchPayload> {

    public SearchPayloadSerializer() {
        super(SearchPayload.class);
    }

    @Override
    protected String serializePayload(SearchPayload searchPayload) {
        XMLElement searchElement = new XMLElement("query", "jabber:iq:search");

	if (searchPayload.getInstructions() != null) {
		searchElement.addNode(new XMLElement("instructions", "", searchPayload.getInstructions()));
	}

	if (searchPayload.getNick() != null) {
		searchElement.addNode(new XMLElement("nick", "", searchPayload.getNick()));
	}

	if (searchPayload.getFirst() != null) {
		searchElement.addNode(new XMLElement("first", "", searchPayload.getFirst()));
	}

	if (searchPayload.getLast() != null) {
		searchElement.addNode(new XMLElement("last", "", searchPayload.getLast()));
	}

	if (searchPayload.getEMail() != null) {
		searchElement.addNode(new XMLElement("email", "", searchPayload.getEMail()));
	}

	for (SearchPayload.Item item : searchPayload.getItems()) {
		XMLElement itemElement = new XMLElement("item");
		itemElement.setAttribute("jid", item.jid.toString());
		itemElement.addNode(new XMLElement("first", "", item.first));
		itemElement.addNode(new XMLElement("last", "", item.last));
		itemElement.addNode(new XMLElement("nick", "", item.nick));
		itemElement.addNode(new XMLElement("email", "", item.email));

		searchElement.addNode(itemElement);
	}

	//if (Form::ref form = searchPayload->getForm()) {
	//	searchElement.addNode(boost::shared_ptr<XMLRawTextNode>(new XMLRawTextNode(FormSerializer().serialize(form))));
	//} /* Not ported yet. When the time comes, look at Swiften to check if it's changed. It will have. */

	return searchElement.serialize();
    }
}