From 48440bbe3adab3f3ec7cc167728e04df6831e0bc Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Wed, 4 Dec 2024 19:55:44 +0100 Subject: [PATCH] OZG-6810 [wip] do refactoring --- .../NachrichtenManagerConfiguration.java | 2 + .../file/AttachmentFileMapper.java | 34 ++++++++++++ .../AttachmentFileRemoteService.java} | 14 +++-- .../file/AttachmentFileService.java | 54 +++++++++++++++++++ .../NachrichtenManagerTestApplication.java | 3 -- .../file/AttachmentFileServiceTest.java | 30 +++++++++++ .../file/AttachmentFileTestFactory.java | 46 ++++++++++++++++ 7 files changed, 172 insertions(+), 11 deletions(-) create mode 100644 nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/file/AttachmentFileMapper.java rename nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/{postfach/BinaryFileService.java => file/AttachmentFileRemoteService.java} (71%) create mode 100644 nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/file/AttachmentFileService.java create mode 100644 nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/file/AttachmentFileServiceTest.java create mode 100644 nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/file/AttachmentFileTestFactory.java diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/NachrichtenManagerConfiguration.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/NachrichtenManagerConfiguration.java index 7f8d749..d564c5b 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/NachrichtenManagerConfiguration.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/NachrichtenManagerConfiguration.java @@ -24,6 +24,8 @@ public class NachrichtenManagerConfiguration { public static final String NACHRICHTEN_VORGANG_REMOTE_SERVICE = "nachrichten_vorgangRemoteService"; public static final String NACHRICHTEN_ATTACHED_ITEM_SERVICE = "nachrichten_attachedItemService"; public static final String NACHRICHTEN_OZG_CLOUD_FILE_MAPPER = "nachrichten_OzgCloudFileMapperImpl"; + public static final String BINARY_FILE_SERVICE_NAME = "nachrichten_BinaryFileService"; + public static final String BINARY_FILE_REMOTE_SERVICE_NAME = "nachrichten_BinaryFileRemoteService"; public static final String GRPC_VORGANG_MANAGER_NAME = "vorgang-manager"; public static final String GRPC_COMMAND_MANAGER_NAME = "command-manager"; diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/file/AttachmentFileMapper.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/file/AttachmentFileMapper.java new file mode 100644 index 0000000..8b39ba1 --- /dev/null +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/file/AttachmentFileMapper.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.nachrichten.file; + +import org.mapstruct.Mapper; + +import de.ozgcloud.vorgang.grpc.file.GrpcOzgFile; + +@Mapper +interface AttachmentFileMapper { + + AttachmentFile fromOzgFile(GrpcOzgFile ozgFile); +} diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/BinaryFileService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/file/AttachmentFileRemoteService.java similarity index 71% rename from nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/BinaryFileService.java rename to nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/file/AttachmentFileRemoteService.java index 6f7465c..4595837 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/BinaryFileService.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/file/AttachmentFileRemoteService.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,16 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.nachrichten.postfach; +package de.ozgcloud.nachrichten.file; -import java.io.InputStream; +import org.springframework.stereotype.Component; -import com.mongodb.client.gridfs.model.GridFSFile; +import de.ozgcloud.nachrichten.NachrichtenManagerConfiguration; -//Temporally replacement for using GRPC Api -public interface BinaryFileService { +@Component(NachrichtenManagerConfiguration.BINARY_FILE_REMOTE_SERVICE_NAME) +class AttachmentFileRemoteService { - InputStream getUploadedFileStream(FileId fileId); - GridFSFile getFile(FileId fileId); } diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/file/AttachmentFileService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/file/AttachmentFileService.java new file mode 100644 index 0000000..856cdde --- /dev/null +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/file/AttachmentFileService.java @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.nachrichten.file; + +import java.io.InputStream; + +import org.springframework.stereotype.Service; + +import de.ozgcloud.nachrichten.NachrichtenManagerConfiguration; +import de.ozgcloud.nachrichten.postfach.FileId; +import lombok.RequiredArgsConstructor; + +@Service(NachrichtenManagerConfiguration.BINARY_FILE_SERVICE_NAME) +@RequiredArgsConstructor +public class AttachmentFileService { + + private final AttachmentFileRemoteService attachmentFileRemoteService; + private final AttachmentFileMapper attachmentFileMapper; + + public AttachmentFile getFile(FileId fileId) { + // new TechnicalException("Can not find attachment with id " + fileId)); + return attachmentFileMapper.fromOzgFile(null); + } + + public InputStream getFileContent(FileId fileId) { + return InputStream.nullInputStream(); + } + + public String createAttachmentFile(AttachmentFile binaryFile, InputStream fileContent) { + return ""; + } + +} diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/NachrichtenManagerTestApplication.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/NachrichtenManagerTestApplication.java index 489b714..36c71b3 100644 --- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/NachrichtenManagerTestApplication.java +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/NachrichtenManagerTestApplication.java @@ -7,7 +7,6 @@ import org.springframework.context.annotation.ComponentScan; import de.ozgcloud.apilib.common.command.OzgCloudCommandService; import de.ozgcloud.apilib.file.OzgCloudFileService; -import de.ozgcloud.nachrichten.postfach.BinaryFileService; import de.ozgcloud.nachrichten.postfach.muk.MukPostfachConfiguration; @SpringBootApplication @@ -22,7 +21,5 @@ public class NachrichtenManagerTestApplication { @MockBean @Qualifier(MukPostfachConfiguration.OZG_CLOUD_FILE_SERVICE_NAME) private OzgCloudFileService mukOzgCloudFileServices; - @MockBean - private BinaryFileService binaryFileService; } diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/file/AttachmentFileServiceTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/file/AttachmentFileServiceTest.java new file mode 100644 index 0000000..1d1d53e --- /dev/null +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/file/AttachmentFileServiceTest.java @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.nachrichten.file; + +import static org.junit.jupiter.api.Assertions.*; + +class AttachmentFileServiceTest { + +} \ No newline at end of file diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/file/AttachmentFileTestFactory.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/file/AttachmentFileTestFactory.java new file mode 100644 index 0000000..fc2a3ac --- /dev/null +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/file/AttachmentFileTestFactory.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.nachrichten.file; + +import com.thedeanda.lorem.LoremIpsum; + +import de.ozgcloud.nachrichten.common.vorgang.VorgangTestFactory; + +public class AttachmentFileTestFactory { + + public static final String NAME = LoremIpsum.getInstance().getWords(1); + public static final String CONTENT_TYPE = LoremIpsum.getInstance().getWords(1); + public static final String VORGANG_ID = VorgangTestFactory.ID; + + public static AttachmentFile create() { + return createBuilder().build(); + } + + public static AttachmentFile.AttachmentFileBuilder createBuilder() { + return AttachmentFile.builder() + .name(NAME) + .contentType(CONTENT_TYPE) + .vorgangId(VORGANG_ID); + } +} -- GitLab