From 656dacb9253c820b58d488504662553150c25bdc Mon Sep 17 00:00:00 2001 From: Sivaiah Nallagatla Date: Mon, 31 May 2004 13:52:43 +0000 Subject: separate out group handling from contact code and make a separate function 2004-05-31 Sivaiah Nallagatla * e-gw-connection.c (set_group_fields_from_soap_parameter) : separate out group handling from contact code and make a separate function --- servers/groupwise/ChangeLog | 6 +++ servers/groupwise/e-gw-item.c | 86 +++++++++++++++++++++++++++++++------------ 2 files changed, 69 insertions(+), 23 deletions(-) diff --git a/servers/groupwise/ChangeLog b/servers/groupwise/ChangeLog index 667426cf3..e6e77767e 100644 --- a/servers/groupwise/ChangeLog +++ b/servers/groupwise/ChangeLog @@ -1,3 +1,9 @@ +2004-05-31 Sivaiah Nallagatla + + * e-gw-connection.c (set_group_fields_from_soap_parameter) : + separate out group handling from contact code and make a + separate function + 2004-05-28 Sivaiah Nallagatla * e-gw-connection.[ch] (e_gw_connection_get_items_from_ids) : diff --git a/servers/groupwise/e-gw-item.c b/servers/groupwise/e-gw-item.c index bf02ad7dd..0cd653ddb 100644 --- a/servers/groupwise/e-gw-item.c +++ b/servers/groupwise/e-gw-item.c @@ -697,7 +697,8 @@ set_contact_fields_from_soap_parameter (EGwItem *item, SoupSoapParameter *param) temp = soup_soap_parameter_get_first_child_by_name(subparam, "lastName"); if (temp) { value = soup_soap_parameter_get_string_value (temp); - full_name->last_name = value; + if (value) + full_name->last_name = value; } temp = soup_soap_parameter_get_first_child_by_name(subparam, "nameSuffix"); if (temp) { @@ -729,15 +730,17 @@ set_contact_fields_from_soap_parameter (EGwItem *item, SoupSoapParameter *param) IMAddress *im_address = g_new0(IMAddress, 1); im_address->address = im_address->service = NULL; second_level_child = soup_soap_parameter_get_first_child_by_name (temp, "service"); - if (second_level_child) + if (second_level_child) { value = soup_soap_parameter_get_string_value (second_level_child); - if (value ) - im_address->service = value; + if (value ) + im_address->service = value; + } second_level_child = soup_soap_parameter_get_first_child_by_name (temp, "address"); - if (second_level_child) + if (second_level_child) { value = soup_soap_parameter_get_string_value (second_level_child); - if (value) - im_address->address = value; + if (value) + im_address->address = value; + } if (im_address->service && im_address->address) item->priv->im_list = g_list_append (item->priv->im_list, im_address); else @@ -800,6 +803,44 @@ set_contact_fields_from_soap_parameter (EGwItem *item, SoupSoapParameter *param) } } + + subparam = soup_soap_parameter_get_first_child_by_name (param, "addressList"); + if (subparam) { + for ( temp = soup_soap_parameter_get_first_child (subparam); temp != NULL; temp = soup_soap_parameter_get_next_child (temp)) { + + address = g_new0 (PostalAddress, 1); + set_postal_address_from_soap_parameter (address, temp); + value = soup_soap_parameter_get_property(temp, "type"); + if (value) + g_hash_table_insert (item->priv->addresses, value, address); + + + } + + } + +} +static void +set_group_fields_from_soap_parameter (EGwItem *item, SoupSoapParameter *param) +{ + + char *value; + SoupSoapParameter *subparam, *temp, *second_level_child; + GHashTable *simple_fields; + + if (strcmp (soup_soap_parameter_get_name (param), "item") != 0) { + g_warning (G_STRLOC ": Invalid SOAP parameter %s", soup_soap_parameter_get_name (param)); + return; + } + + set_common_addressbook_item_fields_from_soap_parameter (item, param); + simple_fields = item->priv->simple_fields; + + /* set name as the ful name also , as it is needed for searching*/ + value = g_hash_table_lookup (simple_fields, "name"); + if (value) + item->priv->full_name->first_name = g_strdup (value); + subparam = soup_soap_parameter_get_first_child_by_name (param, "members"); if (subparam) { char *id, *email; @@ -817,26 +858,13 @@ set_contact_fields_from_soap_parameter (EGwItem *item, SoupSoapParameter *param) member->email = email; item->priv->member_list = g_list_append (item->priv->member_list, member); } - - } - } - - subparam = soup_soap_parameter_get_first_child_by_name (param, "addressList"); - if (subparam) { - for ( temp = soup_soap_parameter_get_first_child (subparam); temp != NULL; temp = soup_soap_parameter_get_next_child (temp)) { - - address = g_new0 (PostalAddress, 1); - set_postal_address_from_soap_parameter (address, temp); - value = soup_soap_parameter_get_property(temp, "type"); - if (value) - g_hash_table_insert (item->priv->addresses, value, address); - } - } + } + static void set_resource_fields_from_soap_parameter (EGwItem *item, SoupSoapParameter *param) { @@ -852,6 +880,12 @@ set_resource_fields_from_soap_parameter (EGwItem *item, SoupSoapParameter *param set_common_addressbook_item_fields_from_soap_parameter (item, param); simple_fields = item->priv->simple_fields; + + /* set name as the ful name also , as it is needed for searching*/ + value = g_hash_table_lookup (simple_fields, "name"); + if (value) + item->priv->full_name->first_name = g_strdup (value); + subparam = soup_soap_parameter_get_first_child_by_name (param, "phone"); if(subparam) { value = soup_soap_parameter_get_string_value (subparam); @@ -882,6 +916,12 @@ set_organization_fields_from_soap_parameter (EGwItem *item, SoupSoapParameter *p } set_common_addressbook_item_fields_from_soap_parameter (item, param); simple_fields = item->priv->simple_fields; + + /* set name as the ful name also , as it is needed for searching*/ + value = g_hash_table_lookup (simple_fields, "name"); + if (value) + item->priv->full_name->first_name = g_strdup (value); + subparam = soup_soap_parameter_get_first_child_by_name (param, "phone"); if(subparam) { value = soup_soap_parameter_get_string_value (subparam); @@ -1202,7 +1242,7 @@ e_gw_item_new_from_soap_parameter (const char *container, SoupSoapParameter *par else if (!g_ascii_strcasecmp (item_type, "Group")) { item->priv->item_type = E_GW_ITEM_TYPE_GROUP; - set_contact_fields_from_soap_parameter (item, param); + set_group_fields_from_soap_parameter (item, param); return item; } -- cgit v1.2.1