more magic

This commit is contained in:
Timo Bejan 2021-09-28 14:42:28 +03:00
parent addbb2bee7
commit 772b916102
4 changed files with 63 additions and 11 deletions

View File

@ -131,7 +131,6 @@ public class FileEntity {
@ManyToOne
private DossierEntity dossier;
@Column(updatable = false, insertable = false, name = "dossier_id")
private String dossierId;

View File

@ -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());
}

View File

@ -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<FileEntity, FileModel> {
@Override
public void accept(FileEntity fileEntity, FileModel fileModel) {
Map<String, String> attributes = new HashMap<>();
fileEntity.getFileAttributes().forEach(fa -> {
attributes.put(fa.getFileAttributeId().getFileAttributeConfigId(), fa.getValue());
});
fileModel.setFileAttributes(attributes);
}
}

View File

@ -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 <S, T> T convert(S source, Class<T> target, BiConsumer<S, T> deltaMapper) {
if (deltaMapper != null) {
var targetObject = convert(source, target);
deltaMapper.accept(source, targetObject);
return targetObject;
} else {
return convert(source, target);
}
}
@SneakyThrows
public static <S, T> List<T> convert(List<S> sources, Class<T> target, BiConsumer<S, T> 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 <S, T> Page<T> convert(org.springframework.data.domain.Page<S> sources, Class<T> target) {
Page<T> result = new Page<>();
@ -26,6 +56,13 @@ public class MagicConverter {
}
@SneakyThrows
public static <S, T> T convert(S source, Class<T> target) {
var noArgsConstructor = target.getConstructor();
return convertOne(source, target, noArgsConstructor);
}
@SneakyThrows
public static <S, T> List<T> convert(List<S> sources, Class<T> target) {
var noArgsConstructor = target.getConstructor();
@ -50,12 +87,6 @@ public class MagicConverter {
}
@SneakyThrows
public static <S, T> T convert(S source, Class<T> target) {
var noArgsConstructor = target.getConstructor();
return convertOne(source, target, noArgsConstructor);
}
@SneakyThrows
public static <S, T> T convertOne(S source, Class<T> target, Constructor<T> constructor) {