summaryrefslogtreecommitdiff
path: root/src/tracker-extract/tracker-extract-abw.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tracker-extract/tracker-extract-abw.c')
-rw-r--r--src/tracker-extract/tracker-extract-abw.c50
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);