78 lines
1.5 KiB
Java
78 lines
1.5 KiB
Java
package eu.siacs.conversations.xmpp.stanzas;
|
|
|
|
import eu.siacs.conversations.xml.Element;
|
|
|
|
|
|
public class IqPacket extends AbstractStanza {
|
|
|
|
public static final int TYPE_ERROR = -1;
|
|
public static final int TYPE_SET = 0;
|
|
public static final int TYPE_RESULT = 1;
|
|
public static final int TYPE_GET = 2;
|
|
|
|
private IqPacket(String name) {
|
|
super(name);
|
|
}
|
|
|
|
public IqPacket(int type) {
|
|
super("iq");
|
|
switch (type) {
|
|
case TYPE_SET:
|
|
this.setAttribute("type", "set");
|
|
break;
|
|
case TYPE_GET:
|
|
this.setAttribute("type", "get");
|
|
break;
|
|
case TYPE_RESULT:
|
|
this.setAttribute("type", "result");
|
|
break;
|
|
case TYPE_ERROR:
|
|
this.setAttribute("type", "error");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
public IqPacket() {
|
|
super("iq");
|
|
}
|
|
|
|
public Element query() {
|
|
Element query = findChild("query");
|
|
if (query==null) {
|
|
query = addChild("query");
|
|
}
|
|
return query;
|
|
}
|
|
|
|
public Element query(String xmlns) {
|
|
Element query = query();
|
|
query.setAttribute("xmlns", xmlns);
|
|
return query();
|
|
}
|
|
|
|
public int getType() {
|
|
String type = getAttribute("type");
|
|
if ("error".equals(type)) {
|
|
return TYPE_ERROR;
|
|
} else if ("result".equals(type)) {
|
|
return TYPE_RESULT;
|
|
} else if ("set".equals(type)) {
|
|
return TYPE_SET;
|
|
} else if ("get".equals(type)) {
|
|
return TYPE_GET;
|
|
} else {
|
|
return 1000;
|
|
}
|
|
}
|
|
|
|
public IqPacket generateRespone(int type) {
|
|
IqPacket packet = new IqPacket(type);
|
|
packet.setTo(this.getFrom());
|
|
packet.setId(this.getId());
|
|
return packet;
|
|
}
|
|
|
|
}
|