diff options
Diffstat (limited to 'src/tracker-extract/tracker-extract-abw.c')
-rw-r--r-- | src/tracker-extract/tracker-extract-abw.c | 50 |
1 files changed, 18 insertions, 32 deletions
diff --git a/src/tracker-extract/tracker-extract-abw.c b/src/tracker-extract/tracker-extract-abw.c index 621e534ff..d8172af2d 100644 --- a/src/tracker-extract/tracker-extract-abw.c +++ b/src/tracker-extract/tracker-extract-abw.c @@ -47,8 +47,7 @@ typedef enum { } AbwParserTag; struct AbwParserData { - TrackerSparqlBuilder *metadata; - TrackerSparqlBuilder *preupdate; + TrackerResource *resource; GString *content; gchar *uri; @@ -109,8 +108,7 @@ abw_parser_text (GMarkupParseContext *context, str, data->uri); } else { data->has_title = TRUE; - tracker_sparql_builder_predicate (data->metadata, "nie:title"); - tracker_sparql_builder_object_unvalidated (data->metadata, str); + tracker_resource_set_string (data->resource, "nie:title", str); } break; case ABW_PARSER_TAG_SUBJECT: @@ -119,29 +117,24 @@ abw_parser_text (GMarkupParseContext *context, str, data->uri); } else { data->has_subject = TRUE; - tracker_sparql_builder_predicate (data->metadata, "nie:subject"); - tracker_sparql_builder_object_unvalidated (data->metadata, str); + tracker_resource_set_string (data->resource, "nie:subject", str); } break; - case ABW_PARSER_TAG_CREATOR: - tracker_sparql_builder_predicate (data->metadata, "nco:creator"); + case ABW_PARSER_TAG_CREATOR: { + TrackerResource *creator; + creator = tracker_extract_new_contact (str); + tracker_resource_set_relation (data->resource, "nco:creator", creator); + g_object_unref (creator); - tracker_sparql_builder_object_blank_open (data->metadata); - tracker_sparql_builder_predicate (data->metadata, "a"); - tracker_sparql_builder_object (data->metadata, "nco:Contact"); - - tracker_sparql_builder_predicate (data->metadata, "nco:fullname"); - tracker_sparql_builder_object_unvalidated (data->metadata, str); - tracker_sparql_builder_object_blank_close (data->metadata); break; + } case ABW_PARSER_TAG_DESCRIPTION: if (data->has_comment) { g_warning ("Avoiding additional comment (%s) in Abiword document '%s'", str, data->uri); } else { data->has_comment = TRUE; - tracker_sparql_builder_predicate (data->metadata, "nie:comment"); - tracker_sparql_builder_object_unvalidated (data->metadata, str); + tracker_resource_set_string (data->resource, "nie:comment", str); } break; case ABW_PARSER_TAG_GENERATOR: @@ -150,8 +143,7 @@ abw_parser_text (GMarkupParseContext *context, str, data->uri); } else { data->has_generator = TRUE; - tracker_sparql_builder_predicate (data->metadata, "nie:generator"); - tracker_sparql_builder_object_unvalidated (data->metadata, str); + tracker_resource_set_string (data->resource, "nie:generator", str); } break; case ABW_PARSER_TAG_KEYWORDS: @@ -160,8 +152,7 @@ abw_parser_text (GMarkupParseContext *context, for (keyword = strtok_r (str, ",; ", &lasts); keyword; keyword = strtok_r (NULL, ",; ", &lasts)) { - tracker_sparql_builder_predicate (data->metadata, "nie:keyword"); - tracker_sparql_builder_object_unvalidated (data->metadata, keyword); + tracker_resource_add_string (data->resource, "nie:keyword", keyword); } } break; @@ -191,7 +182,6 @@ static GMarkupParser parser = { G_MODULE_EXPORT gboolean tracker_extract_get_metadata (TrackerExtractInfo *info) { - TrackerSparqlBuilder *preupdate, *metadata; int fd; gchar *filename, *contents; gboolean retval = FALSE; @@ -199,9 +189,6 @@ tracker_extract_get_metadata (TrackerExtractInfo *info) gsize len; struct stat st; - preupdate = tracker_extract_info_get_preupdate_builder (info); - metadata = tracker_extract_info_get_metadata_builder (info); - f = tracker_extract_info_get_file (info); filename = g_file_get_path (f); @@ -248,11 +235,9 @@ tracker_extract_get_metadata (TrackerExtractInfo *info) AbwParserData data = { 0 }; data.uri = g_file_get_uri (f); - data.metadata = metadata; - data.preupdate = preupdate; + data.resource = tracker_resource_new (NULL); - tracker_sparql_builder_predicate (metadata, "a"); - tracker_sparql_builder_object (metadata, "nfo:Document"); + tracker_resource_add_uri (data.resource, "rdf:type", "nfo:Document"); context = g_markup_parse_context_new (&parser, 0, &data, NULL); g_markup_parse_context_parse (context, contents, len, &error); @@ -262,8 +247,7 @@ tracker_extract_get_metadata (TrackerExtractInfo *info) g_error_free (error); } else { if (data.content) { - tracker_sparql_builder_predicate (metadata, "nie:plainTextContent"); - tracker_sparql_builder_object_unvalidated (metadata, data.content->str); + tracker_resource_set_string (data.resource, "nie:plainTextContent", data.content->str); g_string_free (data.content, TRUE); } @@ -272,8 +256,10 @@ tracker_extract_get_metadata (TrackerExtractInfo *info) g_markup_parse_context_free (context); g_free (data.uri); - } + tracker_extract_info_set_resource (info, data.resource); + g_object_unref (data.resource); + } if (contents) { munmap (contents, len); |