Content.java

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