diff options
Diffstat (limited to 'src/tracker-extract/tracker-extract-msoffice.c')
-rw-r--r-- | src/tracker-extract/tracker-extract-msoffice.c | 81 |
1 files changed, 37 insertions, 44 deletions
diff --git a/src/tracker-extract/tracker-extract-msoffice.c b/src/tracker-extract/tracker-extract-msoffice.c index 579221574..976477c31 100644 --- a/src/tracker-extract/tracker-extract-msoffice.c +++ b/src/tracker-extract/tracker-extract-msoffice.c @@ -125,7 +125,7 @@ typedef struct { } ExcelExtendedStringRecord; typedef struct { - TrackerSparqlBuilder *metadata; + TrackerResource *metadata; const gchar *uri; } MetadataInfo; @@ -176,13 +176,12 @@ msoffice_string_process_octal_triplets (guchar *str) } static void -metadata_add_gvalue (TrackerSparqlBuilder *metadata, - const gchar *uri, - const gchar *key, - GValue const *val, - const gchar *type, - const gchar *predicate, - gboolean is_date) +metadata_add_gvalue (TrackerResource *metadata, + const gchar *key, + GValue const *val, + const gchar *type, + const gchar *predicate, + gboolean is_date) { gchar *s; @@ -248,18 +247,15 @@ metadata_add_gvalue (TrackerSparqlBuilder *metadata, msoffice_string_process_octal_triplets (str_val); if (type && predicate) { - tracker_sparql_builder_predicate (metadata, key); + TrackerResource *child = tracker_resource_new (NULL); + tracker_resource_set_uri (child, "rdf:type", type); + tracker_resource_set_string (child, predicate, str_val); - tracker_sparql_builder_object_blank_open (metadata); - tracker_sparql_builder_predicate (metadata, "a"); - tracker_sparql_builder_object (metadata, type); + tracker_resource_add_relation (metadata, key, child); - tracker_sparql_builder_predicate (metadata, predicate); - tracker_sparql_builder_object_unvalidated (metadata, str_val); - tracker_sparql_builder_object_blank_close (metadata); + g_object_unref (child); } else { - tracker_sparql_builder_predicate (metadata, key); - tracker_sparql_builder_object_unvalidated (metadata, str_val); + tracker_resource_set_string (metadata, key, str_val); } g_free (str_val); @@ -280,11 +276,11 @@ summary_metadata_cb (gpointer key, val = gsf_doc_prop_get_val (value); if (g_strcmp0 (key, "dc:title") == 0) { - metadata_add_gvalue (info->metadata, info->uri, "nie:title", val, NULL, NULL, FALSE); + metadata_add_gvalue (info->metadata, "nie:title", val, NULL, NULL, FALSE); } else if (g_strcmp0 (key, "dc:subject") == 0) { - metadata_add_gvalue (info->metadata, info->uri, "nie:subject", val, NULL, NULL, FALSE); + metadata_add_gvalue (info->metadata, "nie:subject", val, NULL, NULL, FALSE); } else if (g_strcmp0 (key, "dc:creator") == 0) { - metadata_add_gvalue (info->metadata, info->uri, "nco:creator", val, "nco:Contact", "nco:fullname", FALSE); + metadata_add_gvalue (info->metadata, "nco:creator", val, "nco:Contact", "nco:fullname", FALSE); } else if (g_strcmp0 (key, "dc:keywords") == 0) { gchar *keywords, *str = g_strdup_value_contents (val); gchar *lasts, *keyw; @@ -306,21 +302,20 @@ summary_metadata_cb (gpointer key, for (keyw = strtok_r (keywords, ",; ", &lasts); keyw; keyw = strtok_r (NULL, ",; ", &lasts)) { - tracker_sparql_builder_predicate (info->metadata, "nie:keyword"); - tracker_sparql_builder_object_unvalidated (info->metadata, keyw); + tracker_resource_add_string (info->metadata, "nie:keyword", keyw); } g_free (str); } else if (g_strcmp0 (key, "dc:description") == 0) { - metadata_add_gvalue (info->metadata, info->uri, "nie:comment", val, NULL, NULL, FALSE); + metadata_add_gvalue (info->metadata, "nie:comment", val, NULL, NULL, FALSE); } else if (g_strcmp0 (key, "gsf:page-count") == 0) { - metadata_add_gvalue (info->metadata, info->uri, "nfo:pageCount", val, NULL, NULL, FALSE); + metadata_add_gvalue (info->metadata, "nfo:pageCount", val, NULL, NULL, FALSE); } else if (g_strcmp0 (key, "gsf:word-count") == 0) { - metadata_add_gvalue (info->metadata, info->uri, "nfo:wordCount", val, NULL, NULL, FALSE); + metadata_add_gvalue (info->metadata, "nfo:wordCount", val, NULL, NULL, FALSE); } else if (g_strcmp0 (key, "meta:creation-date") == 0) { - metadata_add_gvalue (info->metadata, info->uri, "nie:contentCreated", val, NULL, NULL, TRUE); + metadata_add_gvalue (info->metadata, "nie:contentCreated", val, NULL, NULL, TRUE); } else if (g_strcmp0 (key, "meta:generator") == 0) { - metadata_add_gvalue (info->metadata, info->uri, "nie:generator", val, NULL, NULL, FALSE); + metadata_add_gvalue (info->metadata, "nie:generator", val, NULL, NULL, FALSE); } } @@ -333,7 +328,6 @@ document_metadata_cb (gpointer key, MetadataInfo *info = user_data; metadata_add_gvalue (info->metadata, - info->uri, "nie:license", gsf_doc_prop_get_val (value), NULL, @@ -1548,15 +1542,12 @@ extract_excel_content (GsfInfile *infile, * @param uri uri of the file */ static gboolean -extract_summary (TrackerSparqlBuilder *metadata, - GsfInfile *infile, - const gchar *uri) +extract_summary (TrackerResource *metadata, + GsfInfile *infile, + const gchar *uri) { GsfInput *stream; - tracker_sparql_builder_predicate (metadata, "a"); - tracker_sparql_builder_object (metadata, "nfo:PaginatedTextDocument"); - stream = gsf_infile_child_by_name (infile, "\05SummaryInformation"); if (stream) { @@ -1632,7 +1623,7 @@ extract_summary (TrackerSparqlBuilder *metadata, G_MODULE_EXPORT gboolean tracker_extract_get_metadata (TrackerExtractInfo *info) { - TrackerSparqlBuilder *metadata; + TrackerResource *metadata; TrackerConfig *config; GsfInfile *infile = NULL; gchar *content = NULL, *uri; @@ -1645,7 +1636,6 @@ tracker_extract_get_metadata (TrackerExtractInfo *info) gsf_init (); - metadata = tracker_extract_info_get_metadata_builder (info); mime_used = tracker_extract_info_get_mimetype (info); file = tracker_extract_info_get_file (info); @@ -1673,6 +1663,10 @@ tracker_extract_get_metadata (TrackerExtractInfo *info) return FALSE; } + metadata = tracker_resource_new (NULL); + + tracker_resource_add_uri (metadata, "rdf:type", "nfo:PaginatedTextDocument"); + /* Extracting summary */ extract_summary (metadata, infile, uri); @@ -1685,14 +1679,12 @@ tracker_extract_get_metadata (TrackerExtractInfo *info) content = extract_msword_content (infile, max_bytes, &is_encrypted); } else if (g_ascii_strcasecmp (mime_used, "application/vnd.ms-powerpoint") == 0) { /* PowerPoint file */ - tracker_sparql_builder_predicate (metadata, "a"); - tracker_sparql_builder_object (metadata, "nfo:Presentation"); + tracker_resource_add_uri (metadata, "rdf:type", "nfo:Presentation"); content = extract_powerpoint_content (infile, max_bytes, &is_encrypted); } else if (g_ascii_strcasecmp (mime_used, "application/vnd.ms-excel") == 0) { /* Excel File */ - tracker_sparql_builder_predicate (metadata, "a"); - tracker_sparql_builder_object (metadata, "nfo:Spreadsheet"); + tracker_resource_add_uri(metadata, "rdf:type", "nfo:Spreadsheet"); content = extract_excel_content (infile, max_bytes, &is_encrypted); } else { @@ -1700,14 +1692,12 @@ tracker_extract_get_metadata (TrackerExtractInfo *info) } if (content) { - tracker_sparql_builder_predicate (metadata, "nie:plainTextContent"); - tracker_sparql_builder_object_unvalidated (metadata, content); + tracker_resource_set_string (metadata, "nie:plainTextContent", content); g_free (content); } if (is_encrypted) { - tracker_sparql_builder_predicate (metadata, "nfo:isContentEncrypted"); - tracker_sparql_builder_object_boolean (metadata, TRUE); + tracker_resource_set_boolean (metadata, "nfo:isContentEncrypted", TRUE); } g_object_unref (infile); @@ -1717,5 +1707,8 @@ tracker_extract_get_metadata (TrackerExtractInfo *info) tracker_file_close (mfile, FALSE); } + tracker_extract_info_set_resource (info, metadata); + g_object_unref (metadata); + return TRUE; } |