From 772b916102547f9ee0063dd19fd0f20e5a86746e Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Tue, 28 Sep 2021 14:42:28 +0300 Subject: [PATCH] more magic --- .../processor/entity/dossier/FileEntity.java | 1 - .../controller/FileStatusController.java | 9 ++-- .../v1/server/utils/FileModelMapper.java | 21 +++++++++ .../v1/server/utils/MagicConverter.java | 43 ++++++++++++++++--- 4 files changed, 63 insertions(+), 11 deletions(-) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/utils/FileModelMapper.java diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileEntity.java index 4b33cb4dc..1371e4ca1 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileEntity.java @@ -131,7 +131,6 @@ public class FileEntity { @ManyToOne private DossierEntity dossier; - @Column(updatable = false, insertable = false, name = "dossier_id") private String dossierId; diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileStatusController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileStatusController.java index 728c8b798..d575106ca 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileStatusController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileStatusController.java @@ -3,6 +3,7 @@ package com.iqser.red.service.peristence.v1.server.controller; import com.iqser.red.service.peristence.v1.server.service.DossierService; import com.iqser.red.service.peristence.v1.server.service.ExcludeFromAnalysisService; import com.iqser.red.service.peristence.v1.server.service.FileStatusService; +import com.iqser.red.service.peristence.v1.server.utils.FileModelMapper; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel; @@ -34,7 +35,7 @@ public class FileStatusController implements StatusResource { return convert(fileStatusService.getAllStatuses() .stream() .filter(f -> !f.getStatus().equals(FileStatus.DELETED)) - .collect(Collectors.toList()), FileModel.class); + .collect(Collectors.toList()), FileModel.class, new FileModelMapper()); } @@ -44,7 +45,7 @@ public class FileStatusController implements StatusResource { return convert(fileStatusService.getDossierStatus(dossierId) .stream() .filter(f -> !f.getStatus().equals(FileStatus.DELETED)) - .collect(Collectors.toList()), FileModel.class); + .collect(Collectors.toList()), FileModel.class, new FileModelMapper()); } @Override @@ -53,7 +54,7 @@ public class FileStatusController implements StatusResource { return convert(fileStatusService.getDossierStatus(dossierId) .stream() .filter(f -> f.getStatus().equals(FileStatus.DELETED) && f.getHardDeletedTime() == null) - .collect(Collectors.toList()), FileModel.class); + .collect(Collectors.toList()), FileModel.class, new FileModelMapper()); } @@ -61,7 +62,7 @@ public class FileStatusController implements StatusResource { public FileModel getFileStatus(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId) { - return convert(fileStatusService.getStatus(fileId), FileModel.class); + return convert(fileStatusService.getStatus(fileId), FileModel.class, new FileModelMapper()); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/utils/FileModelMapper.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/utils/FileModelMapper.java new file mode 100644 index 000000000..e1bb0c201 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/utils/FileModelMapper.java @@ -0,0 +1,21 @@ +package com.iqser.red.service.peristence.v1.server.utils; + +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.BiConsumer; + +public class FileModelMapper implements BiConsumer { + + @Override + public void accept(FileEntity fileEntity, FileModel fileModel) { + + Map attributes = new HashMap<>(); + fileEntity.getFileAttributes().forEach(fa -> { + attributes.put(fa.getFileAttributeId().getFileAttributeConfigId(), fa.getValue()); + }); + fileModel.setFileAttributes(attributes); + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/utils/MagicConverter.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/utils/MagicConverter.java index 3cfbe2817..433aa2da7 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/utils/MagicConverter.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/utils/MagicConverter.java @@ -11,10 +11,40 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.function.BiConsumer; public class MagicConverter { + @SneakyThrows + public static T convert(S source, Class target, BiConsumer deltaMapper) { + + if (deltaMapper != null) { + var targetObject = convert(source, target); + deltaMapper.accept(source, targetObject); + return targetObject; + } else { + return convert(source, target); + } + } + + + @SneakyThrows + public static List convert(List sources, Class target, BiConsumer deltaMapper) { + + if (deltaMapper != null) { + var targetList = convert(sources, target); + for (int i = 0; i < targetList.size(); i++) { + deltaMapper.accept(sources.get(i), targetList.get(i)); + } + return targetList; + } else { + return convert(sources, target); + } + + } + + @SneakyThrows public static Page convert(org.springframework.data.domain.Page sources, Class target) { Page result = new Page<>(); @@ -26,6 +56,13 @@ public class MagicConverter { } + @SneakyThrows + public static T convert(S source, Class target) { + var noArgsConstructor = target.getConstructor(); + return convertOne(source, target, noArgsConstructor); + } + + @SneakyThrows public static List convert(List sources, Class target) { var noArgsConstructor = target.getConstructor(); @@ -50,12 +87,6 @@ public class MagicConverter { } - @SneakyThrows - public static T convert(S source, Class target) { - var noArgsConstructor = target.getConstructor(); - return convertOne(source, target, noArgsConstructor); - } - @SneakyThrows public static T convertOne(S source, Class target, Constructor constructor) {