use of org.opendatakit.briefcase.reused.transfer.RemoteServer in project briefcase by opendatakit.
the class ExportPanel method export.
private void export() {
Stream<Job<?>> allJobs = forms.getSelectedForms().stream().map(form -> {
FormKey key = FormKey.from(form);
FormMetadata formMetadata = formMetadataPort.fetch(key).orElseThrow(BriefcaseException::new);
form.setStatusString("Starting to export form");
String formId = form.getFormDefinition().getFormId();
ExportConfiguration configuration = forms.getConfiguration(formId);
FormDefinition formDef = FormDefinition.from((BriefcaseFormDefinition) form.getFormDefinition());
// TODO Abstract away the subtype of RemoteServer. This should say Optional<RemoteServer>
Optional<AggregateServer> savedPullSource = RemoteServer.readFromPrefs(appPreferences, pullPanelPrefs, form);
Job<Void> pullJob = configuration.resolvePullBefore() && savedPullSource.isPresent() ? new PullFromAggregate(http, savedPullSource.get(), appPreferences.getBriefcaseDir().orElseThrow(BriefcaseException::new), false, EventBus::publish, formMetadataPort).pull(form, appPreferences.resolveStartFromLast() ? Optional.of(formMetadata.getCursor()) : Optional.empty()) : Job.noOpSupplier();
Job<Void> exportJob = Job.run(runnerStatus -> ExportToCsv.export(formMetadataPort, formMetadata, form, formDef, appPreferences.getBriefcaseDir().orElseThrow(BriefcaseException::new), configuration, analytics));
Job<Void> exportGeoJsonJob = configuration.resolveIncludeGeoJsonExport() ? Job.run(runnerStatus -> ExportToGeoJson.export(formMetadata, formDef, configuration, analytics)) : Job.noOp;
return Job.run(runnerStatus -> form.clearStatusHistory()).thenRun(pullJob).thenRun(exportJob).thenRun(exportGeoJsonJob);
});
JobsRunner.launchAsync(allJobs).onComplete(form::unsetExporting).waitForCompletion();
}
Aggregations