summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSivaiah Nallagatla <snallagatla@novel.com>2004-05-31 13:52:43 +0000
committerSivaiah Nallagatla <siva@src.gnome.org>2004-05-31 13:52:43 +0000
commit656dacb9253c820b58d488504662553150c25bdc (patch)
tree1866270efe9fdc327c8832e11b66084cea25f8ac
parenta275dfb7d645a7f0f2affe29f3b3d5eb93668052 (diff)
downloadevolution-data-server-656dacb9253c820b58d488504662553150c25bdc.tar.gz
separate out group handling from contact code and make a separate function
2004-05-31 Sivaiah Nallagatla <snallagatla@novel.com> * e-gw-connection.c (set_group_fields_from_soap_parameter) : separate out group handling from contact code and make a separate function
-rw-r--r--servers/groupwise/ChangeLog6
-rw-r--r--servers/groupwise/e-gw-item.c86
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 <snallagatla@novel.com>
+
+ * 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 <snallagatla@novell.com>
* 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;
}