Export Scenario to ZIP

This task exports the contents of the selected scenario to a ZIP archive, in CSV format.

   @Bean
    public ScriptedTaskDescription zipExportTask() {
        ScriptedTaskDescription task = new ScriptedTaskDescription("ZipExportTask", "Export scenario to ZIP");
        task.setDescription("Export the contents of the selected scenario to a ZIP archive, in CSV format");
        setI18nKeys(task, "ZIP_EXPORT");

        var scenario = VariableAccessExpression.ofScenario();
        var baseFileName = VariableAccessExpression.of("base file name");
        var filter = VariableAccessExpression.ofFilter();

        task.getScript()

            .addStatement(AskInputStatement.ofVariable(scenario, true, JobInputType.SCENARIO_ID))
            .addStatement(AskInputStatement.ofVariable(baseFileName, true, ParameterTypes.TEXT, "Name of the file to export to. Warning: a '.zip' extension will be appended."))
            .addStatement(AskInputStatement.ofVariable(filter, false, JobInputType.ENTITIES, "Select the tables to export"))

            .addStatement(SetTaskOutputStatement.of("ZIP file",
                FileExpression.of(
                    StringExpression.concat(baseFileName, StringExpression.of(".zip")),
                    BlobExpression.of(ScenarioDataExpression.of(scenario).onlyTables(filter).withFormat(CSV)),
                    StringExpression.of("application/octet-stream")
                )));

        return task;
    }