From 48a0f026e12871db630f98943383d522ab91bbed Mon Sep 17 00:00:00 2001 From: Tilo Villwock Date: Thu, 7 Nov 2024 11:24:39 +0100 Subject: [PATCH] #3304 Extended markup regarding DOI and file references --- .../domain/ddicodebook/FileTxt.java | 6 +++-- .../domain/ddicodebook/IDNo.java | 27 +++++++++++++++++++ .../domain/ddicodebook/Location.java | 12 +++++++++ .../domain/ddicodebook/TitlStmt.java | 2 ++ .../domain/ddicodebook/Var.java | 4 +-- .../service/DataPackageDdiService.java | 26 +++++++++++++----- 6 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/IDNo.java create mode 100644 src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/Location.java diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/FileTxt.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/FileTxt.java index 933ddb440d..7f80963489 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/FileTxt.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/FileTxt.java @@ -4,6 +4,8 @@ import lombok.AllArgsConstructor; +import java.util.List; + /** * Class representing the DDI fileTxt element. */ @@ -16,9 +18,9 @@ public class FileTxt { public FileTxt() {} @XmlElement(name = "fileName") - String fileName; + List fileName; @XmlElement(name = "fileCont") - TextElement fileCont; + List fileCont; } diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/IDNo.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/IDNo.java new file mode 100644 index 0000000000..616fe501ca --- /dev/null +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/IDNo.java @@ -0,0 +1,27 @@ +package eu.dzhw.fdz.metadatamanagement.datapackagemanagement.domain.ddicodebook; + +import lombok.AllArgsConstructor; + +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlValue; + +@AllArgsConstructor +public class IDNo { + + public IDNo() {} + + /** + * e.g. 'DOI' + */ + @XmlAttribute + String agency; + + /** + * The data package version e.g. '1.0.0' + */ + @XmlAttribute + String elementVersion; + + @XmlValue + String dataPackageDOI; +} diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/Location.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/Location.java new file mode 100644 index 0000000000..ef0a911c02 --- /dev/null +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/Location.java @@ -0,0 +1,12 @@ +package eu.dzhw.fdz.metadatamanagement.datapackagemanagement.domain.ddicodebook; + +import lombok.AllArgsConstructor; + +import javax.xml.bind.annotation.XmlAttribute; + +@AllArgsConstructor +public class Location { + + @XmlAttribute(name = "fileid") + String fileId; +} diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/TitlStmt.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/TitlStmt.java index 365e700876..c9d16e19c2 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/TitlStmt.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/TitlStmt.java @@ -21,4 +21,6 @@ public TitlStmt() {} @XmlElement(name = "parTitl") TextElement parTitle; + @XmlElement(name = "IDNo") + IDNo idNo; } diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/Var.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/Var.java index cabc51cb15..7efd3cd73c 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/Var.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/domain/ddicodebook/Var.java @@ -21,8 +21,8 @@ public Var() {} @XmlAttribute(name = "name") String name; - @XmlAttribute(name = "files") - String files; + @XmlElement + Location location; @XmlElement(name = "labl") List labl; diff --git a/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/service/DataPackageDdiService.java b/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/service/DataPackageDdiService.java index 450eb7e67b..43fa867e20 100644 --- a/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/service/DataPackageDdiService.java +++ b/src/main/java/eu/dzhw/fdz/metadatamanagement/datapackagemanagement/service/DataPackageDdiService.java @@ -19,7 +19,9 @@ import eu.dzhw.fdz.metadatamanagement.datapackagemanagement.domain.ddicodebook.DataDscr; import eu.dzhw.fdz.metadatamanagement.datapackagemanagement.domain.ddicodebook.FileDscr; import eu.dzhw.fdz.metadatamanagement.datapackagemanagement.domain.ddicodebook.FileTxt; +import eu.dzhw.fdz.metadatamanagement.datapackagemanagement.domain.ddicodebook.IDNo; import eu.dzhw.fdz.metadatamanagement.datapackagemanagement.domain.ddicodebook.LanguageEnum; +import eu.dzhw.fdz.metadatamanagement.datapackagemanagement.domain.ddicodebook.Location; import eu.dzhw.fdz.metadatamanagement.datapackagemanagement.domain.ddicodebook.StdyDscr; import eu.dzhw.fdz.metadatamanagement.datapackagemanagement.domain.ddicodebook.TextElement; import eu.dzhw.fdz.metadatamanagement.datapackagemanagement.domain.ddicodebook.TitlStmt; @@ -243,8 +245,8 @@ private Var getDdiVar(VariableSubDocument variableDoc) { log.error("An exception occurred querying the variables index. ", e); } String name = variableDoc.getId().split("\\$")[0]; - String files = variableDoc.getDataSetId().split("\\$")[0]; - return new Var(name, files, varLablList, + final var location = new Location(variableDoc.getDataSetId().split("\\$")[0]); + return new Var(name, location, varLablList, qstnList.size() > 0 ? qstnList : null, txtList.size() > 0 ? txtList : null, catgryList); @@ -256,9 +258,17 @@ private Var getDdiVar(VariableSubDocument variableDoc) { * @return the fileDscr element */ private FileDscr getDdiFileDsrc(DataSetSubDocument dataset) { - String id = dataset.getId().split("\\$")[0]; - TextElement fileCont = new TextElement(LanguageEnum.de, dataset.getDescription().getDe()); - FileTxt fileTxt = new FileTxt(id, fileCont); + var id = dataset.getId().split("\\$")[0]; + final var fileTxt = new FileTxt( + List.of( + new TextElement(LanguageEnum.de, id), + new TextElement(LanguageEnum.en, id) + ), + List.of( + new TextElement(LanguageEnum.de, dataset.getDescription().getDe()), + new TextElement(LanguageEnum.en, dataset.getDescription().getEn()) + ) + ); return new FileDscr(id, fileTxt); } @@ -270,7 +280,11 @@ private FileDscr getDdiFileDsrc(DataSetSubDocument dataset) { private StdyDscr getDdiStdyDscr(DataPackageSearchDocument doc) { TextElement titl = new TextElement(LanguageEnum.de, doc.getTitle().getDe()); TextElement parTitl = new TextElement(LanguageEnum.en, doc.getTitle().getEn()); - Citation citation = new Citation(new TitlStmt(titl, parTitl)); + IDNo idNo = null; + if (doc.getDoi() != null && !doc.getDoi().isBlank()) { + idNo = new IDNo("DOI", doc.getRelease().getVersion(), doc.getDoi()); + } + Citation citation = new Citation(new TitlStmt(titl, parTitl, idNo)); return new StdyDscr(citation); } }