evolution-data-server r8869 - in branches/camel-db-summary/camel: . providers/local
- From: sragavan svn gnome org
- To: svn-commits-list gnome org
- Subject: evolution-data-server r8869 - in branches/camel-db-summary/camel: . providers/local
- Date: Thu, 29 May 2008 06:30:28 +0000 (UTC)
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]