diff options
Diffstat (limited to 'vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java')
-rw-r--r-- | vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java | 70 |
1 files changed, 53 insertions, 17 deletions
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java b/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java index a6e34055fbd..ceea7d320e9 100644 --- a/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java +++ b/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java @@ -24,7 +24,6 @@ import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import java.io.*; -import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.stream.Collectors; @@ -334,9 +333,15 @@ public class VdsVisit { .hasArg(false) .build()); + options.addOption(Option.builder() + .longOpt("jsonl") + .desc("Output documents as JSONL (JSON Lines format)") + .hasArg(false) + .build()); + options.addOption(Option.builder("x") .longOpt("xmloutput") - .desc("Output documents as XML") + .desc("Output documents as XML (deprecated)") .hasArg(false) .build()); @@ -370,6 +375,7 @@ public class VdsVisit { private int processTime = 0; private int fullTimeout = 7 * 24 * 60 * 60 * 1000; private boolean jsonOutput = true; + private boolean jsonLinesOutput = false; private boolean tensorShortForm = false; // TODO Vespa 9: change default to true private boolean tensorDirectValues = false; // TODO Vespa 9: change default to true @@ -437,10 +443,32 @@ public class VdsVisit { this.processTime = processTime; } + public boolean jsonOutput() { + return jsonOutput; + } + public void setJsonOutput(boolean jsonOutput) { this.jsonOutput = jsonOutput; } + public boolean jsonLinesOutput() { + return jsonLinesOutput; + } + + public void setJsonLinesOutput(boolean jsonLinesOutput) { + this.jsonLinesOutput = jsonLinesOutput; + } + + public StdOutVisitorHandler.OutputFormat stdOutHandlerOutputFormat() { + if (jsonLinesOutput) { + return StdOutVisitorHandler.OutputFormat.JSONL; + } else if (jsonOutput) { + return StdOutVisitorHandler.OutputFormat.JSON; + } else { + return StdOutVisitorHandler.OutputFormat.XML; + } + } + public boolean tensorShortForm() { return tensorShortForm; } @@ -587,11 +615,18 @@ public class VdsVisit { } boolean jsonOutput = line.hasOption("jsonoutput"); - boolean xmlOutput = line.hasOption("xmloutput"); - if (jsonOutput && xmlOutput) { - throw new IllegalArgumentException("Cannot combine both xml and json output"); + boolean jsonl = line.hasOption("jsonl"); + boolean xmlOutput = line.hasOption("xmloutput"); + if ((jsonOutput || jsonl) && xmlOutput) { + throw new IllegalArgumentException("Cannot combine both XML and JSON output"); + } else if (jsonOutput && jsonl) { + throw new IllegalArgumentException("Cannot combine both JSON and JSONL output"); + } + if (jsonl) { + allParams.setJsonLinesOutput(true); + } else { + allParams.setJsonOutput(!xmlOutput); } - allParams.setJsonOutput(!xmlOutput); allParams.setVisitorParameters(params); return allParams; @@ -747,17 +782,18 @@ public class VdsVisit { VdsVisitHandler handler; - handler = new StdOutVisitorHandler( - params.isPrintIdsOnly(), - params.isVerbose(), - params.isVerbose(), - params.isVerbose(), - params.getStatisticsParts() != null, - params.getAbortOnClusterDown(), - params.getProcessTime(), - params.jsonOutput, - params.tensorShortForm, - params.tensorDirectValues); + var handlerParams = new StdOutVisitorHandler.Params(); + handlerParams.printIds = params.isPrintIdsOnly(); + handlerParams.indentXml = params.isVerbose(); + handlerParams.showProgress = params.isVerbose(); + handlerParams.showStatistics = params.isVerbose(); + handlerParams.doStatistics = params.getStatisticsParts() != null; + handlerParams.abortOnClusterDown = params.getAbortOnClusterDown(); + handlerParams.processTimeMilliSecs = params.getProcessTime(); + handlerParams.outputFormat = params.stdOutHandlerOutputFormat(); + handlerParams.tensorShortForm = params.tensorShortForm(); + handlerParams.tensorDirectValues = params.tensorDirectValues(); + handler = new StdOutVisitorHandler(handlerParams); if (visitorParameters.getResumeFileName() != null) { handler.setProgressFileName(visitorParameters.getResumeFileName()); |