diff --git a/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileRemoteService.java b/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileRemoteService.java index 33d3d6b5203bbb5d149858450939dc5345a619f0..387b57e63d78e5fe377a49e310fce26848e3ac2a 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileRemoteService.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/attachments/FileRemoteService.java @@ -35,6 +35,7 @@ import lombok.extern.log4j.Log4j2; @RequiredArgsConstructor class FileRemoteService { private final @NonNull FileRestClient restClient; + private final @NonNull OzgFileMapper ozgFileMapper; OzgFile getFile(FileIdentificationData fileIdentificationData, String address) { var grpcFileMetadata = restClient.getFileMetadata(fileIdentificationData, address); @@ -44,7 +45,7 @@ class FileRemoteService { return null; } - return OzgFileMapper.fromGrpcFileMetadata(grpcFileMetadata.getFileMetadata(), fileIdentificationData.fileId()); + return ozgFileMapper.fromGrpcFileMetadata(grpcFileMetadata.getFileMetadata(), fileIdentificationData.fileId()); } CompletableFuture<String> uploadFile(OzgUploadFile uploadFile, String address) { diff --git a/server/src/main/java/de/ozgcloud/antragsraum/attachments/OzgFileMapper.java b/server/src/main/java/de/ozgcloud/antragsraum/attachments/OzgFileMapper.java index f87c6de086bfdfa78da7e0e22a7722d39a965ad6..83c813973c3e5587ee2d07dd1c44319a32e66fce 100644 --- a/server/src/main/java/de/ozgcloud/antragsraum/attachments/OzgFileMapper.java +++ b/server/src/main/java/de/ozgcloud/antragsraum/attachments/OzgFileMapper.java @@ -20,20 +20,18 @@ package de.ozgcloud.antragsraum.attachments; -import java.util.Objects; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; import de.ozgcloud.antragsraum.proxy.AntragraumGrpcFileMetadata; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; -@NoArgsConstructor(access = AccessLevel.PRIVATE) -class OzgFileMapper { - static OzgFile fromGrpcFileMetadata(AntragraumGrpcFileMetadata grpcFile, String fileId) { - return OzgFile.builder() - .id(fileId) - .fileName(grpcFile.getName()) - .contentType(grpcFile.getContentType()) - .fileSize(Objects.nonNull(grpcFile.getSize()) ? Long.parseLong(grpcFile.getSize()) : -1L) - .build(); - } +@Mapper +interface OzgFileMapper { + + @Mapping(target = "id", source = "fileId") + @Mapping(target = "fileName", source = "grpcFile.name") + @Mapping(target = "contentType", source = "grpcFile.contentType") + @Mapping(target = "fileSize", expression = "java(grpcFile.getSize() != null ? Long.parseLong(grpcFile.getSize()) : -1L)") + OzgFile fromGrpcFileMetadata(AntragraumGrpcFileMetadata grpcFile, String fileId); + } diff --git a/server/src/test/java/de/ozgcloud/antragsraum/attachments/FileRemoteServiceTest.java b/server/src/test/java/de/ozgcloud/antragsraum/attachments/FileRemoteServiceTest.java index 168acec8f3963de9d93c393c1a626d9cf3a38984..a519703c1c6ee78029865dbf8aecadc4525e50b9 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/attachments/FileRemoteServiceTest.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/attachments/FileRemoteServiceTest.java @@ -40,6 +40,8 @@ import org.mockito.Mock; import org.mockito.Spy; import org.mockito.junit.jupiter.MockitoExtension; +import de.ozgcloud.antragsraum.proxy.AntragraumGrpcFileMetadata; + @ExtendWith(MockitoExtension.class) class FileRemoteServiceTest { private static final FileIdentificationData FILE_IDENTIFICATION_DATA = FileIdentificationDataTestFactory.create(); @@ -51,12 +53,17 @@ class FileRemoteServiceTest { @Mock private FileRestClient restClient; + @Mock + private OzgFileMapper ozgFileMapper; + @Nested class TestLoadingFile { @BeforeEach void init() { lenient().when(restClient.getFileMetadata(any(FileIdentificationData.class), anyString())).thenReturn( AntragraumGrpcGetAttachmentMetadataResponseTestFactory.create()); + lenient().when(ozgFileMapper.fromGrpcFileMetadata(any(AntragraumGrpcFileMetadata.class), anyString())) + .thenReturn(OzgFileTestFactory.create()); } @Test diff --git a/server/src/test/java/de/ozgcloud/antragsraum/attachments/FileRemoteServiceTestConfiguration.java b/server/src/test/java/de/ozgcloud/antragsraum/attachments/FileRemoteServiceTestConfiguration.java index 532bc9f603d52860ceab5392bd79cb7ec5b74c34..abbf945050ddad9e86310c2b1525351c4de070a7 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/attachments/FileRemoteServiceTestConfiguration.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/attachments/FileRemoteServiceTestConfiguration.java @@ -22,6 +22,7 @@ package de.ozgcloud.antragsraum.attachments; +import org.mapstruct.factory.Mappers; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; @@ -42,9 +43,14 @@ public class FileRemoteServiceTestConfiguration { return new StubFileRestClient(); } + @Bean + OzgFileMapper ozgFileMapper() { + return Mappers.getMapper(OzgFileMapper.class); + } + @Bean FileRemoteService fileRemoteService() { - return new FileRemoteService(fileRestClient()); + return new FileRemoteService(fileRestClient(), ozgFileMapper()); } @Bean diff --git a/server/src/test/java/de/ozgcloud/antragsraum/attachments/OzgFileMapperTest.java b/server/src/test/java/de/ozgcloud/antragsraum/attachments/OzgFileMapperTest.java index 4936c15a25a696658487b4854592ff353c644e99..0bf371ff7788306ad627870860cc620d1de8e438 100644 --- a/server/src/test/java/de/ozgcloud/antragsraum/attachments/OzgFileMapperTest.java +++ b/server/src/test/java/de/ozgcloud/antragsraum/attachments/OzgFileMapperTest.java @@ -27,40 +27,45 @@ import static org.assertj.core.api.Assertions.*; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; import de.ozgcloud.antragsraum.proxy.AntragraumGrpcFileMetadata; class OzgFileMapperTest { + + private final OzgFileMapper mapper = Mappers.getMapper(OzgFileMapper.class); + @Nested class TestMappingGrpcOzgFile { private final AntragraumGrpcFileMetadata grpcOzgFile = AntragraumGrpcFileMetadataTestFactory.create(); @Test void shouldHaveFileName() { - var file = OzgFileMapper.fromGrpcFileMetadata(grpcOzgFile, FILE_ID); + var file = mapper.fromGrpcFileMetadata(grpcOzgFile, FILE_ID); assertThat(file.fileName()).isEqualTo(FILE_NAME); } @Test void shouldHaveFileSize() { - var file = OzgFileMapper.fromGrpcFileMetadata(grpcOzgFile, FILE_ID); + var file = mapper.fromGrpcFileMetadata(grpcOzgFile, FILE_ID); assertThat(file.fileSize()).isEqualTo(FILE_SIZE); } @Test void shouldHaveContentType() { - var file = OzgFileMapper.fromGrpcFileMetadata(grpcOzgFile, FILE_ID); + var file = mapper.fromGrpcFileMetadata(grpcOzgFile, FILE_ID); assertThat(file.contentType()).isEqualTo(CONTENT_TYPE); } @Test void shouldHaveFileId() { - var file = OzgFileMapper.fromGrpcFileMetadata(grpcOzgFile, FILE_ID); + var file = mapper.fromGrpcFileMetadata(grpcOzgFile, FILE_ID); assertThat(file.id()).isEqualTo(FILE_ID); } } + } \ No newline at end of file