Skip to content
Snippets Groups Projects
Commit 67c67295 authored by Jan Zickermann's avatar Jan Zickermann
Browse files

OZG-5413 xdomea: Refactor mapping to message data

parent 3875277b
Branches
Tags
No related merge requests found
......@@ -25,37 +25,54 @@ public class XdomeaMessageDataMapper {
public XdomeaMessageData mapIncomingFilesToXdomeaMessageData(List<IncomingFile> incomingFileList) {
var xdomeaXMLFile = findXdomeaXMLFile(incomingFileList);
var representationFileNames = valueReader.readRepresentationFileNames(xdomeaXMLFile);
var attachmentFileNames = getFileNamesExcluding(
incomingFileList,
Stream.concat(Stream.of(xdomeaXMLFile.getName()), representationFileNames.stream())
);
var fileNameToFileMap = incomingFileList.stream()
.collect(Collectors.toMap(IncomingFile::getName, file -> file));
var fileNameToFileMap = createFileNameToIncomingFileMap(incomingFileList);
return XdomeaMessageData.builder()
.metadataFile(xdomeaXMLFile)
// Representations are incoming files which are referenced in the xdomea-xml in 'Dateiname' elements
.representations(getFilesByName(
movePrimaryRepresentationFileNameToFirstPosition(representationFileNames),
fileNameToFileMap
)
)
// Attachments are all incoming files which are neither the xdomea-xml nor representations
.attachments(Stream.of(IncomingFileGroup.builder()
.name(ATTACHMENT_GROUP_NAME)
.files(getFilesByName(
dropNames(
incomingFileList.stream().map(IncomingFile::getName),
Stream.concat(Stream.of(xdomeaXMLFile.getName()), representationFileNames.stream())
.collect(Collectors.toSet())
),
fileNameToFileMap))
.build())
// Do not include empty attachment group
.filter(group -> !group.getFiles().isEmpty())
.toList()
)
.representations(getRepresentations(representationFileNames, fileNameToFileMap))
.attachments(getAttachments(attachmentFileNames, fileNameToFileMap))
.build();
}
private Map<String, IncomingFile> createFileNameToIncomingFileMap(List<IncomingFile> incomingFileList) {
return incomingFileList.stream()
.collect(Collectors.toMap(IncomingFile::getName, file -> file));
}
private Stream<String> getFileNamesExcluding(List<IncomingFile> incomingFileList, Stream<String> excludedFileNames) {
return dropNames(
incomingFileList.stream().map(IncomingFile::getName),
excludedFileNames.collect(Collectors.toSet())
);
}
private List<IncomingFile> getRepresentations(List<String> representationFileNames, Map<String, IncomingFile> fileNameToFileMap) {
return getFilesByName(
movePrimaryRepresentationFileNameToFirstPosition(representationFileNames),
fileNameToFileMap
);
}
private List<IncomingFileGroup> getAttachments(Stream<String> attachmentFileNames, Map<String, IncomingFile> fileNameToFileMap) {
return Stream.of(IncomingFileGroup.builder()
.name(ATTACHMENT_GROUP_NAME)
.files(
getFilesByName(
attachmentFileNames,
fileNameToFileMap
)
)
.build())
// Do not include empty attachment group
.filter(group -> !group.getFiles().isEmpty())
.toList();
}
private Stream<String> movePrimaryRepresentationFileNameToFirstPosition(List<String> representationFileNames) {
var primaryRepresentationFileName = findPrimaryRepresentationName(representationFileNames);
return Stream.concat(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment