Briefcase export error with "Split select multiples" enabled

What is the problem? Please be detailed.
I'm trying to export data through briefcase with the "Split select multiples" enabled and I get an error message
image

What ODK tool and version are you using? And on what device and operating system version?
ODK Aggregate V2.0.1, Briefcase 1.14.0 (I also tested downloading data from and Aggregate 1.5.0)

What steps can we take to reproduce the problem?

  1. Launch Briefcase
  2. Pull data from Aggregate
  3. export with the option "Split select multiples" enabled

What you have you tried to fix the problem?
I tried with 2 version of Briefcase (1.14.0 and 1.13.1), 2 different version of Aggregate (2.0.1 and 1.5.0).
3 different forms.

Brifecase log:
2019-03-07 12:38:08,696 [Thread-15] ERROR o.o.briefcase.ui.export.ExportPanel - Error while exporting forms
java.lang.NullPointerException: null
at org.opendatakit.briefcase.export.Model.getNames(Model.java:162)
at org.opendatakit.briefcase.export.Model.lambda$getNames$0(Model.java:150)
at java.util.stream.ReferencePipeline$7$1.accept(Unknown Source)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.ReferencePipeline.collect(Unknown Source)
at org.opendatakit.briefcase.export.Model.getNames(Model.java:150)
at org.opendatakit.briefcase.export.Model.lambda$getNames$0(Model.java:150)
at java.util.stream.ReferencePipeline$7$1.accept(Unknown Source)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.ReferencePipeline.collect(Unknown Source)
at org.opendatakit.briefcase.export.Model.getNames(Model.java:150)
at org.opendatakit.briefcase.export.CsvSubmissionMappers.getMainHeader(CsvSubmissionMappers.java:107)
at org.opendatakit.briefcase.export.Csv.main(Csv.java:59)
at org.opendatakit.briefcase.export.Csv.getCsvs(Csv.java:46)
at org.opendatakit.briefcase.export.ExportToCsv.export(ExportToCsv.java:87)
at org.opendatakit.briefcase.export.ExportToCsv.export(ExportToCsv.java:58)
at org.opendatakit.briefcase.ui.export.ExportPanel.lambda$export$8(ExportPanel.java:197)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
at java.util.stream.ReferencePipeline$11$1.accept(Unknown Source)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.ForEachOps$ForEachTask.compute(Unknown Source)
at java.util.concurrent.CountedCompleter.exec(Unknown Source)
at java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
at java.util.concurrent.ForkJoinTask.doInvoke(Unknown Source)
at java.util.concurrent.ForkJoinTask.invoke(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp.evaluateParallel(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.ReferencePipeline.forEach(Unknown Source)
at org.opendatakit.briefcase.ui.export.ExportPanel.export(ExportPanel.java:183)
at java.lang.Thread.run(Unknown Source)

Hi, @aurdipas! I'm taking a look to your report. I'll get back to you with what I find.

2 Likes

Hi again!

As we know, the split-select-multiples feature supports only static itemsets, but when a <select> or <select1> has a static itemset, but includes a predicate such as [some_field='some value'], it becomes a dynamic itemset.

At the moment, I can't provide a quick fix for this scenario, but I've filed an issue documenting this for when we have cycles to address it, or in case anyone wanting to help finds it :slight_smile: