From: Andrea Zagli Date: Thu, 28 May 2020 06:46:42 +0000 (+0200) Subject: Added ZakFormElementValidator::get_xml. X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=8f68c181a8dbb80366f8d6050945c8ba42a8aa8d;p=zakform%2Flibzakform Added ZakFormElementValidator::get_xml. --- diff --git a/src/formelement.c b/src/formelement.c index f806cc9..538c716 100644 --- a/src/formelement.c +++ b/src/formelement.c @@ -1935,5 +1935,11 @@ xmlNode xmlAddChild (xroot, xnode); } + for (i = 0; i < priv->pa_validators->len; i++) + { + xnode = zak_form_element_validator_get_xml ((ZakFormElementValidator *)g_ptr_array_index (priv->pa_validators, i), version); + xmlAddChild (xroot, xnode); + } + return xroot; } diff --git a/src/formelementvalidator.c b/src/formelementvalidator.c index 063b3b2..ad7f695 100644 --- a/src/formelementvalidator.c +++ b/src/formelementvalidator.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2020 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -161,6 +161,7 @@ zak_form_element_validator_set_id (ZakFormElementValidator *validator, { ZakFormElementValidatorPrivate *priv = zak_form_element_validator_get_instance_private (validator); + g_free (priv->id); if (id == NULL) { priv->id = g_strdup (""); @@ -242,6 +243,46 @@ zak_form_element_validator_set_enabled (ZakFormElementValidator *validator, gboo priv->enabled = enabled; } +/** + * zak_form_element_validator_get_xml + * @validator: + * @version: not used. + * + * Returns: the xml for the filter. + */ +xmlNode +*zak_form_element_validator_get_xml (ZakFormElementValidator *validator, const gchar *version) +{ + xmlNode *xnode; + + xnode = xmlNewNode (NULL, (xmlChar *)"validator"); + + if (zak_form_element_validator_get_id (validator) != NULL + && g_strcmp0 (zak_form_element_validator_get_id (validator), "") != 0) + { + xmlSetProp (xnode, (const xmlChar *)"id", (xmlChar *)zak_form_element_validator_get_id (validator)); + } + + if (!zak_form_element_validator_get_enabled (validator)) + { + xmlSetProp (xnode, (const xmlChar *)"disabled", (xmlChar *)"disabled"); + } + + if (zak_form_element_validator_get_message (validator) != NULL + && g_strcmp0 (zak_form_element_validator_get_message (validator), "") != 0 + && g_strcmp0 (zak_form_element_validator_get_message (validator), _("Invalid value")) != 0) + { + xmlSetProp (xnode, (const xmlChar *)"message", (xmlChar *)zak_form_element_validator_get_message (validator)); + } + + if (ZAK_FORM_ELEMENT_VALIDATOR_GET_CLASS (validator)->get_xml!= NULL) + { + ZAK_FORM_ELEMENT_VALIDATOR_GET_CLASS (validator)->get_xml (validator, version, xnode); + } + + return xnode; +} + /* PRIVATE */ static void zak_form_element_validator_set_property (GObject *object, diff --git a/src/formelementvalidator.h b/src/formelementvalidator.h index 4f9d9c5..bff37c2 100644 --- a/src/formelementvalidator.h +++ b/src/formelementvalidator.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2020 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -36,6 +36,8 @@ struct _ZakFormElementValidatorClass gboolean (*xml_parsing) (ZakFormElementValidator *self, xmlNode *xnode); gboolean (*validate) (ZakFormElementValidator *self, const gchar *value); + + void (*get_xml) (ZakFormElementValidator *self, const gchar *version, xmlNode *xnode); }; gboolean zak_form_element_validator_xml_parsing (ZakFormElementValidator *self, xmlNode *xnode); @@ -52,6 +54,8 @@ gchar *zak_form_element_validator_get_message (ZakFormElementValidator *validato gboolean zak_form_element_validator_get_enabled (ZakFormElementValidator *validator); void zak_form_element_validator_set_enabled (ZakFormElementValidator *validator, gboolean enabled); +xmlNode *zak_form_element_validator_get_xml (ZakFormElementValidator *validator, const gchar *version); + G_END_DECLS diff --git a/src/formelementvalidatordate.c b/src/formelementvalidatordate.c index 580fd2d..c6911d7 100644 --- a/src/formelementvalidatordate.c +++ b/src/formelementvalidatordate.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2020 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -44,6 +44,7 @@ static void zak_form_element_validator_date_finalize (GObject *gobject); static gboolean zak_form_element_validator_date_xml_parsing (ZakFormElementValidator *validator, xmlNode *xnode); static gboolean zak_form_element_validator_date_validate (ZakFormElementValidator *validator_date, const gchar *value); +static void zak_form_element_validator_date_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode); struct _ZakFormElementValidatorDate { @@ -77,6 +78,7 @@ zak_form_element_validator_date_class_init (ZakFormElementValidatorDateClass *cl parent_class->xml_parsing = zak_form_element_validator_date_xml_parsing; parent_class->validate = zak_form_element_validator_date_validate; + parent_class->get_xml = zak_form_element_validator_date_get_xml; g_type_class_add_private (object_class, sizeof (ZakFormElementValidatorDatePrivate)); } @@ -390,3 +392,24 @@ zak_form_element_validator_date_validate (ZakFormElementValidator *validator_dat return ret; } + +static void +zak_form_element_validator_date_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode) +{ + ZakFormElementValidatorDate *validator_date = ZAK_FORM_ELEMENT_VALIDATOR_DATE (validator); + ZakFormElementValidatorDatePrivate *priv = ZAK_FORM_ELEMENT_VALIDATOR_DATE_GET_PRIVATE (validator_date); + + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_element_validator_date"); + + if (zak_form_element_validator_date_get_compare_type (validator_date) != ZAK_FORM_COMPARE_TYPE_NONE) + { + xmlSetProp (xnode, (const xmlChar *)"type_comp", (const xmlChar *)zak_form_get_compare_type_stringify (zak_form_element_validator_date_get_compare_type (validator_date))); + } + + if (g_strcmp0 (zak_form_element_validator_date_get_compare_value (validator_date), "") != 0) + { + xmlSetProp (xnode, (const xmlChar *)"value_comp", (const xmlChar *)zak_form_element_validator_date_get_compare_value (validator_date)); + } + + xmlNodeSetContent (xnode, (xmlChar *)zak_form_element_validator_date_get_format (validator_date)); +} diff --git a/src/formelementvalidatorisnumber.c b/src/formelementvalidatorisnumber.c index c2e6f00..2f707bc 100644 --- a/src/formelementvalidatorisnumber.c +++ b/src/formelementvalidatorisnumber.c @@ -45,6 +45,7 @@ static void zak_form_element_validator_is_number_finalize (GObject *gobject); static gboolean zak_form_element_validator_is_number_xml_parsing (ZakFormElementValidator *validator, xmlNode *xnode); static gboolean zak_form_element_validator_is_number_validate (ZakFormElementValidator *validator_is_number, const gchar *value); +static void zak_form_element_validator_is_number_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode); struct _ZakFormElementValidatorIsNumber { @@ -78,6 +79,7 @@ zak_form_element_validator_is_number_class_init (ZakFormElementValidatorIsNumber parent_class->xml_parsing = zak_form_element_validator_is_number_xml_parsing; parent_class->validate = zak_form_element_validator_is_number_validate; + parent_class->get_xml = zak_form_element_validator_is_number_get_xml; g_type_class_add_private (object_class, sizeof (ZakFormElementValidatorIsNumberPrivate)); } @@ -343,3 +345,27 @@ zak_form_element_validator_is_number_validate (ZakFormElementValidator *validato return zak_form_element_validator_validate (ZAK_FORM_ELEMENT_VALIDATOR (validator), _value); } + +static void +zak_form_element_validator_is_number_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode) +{ + ZakFormElementValidatorIsNumber *validator_isnumber = ZAK_FORM_ELEMENT_VALIDATOR_IS_NUMBER (validator); + ZakFormElementValidatorIsNumberPrivate *priv = ZAK_FORM_ELEMENT_VALIDATOR_IS_NUMBER_GET_PRIVATE (validator_isnumber); + + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_element_validator_isnumber"); + + if (zak_form_element_validator_is_number_get_thousands_separator (validator_isnumber) != '.') + { + xmlSetProp (xnode, (const xmlChar *)"thusands_separator", (const xmlChar *)zak_form_element_validator_is_number_get_thousands_separator (validator_isnumber)); + } + + if (zak_form_element_validator_is_number_get_decimals_separator (validator_isnumber) != ',') + { + xmlSetProp (xnode, (const xmlChar *)"decimals_separator", (const xmlChar *)zak_form_element_validator_is_number_get_decimals_separator (validator_isnumber)); + } + + if (!zak_form_element_validator_is_number_get_plusminus (validator_isnumber)) + { + xmlSetProp (xnode, (const xmlChar *)"plusminus", (const xmlChar *)"FALSE"); + } +} diff --git a/src/formelementvalidatornotempty.c b/src/formelementvalidatornotempty.c index ad40f64..498a67a 100644 --- a/src/formelementvalidatornotempty.c +++ b/src/formelementvalidatornotempty.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2020 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -46,6 +46,7 @@ static void zak_form_element_validator_notempty_finalize (GObject *gobject); static gboolean zak_form_element_validator_notempty_xml_parsing (ZakFormElementValidator *validator, xmlNode *xnode); static gboolean zak_form_element_validator_notempty_validate (ZakFormElementValidator *validator_notempty, const gchar *value); +static void zak_form_element_validator_notempty_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode); struct _ZakFormElementValidatorNotempty { @@ -77,6 +78,7 @@ zak_form_element_validator_notempty_class_init (ZakFormElementValidatorNotemptyC parent_class->xml_parsing = zak_form_element_validator_notempty_xml_parsing; parent_class->validate = zak_form_element_validator_notempty_validate; + parent_class->get_xml = zak_form_element_validator_notempty_get_xml; g_type_class_add_private (object_class, sizeof (ZakFormElementValidatorNotemptyPrivate)); @@ -256,3 +258,17 @@ zak_form_element_validator_notempty_validate (ZakFormElementValidator *validator return ret; } + +static void +zak_form_element_validator_notempty_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode) +{ + ZakFormElementValidatorNotempty *validator_notempty = ZAK_FORM_ELEMENT_VALIDATOR_NOTEMPTY (validator); + ZakFormElementValidatorNotemptyPrivate *priv = ZAK_FORM_ELEMENT_VALIDATOR_NOTEMPTY_GET_PRIVATE (validator_notempty); + + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_element_validator_notempty"); + + if (g_strcmp0 (zak_form_element_validator_notempty_get_as_empty_string (validator_notempty), "") != 0) + { + xmlSetProp (xnode, (const xmlChar *)"empty_string", (const xmlChar *)zak_form_element_validator_notempty_get_as_empty_string (validator_notempty)); + } +} diff --git a/src/formelementvalidatornumber.c b/src/formelementvalidatornumber.c index 2bb4fcc..5fb26d2 100644 --- a/src/formelementvalidatornumber.c +++ b/src/formelementvalidatornumber.c @@ -44,6 +44,7 @@ static void zak_form_element_validator_number_finalize (GObject *gobject); static gboolean zak_form_element_validator_number_xml_parsing (ZakFormElementValidator *validator, xmlNode *xnode); static gboolean zak_form_element_validator_number_validate (ZakFormElementValidator *validator_number, const gchar *value); +static void zak_form_element_validator_number_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode); struct _ZakFormElementValidatorNumber { @@ -76,6 +77,7 @@ zak_form_element_validator_number_class_init (ZakFormElementValidatorNumberClass parent_class->xml_parsing = zak_form_element_validator_number_xml_parsing; parent_class->validate = zak_form_element_validator_number_validate; + parent_class->get_xml = zak_form_element_validator_number_get_xml; g_type_class_add_private (object_class, sizeof (ZakFormElementValidatorNumberPrivate)); } @@ -296,3 +298,16 @@ zak_form_element_validator_number_validate (ZakFormElementValidator *validator_n return ret; } + +static void +zak_form_element_validator_number_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode) +{ + ZakFormElementValidatorNumber *validator_number = ZAK_FORM_ELEMENT_VALIDATOR_NUMBER (validator); + ZakFormElementValidatorNumberPrivate *priv = ZAK_FORM_ELEMENT_VALIDATOR_NUMBER_GET_PRIVATE (validator_number); + + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_element_validator_number"); + + xmlSetProp (xnode, (const xmlChar *)"type_comp", (const xmlChar *)zak_form_element_validator_number_get_compare_type (validator_number)); + + xmlSetProp (xnode, (const xmlChar *)"value_comp", (const xmlChar *)zak_form_element_validator_number_get_compare_value (validator_number)); +} diff --git a/src/formelementvalidatorregex.c b/src/formelementvalidatorregex.c index ddce8a5..a7fc1cc 100644 --- a/src/formelementvalidatorregex.c +++ b/src/formelementvalidatorregex.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2020 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -46,6 +46,7 @@ static void zak_form_element_validator_regex_finalize (GObject *gobject); static gboolean zak_form_element_validator_regex_xml_parsing (ZakFormElementValidator *validator, xmlNode *xnode); static gboolean zak_form_element_validator_regex_validate (ZakFormElementValidator *validator_regex, const gchar *value); +static void zak_form_element_validator_regex_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode); struct _ZakFormElementValidatorRegex { @@ -77,6 +78,7 @@ zak_form_element_validator_regex_class_init (ZakFormElementValidatorRegexClass * parent_class->xml_parsing = zak_form_element_validator_regex_xml_parsing; parent_class->validate = zak_form_element_validator_regex_validate; + parent_class->get_xml = zak_form_element_validator_regex_get_xml; g_type_class_add_private (object_class, sizeof (ZakFormElementValidatorRegexPrivate)); @@ -234,7 +236,7 @@ zak_form_element_validator_regex_finalize (GObject *gobject) static gboolean zak_form_element_validator_regex_validate (ZakFormElementValidator *validator_regex, - const gchar *value) + const gchar *value) { gboolean ret; @@ -268,3 +270,14 @@ zak_form_element_validator_regex_validate (ZakFormElementValidator *validator_re return ret; } + +static void +zak_form_element_validator_regex_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode) +{ + ZakFormElementValidatorRegex *validator_regex = ZAK_FORM_ELEMENT_VALIDATOR_REGEX (validator); + ZakFormElementValidatorRegexPrivate *priv = ZAK_FORM_ELEMENT_VALIDATOR_REGEX_GET_PRIVATE (validator_regex); + + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_element_validator_regex"); + + xmlSetProp (xnode, (const xmlChar *)"regex", (const xmlChar *)zak_form_element_validator_regex_get_regex (validator_regex)); +}