22 * #%L
33 * A Batch Processor for SciJava Modules and Scripts
44 * %%
5- * Copyright (C) 2017 - 2018 Friedrich Miescher Institute for Biomedical Research, Basel (Switzerland)
5+ * Copyright (C) 2017 - 2022 Friedrich Miescher Institute for Biomedical Research, Basel (Switzerland)
66 * %%
77 * Redistribution and use in source and binary forms, with or without
88 * modification, are permitted provided that the following conditions are met:
5050import org .scijava .table .Column ;
5151import org .scijava .table .DefaultGenericTable ;
5252import org .scijava .table .Table ;
53+ import org .scijava .task .Task ;
54+ import org .scijava .task .TaskService ;
5355//import org.scijava.widget.FileWidget;
5456
5557@ Plugin (type = Command .class , label = "Choose batch processing parameters" , initializer = "initInputChoice" )
@@ -76,6 +78,9 @@ public class ModuleBatchProcessor<T> extends DynamicCommand {
7678 @ Parameter (type = ItemIO .OUTPUT )
7779 private Table outputTable ;
7880
81+ @ Parameter
82+ private TaskService taskService ;
83+
7984 // -- Initializer --
8085
8186 protected void initInputChoice () {
@@ -114,13 +119,27 @@ public void run() {
114119 scriptModule .resolveOutput (outputKey );
115120 }
116121
122+ String taskName = "Batch:" ;
123+ ModuleInfo scriptInfo = scriptModule .getInfo ();
124+ if (scriptInfo != null && scriptInfo .getName () != null ) {
125+ taskName = scriptInfo .getName ();
126+ }
127+ Task batchTask = taskService .createTask (taskName );
128+ batchTask .setProgressMaximum (inputFileList .length );
129+ batchTask .setCancelCallBack (() -> batchTask .setStatusMessage ("Cancelling batch task..." ));
117130 for (File file : inputFileList ) {
118- if (!processFile (scriptModule , inputModuleItem , file )) {
131+ batchTask .setStatusMessage ("process " +file .getName ());
132+ if (!(processFile (scriptModule , inputModuleItem , file ))) {
119133 log .warn ("Terminating batch process." );
120134 break ; // end for loop
121135 }
136+ if (batchTask .isCanceled ()) {
137+ log .warn ("Terminating batch process." );
138+ break ; // end for loop
139+ }
140+ batchTask .setProgressValue (batchTask .getProgressValue () + 1 );
122141 }
123-
142+ batchTask . finish ();
124143 // case File
125144 // feed files into input
126145 // case Image (not needed if conversion works
0 commit comments