Search in sources :

Example 6 with DataFormProvider

use of org.jivesoftware.smackx.xdata.provider.DataFormProvider in project Smack by igniterealtime.

the class AdHocCommandDataProvider method parse.

@Override
public AdHocCommandData parse(XmlPullParser parser, int initialDepth, XmlEnvironment xmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException {
    boolean done = false;
    AdHocCommandData adHocCommandData = new AdHocCommandData();
    DataFormProvider dataFormProvider = new DataFormProvider();
    XmlPullParser.Event eventType;
    String elementName;
    String namespace;
    adHocCommandData.setSessionID(parser.getAttributeValue("", "sessionid"));
    adHocCommandData.setNode(parser.getAttributeValue("", "node"));
    // Status
    String status = parser.getAttributeValue("", "status");
    if (AdHocCommand.Status.executing.toString().equalsIgnoreCase(status)) {
        adHocCommandData.setStatus(AdHocCommand.Status.executing);
    } else if (AdHocCommand.Status.completed.toString().equalsIgnoreCase(status)) {
        adHocCommandData.setStatus(AdHocCommand.Status.completed);
    } else if (AdHocCommand.Status.canceled.toString().equalsIgnoreCase(status)) {
        adHocCommandData.setStatus(AdHocCommand.Status.canceled);
    }
    // Action
    String action = parser.getAttributeValue("", "action");
    if (action != null) {
        Action realAction = AdHocCommand.Action.valueOf(action);
        if (realAction == null || realAction.equals(Action.unknown)) {
            adHocCommandData.setAction(Action.unknown);
        } else {
            adHocCommandData.setAction(realAction);
        }
    }
    while (!done) {
        eventType = parser.next();
        namespace = parser.getNamespace();
        if (eventType == XmlPullParser.Event.START_ELEMENT) {
            elementName = parser.getName();
            if (parser.getName().equals("actions")) {
                String execute = parser.getAttributeValue("", "execute");
                if (execute != null) {
                    adHocCommandData.setExecuteAction(AdHocCommand.Action.valueOf(execute));
                }
            } else if (parser.getName().equals("next")) {
                adHocCommandData.addAction(AdHocCommand.Action.next);
            } else if (parser.getName().equals("complete")) {
                adHocCommandData.addAction(AdHocCommand.Action.complete);
            } else if (parser.getName().equals("prev")) {
                adHocCommandData.addAction(AdHocCommand.Action.prev);
            } else if (elementName.equals("x") && namespace.equals("jabber:x:data")) {
                adHocCommandData.setForm(dataFormProvider.parse(parser));
            } else if (parser.getName().equals("note")) {
                String typeString = parser.getAttributeValue("", "type");
                AdHocCommandNote.Type type;
                if (typeString != null) {
                    type = AdHocCommandNote.Type.valueOf(typeString);
                } else {
                    // Type is optional and 'info' if not present.
                    type = AdHocCommandNote.Type.info;
                }
                String value = parser.nextText();
                adHocCommandData.addNote(new AdHocCommandNote(type, value));
            } else if (parser.getName().equals("error")) {
                StanzaError error = PacketParserUtils.parseError(parser);
                adHocCommandData.setError(error);
            }
        } else if (eventType == XmlPullParser.Event.END_ELEMENT) {
            if (parser.getName().equals("command")) {
                done = true;
            }
        }
    }
    return adHocCommandData;
}
Also used : Action(org.jivesoftware.smackx.commands.AdHocCommand.Action) AdHocCommandNote(org.jivesoftware.smackx.commands.AdHocCommandNote) DataFormProvider(org.jivesoftware.smackx.xdata.provider.DataFormProvider) AdHocCommandData(org.jivesoftware.smackx.commands.packet.AdHocCommandData) XmlPullParser(org.jivesoftware.smack.xml.XmlPullParser) StanzaError(org.jivesoftware.smack.packet.StanzaError)

Aggregations

DataFormProvider (org.jivesoftware.smackx.xdata.provider.DataFormProvider)6 DataForm (org.jivesoftware.smackx.xdata.packet.DataForm)3 ParseException (java.text.ParseException)2 Date (java.util.Date)2 XmlPullParser (org.jivesoftware.smack.xml.XmlPullParser)2 Action (org.jivesoftware.smackx.commands.AdHocCommand.Action)2 AdHocCommandNote (org.jivesoftware.smackx.commands.AdHocCommandNote)2 AdHocCommandData (org.jivesoftware.smackx.commands.packet.AdHocCommandData)2 StreamInitiation (org.jivesoftware.smackx.si.packet.StreamInitiation)2 File (org.jivesoftware.smackx.si.packet.StreamInitiation.File)2 InputStreamReader (java.io.InputStreamReader)1 StanzaError (org.jivesoftware.smack.packet.StanzaError)1 XMPPError (org.jivesoftware.smack.packet.XMPPError)1 MultipleAddressesProvider (org.jivesoftware.smackx.address.provider.MultipleAddressesProvider)1 BytestreamsProvider (org.jivesoftware.smackx.bytestreams.socks5.provider.BytestreamsProvider)1 ChatStateExtensionProvider (org.jivesoftware.smackx.chatstates.provider.ChatStateExtensionProvider)1 AdHocCommandDataProvider (org.jivesoftware.smackx.commands.provider.AdHocCommandDataProvider)1 DiscoverInfoProvider (org.jivesoftware.smackx.disco.provider.DiscoverInfoProvider)1 DiscoverItemsProvider (org.jivesoftware.smackx.disco.provider.DiscoverItemsProvider)1 LastActivity (org.jivesoftware.smackx.iqlast.packet.LastActivity)1