From 94933e21cd08c53a23e5ec6c12bc1dc383b1f3ce Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Fri, 29 Jul 2016 19:52:37 +0200 Subject: changed package id inside manifest and project --- .../java/de/pixart/messenger/xmpp/forms/Data.java | 99 ++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 src/main/java/de/pixart/messenger/xmpp/forms/Data.java (limited to 'src/main/java/de/pixart/messenger/xmpp/forms/Data.java') diff --git a/src/main/java/de/pixart/messenger/xmpp/forms/Data.java b/src/main/java/de/pixart/messenger/xmpp/forms/Data.java new file mode 100644 index 000000000..8ae70f9c7 --- /dev/null +++ b/src/main/java/de/pixart/messenger/xmpp/forms/Data.java @@ -0,0 +1,99 @@ +package de.pixart.messenger.xmpp.forms; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; + +import de.pixart.messenger.xml.Element; + +public class Data extends Element { + + public static final String FORM_TYPE = "FORM_TYPE"; + + public Data() { + super("x"); + this.setAttribute("xmlns","jabber:x:data"); + } + + public List getFields() { + ArrayList fields = new ArrayList(); + for(Element child : getChildren()) { + if (child.getName().equals("field") + && !FORM_TYPE.equals(child.getAttribute("var"))) { + fields.add(Field.parse(child)); + } + } + return fields; + } + + public Field getFieldByName(String needle) { + for(Element child : getChildren()) { + if (child.getName().equals("field") + && needle.equals(child.getAttribute("var"))) { + return Field.parse(child); + } + } + return null; + } + + public void put(String name, String value) { + Field field = getFieldByName(name); + if (field == null) { + field = new Field(name); + this.addChild(field); + } + field.setValue(value); + } + + public void put(String name, Collection values) { + Field field = getFieldByName(name); + if (field == null) { + field = new Field(name); + this.addChild(field); + } + field.setValues(values); + } + + public void submit() { + this.setAttribute("type","submit"); + removeUnnecessaryChildren(); + for(Field field : getFields()) { + field.removeNonValueChildren(); + } + } + + private void removeUnnecessaryChildren() { + for(Iterator iterator = this.children.iterator(); iterator.hasNext();) { + Element element = iterator.next(); + if (!element.getName().equals("field") && !element.getName().equals("title")) { + iterator.remove(); + } + } + } + + public static Data parse(Element element) { + Data data = new Data(); + data.setAttributes(element.getAttributes()); + data.setChildren(element.getChildren()); + return data; + } + + public void setFormType(String formType) { + this.put(FORM_TYPE, formType); + } + + public String getFormType() { + String type = getValue(FORM_TYPE); + return type == null ? "" : type; + } + + public String getValue(String name) { + Field field = this.getFieldByName(name); + return field == null ? null : field.getValue(); + } + + public String getTitle() { + return findChildContent("title"); + } +} -- cgit v1.2.3