From 1e568bb2ddb22bb928b9c53ca07043fa51bd36e3 Mon Sep 17 00:00:00 2001 From: sgiannopoulos Date: Thu, 11 Apr 2024 11:14:26 +0300 Subject: [PATCH] no message --- .../description/DescriptionServiceImpl.java | 28 +++++++++++++------ .../storage/StorageFileServiceImpl.java | 2 +- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java index ff50c79f0..39e4268d2 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java @@ -491,16 +491,26 @@ public class DescriptionServiceImpl implements DescriptionService { if (persist == null) return data; if (FieldType.isTextType(fieldType)) { - if (FieldType.UPLOAD.equals(fieldType) && !this.conventionService.isNullOrEmpty(persist.getTextValue())){ - UUID fileId = this.conventionService.isValidUUID(persist.getTextValue()) ? UUID.fromString(persist.getTextValue()) : null; - if (fileId != null && !this.storageFileService.fileRefExists(fileId.toString(), StorageType.Main)){ - StorageFile storageFile = this.storageFileService.copyToStorage(fileId, StorageType.Main, true, new BaseFieldSet().ensure(StorageFile._id)); - this.storageFileService.updatePurgeAt(storageFile.getId(), null); + if (FieldType.UPLOAD.equals(fieldType)){ + UUID newFileId = this.conventionService.isValidUUID(persist.getTextValue()) ? UUID.fromString(persist.getTextValue()) : null; + UUID existingFileId = this.conventionService.isValidUUID(data.getTextValue()) ? UUID.fromString(data.getTextValue()) : null; + if (newFileId != null){ + if (!newFileId.equals(existingFileId)) { + StorageFile storageFile = this.storageFileService.copyToStorage(newFileId, StorageType.Main, true, new BaseFieldSet().ensure(StorageFile._id)); + this.storageFileService.updatePurgeAt(storageFile.getId(), null); + if (existingFileId != null){ + this.storageFileService.updatePurgeAt(existingFileId, Instant.now().minusSeconds(60)); + } + data.setTextValue(storageFile.getId().toString()); + } else { + data.setTextValue(newFileId.toString()); + } + } else { + if (existingFileId != null){ + this.storageFileService.updatePurgeAt(existingFileId, Instant.now().minusSeconds(60)); + } + data.setTextValue(null); } - if (this.conventionService.isValidUUID(data.getTextValue()) && !UUID.fromString(data.getTextValue()).equals(fileId)) { - this.storageFileService.updatePurgeAt(UUID.fromString(data.getTextValue()), Instant.now().minusSeconds(60)); - } - data.setTextValue(fileId == null ? null : fileId.toString()); } else { data.setTextValue(persist.getTextValue()); } diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/storage/StorageFileServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/storage/StorageFileServiceImpl.java index 81595b86e..836e7359c 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/storage/StorageFileServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/storage/StorageFileServiceImpl.java @@ -181,7 +181,7 @@ public class StorageFileServiceImpl implements StorageFileService { this.entityManager.persist(data); this.entityManager.merge(storageFile); - return this.builderFactory.builder(StorageFileBuilder.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).build(BaseFieldSet.build(fields, StorageFile._id), storageFile); + return this.builderFactory.builder(StorageFileBuilder.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).build(BaseFieldSet.build(fields, StorageFile._id), data); } catch (Exception ex) {