예제 #1
0
 @Override
 public XmlStringBuilder toXML() {
   XmlStringBuilder xml = new XmlStringBuilder(this);
   xml.attribute("stamp", XmppDateTime.formatXEP0082Date(stamp));
   xml.optAttribute("from", from);
   xml.rightAngleBracket();
   xml.optAppend(reason);
   xml.closeElement(this);
   return xml;
 }
예제 #2
0
 public XmlStringBuilder toXML() {
   XmlStringBuilder xml = new XmlStringBuilder(this);
   xml.optIntAttribute("maxchars", getMaxChars());
   xml.optIntAttribute("maxstanzas", getMaxStanzas());
   xml.optIntAttribute("seconds", getSeconds());
   if (getSince() != null) {
     xml.attribute("since", XmppDateTime.formatXEP0082Date(getSince()));
   }
   xml.closeEmptyElement();
   return xml;
 }
예제 #3
0
 public String toXML() {
   StringBuilder stringBuilder = new StringBuilder();
   stringBuilder
       .append("<")
       .append(getElementName())
       .append(" xmlns=\"")
       .append(getNamespace())
       .append("\" ");
   if (getName() != null) {
     stringBuilder.append("name=\"").append(StringUtils.escapeForXML(getName())).append("\" ");
   }
   if (getSize() > 0) {
     stringBuilder.append("size=\"").append(getSize()).append("\" ");
   }
   if (getDate() != null) {
     stringBuilder.append("date=\"").append(XmppDateTime.m13428a(this.date)).append("\" ");
   }
   if (getHash() != null) {
     stringBuilder.append("hash=\"").append(getHash()).append("\" ");
   }
   if ((this.desc == null || this.desc.length() <= 0) && !this.isRanged) {
     stringBuilder.append("/>");
   } else {
     stringBuilder.append(">");
     if (getDesc() != null && this.desc.length() > 0) {
       stringBuilder
           .append("<desc>")
           .append(StringUtils.escapeForXML(getDesc()))
           .append("</desc>");
     }
     if (isRanged()) {
       stringBuilder.append("<range/>");
     }
     stringBuilder.append("</").append(getElementName()).append(">");
   }
   return stringBuilder.toString();
 }
예제 #4
0
 /**
  * Add a new element to this builder, with the {@link java.util.Date} instance as its content,
  * which will get formated with {@link XmppDateTime#formatXEP0082Date(Date)}.
  *
  * @param name element name
  * @param content content of element
  * @return this XmlStringBuilder
  */
 public XmlStringBuilder element(String name, Date content) {
   assert content != null;
   return element(name, XmppDateTime.formatXEP0082Date(content));
 }
예제 #5
0
 /**
  * Add a new attribute to this builder, with the {@link java.util.Date} instance as its value,
  * which will get formated with {@link XmppDateTime#formatXEP0082Date(Date)}.
  *
  * @param name name of attribute
  * @param value value of attribute
  * @return this XmlStringBuilder
  */
 public XmlStringBuilder attribute(String name, Date value) {
   assert value != null;
   return attribute(name, XmppDateTime.formatXEP0082Date(value));
 }
예제 #6
0
  @Override
  public StreamInitiation parse(XmlPullParser parser, int initialDepth) 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 = dataFormProvider.parse(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) {
              LOGGER.log(Level.SEVERE, "Failed to parse file size from " + fileSize, e);
            }
          }

          Date fileDate = new Date();
          if (date != null) {
            try {
              fileDate = XmppDateTime.parseDate(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.setSessionID(id);
    initiation.setMimeType(mimeType);

    initiation.setFeatureNegotiationForm(form);

    return initiation;
  }
 @Override
 protected Date parseDate(String string) throws ParseException {
   return XmppDateTime.parseDate(string);
 }