diff options
Diffstat (limited to 'predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaFeedWriter.java')
-rw-r--r-- | predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaFeedWriter.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaFeedWriter.java b/predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaFeedWriter.java new file mode 100644 index 00000000000..544a9a12af0 --- /dev/null +++ b/predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaFeedWriter.java @@ -0,0 +1,43 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.search.predicate.utils; + +import com.yahoo.document.predicate.Predicate; +import org.apache.commons.lang.StringEscapeUtils; + +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.Writer; + +/** + * @author <a href="mailto:magnarn@yahoo-inc.com">Magnar Nedland</a> + */ +public class VespaFeedWriter extends BufferedWriter { + private String namespace; + private String documentType; + + VespaFeedWriter(Writer writer, String namespace, String documentType) throws IOException { + super(writer); + this.namespace = namespace; + this.documentType = documentType; + + this.append("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"); + this.append("<vespafeed>\n"); + } + + @Override + public void close() throws IOException { + this.append("</vespafeed>\n"); + super.close(); + } + + public void writePredicateDocument(int id, String fieldName, Predicate predicate) { + try { + this.append(String.format("<document documenttype=\"%2$s\" documentid=\"id:%1$s:%2$s::%3$d\">\n", + namespace, documentType, id)); + this.append("<" + fieldName + ">" + StringEscapeUtils.escapeHtml(predicate.toString()) + "</" + fieldName + ">\n"); + this.append("</document>\n"); + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} |