Search in sources :

Example 1 with File

use of org.jivesoftware.smackx.packet.StreamInitiation.File in project ecf by eclipse.

the class StreamInitiationProvider method parseIQ.

public IQ parseIQ(final XmlPullParser parser) throws Exception {
    boolean done = false;
    // si
    String id = parser.getAttributeValue("", "id");
    String mimeType = parser.getAttributeValue("", "mime-type");
    StreamInitiation initiation = new StreamInitiation();
    // file
    String name = null;
    String size = null;
    String hash = null;
    String date = null;
    String desc = null;
    boolean isRanged = false;
    // feature
    DataForm form = null;
    DataFormProvider dataFormProvider = new DataFormProvider();
    int eventType;
    String elementName;
    String namespace;
    while (!done) {
        eventType = parser.next();
        elementName = parser.getName();
        namespace = parser.getNamespace();
        if (eventType == XmlPullParser.START_TAG) {
            if (elementName.equals("file")) {
                name = parser.getAttributeValue("", "name");
                size = parser.getAttributeValue("", "size");
                hash = parser.getAttributeValue("", "hash");
                date = parser.getAttributeValue("", "date");
            } else if (elementName.equals("desc")) {
                desc = parser.nextText();
            } else if (elementName.equals("range")) {
                isRanged = true;
            } else if (elementName.equals("x") && namespace.equals("jabber:x:data")) {
                form = (DataForm) dataFormProvider.parseExtension(parser);
            }
        } else if (eventType == XmlPullParser.END_TAG) {
            if (elementName.equals("si")) {
                done = true;
            } else if (elementName.equals("file")) {
                long fileSize = 0;
                if (size != null && size.trim().length() != 0) {
                    try {
                        fileSize = Long.parseLong(size);
                    } catch (NumberFormatException e) {
                        e.printStackTrace();
                    }
                }
                Date fileDate = new Date();
                if (date != null) {
                    try {
                        fileDate = StringUtils.parseXEP0082Date(date);
                    } catch (ParseException e) {
                    // couldn't parse date, use current date-time
                    }
                }
                File file = new File(name, fileSize);
                file.setHash(hash);
                file.setDate(fileDate);
                file.setDesc(desc);
                file.setRanged(isRanged);
                initiation.setFile(file);
            }
        }
    }
    initiation.setSesssionID(id);
    initiation.setMimeType(mimeType);
    initiation.setFeatureNegotiationForm(form);
    return initiation;
}
Also used : StreamInitiation(org.jivesoftware.smackx.packet.StreamInitiation) DataForm(org.jivesoftware.smackx.packet.DataForm) ParseException(java.text.ParseException) File(org.jivesoftware.smackx.packet.StreamInitiation.File) Date(java.util.Date)

Aggregations

ParseException (java.text.ParseException)1 Date (java.util.Date)1 DataForm (org.jivesoftware.smackx.packet.DataForm)1 StreamInitiation (org.jivesoftware.smackx.packet.StreamInitiation)1 File (org.jivesoftware.smackx.packet.StreamInitiation.File)1