diff --git a/src/main/java/life/qbic/data/processing/Provenance.java b/src/main/java/life/qbic/data/processing/Provenance.java index 94dbed2..9f3f950 100644 --- a/src/main/java/life/qbic/data/processing/Provenance.java +++ b/src/main/java/life/qbic/data/processing/Provenance.java @@ -39,6 +39,9 @@ public class Provenance { @JsonProperty("user") public String userWorkDirectoryPath; + @JsonProperty("measurementId") + public String qbicMeasurementID; + /** * A list of ordered processing folder stops the dataset has traversed and passed successfully. *

diff --git a/src/main/java/life/qbic/data/processing/evaluation/EvaluationRequest.java b/src/main/java/life/qbic/data/processing/evaluation/EvaluationRequest.java index 4fdb2b7..aeaad56 100644 --- a/src/main/java/life/qbic/data/processing/evaluation/EvaluationRequest.java +++ b/src/main/java/life/qbic/data/processing/evaluation/EvaluationRequest.java @@ -2,6 +2,7 @@ import static org.apache.logging.log4j.LogManager.getLogger; +import com.fasterxml.jackson.databind.ObjectMapper; import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -149,6 +150,14 @@ private void evaluateDirectory(File taskDir) { Matcher matcher = measurementIdPattern.matcher(dataset.getName()); var measurementIdResult = matcher.results().map(MatchResult::group).findFirst(); if (measurementIdResult.isPresent()) { + provenance.qbicMeasurementID = measurementIdResult.get(); + provenance.addToHistory(taskDir.getAbsolutePath()); + try { + updateProvenanceFile(provenanceSearch.get(), provenance); + } catch (IOException e) { + LOG.error("Could not update provenance file: %s".formatted(taskDir.getAbsolutePath()), e); + moveToSystemIntervention(taskDir, e.getMessage()); + } moveToTargetDir(taskDir); try { createMarkerFile(targetDirectory, taskDir.getName()); @@ -166,6 +175,11 @@ private void evaluateDirectory(File taskDir) { moveBackToOrigin(taskDir, provenance, errorMessage.toString()); } + private void updateProvenanceFile(File provenanceFile, Provenance provenance) throws IOException { + var mapper = new ObjectMapper(); + mapper.writerWithDefaultPrettyPrinter().writeValue(provenanceFile, provenance); + } + private boolean createMarkerFile(Path targetDirectory, String name) throws IOException { Path markerFileName = Paths.get(".MARKER_is_finished_" + name); return targetDirectory.resolve(markerFileName).toFile().createNewFile();