[tracker/harmattan: 1906/2240] Fixed dup field usage in XMP extractors



commit 7b2dbb7ef29e8dece02c9d9d04ba82a0af6691c7
Author: Philip Van Hoof <philip codeminded be>
Date:   Tue Dec 22 14:42:15 2009 +0100

    Fixed dup field usage in XMP extractors

 src/tracker-extract/tracker-extract-jpeg.c |    7 ++++++-
 src/tracker-extract/tracker-extract-pdf.c  |    7 ++++++-
 src/tracker-extract/tracker-extract-png.c  |   11 +++++++++--
 src/tracker-extract/tracker-extract-tiff.c |   13 ++++++++++---
 src/tracker-extract/tracker-xmp.c          |   21 ++++++++++++++-------
 src/tracker-extract/tracker-xmp.h          |    3 +++
 6 files changed, 48 insertions(+), 14 deletions(-)
---
diff --git a/src/tracker-extract/tracker-extract-jpeg.c b/src/tracker-extract/tracker-extract-jpeg.c
index 4ae3a50..8a215ea 100644
--- a/src/tracker-extract/tracker-extract-jpeg.c
+++ b/src/tracker-extract/tracker-extract-jpeg.c
@@ -294,7 +294,7 @@ extract_jpeg (const gchar          *uri,
 			g_free (ed.make);
 		}
 
-		md.title = tracker_coalesce (2, xd.title, xd.Title, ed.document_name);
+		md.title = tracker_coalesce (3, xd.title, xd.Title, ed.document_name, xd.PDFtitle);
 		md.orientation = tracker_coalesce (3, ed.orientation, xd.Orientation, id.image_orientation);
 		md.copyright = tracker_coalesce (3, ed.copyright, xd.Copyright, xd.rights, id.copyright_notice);
 		md.white_balance = tracker_coalesce (2, ed.white_balance, xd.WhiteBalance);
@@ -324,6 +324,11 @@ extract_jpeg (const gchar          *uri,
 			g_free (xd.keywords);
 		}
 
+		if (xd.PDFkeywords) {
+			insert_keywords (metadata, xd.PDFkeywords);
+			g_free (xd.PDFkeywords);
+		}
+
 		if (xd.subject) {
 			insert_keywords (metadata, xd.subject);
 			g_free (xd.subject);
diff --git a/src/tracker-extract/tracker-extract-pdf.c b/src/tracker-extract/tracker-extract-pdf.c
index bf025f4..44922a9 100644
--- a/src/tracker-extract/tracker-extract-pdf.c
+++ b/src/tracker-extract/tracker-extract-pdf.c
@@ -224,7 +224,7 @@ extract_pdf (const gchar          *uri,
 		g_free (xml);
 		xml = NULL;
 
-		md.title = tracker_coalesce (2, pd.title, xd.title, xd.Title);
+		md.title = tracker_coalesce (3, pd.title, xd.title, xd.Title, xd.PDFtitle);
 		md.subject = tracker_coalesce (2, pd.subject, xd.subject);
 		md.date = tracker_coalesce (3, pd.creation_date, xd.date, xd.DateTimeOriginal);
 		md.author = tracker_coalesce (2, pd.author, xd.creator);
@@ -236,6 +236,11 @@ extract_pdf (const gchar          *uri,
 			g_free (xd.keywords);
 		}
 
+		if (xd.PDFkeywords) {
+			insert_keywords (metadata, xd.PDFkeywords);
+			g_free (xd.PDFkeywords);
+		}
+
 		if (xd.publisher) {
 			tracker_sparql_builder_predicate (metadata, "nco:publisher");
 			tracker_sparql_builder_object_blank_open (metadata);
diff --git a/src/tracker-extract/tracker-extract-png.c b/src/tracker-extract/tracker-extract-png.c
index 482ec27..92518e8 100644
--- a/src/tracker-extract/tracker-extract-png.c
+++ b/src/tracker-extract/tracker-extract-png.c
@@ -194,8 +194,10 @@ read_metadata (png_structp png_ptr, png_infop info_ptr, const gchar *uri, Tracke
 		                                       png_data.author,
 		                                       xmp_data.creator);
 
-		merge_data.title = tracker_coalesce (2, png_data.title,
-		                                     xmp_data.title, xmp_data.Title);
+		merge_data.title = tracker_coalesce (4, png_data.title,
+		                                     xmp_data.title, 
+		                                     xmp_data.Title,
+		                                     xmp_data.PDFtitle);
 
 		merge_data.copyright = tracker_coalesce (2, png_data.copyright,
 		                                         xmp_data.rights);
@@ -266,6 +268,11 @@ read_metadata (png_structp png_ptr, png_infop info_ptr, const gchar *uri, Tracke
 			g_free (xmp_data.keywords);
 		}
 
+		if (xmp_data.PDFkeywords) {
+			insert_keywords (metadata, uri, xmp_data.PDFkeywords);
+			g_free (xmp_data.PDFkeywords);
+		}
+
 		if (xmp_data.subject) {
 			insert_keywords (metadata, uri, xmp_data.subject);
 			g_free (xmp_data.subject);
diff --git a/src/tracker-extract/tracker-extract-tiff.c b/src/tracker-extract/tracker-extract-tiff.c
index 8148eb8..240d463 100644
--- a/src/tracker-extract/tracker-extract-tiff.c
+++ b/src/tracker-extract/tracker-extract-tiff.c
@@ -380,9 +380,11 @@ extract_tiff (const gchar *uri, TrackerSparqlBuilder *metadata)
 		g_free (exif_data.make);
 	}
 
-	merge_data.title = tracker_coalesce (3, tiff_data.documentname,
-	                                     xmp_data.title, xmp_data.Title,
-	                                     exif_data.document_name);
+	merge_data.title = tracker_coalesce (5, tiff_data.documentname,
+	                                     xmp_data.title, 
+	                                     xmp_data.Title,
+	                                     exif_data.document_name,
+	                                     xmp_data.PDFtitle);
 
 	merge_data.orientation = tracker_coalesce (4, tiff_data.orientation,
 	                                           exif_data.orientation,
@@ -464,6 +466,11 @@ extract_tiff (const gchar *uri, TrackerSparqlBuilder *metadata)
 		g_free (xmp_data.keywords);
 	}
 
+	if (xmp_data.PDFkeywords) {
+		insert_keywords (metadata, uri, xmp_data.PDFkeywords);
+		g_free (xmp_data.PDFkeywords);
+	}
+
 	if (xmp_data.subject) {
 		insert_keywords (metadata, uri, xmp_data.subject);
 		g_free (xmp_data.subject);
diff --git a/src/tracker-extract/tracker-xmp.c b/src/tracker-extract/tracker-xmp.c
index d5d9474..fea2859 100644
--- a/src/tracker-extract/tracker-xmp.c
+++ b/src/tracker-extract/tracker-xmp.c
@@ -309,11 +309,11 @@ tracker_xmp_iter_simple (const gchar          *uri,
 	} else
 	/* PDF*/ 
 	if (g_ascii_strcasecmp (schema, NS_PDF) == 0) {
-		if (!data->keywords && g_ascii_strcasecmp (name, "keywords") == 0) {
-			data->keywords = g_strdup (value);
+		if (!data->PDFkeywords && g_ascii_strcasecmp (name, "keywords") == 0) {
+			data->PDFkeywords = g_strdup (value);
 		} else
-		if (!data->title && g_ascii_strcasecmp (name, "title") == 0) {
-			data->title = g_strdup (value);
+		if (!data->PDFtitle && g_ascii_strcasecmp (name, "title") == 0) {
+			data->PDFtitle = g_strdup (value);
 		}
 	} else
 	/* Dublin Core */
@@ -373,7 +373,7 @@ tracker_xmp_iter_simple (const gchar          *uri,
 			data->license = g_strdup (value);
 		}
 	} else
-	/* Photoshop */
+	/* Photoshop TODO: is this needed anyway? */
 	if (g_ascii_strcasecmp (schema,  NS_PHOTOSHOP) == 0) {
 		if (data->City && g_ascii_strcasecmp (name, "City") == 0) {
 			data->City = g_strdup (value);
@@ -543,6 +543,11 @@ tracker_apply_xmp (TrackerSparqlBuilder *metadata, const gchar *uri, TrackerXmpD
 		g_free (xmp_data->subject);
 	}
 
+	if (xmp_data->PDFkeywords) {
+		insert_keywords (metadata, uri, xmp_data->PDFkeywords);
+		g_free (xmp_data->PDFkeywords);
+	}
+
 	if (xmp_data->publisher) {
 		tracker_sparql_builder_predicate (metadata, "nco:publisher");
 
@@ -612,8 +617,10 @@ tracker_apply_xmp (TrackerSparqlBuilder *metadata, const gchar *uri, TrackerXmpD
 		g_free (final_camera);
 	}
 
-	if (xmp_data->title || xmp_data->Title) {
-		gchar *final_title = tracker_coalesce (2, xmp_data->title, xmp_data->Title);
+	if (xmp_data->title || xmp_data->Title || xmp_data->PDFtitle) {
+		gchar *final_title = tracker_coalesce (3, xmp_data->title, 
+		                                       xmp_data->Title, 
+		                                       xmp_data->PDFtitle);
 		tracker_sparql_builder_predicate (metadata, "nie:title");
 		tracker_sparql_builder_object_unvalidated (metadata, final_title);
 		g_free (final_title);
diff --git a/src/tracker-extract/tracker-xmp.h b/src/tracker-extract/tracker-xmp.h
index b525e83..e60bce5 100644
--- a/src/tracker-extract/tracker-xmp.h
+++ b/src/tracker-extract/tracker-xmp.h
@@ -31,6 +31,9 @@ typedef struct {
 	/* NS_CC */
 	gchar *license;
 
+	/* NS_PDF */
+	gchar *PDFtitle, *PDFkeywords;
+
 	/* NS_EXIF */
 	gchar *Title, *DateTimeOriginal, *Artist, *Make, *Model, *Orientation,
 		*Flash, *MeteringMode, *ExposureTime, *FNumber, *FocalLength,



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