1package eu.siacs.conversations.xmpp.jingle.stanzas;
2
3import java.util.ArrayList;
4import java.util.List;
5
6import eu.siacs.conversations.xml.Element;
7import eu.siacs.conversations.xmpp.jingle.JingleFile;
8
9public class Content extends Element {
10 private Content(String name) {
11 super(name);
12 }
13
14 public Content() {
15 super("content");
16 }
17
18 public void setFileOffer(JingleFile actualFile) {
19 Element description = this.addChild("description", "urn:xmpp:jingle:apps:file-transfer:3");
20 Element offer = description.addChild("offer");
21 Element file = offer.addChild("file");
22 file.addChild("size").setContent(""+actualFile.getSize());
23 file.addChild("name").setContent(actualFile.getName());
24 }
25
26 public Element getFileOffer() {
27 Element description = this.findChild("description", "urn:xmpp:jingle:apps:file-transfer:3");
28 if (description==null) {
29 return null;
30 }
31 Element offer = description.findChild("offer");
32 if (offer==null) {
33 return null;
34 }
35 return offer.findChild("file");
36 }
37
38 public void setCandidates(String transportId, List<Element> canditates) {
39 Element transport = this.findChild("transport", "urn:xmpp:jingle:transports:s5b:1");
40 if (transport==null) {
41 transport = this.addChild("transport", "urn:xmpp:jingle:transports:s5b:1");
42 }
43 transport.setAttribute("sid", transportId);
44 transport.clearChildren();
45 for(Element canditate : canditates) {
46 transport.addChild(canditate);
47 }
48 }
49
50 public List<Element> getCanditates() {
51 Element transport = this.findChild("transport", "urn:xmpp:jingle:transports:s5b:1");
52 if (transport==null) {
53 return new ArrayList<Element>();
54 } else {
55 return transport.getChildren();
56 }
57 }
58
59 public String getTransportId() {
60 Element transport = this.findChild("transport", "urn:xmpp:jingle:transports:s5b:1");
61 if (transport==null) {
62 return null;
63 }
64 return transport.getAttribute("sid");
65 }
66
67 public String getUsedCandidate() {
68 Element transport = this.findChild("transport", "urn:xmpp:jingle:transports:s5b:1");
69 if (transport==null) {
70 return null;
71 }
72 Element usedCandidate = transport.findChild("candidate-used");
73 if (usedCandidate==null) {
74 return null;
75 } else {
76 return usedCandidate.getAttribute("cid");
77 }
78 }
79
80 public void setUsedCandidate(String transportId, String cid) {
81 Element transport = this.findChild("transport", "urn:xmpp:jingle:transports:s5b:1");
82 if (transport==null) {
83 transport = this.addChild("transport", "urn:xmpp:jingle:transports:s5b:1");
84 }
85 transport.setAttribute("sid", transportId);
86 transport.clearChildren();
87 Element usedCandidate = transport.addChild("candidate-used");
88 usedCandidate.setAttribute("cid",cid);
89 }
90
91 public void addCandidate(Element candidate) {
92 Element transport = this.findChild("transport", "urn:xmpp:jingle:transports:s5b:1");
93 if (transport==null) {
94 transport = this.addChild("transport", "urn:xmpp:jingle:transports:s5b:1");
95 }
96 transport.addChild(candidate);
97 }
98}