tracker r2201 - in branches/indexer-split: . src/libtracker-common src/tracker-indexer src/trackerd



Author: mottela
Date: Mon Sep  8 16:18:41 2008
New Revision: 2201
URL: http://svn.gnome.org/viewvc/tracker?rev=2201&view=rev

Log:
Fixed problems with date handling in metadata fields

Modified:
   branches/indexer-split/ChangeLog
   branches/indexer-split/src/libtracker-common/tracker-type-utils.c
   branches/indexer-split/src/libtracker-common/tracker-type-utils.h
   branches/indexer-split/src/tracker-indexer/tracker-indexer-db.c
   branches/indexer-split/src/trackerd/tracker-db.c

Modified: branches/indexer-split/src/libtracker-common/tracker-type-utils.c
==============================================================================
--- branches/indexer-split/src/libtracker-common/tracker-type-utils.c	(original)
+++ branches/indexer-split/src/libtracker-common/tracker-type-utils.c	Mon Sep  8 16:18:41 2008
@@ -42,20 +42,21 @@
 is_int (const gchar *str)
 {
 	gboolean valid;
-	gint     i;
+	gint     i, len;
 
 	if (!str || str[0] == '\0') {
 		return FALSE;
 	}
 
-	valid = TRUE;
-	i = 0;
+	len = strlen (str);
 
-	while (valid) {
-		valid = g_ascii_isdigit (str[i++]);
+	for (i = 0; i < len; i++) {
+		if (!g_ascii_isdigit(str[i])) {
+			return FALSE;
+		}
 	}
 
-	return valid;
+	return TRUE ;
 }
 
 static gint
@@ -299,6 +300,27 @@
 	return g_strdup (timestamp);
 }
 
+gchar *
+tracker_date_to_time_string (const gchar  *time_string)
+{
+	gchar *dvalue;
+	
+	dvalue = tracker_date_format (time_string);
+
+	if (dvalue) {
+		time_t time;
+
+		time = tracker_string_to_date (dvalue);
+		g_free (dvalue);
+
+		if (time != -1) {
+			return tracker_gint_to_string (time);
+		} 
+	}
+
+	return NULL;	
+}
+
 static gboolean
 is_valid_8601_datetime (const gchar *timestamp)
 {

Modified: branches/indexer-split/src/libtracker-common/tracker-type-utils.h
==============================================================================
--- branches/indexer-split/src/libtracker-common/tracker-type-utils.h	(original)
+++ branches/indexer-split/src/libtracker-common/tracker-type-utils.h	Mon Sep  8 16:18:41 2008
@@ -27,6 +27,7 @@
 G_BEGIN_DECLS
 
 gchar *  tracker_date_format                   (const gchar  *time_string);
+gchar *  tracker_date_to_time_string           (const gchar  *date_string);
 time_t   tracker_string_to_date                (const gchar  *time_string);
 gchar *  tracker_date_to_string                (time_t        date_time);
 gchar *  tracker_glong_to_string               (glong         i);

Modified: branches/indexer-split/src/tracker-indexer/tracker-indexer-db.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-indexer-db.c	(original)
+++ branches/indexer-split/src/tracker-indexer/tracker-indexer-db.c	Mon Sep  8 16:18:41 2008
@@ -613,6 +613,7 @@
 	TrackerDBInterface *iface;
 	gint metadata_key;
 	gchar *id_str;
+	gchar *time_string;
 
 	id_str = tracker_guint32_to_string (id);
 	iface = tracker_db_manager_get_db_interface_by_type (tracker_service_get_name (service),
@@ -641,7 +642,6 @@
 		break;
 
 	case TRACKER_FIELD_TYPE_INTEGER:
-	case TRACKER_FIELD_TYPE_DATE:
 		tracker_db_interface_execute_procedure (iface, NULL,
 							"SetMetadataNumeric",
 							id_str,
@@ -650,6 +650,20 @@
 							NULL);
 		break;
 
+	case TRACKER_FIELD_TYPE_DATE:
+
+		time_string = tracker_date_to_time_string (value);
+
+		tracker_db_interface_execute_procedure (iface, NULL,
+							"SetMetadataNumeric",
+							id_str,
+							tracker_field_get_id (field),
+							time_string,
+							NULL);
+		g_free (time_string);
+
+		break;
+
 	case TRACKER_FIELD_TYPE_FULLTEXT:
 		tracker_db_set_text (service, id, value);
 		break;

Modified: branches/indexer-split/src/trackerd/tracker-db.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-db.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-db.c	Mon Sep  8 16:18:41 2008
@@ -291,27 +291,6 @@
 }
 
 static gchar *
-format_date (const gchar *avalue)
-{
-	gchar *dvalue;
-
-	dvalue = tracker_date_format (avalue);
-
-	if (dvalue) {
-		time_t time;
-
-		time = tracker_string_to_date (dvalue);
-		g_free (dvalue);
-
-		if (time != -1) {
-			return tracker_gint_to_string (time);
-		} 
-	}
-
-	return NULL;
-}
-
-static gchar *
 get_backup_id (TrackerDBInterface *iface,
 	       const gchar        *id)
 {
@@ -1772,7 +1751,7 @@
 				continue;
 			}
 
-			mvalue = format_date (values[i]);
+			mvalue = tracker_date_to_time_string (values[i]);
 
 			if (!mvalue) {
 				g_warning ("Could not format date:'%s'", values[i]);
@@ -1814,7 +1793,7 @@
 			gchar *esc_value = NULL;
 
 			if (tracker_field_get_data_type (def) == TRACKER_FIELD_TYPE_DATE) {
-				esc_value = format_date (values[0]);
+				esc_value = tracker_date_to_time_string (values[0]);
 
 				if (!esc_value) {
 					return NULL;



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