Content.java

  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}