evolution-data-server r8869 - in branches/camel-db-summary/camel: . providers/local



Author: sragavan
Date: Thu May 29 06:30:27 2008
New Revision: 8869
URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=8869&view=rev

Log:
Fix add design issues and started local provider work


Modified:
   branches/camel-db-summary/camel/camel-folder-summary.c
   branches/camel-db-summary/camel/camel-folder-summary.h
   branches/camel-db-summary/camel/providers/local/camel-mbox-summary.c

Modified: branches/camel-db-summary/camel/camel-folder-summary.c
==============================================================================
--- branches/camel-db-summary/camel/camel-folder-summary.c	(original)
+++ branches/camel-db-summary/camel/camel-folder-summary.c	Thu May 29 06:30:27 2008
@@ -104,7 +104,6 @@
 static CamelMessageInfo * message_info_new_from_message(CamelFolderSummary *s, CamelMimeMessage *msg);
 static CamelMessageInfo * message_info_load(CamelFolderSummary *, FILE *);
 static int		  message_info_save(CamelFolderSummary *, FILE *, CamelMessageInfo *);
-static int save_message_infos_to_db (CamelFolderSummary *s, CamelException *ex);
 static int		  meta_message_info_save(CamelFolderSummary *s, FILE *out_meta, FILE *out, CamelMessageInfo *info);
 static void		  message_info_free(CamelFolderSummary *, CamelMessageInfo *);
 
@@ -115,6 +114,8 @@
 static int		         content_info_save(CamelFolderSummary *, FILE *, CamelMessageContentInfo *);
 static void		         content_info_free(CamelFolderSummary *, CamelMessageContentInfo *);
 
+static int save_message_infos_to_db (CamelFolderSummary *s, CamelException *ex);
+
 static char *next_uid_string(CamelFolderSummary *s);
 
 static CamelMessageContentInfo * summary_build_content_info(CamelFolderSummary *s, CamelMessageInfo *msginfo, CamelMimeParser *mp);
@@ -124,8 +125,6 @@
 static void camel_folder_summary_init       (CamelFolderSummary *obj);
 static void camel_folder_summary_finalize   (CamelObject *obj);
 
-static CamelMIRecord * message_info_to_db (CamelMessageInfo *info);
-
 static CamelObjectClass *camel_folder_summary_parent;
 
 static void
@@ -681,6 +680,7 @@
 	return 0;
 }
 
+
 static int
 save_message_infos_to_db (CamelFolderSummary *s, CamelException *ex)
 {
@@ -696,7 +696,7 @@
 	count = s->messages->len;
 	for (i = 0; i < count; ++i) {
 		mi = s->messages->pdata [i];
-		mir = message_info_to_db (mi);
+//		mir = message_info_to_db (mi);
 		if (camel_db_write_message_info_record (cdb, folder_name, mir, ex) != 0)
 			return -1;
 	}	
@@ -711,8 +711,9 @@
 	int ret;
 
 	d(printf ("\ncamel_folder_summary_save_to_db called \n"));
-	camel_db_begin_transaction (cdb, ex);
 
+	camel_db_begin_transaction (cdb, ex);
+	
 	record = (((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->summary_header_to_db (s));
 	if (!record) {
 		camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, _("Cannot create folder summary"));
@@ -721,6 +722,7 @@
 
 	ret = camel_db_write_folder_info_record (cdb, record, ex);
 	g_free (record);
+	
 	if (ret != 0) {
 		camel_db_abort_transaction (cdb, ex);
 		return -1;
@@ -733,7 +735,8 @@
 	}
 
 	camel_db_end_transaction (cdb, ex);
-
+ 
+	
 	return ret;
 }
 
@@ -2177,7 +2180,7 @@
 
 
 static CamelMIRecord *
-message_info_to_db (CamelMessageInfo *info)
+message_info_to_db (CamelFolderSummary *s, CamelMessageInfo *info)
 {
 	CamelMIRecord *record = g_new0(CamelMIRecord, 1);
 	CamelMessageInfoBase *mi = (CamelMessageInfoBase *) info;
@@ -2209,15 +2212,15 @@
 	
 	record->followup_flag = g_strdup(camel_message_info_user_tag(info, "follow-up"));
 	record->followup_completed_on = g_strdup(camel_message_info_user_tag(info, "completed-on"));
-	record->followup_due_by = g_strdup(camel_message_info_user_tag(info, "due-by"));
+ 	record->followup_due_by = g_strdup(camel_message_info_user_tag(info, "due-by"));
 
 	tmp = g_string_new (NULL);
 	if (mi->references) {
-		g_string_append_printf (tmp, "%lu %lu %lu", (long unsigned) mi->message_id.id.part.hi, (long unsigned) mi->message_id.id.part.lo, (long unsigned) mi->references->size);
+		g_string_append_printf (tmp, "%lu %lu %lu", (long unsigned)mi->message_id.id.part.hi, (long unsigned)mi->message_id.id.part.lo, (long unsigned)mi->references->size);
 		for (i=0;i<mi->references->size;i++) 
-			g_string_append_printf (tmp, " %lu %lu", (long unsigned) mi->references->references[i].id.part.hi, (long unsigned) mi->references->references[i].id.part.lo);
+			g_string_append_printf (tmp, " %lu %lu", (long unsigned)mi->references->references[i].id.part.hi, (long unsigned)mi->references->references[i].id.part.lo);
 	} else {
-		g_string_append_printf (tmp, "%lu %lu %lu", (long unsigned) mi->message_id.id.part.hi, (long unsigned) mi->message_id.id.part.lo, (long unsigned) 0);		
+		g_string_append_printf (tmp, "%lu %lu %lu", (long unsigned)mi->message_id.id.part.hi, (long unsigned)mi->message_id.id.part.lo, 0);		
 	}
 	record->part = tmp->str;
 	g_string_free (tmp, FALSE);
@@ -2238,11 +2241,11 @@
 
 	tmp = g_string_new (NULL);	
 	count = camel_tag_list_size(&mi->user_tags);
-	g_string_append_printf (tmp, "%lu", (long unsigned) count);	
+	g_string_append_printf (tmp, "%lu", (long unsigned)count);	
 	tag = mi->user_tags;
 	while (tag) {
 		/* FIXME: Should we handle empty tags? Can it be empty? If it potential crasher ahead*/
-		g_string_append_printf (tmp, " %lu-%s %lu-%s", (long unsigned) strlen(tag->name), tag->name, (long unsigned) strlen(tag->value), tag->value);		
+		g_string_append_printf (tmp, " %lu-%s %lu-%s", (long unsigned)strlen(tag->name), tag->name, (long unsigned)strlen(tag->value), tag->value);		
 		tag = tag->next;
 	}
 	record->usertags = tmp->str;
@@ -2252,6 +2255,7 @@
 	return record;
 }
 
+
 static int
 message_info_save(CamelFolderSummary *s, FILE *out, CamelMessageInfo *info)
 {
@@ -3717,13 +3721,13 @@
 	klass->message_info_to_db = message_info_to_db;
 	klass->content_info_from_db = content_info_from_db;
 	klass->content_info_to_db = content_info_to_db;
-	
+	klass->save_message_infos_to_db = save_message_infos_to_db;
+
 	klass->message_info_new_from_header  = message_info_new_from_header;
 	klass->message_info_new_from_parser = message_info_new_from_parser;
 	klass->message_info_new_from_message = message_info_new_from_message;
 	klass->message_info_load = message_info_load;
 	klass->message_info_save = message_info_save;
-	klass->save_message_infos_to_db = save_message_infos_to_db;
 	klass->meta_message_info_save = meta_message_info_save;
 	klass->message_info_free = message_info_free;
 	klass->message_info_clone = message_info_clone;

Modified: branches/camel-db-summary/camel/camel-folder-summary.h
==============================================================================
--- branches/camel-db-summary/camel/camel-folder-summary.h	(original)
+++ branches/camel-db-summary/camel/camel-folder-summary.h	Thu May 29 06:30:27 2008
@@ -244,11 +244,10 @@
 	int (*summary_header_from_db)(CamelFolderSummary *, CamelFIRecord *);
 	CamelFIRecord * (*summary_header_to_db)(CamelFolderSummary *);
 	CamelMessageInfo * (*message_info_from_db) (CamelFolderSummary *, struct _CamelMIRecord*);
-	CamelMIRecord * (*message_info_to_db) (CamelMessageInfo *);
+	CamelMIRecord * (*message_info_to_db) (CamelFolderSummary *, CamelMessageInfo *);
 	CamelMessageContentInfo * (*content_info_from_db) (CamelFolderSummary *, CamelMIRecord *);
 	int (*content_info_to_db) (CamelFolderSummary *, CamelMessageContentInfo *, CamelMIRecord *);
 	int (*save_message_infos_to_db) (CamelFolderSummary *s, CamelException *ex);
-
 	
 	/* create/save/load an individual message info */
 	CamelMessageInfo * (*message_info_new_from_header)(CamelFolderSummary *, struct _camel_header_raw *);
@@ -258,8 +257,6 @@
  	int		   (*message_info_save)(CamelFolderSummary *, FILE *, CamelMessageInfo *);
 	int		   (*meta_message_info_save)(CamelFolderSummary *, FILE *, FILE *, CamelMessageInfo *);
 
-
-
 	void		   (*message_info_free)(CamelFolderSummary *, CamelMessageInfo *);
 	CamelMessageInfo * (*message_info_clone)(CamelFolderSummary *, const CamelMessageInfo *);
 

Modified: branches/camel-db-summary/camel/providers/local/camel-mbox-summary.c
==============================================================================
--- branches/camel-db-summary/camel/providers/local/camel-mbox-summary.c	(original)
+++ branches/camel-db-summary/camel/providers/local/camel-mbox-summary.c	Thu May 29 06:30:27 2008
@@ -49,6 +49,15 @@
 
 #define CAMEL_MBOX_SUMMARY_VERSION (1)
 
+#define EXTRACT_DIGIT(val) part++; val=strtoul (part, &part, 10);
+#define EXTRACT_FIRST_DIGIT(val) val=strtoul (part, &part, 10);
+ 
+static CamelFIRecord * summary_header_to_db (CamelFolderSummary *);
+static int summary_header_from_db (CamelFolderSummary *, CamelFIRecord *);
+static CamelMessageInfo * message_info_from_db(CamelFolderSummary *s, CamelMIRecord *record);
+static CamelMIRecord * message_info_to_db(CamelFolderSummary *s, CamelMessageInfo *info);
+
+
 static int summary_header_load (CamelFolderSummary *, FILE *);
 static int summary_header_save (CamelFolderSummary *, FILE *);
 
@@ -154,6 +163,11 @@
 	sklass->summary_header_load = summary_header_load;
 	sklass->summary_header_save = summary_header_save;
 
+	sklass->summary_header_from_db = summary_header_from_db;
+	sklass->summary_header_to_db = summary_header_to_db;
+	sklass->message_info_from_db = message_info_from_db;
+	sklass->message_info_to_db = message_info_to_db;
+	
 	sklass->message_info_new_from_header  = message_info_new_from_header;
 	sklass->message_info_new_from_parser = message_info_new_from_parser;
 	sklass->message_info_load = message_info_load;
@@ -238,6 +252,24 @@
 	}
 }
 
+static int 
+summary_header_from_db (CamelFolderSummary *s, struct _CamelFIRecord *fir)
+{
+	CamelMboxSummary *mbs = CAMEL_MBOX_SUMMARY(s);
+	char *part;
+
+	((CamelFolderSummaryClass *)camel_mbox_summary_parent)->summary_header_from_db(s, fir);
+
+	part = fir->bdata;
+	if (part) {
+		EXTRACT_DIGIT(mbs->version)
+		EXTRACT_DIGIT(mbs->folder_size)
+	}
+	
+	return 0;
+}
+
+
 static int
 summary_header_load(CamelFolderSummary *s, FILE *in)
 {
@@ -258,6 +290,21 @@
 	return 0;
 }
 
+static CamelFIRecord * 
+summary_header_to_db (CamelFolderSummary *s)
+{
+	CamelMboxSummary *mbs = CAMEL_MBOX_SUMMARY(s);
+	struct _CamelFIRecord *fir;
+	char *tmp;
+
+	fir = ((CamelFolderSummaryClass *)camel_mbox_summary_parent)->summary_header_to_db(s);
+	tmp = fir->bdata;
+	fir->bdata = g_strdup_printf ("%s %lu %lu", tmp ? tmp : "", CAMEL_MBOX_SUMMARY_VERSION, mbs->folder_size);
+	g_free (tmp);
+	
+	return fir;
+}
+
 static int
 summary_header_save(CamelFolderSummary *s, FILE *out)
 {
@@ -366,6 +413,25 @@
 	return mi;
 }
 
+static CamelMessageInfo * 
+message_info_from_db(CamelFolderSummary *s, struct _CamelMIRecord *mir)
+{
+	CamelMessageInfo *mi;
+	char *part;
+
+	mi = ((CamelFolderSummaryClass *)camel_mbox_summary_parent)->message_info_from_db(s, mir);
+
+	if (mi) {
+		CamelMboxMessageInfo *mbi = (CamelMboxMessageInfo *)mi;
+		part = mir->bdata;
+		if (part) {
+			EXTRACT_FIRST_DIGIT (mbi->frompos)
+		}
+	}
+
+	return mi;
+}
+
 static CamelMessageInfo *
 message_info_load(CamelFolderSummary *s, FILE *in)
 {
@@ -401,6 +467,19 @@
 	return 0;
 }
 
+static struct _CamelMIRecord * 
+message_info_to_db(CamelFolderSummary *s, CamelMessageInfo *info)
+{
+	CamelMboxMessageInfo *mbi = (CamelMboxMessageInfo *)info;
+	struct _CamelMIRecord *mir;
+
+	mir = ((CamelFolderSummaryClass *)camel_mbox_summary_parent)->message_info_to_db(s, info);
+	mir->bdata = g_strdup_printf("%lu", mbi->frompos);
+
+	return mir;
+}
+
+
 static int
 message_info_save(CamelFolderSummary *s, FILE *out, CamelMessageInfo *mi)
 {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]