anotherim/src/eu/siacs/conversations/xmpp/jingle/stanzas/JinglePacket.java
2014-04-19 01:14:30 +02:00

114 lines
2.8 KiB
Java

package eu.siacs.conversations.xmpp.jingle.stanzas;
import eu.siacs.conversations.xml.Element;
import eu.siacs.conversations.xmpp.stanzas.IqPacket;
public class JinglePacket extends IqPacket {
Content content = null;
Reason reason = null;
Element jingle = new Element("jingle");
@Override
public Element addChild(Element child) {
if ("jingle".equals(child.getName())) {
Element contentElement = child.findChild("content");
if (contentElement!=null) {
this.content = new Content();
this.content.setChildren(contentElement.getChildren());
this.content.setAttributes(contentElement.getAttributes());
}
Element reasonElement = child.findChild("reason");
if (reasonElement!=null) {
this.reason = new Reason();
this.reason.setChildren(reasonElement.getChildren());
this.reason.setAttributes(reasonElement.getAttributes());
}
this.jingle.setAttributes(child.getAttributes());
}
return child;
}
public JinglePacket setContent(Content content) {
this.content = content;
return this;
}
public Content getJingleContent() {
if (this.content==null) {
this.content = new Content();
}
return this.content;
}
public JinglePacket setReason(Reason reason) {
this.reason = reason;
return this;
}
public Reason getReason() {
return this.reason;
}
private void build() {
this.children.clear();
this.jingle.clearChildren();
this.jingle.setAttribute("xmlns", "urn:xmpp:jingle:1");
if (this.content!=null) {
jingle.addChild(this.content);
}
if (this.reason != null) {
jingle.addChild(this.reason);
}
this.children.add(jingle);
this.setAttribute("type", "set");
}
public String getSessionId() {
return this.jingle.getAttribute("sid");
}
public void setSessionId(String sid) {
this.jingle.setAttribute("sid", sid);
}
@Override
public String toString() {
this.build();
return super.toString();
}
public void setAction(String action) {
this.jingle.setAttribute("action", action);
}
public String getAction() {
return this.jingle.getAttribute("action");
}
public void setInitiator(String initiator) {
this.jingle.setAttribute("initiator", initiator);
}
public boolean isAction(String action) {
return action.equalsIgnoreCase(this.getAction());
}
public String toPrettyString() {
StringBuilder output = new StringBuilder();
output.append("["+getAction()+ " to:"+getTo()+" ");
if (this.content!=null) {
if (this.content.getUsedCandidate()!=null) {
output.append("used-candidate="+this.content.getUsedCandidate());
} else if (this.content.hasCandidateError()) {
output.append("candidate-error");
} else {
for(Element c : this.content.getCanditates()) {
output.append("["+c.getAttribute("host")+":"+c.getAttribute("port")+"]");
}
}
}
output.append("]");
return output.toString();
}
}