diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/XmlStringBuilder.java b/smack-core/src/main/java/org/jivesoftware/smack/util/XmlStringBuilder.java index 5d6e80fc9..708beb1ca 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/util/XmlStringBuilder.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/util/XmlStringBuilder.java @@ -186,7 +186,7 @@ public class XmlStringBuilder implements Appendable, CharSequence { public XmlStringBuilder optAttribute(String name, Enum value) { if (value != null) { - attribute(name, value.name()); + attribute(name, value.toString()); } return this; } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferNegotiator.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferNegotiator.java index 281d0ac60..b4a7ae253 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferNegotiator.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FileTransferNegotiator.java @@ -369,7 +369,7 @@ public class FileTransferNegotiator extends Manager { private DataForm createDefaultInitiationForm() { DataForm form = new DataForm(Form.TYPE_FORM); FormField field = new FormField(STREAM_DATA_FIELD_NAME); - field.setType(FormField.TYPE_LIST_SINGLE); + field.setType(FormField.Type.list_single); if (!IBB_ONLY) { field.addOption(new FormField.Option(Bytestream.NAMESPACE)); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/ConfigureForm.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/ConfigureForm.java index 297557daf..a7adfa37a 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/ConfigureForm.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/ConfigureForm.java @@ -92,7 +92,7 @@ public class ConfigureForm extends Form */ public void setAccessModel(AccessModel accessModel) { - addField(ConfigureNodeFields.access_model, FormField.TYPE_LIST_SINGLE); + addField(ConfigureNodeFields.access_model, FormField.Type.list_single); setAnswer(ConfigureNodeFields.access_model.getFieldName(), getListSingle(accessModel.toString())); } @@ -115,7 +115,7 @@ public class ConfigureForm extends Form */ public void setBodyXSLT(String bodyXslt) { - addField(ConfigureNodeFields.body_xslt, FormField.TYPE_TEXT_SINGLE); + addField(ConfigureNodeFields.body_xslt, FormField.Type.text_single); setAnswer(ConfigureNodeFields.body_xslt.getFieldName(), bodyXslt); } @@ -136,7 +136,7 @@ public class ConfigureForm extends Form */ public void setChildren(List children) { - addField(ConfigureNodeFields.children, FormField.TYPE_TEXT_MULTI); + addField(ConfigureNodeFields.children, FormField.Type.text_multi); setAnswer(ConfigureNodeFields.children.getFieldName(), children); } @@ -162,7 +162,7 @@ public class ConfigureForm extends Form */ public void setChildrenAssociationPolicy(ChildrenAssociationPolicy policy) { - addField(ConfigureNodeFields.children_association_policy, FormField.TYPE_LIST_SINGLE); + addField(ConfigureNodeFields.children_association_policy, FormField.Type.list_single); List values = new ArrayList(1); values.add(policy.toString()); setAnswer(ConfigureNodeFields.children_association_policy.getFieldName(), values); @@ -189,7 +189,7 @@ public class ConfigureForm extends Form */ public void setChildrenAssociationWhitelist(List whitelist) { - addField(ConfigureNodeFields.children_association_whitelist, FormField.TYPE_JID_MULTI); + addField(ConfigureNodeFields.children_association_whitelist, FormField.Type.jid_multi); setAnswer(ConfigureNodeFields.children_association_whitelist.getFieldName(), whitelist); } @@ -210,7 +210,7 @@ public class ConfigureForm extends Form */ public void setChildrenMax(int max) { - addField(ConfigureNodeFields.children_max, FormField.TYPE_TEXT_SINGLE); + addField(ConfigureNodeFields.children_max, FormField.Type.text_single); setAnswer(ConfigureNodeFields.children_max.getFieldName(), max); } @@ -231,7 +231,7 @@ public class ConfigureForm extends Form */ public void setCollection(String collection) { - addField(ConfigureNodeFields.collection, FormField.TYPE_TEXT_SINGLE); + addField(ConfigureNodeFields.collection, FormField.Type.text_single); setAnswer(ConfigureNodeFields.collection.getFieldName(), collection); } @@ -256,7 +256,7 @@ public class ConfigureForm extends Form */ public void setDataformXSLT(String url) { - addField(ConfigureNodeFields.dataform_xslt, FormField.TYPE_TEXT_SINGLE); + addField(ConfigureNodeFields.dataform_xslt, FormField.Type.text_single); setAnswer(ConfigureNodeFields.dataform_xslt.getFieldName(), url); } @@ -277,7 +277,7 @@ public class ConfigureForm extends Form */ public void setDeliverPayloads(boolean deliver) { - addField(ConfigureNodeFields.deliver_payloads, FormField.TYPE_BOOLEAN); + addField(ConfigureNodeFields.deliver_payloads, FormField.Type.bool); setAnswer(ConfigureNodeFields.deliver_payloads.getFieldName(), deliver); } @@ -303,7 +303,7 @@ public class ConfigureForm extends Form */ public void setItemReply(ItemReply reply) { - addField(ConfigureNodeFields.itemreply, FormField.TYPE_LIST_SINGLE); + addField(ConfigureNodeFields.itemreply, FormField.Type.list_single); setAnswer(ConfigureNodeFields.itemreply.getFieldName(), getListSingle(reply.toString())); } @@ -326,7 +326,7 @@ public class ConfigureForm extends Form */ public void setMaxItems(int max) { - addField(ConfigureNodeFields.max_items, FormField.TYPE_TEXT_SINGLE); + addField(ConfigureNodeFields.max_items, FormField.Type.text_single); setAnswer(ConfigureNodeFields.max_items.getFieldName(), max); } @@ -347,7 +347,7 @@ public class ConfigureForm extends Form */ public void setMaxPayloadSize(int max) { - addField(ConfigureNodeFields.max_payload_size, FormField.TYPE_TEXT_SINGLE); + addField(ConfigureNodeFields.max_payload_size, FormField.Type.text_single); setAnswer(ConfigureNodeFields.max_payload_size.getFieldName(), max); } @@ -373,7 +373,7 @@ public class ConfigureForm extends Form */ public void setNodeType(NodeType type) { - addField(ConfigureNodeFields.node_type, FormField.TYPE_LIST_SINGLE); + addField(ConfigureNodeFields.node_type, FormField.Type.list_single); setAnswer(ConfigureNodeFields.node_type.getFieldName(), getListSingle(type.toString())); } @@ -394,7 +394,7 @@ public class ConfigureForm extends Form */ public void setNotifyConfig(boolean notify) { - addField(ConfigureNodeFields.notify_config, FormField.TYPE_BOOLEAN); + addField(ConfigureNodeFields.notify_config, FormField.Type.bool); setAnswer(ConfigureNodeFields.notify_config.getFieldName(), notify); } @@ -415,7 +415,7 @@ public class ConfigureForm extends Form */ public void setNotifyDelete(boolean notify) { - addField(ConfigureNodeFields.notify_delete, FormField.TYPE_BOOLEAN); + addField(ConfigureNodeFields.notify_delete, FormField.Type.bool); setAnswer(ConfigureNodeFields.notify_delete.getFieldName(), notify); } @@ -438,7 +438,7 @@ public class ConfigureForm extends Form */ public void setNotifyRetract(boolean notify) { - addField(ConfigureNodeFields.notify_retract, FormField.TYPE_BOOLEAN); + addField(ConfigureNodeFields.notify_retract, FormField.Type.bool); setAnswer(ConfigureNodeFields.notify_retract.getFieldName(), notify); } @@ -459,7 +459,7 @@ public class ConfigureForm extends Form */ public void setPersistentItems(boolean persist) { - addField(ConfigureNodeFields.persist_items, FormField.TYPE_BOOLEAN); + addField(ConfigureNodeFields.persist_items, FormField.Type.bool); setAnswer(ConfigureNodeFields.persist_items.getFieldName(), persist); } @@ -480,7 +480,7 @@ public class ConfigureForm extends Form */ public void setPresenceBasedDelivery(boolean presenceBased) { - addField(ConfigureNodeFields.presence_based_delivery, FormField.TYPE_BOOLEAN); + addField(ConfigureNodeFields.presence_based_delivery, FormField.Type.bool); setAnswer(ConfigureNodeFields.presence_based_delivery.getFieldName(), presenceBased); } @@ -506,7 +506,7 @@ public class ConfigureForm extends Form */ public void setPublishModel(PublishModel publish) { - addField(ConfigureNodeFields.publish_model, FormField.TYPE_LIST_SINGLE); + addField(ConfigureNodeFields.publish_model, FormField.Type.list_single); setAnswer(ConfigureNodeFields.publish_model.getFieldName(), getListSingle(publish.toString())); } @@ -527,7 +527,7 @@ public class ConfigureForm extends Form */ public void setReplyRoom(List replyRooms) { - addField(ConfigureNodeFields.replyroom, FormField.TYPE_LIST_MULTI); + addField(ConfigureNodeFields.replyroom, FormField.Type.list_multi); setAnswer(ConfigureNodeFields.replyroom.getFieldName(), replyRooms); } @@ -548,7 +548,7 @@ public class ConfigureForm extends Form */ public void setReplyTo(List replyTos) { - addField(ConfigureNodeFields.replyto, FormField.TYPE_LIST_MULTI); + addField(ConfigureNodeFields.replyto, FormField.Type.list_multi); setAnswer(ConfigureNodeFields.replyto.getFieldName(), replyTos); } @@ -569,7 +569,7 @@ public class ConfigureForm extends Form */ public void setRosterGroupsAllowed(List groups) { - addField(ConfigureNodeFields.roster_groups_allowed, FormField.TYPE_LIST_MULTI); + addField(ConfigureNodeFields.roster_groups_allowed, FormField.Type.list_multi); setAnswer(ConfigureNodeFields.roster_groups_allowed.getFieldName(), groups); } @@ -601,7 +601,7 @@ public class ConfigureForm extends Form */ public void setSubscribe(boolean subscribe) { - addField(ConfigureNodeFields.subscribe, FormField.TYPE_BOOLEAN); + addField(ConfigureNodeFields.subscribe, FormField.Type.bool); setAnswer(ConfigureNodeFields.subscribe.getFieldName(), subscribe); } @@ -622,7 +622,7 @@ public class ConfigureForm extends Form */ public void setTitle(String title) { - addField(ConfigureNodeFields.title, FormField.TYPE_TEXT_SINGLE); + addField(ConfigureNodeFields.title, FormField.Type.text_single); setAnswer(ConfigureNodeFields.title.getFieldName(), title); } @@ -643,7 +643,7 @@ public class ConfigureForm extends Form */ public void setDataType(String type) { - addField(ConfigureNodeFields.type, FormField.TYPE_TEXT_SINGLE); + addField(ConfigureNodeFields.type, FormField.Type.text_single); setAnswer(ConfigureNodeFields.type.getFieldName(), type); } @@ -695,7 +695,7 @@ public class ConfigureForm extends Form return formField.getValues(); } - private void addField(ConfigureNodeFields nodeField, String type) + private void addField(ConfigureNodeFields nodeField, FormField.Type type) { String fieldName = nodeField.getFieldName(); diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/SubscribeForm.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/SubscribeForm.java index 3fa114864..ecda366c9 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/SubscribeForm.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/SubscribeForm.java @@ -72,7 +72,7 @@ public class SubscribeForm extends Form */ public void setDeliverOn(boolean deliverNotifications) { - addField(SubscribeOptionFields.deliver, FormField.TYPE_BOOLEAN); + addField(SubscribeOptionFields.deliver, FormField.Type.bool); setAnswer(SubscribeOptionFields.deliver.getFieldName(), deliverNotifications); } @@ -93,7 +93,7 @@ public class SubscribeForm extends Form */ public void setDigestOn(boolean digestOn) { - addField(SubscribeOptionFields.deliver, FormField.TYPE_BOOLEAN); + addField(SubscribeOptionFields.deliver, FormField.Type.bool); setAnswer(SubscribeOptionFields.deliver.getFieldName(), digestOn); } @@ -114,7 +114,7 @@ public class SubscribeForm extends Form */ public void setDigestFrequency(int frequency) { - addField(SubscribeOptionFields.digest_frequency, FormField.TYPE_TEXT_SINGLE); + addField(SubscribeOptionFields.digest_frequency, FormField.Type.text_single); setAnswer(SubscribeOptionFields.digest_frequency.getFieldName(), frequency); } @@ -145,7 +145,7 @@ public class SubscribeForm extends Form */ public void setExpiry(Date expire) { - addField(SubscribeOptionFields.expire, FormField.TYPE_TEXT_SINGLE); + addField(SubscribeOptionFields.expire, FormField.Type.text_single); setAnswer(SubscribeOptionFields.expire.getFieldName(), XmppDateTime.formatXEP0082Date(expire)); } @@ -168,7 +168,7 @@ public class SubscribeForm extends Form */ public void setIncludeBody(boolean include) { - addField(SubscribeOptionFields.include_body, FormField.TYPE_BOOLEAN); + addField(SubscribeOptionFields.include_body, FormField.Type.bool); setAnswer(SubscribeOptionFields.include_body.getFieldName(), include); } @@ -203,7 +203,7 @@ public class SubscribeForm extends Form { values.add(state.toString()); } - addField(SubscribeOptionFields.show_values, FormField.TYPE_LIST_MULTI); + addField(SubscribeOptionFields.show_values, FormField.Type.list_multi); setAnswer(SubscribeOptionFields.show_values.getFieldName(), values); } @@ -227,7 +227,7 @@ public class SubscribeForm extends Form return formField.getValues(); } - private void addField(SubscribeOptionFields nodeField, String type) + private void addField(SubscribeOptionFields nodeField, FormField.Type type) { String fieldName = nodeField.getFieldName(); diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/search/ReportedData.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/search/ReportedData.java index 95451fad6..75b4b5259 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/search/ReportedData.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/search/ReportedData.java @@ -143,9 +143,9 @@ public class ReportedData { * @author Gaston Dombiak */ public static class Column { - private String label; - private String variable; - private String type; + private final String label; + private final String variable; + private final FormField.Type type; /** * Creates a new column with the specified definition. @@ -154,7 +154,7 @@ public class ReportedData { * @param variable the variable name of the column. * @param type the format for the returned data. */ - public Column(String label, String variable, String type) { + public Column(String label, String variable, FormField.Type type) { this.label = label; this.variable = variable; this.type = type; @@ -171,27 +171,11 @@ public class ReportedData { /** - * Returns the column's data format. Valid formats are: - * - *
    - *
  • text-single -> single line or word of text - *
  • text-private -> instead of showing the user what they typed, you show ***** to - * protect it - *
  • text-multi -> multiple lines of text entry - *
  • list-single -> given a list of choices, pick one - *
  • list-multi -> given a list of choices, pick one or more - *
  • boolean -> 0 or 1, true or false, yes or no. Default value is 0 - *
  • fixed -> fixed for putting in text to show sections, or just advertise your web - * site in the middle of the form - *
  • hidden -> is not given to the user at all, but returned with the questionnaire - *
  • jid-single -> Jabber ID - choosing a JID from your roster, and entering one based - * on the rules for a JID. - *
  • jid-multi -> multiple entries for JIDs - *
+ * Returns the column's data format. * * @return format for the returned data. */ - public String getType() { + public FormField.Type getType() { return type; } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/search/SimpleUserSearch.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/search/SimpleUserSearch.java index 2eeee0361..be7e5aa7e 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/search/SimpleUserSearch.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/search/SimpleUserSearch.java @@ -93,7 +93,7 @@ class SimpleUserSearch extends IQ { protected void parseItems(XmlPullParser parser) throws XmlPullParserException, IOException { ReportedData data = new ReportedData(); - data.addColumn(new ReportedData.Column("JID", "jid", "text-single")); + data.addColumn(new ReportedData.Column("JID", "jid", FormField.Type.text_single)); boolean done = false; @@ -135,7 +135,7 @@ class SimpleUserSearch extends IQ { // Column name should be the same if (!exists) { - ReportedData.Column column = new ReportedData.Column(name, name, "text-single"); + ReportedData.Column column = new ReportedData.Column(name, name, FormField.Type.text_single); data.addColumn(column); } } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/search/UserSearch.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/search/UserSearch.java index 2d9842a4f..f4cae192b 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/search/UserSearch.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/search/UserSearch.java @@ -185,7 +185,7 @@ public class UserSearch extends SimpleIQ { field.setLabel("Nickname"); } - field.setType(FormField.TYPE_TEXT_SINGLE); + field.setType(FormField.Type.text_single); dataForm.addField(field); } else if (eventType == XmlPullParser.END_TAG) { diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/Form.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/Form.java index 2c45fec80..81bc69e53 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/Form.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/Form.java @@ -125,11 +125,14 @@ public class Form { if (field == null) { throw new IllegalArgumentException("Field not found for the specified variable name."); } - if (!FormField.TYPE_TEXT_MULTI.equals(field.getType()) - && !FormField.TYPE_TEXT_PRIVATE.equals(field.getType()) - && !FormField.TYPE_TEXT_SINGLE.equals(field.getType()) - && !FormField.TYPE_JID_SINGLE.equals(field.getType()) - && !FormField.TYPE_HIDDEN.equals(field.getType())) { + switch (field.getType()) { + case text_multi: + case text_private: + case text_single: + case jid_single: + case hidden: + break; + default: throw new IllegalArgumentException("This field is not of type String."); } setAnswer(field, value); @@ -151,11 +154,7 @@ public class Form { if (field == null) { throw new IllegalArgumentException("Field not found for the specified variable name."); } - if (!FormField.TYPE_TEXT_MULTI.equals(field.getType()) - && !FormField.TYPE_TEXT_PRIVATE.equals(field.getType()) - && !FormField.TYPE_TEXT_SINGLE.equals(field.getType())) { - throw new IllegalArgumentException("This field is not of type int."); - } + validateThatFieldIsText(field); setAnswer(field, value); } @@ -175,11 +174,7 @@ public class Form { if (field == null) { throw new IllegalArgumentException("Field not found for the specified variable name."); } - if (!FormField.TYPE_TEXT_MULTI.equals(field.getType()) - && !FormField.TYPE_TEXT_PRIVATE.equals(field.getType()) - && !FormField.TYPE_TEXT_SINGLE.equals(field.getType())) { - throw new IllegalArgumentException("This field is not of type long."); - } + validateThatFieldIsText(field); setAnswer(field, value); } @@ -199,11 +194,7 @@ public class Form { if (field == null) { throw new IllegalArgumentException("Field not found for the specified variable name."); } - if (!FormField.TYPE_TEXT_MULTI.equals(field.getType()) - && !FormField.TYPE_TEXT_PRIVATE.equals(field.getType()) - && !FormField.TYPE_TEXT_SINGLE.equals(field.getType())) { - throw new IllegalArgumentException("This field is not of type float."); - } + validateThatFieldIsText(field); setAnswer(field, value); } @@ -223,14 +214,21 @@ public class Form { if (field == null) { throw new IllegalArgumentException("Field not found for the specified variable name."); } - if (!FormField.TYPE_TEXT_MULTI.equals(field.getType()) - && !FormField.TYPE_TEXT_PRIVATE.equals(field.getType()) - && !FormField.TYPE_TEXT_SINGLE.equals(field.getType())) { - throw new IllegalArgumentException("This field is not of type double."); - } + validateThatFieldIsText(field); setAnswer(field, value); } + private static void validateThatFieldIsText(FormField field) { + switch(field.getType()) { + case text_multi: + case text_private: + case text_single: + break; + default: + throw new IllegalArgumentException("This field is not of type text (multi, private or single)."); + } + } + /** * Sets a new boolean value to a given form's field. The field whose variable matches the * requested variable will be completed with the specified value. If no field could be found @@ -247,7 +245,7 @@ public class Form { if (field == null) { throw new IllegalArgumentException("Field not found for the specified variable name."); } - if (!FormField.TYPE_BOOLEAN.equals(field.getType())) { + if (field.getType() != FormField.Type.bool) { throw new IllegalArgumentException("This field is not of type boolean."); } setAnswer(field, (value ? "1" : "0")); @@ -300,11 +298,14 @@ public class Form { FormField field = getField(variable); if (field != null) { // Check that the field can accept a collection of values - if (!FormField.TYPE_JID_MULTI.equals(field.getType()) - && !FormField.TYPE_LIST_MULTI.equals(field.getType()) - && !FormField.TYPE_LIST_SINGLE.equals(field.getType()) - && !FormField.TYPE_TEXT_MULTI.equals(field.getType()) - && !FormField.TYPE_HIDDEN.equals(field.getType())) { + switch (field.getType()) { + case jid_multi: + case list_multi: + case list_single: + case text_multi: + case hidden: + break; + default: throw new IllegalArgumentException("This field only accept list of values."); } // Clear the old values @@ -520,7 +521,7 @@ public class Form { newField.setType(field.getType()); form.addField(newField); // Set the answer ONLY to the hidden fields - if (FormField.TYPE_HIDDEN.equals(field.getType())) { + if (field.getType() == FormField.Type.hidden) { // Since a hidden field could have many values we need to collect them // in a list List values = new ArrayList(); diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/FormField.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/FormField.java index 92facb542..6ba006cde 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/FormField.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/FormField.java @@ -34,22 +34,94 @@ public class FormField { public static final String ELEMENT = "field"; - public static final String TYPE_BOOLEAN = "boolean"; - public static final String TYPE_FIXED = "fixed"; - public static final String TYPE_HIDDEN = "hidden"; - public static final String TYPE_JID_MULTI = "jid-multi"; - public static final String TYPE_JID_SINGLE = "jid-single"; - public static final String TYPE_LIST_MULTI = "list-multi"; - public static final String TYPE_LIST_SINGLE = "list-single"; - public static final String TYPE_TEXT_MULTI = "text-multi"; - public static final String TYPE_TEXT_PRIVATE = "text-private"; - public static final String TYPE_TEXT_SINGLE = "text-single"; + /** + * Form Field Types as defined in XEP-4 § 3.3. + * + * @see XEP-4 § 3.3 Field Types + */ + public enum Type { + + /** + * Boolean type. Can be 0 or 1, true or false, yes or no. Default value is 0. + *

+ * Note that in XEP-4 this type is called 'boolean', but since that String is a restricted keyword in Java, it + * is named 'bool' in Smack. + *

+ */ + bool, + + /** + * Fixed for putting in text to show sections, or just advertise your web site in the middle of the form + */ + fixed, + + /** + * Is not given to the user at all, but returned with the questionnaire + */ + hidden, + + /** + * multiple entries for JIDs + */ + jid_multi, + + /** + * Jabber ID - choosing a JID from your roster, and entering one based on the rules for a JID. + */ + jid_single, + + /** + * Given a list of choices, pick one or more. + */ + list_multi, + + /** + * Given a list of choices, pick one. + */ + list_single, + + /** + * Multiple lines of text entry. + */ + text_multi, + + /** + * Instead of showing the user what they typed, you show ***** to protect it. + */ + text_private, + + /** + * Single line or word of text. + */ + text_single, + ; + + @Override + public String toString() { + switch (this) { + case bool: + return "boolean"; + default: + return this.name().replace('_', '-'); + } + } + + public static Type fromString(String string) { + switch (string) { + case "boolean": + return bool; + default: + string = string.replace('-', '_'); + return Type.valueOf(string); + } + } + } private String description; private boolean required = false; private String label; private String variable; - private String type; + private Type type; private final List