summaryrefslogtreecommitdiffstats
blob: 2a072ad8f9bdaee27e0d596a6061447b479c0ed9 (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
/*
 * Copyright (c) 2010-2015, Isode Limited, London, England.
 * All rights reserved.
 */

package com.isode.stroke.serializer.payloadserializers;

import com.isode.stroke.elements.Storage;
import com.isode.stroke.serializer.GenericPayloadSerializer;
import com.isode.stroke.serializer.xml.XMLElement;
import com.isode.stroke.serializer.xml.XMLTextNode;

class StorageSerializer extends GenericPayloadSerializer<Storage>{
    
    public StorageSerializer() {
        super(Storage.class);
    }

    @Override
    protected String serializePayload(Storage storage) {
        XMLElement storageElement = new XMLElement("storage", "storage:bookmarks");

        for (final Storage.Room room : storage.getRooms()) {
            XMLElement conferenceElement = new XMLElement("conference");
            conferenceElement.setAttribute("name", room.name);
            conferenceElement.setAttribute("jid", room.jid.toString());
            conferenceElement.setAttribute("autojoin", room.autoJoin ? "1" : "0");
            if (room.nick != null && !room.nick.isEmpty()) {
                XMLElement nickElement = new XMLElement("nick");
                nickElement.addNode(new XMLTextNode(room.nick));
                conferenceElement.addNode(nickElement);
            }
            if (room.password != null) {
                XMLElement passwordElement = new XMLElement("password");
                passwordElement.addNode(new XMLTextNode(room.password));
                conferenceElement.addNode(passwordElement);
            }
            storageElement.addNode(conferenceElement);
        }

        for (final Storage.URL url : storage.getURLs()) {
            XMLElement urlElement = new XMLElement("url");
            urlElement.setAttribute("name", url.name);
            urlElement.setAttribute("url", url.url);
            storageElement.addNode(urlElement);
        }

        return storageElement.serialize();
    }

}