summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTarun Gupta <tarun1995gupta@gmail.com>2015-06-20 01:02:12 (GMT)
committerTarun Gupta <tarun1995gupta@gmail.com>2015-06-27 07:12:55 (GMT)
commita673d269487fd86efe7f9c5f9b4cd1c00cab556d (patch)
tree10145697d3153a8a170361c5355ad9bccee21776 /src/com/isode/stroke/serializer
parent27212e007077418d18014286a46723fa26693864 (diff)
downloadstroke-a673d269487fd86efe7f9c5f9b4cd1c00cab556d.zip
stroke-a673d269487fd86efe7f9c5f9b4cd1c00cab556d.tar.bz2
Adds Form Elements and Version Element.
Adds FormPage, FormReportedRef, FormSection, FormText and Version Elements. Updates Form Elements, its Parser And Serializer. Updates SearchPayload Element, its Parser And Serializer. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Adds Search Payload Parser and Serializer Test. Updates tests for Form Parser and Serializer. Updates InBandRegistrationPayloadSerializer Test and MAMQuerySerializerTest. All tests passes. Change-Id: I8c620a3db39fe433bc9a5478b98d5caeaf9ed40b
Diffstat (limited to 'src/com/isode/stroke/serializer')
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/FormSerializer.java87
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/SearchPayloadSerializer.java9
2 files changed, 88 insertions, 8 deletions
diff --git a/src/com/isode/stroke/serializer/payloadserializers/FormSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/FormSerializer.java
index 79153af..262ba3d 100644
--- a/src/com/isode/stroke/serializer/payloadserializers/FormSerializer.java
+++ b/src/com/isode/stroke/serializer/payloadserializers/FormSerializer.java
@@ -12,15 +12,22 @@ package com.isode.stroke.serializer.payloadserializers;
import com.isode.stroke.elements.Form;
import com.isode.stroke.elements.FormField;
import com.isode.stroke.elements.FormItem;
+import com.isode.stroke.elements.FormSection;
+import com.isode.stroke.elements.FormText;
+import com.isode.stroke.elements.FormPage;
+import com.isode.stroke.elements.FormReportedRef;
import com.isode.stroke.serializer.GenericPayloadSerializer;
import com.isode.stroke.serializer.xml.XMLElement;
import com.isode.stroke.serializer.xml.XMLTextNode;
+import java.util.Vector;
/**
* Serializer for {@link Form} element.
*/
public class FormSerializer extends GenericPayloadSerializer<Form> {
-
+
+ private Vector<FormField> fields_ = new Vector<FormField>();
+
public FormSerializer() {
super(Form.class);
}
@@ -42,6 +49,14 @@ public class FormSerializer extends GenericPayloadSerializer<Form> {
}
// Add reported element
+
+ for(FormPage page : form.getPages()) {
+ formElement.addNode(pageToXML(page));
+ }
+
+ for(FormField field : form.getFields()) {
+ formElement.addNode(fieldToXML(field, true));
+ }
if (!form.getReportedFields().isEmpty()) {
XMLElement reportedElement = new XMLElement("reported");
@@ -59,12 +74,15 @@ public class FormSerializer extends GenericPayloadSerializer<Form> {
}
formElement.addNode(itemElement);
}
-
- // Add fields
- for (FormField field : form.getFields()) {
- formElement.addNode(fieldToXML(field, true));
+
+ for(FormText text : form.getTextElements()) {
+ formElement.addNode(textToXML(text));
}
+ for(FormField field : fields_) {
+ formElement.addNode(fieldToXML(field,true));
+ }
+
return formElement.serialize();
}
@@ -117,6 +135,65 @@ public class FormSerializer extends GenericPayloadSerializer<Form> {
return fieldElement;
}
+ private XMLElement textToXML(FormText text) {
+ XMLElement textElement = new XMLElement("text");
+ textElement.addNode(new XMLTextNode(text.getTextString()));
+ return textElement;
+ }
+
+ private XMLElement fieldRefToXML(String ref) {
+ XMLElement fieldRefElement = new XMLElement("fieldref");
+ fieldRefElement.setAttribute("var", ref);
+ return fieldRefElement;
+ }
+
+ /*private XMLElement reportedRefToXML(FormReportedRef reportedRef) {
+
+ }*/
+
+ private XMLElement pageToXML(FormPage page) {
+ XMLElement pageElement = new XMLElement("page");
+ pageElement.setAttribute("xmlns", page.getXMLNS());
+ if (!page.getLabel().isEmpty()) {
+ pageElement.setAttribute("label", page.getLabel());
+ }
+ for(FormText text : page.getTextElements()) {
+ pageElement.addNode(textToXML(text));
+ }
+ for (FormField field : page.getFields()) {
+ pageElement.addNode(fieldRefToXML(field.getName()));
+ fields_.add(field);
+ }
+ for(FormReportedRef reportedRef : page.getReportedRefs()) {
+ pageElement.addNode(new XMLElement("reportedref"));
+ }
+ for(FormSection section : page.getChildSections()) {
+ pageElement.addNode(sectionToXML(section));
+ }
+ return pageElement;
+ }
+
+ private XMLElement sectionToXML(FormSection section) {
+ XMLElement sectionElement = new XMLElement("section");
+ if (!section.getLabel().isEmpty()) {
+ sectionElement.setAttribute("label", section.getLabel());
+ }
+ for(FormText text : section.getTextElements()) {
+ sectionElement.addNode(textToXML(text));
+ }
+ for(FormField field : section.getFields()) {
+ sectionElement.addNode(fieldRefToXML(field.getName()));
+ fields_.add(field);
+ }
+ for(FormReportedRef reportedRef : section.getReportedRefs()) {
+ sectionElement.addNode(new XMLElement("reportedref"));
+ }
+ for(FormSection childSection : section.getChildSections()) {
+ sectionElement.addNode(sectionToXML(childSection));
+ }
+ return sectionElement;
+ }
+
private void multiLineify(String text, String elementName,
XMLElement element) {
if (text == null) {
diff --git a/src/com/isode/stroke/serializer/payloadserializers/SearchPayloadSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/SearchPayloadSerializer.java
index 3edfe23..da87b5c 100644
--- a/src/com/isode/stroke/serializer/payloadserializers/SearchPayloadSerializer.java
+++ b/src/com/isode/stroke/serializer/payloadserializers/SearchPayloadSerializer.java
@@ -7,6 +7,8 @@ package com.isode.stroke.serializer.payloadserializers;
import com.isode.stroke.elements.SearchPayload;
import com.isode.stroke.serializer.GenericPayloadSerializer;
import com.isode.stroke.serializer.xml.XMLElement;
+import com.isode.stroke.serializer.xml.XMLRawTextNode;
+import com.isode.stroke.elements.Form;
/**
* SearchPayload to String.
@@ -52,9 +54,10 @@ public class SearchPayloadSerializer extends GenericPayloadSerializer<SearchPayl
searchElement.addNode(itemElement);
}
- //if (Form::ref form = searchPayload->getForm()) {
- // searchElement.addNode(boost::shared_ptr<XMLRawTextNode>(new XMLRawTextNode(FormSerializer().serialize(form))));
- //} /* Not ported yet. When the time comes, look at Swiften to check if it's changed. It will have. */
+ if (searchPayload.getForm() != null) {
+ Form form = searchPayload.getForm();
+ searchElement.addNode(new XMLRawTextNode(new FormSerializer().serialize(form)));
+ }
return searchElement.serialize();
}