diff --git a/shanoir-ng-datasets/src/main/java/org/shanoir/ng/processing/service/ProcessingDownloaderServiceImpl.java b/shanoir-ng-datasets/src/main/java/org/shanoir/ng/processing/service/ProcessingDownloaderServiceImpl.java index f86de0f0ab..9dd819d011 100644 --- a/shanoir-ng-datasets/src/main/java/org/shanoir/ng/processing/service/ProcessingDownloaderServiceImpl.java +++ b/shanoir-ng-datasets/src/main/java/org/shanoir/ng/processing/service/ProcessingDownloaderServiceImpl.java @@ -74,7 +74,7 @@ public void massiveDownload(List<DatasetProcessing> processingList, boolean resu private void manageProcessingsDownload(List<DatasetProcessing> processingList, Map<Long, DatasetDownloadError> downloadResults, ZipOutputStream zipOutputStream, String format, boolean withManifest, Map<Long, List<String>> filesByAcquisitionId, Long converterId) throws RestServiceException, IOException { for (DatasetProcessing processing : processingList) { - String processingFilePath = getExecFilepath(processing.getId(), getExaminationDatas(processing.getInputDatasets())); + String processingFilePath = getExecFilepath(processing, getExaminationDatas(processing.getInputDatasets())); String subjectName = getProcessingSubject(processing); for (Dataset dataset : processing.getInputDatasets()) { manageDatasetDownload(dataset, downloadResults, zipOutputStream, subjectName, processingFilePath + "/" + shapeForPath(dataset.getName()), format, withManifest, filesByAcquisitionId, converterId); @@ -141,17 +141,27 @@ private Pair<Long, String> getExaminationDatas(List<Dataset> inputs) { return new Pair<>(0L, ""); } - private String getExecFilepath(Long processingId, Pair<Long, String> examDatas) { + private String getExecFilepath(DatasetProcessing processing, Pair<Long, String> examDatas) { + String execFilePath = ""; + if(Objects.equals(processing.getComment(), "comete_moelle/0.1")){ + if(!processing.getOutputDatasets().stream().filter(it -> Objects.equals(it.getName(), "results.yaml")).toList().isEmpty()) { + execFilePath = "result/"; + } else if(!processing.getOutputDatasets().stream().filter(it -> Objects.equals(it.getName(), "error.yaml")).toList().isEmpty()) { + execFilePath = "error/"; + } else { + execFilePath = "unknown"; + } - String execFilePath = "processing_" + processingId + "_exam_" + examDatas.first(); - if (!Objects.equals(examDatas.second(), "")) { + } + execFilePath += "processing_" + processing.getId() + "_exam_" + examDatas.first(); + if (Objects.nonNull(examDatas.second()) && !Objects.equals(examDatas.second(), "")) { execFilePath += "_" + examDatas.second(); } return shapeForPath(execFilePath); } private String shapeForPath(String path){ - path = path.replaceAll("[^a-zA-Z0-9_\\-]", "_"); + path = path.replaceAll("[^a-zA-Z0-9_]", "_").replaceAll("_+$", "").replaceAll("_+", "_"); if (path.length() > 255) { path = path.substring(0, 254); }