diff options
author | Tarun Gupta <tarun1995gupta@gmail.com> | 2015-06-20 01:02:12 (GMT) |
---|---|---|
committer | Tarun Gupta <tarun1995gupta@gmail.com> | 2015-06-27 07:12:55 (GMT) |
commit | a673d269487fd86efe7f9c5f9b4cd1c00cab556d (patch) | |
tree | 10145697d3153a8a170361c5355ad9bccee21776 /src/com/isode/stroke/serializer/payloadserializers | |
parent | 27212e007077418d18014286a46723fa26693864 (diff) | |
download | stroke-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/payloadserializers')
-rw-r--r-- | src/com/isode/stroke/serializer/payloadserializers/FormSerializer.java | 87 | ||||
-rw-r--r-- | src/com/isode/stroke/serializer/payloadserializers/SearchPayloadSerializer.java | 9 |
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(); } |