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 boolean hasCandidateError() {
81 Element transport = this.findChild("transport", "urn:xmpp:jingle:transports:s5b:1");
82 if (transport==null) {
83 return false;
84 }
85 return transport.hasChild("candidate-error");
86 }
87
88 public void setUsedCandidate(String transportId, String cid) {
89 Element transport = this.findChild("transport", "urn:xmpp:jingle:transports:s5b:1");
90 if (transport==null) {
91 transport = this.addChild("transport", "urn:xmpp:jingle:transports:s5b:1");
92 }
93 transport.setAttribute("sid", transportId);
94 transport.clearChildren();
95 Element usedCandidate = transport.addChild("candidate-used");
96 usedCandidate.setAttribute("cid",cid);
97 }
98
99 public void addCandidate(Element candidate) {
100 Element transport = this.findChild("transport", "urn:xmpp:jingle:transports:s5b:1");
101 if (transport==null) {
102 transport = this.addChild("transport", "urn:xmpp:jingle:transports:s5b:1");
103 }
104 transport.addChild(candidate);
105 }
106
107 public void setFileOffer(Element fileOffer) {
108 Element description = this.findChild("description", "urn:xmpp:jingle:apps:file-transfer:3");
109 if (description==null) {
110 description = this.addChild("description", "urn:xmpp:jingle:apps:file-transfer:3");
111 }
112 description.addChild(fileOffer);
113 }
114
115 public void setCandidateError(String transportId) {
116 Element transport = this.findChild("transport", "urn:xmpp:jingle:transports:s5b:1");
117 if (transport==null) {
118 transport = this.addChild("transport", "urn:xmpp:jingle:transports:s5b:1");
119 }
120 transport.setAttribute("sid", transportId);
121 transport.clearChildren();
122 transport.addChild("candidate-error");
123 }
124}