private void buildRow(Map<String, String> variables, Set<String> reportColumns) {
   StringBinding successOrNot =
       Bindings.when(completelySuccessful())
           .then(ApplicationState.getMessage(COMPLETED_SUCCESSFUL))
           .otherwise(ApplicationState.getMessage(COMPLETED_UNSUCCESSFUL));
   reportRow().add(new ReadOnlyStringWrapper(task));
   reportRow()
       .add(
           Bindings.when(Bindings.greaterThanOrEqual(percentComplete(), 1))
               .then(successOrNot)
               .otherwise(ApplicationState.getMessage(INCOMPLETE)));
   reportRow()
       .add(
           Bindings.createStringBinding(
               () -> String.format("%.0f%%", 100.0 * percentComplete().get()), percentComplete()));
   reportRow().add(getDuration());
   reportColumns.forEach(
       (colName) -> reportRow().add(new SimpleStringProperty(variables.get(colName))));
 }