Skip to content
Snippets Groups Projects

OZG-7144 add and fill IntelliFormMetaData

Merged Tobias Bruns requested to merge OZG-7144_oeid_form_customparams into main
5 files
+ 125
27
Compare changes
  • Side-by-side
  • Inline
Files
5
@@ -30,6 +30,7 @@ import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
@@ -49,6 +50,7 @@ import org.xml.sax.SAXException;
import de.ozgcloud.common.binaryfile.TempFileUtils;
import de.ozgcloud.eingang.common.errorhandling.TechnicalException;
import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.FormData.FormDataControl;
import de.ozgcloud.eingang.common.formdata.IncomingFile;
import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
import lombok.RequiredArgsConstructor;
@@ -57,7 +59,8 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
class DepositDataMapper {
// TODO Resolve code duplication (xta-adapter: de.ozgcloud.eingang.xdomea.XMLHelper)
// TODO Resolve code duplication (xta-adapter:
// de.ozgcloud.eingang.xdomea.XMLHelper)
private static final DocumentBuilder DOCUMENT_BUILDER = createDocumentBuilder();
private static DocumentBuilder createDocumentBuilder() {
@@ -75,10 +78,13 @@ class DepositDataMapper {
var document = parsePrimaryXmlRepresentation(depositData, incomingFileMap);
var attachmentGroups = findAttachmentGroups(document);
return mapToFormDataWithRepresentationsAndAttachments(
var formData = mapToFormDataWithRepresentationsAndAttachments(
getRepresentations(incomingFileMap, getAttachmentFileIds(attachmentGroups)),
getAttachmentFileGroups(attachmentGroups, incomingFileMap)
);
getAttachmentFileGroups(attachmentGroups, incomingFileMap));
return formData.toBuilder()
.control(FormDataControl.builder().metaData(Optional.of(buildMetaData(depositData))).build())
.build();
}
private List<String> getAttachmentFileIds(Map<String, List<String>> attachmentGroups) {
@@ -89,8 +95,7 @@ class DepositDataMapper {
private FormData mapToFormDataWithRepresentationsAndAttachments(
List<IncomingFile> representations,
List<IncomingFileGroup> attachments
) {
List<IncomingFileGroup> attachments) {
return FormData.builder()
.attachments(attachments)
.numberOfAttachments(attachments.size())
@@ -131,8 +136,7 @@ class DepositDataMapper {
private Document parsePrimaryXmlRepresentation(DepositData depositData, Map<String, IncomingFile> incomingFileMap) {
// Expect that the <primaryDataAttachmentId> refers to the XML file
return parseDocument(
getIncomingFileById(depositData.getPrimaryDataAttachmentId(), incomingFileMap)
);
getIncomingFileById(depositData.getPrimaryDataAttachmentId(), incomingFileMap));
}
private static Document parseDocument(IncomingFile incomingFile) {
@@ -185,4 +189,13 @@ class DepositDataMapper {
.map(Element.class::cast);
}
IntelliFormMetaData buildMetaData(DepositData depositData) {
var builder = IntelliFormMetaData.builder().origin(depositData.getTimestamp().toGregorianCalendar().toZonedDateTime());
depositData.getCustomParameters()
.forEach(entry -> builder.customParameter(IntelliFormMetaData.CUSTOM_PARAM_PREFIX + entry.key.toUpperCase(), entry.value));
return builder.build();
}
}
Loading