From d80cc417568225af9c25c41f252103db549a2870 Mon Sep 17 00:00:00 2001 From: "Gantner, Florian Klaus" Date: Thu, 26 Dec 2024 13:34:51 +0100 Subject: [PATCH] update citeproc dependency to 3.2.0 and adaptions for nested csl generation https://github.com/4Science/DSpace/issues/352 --- dspace-api/pom.xml | 6 +++--- .../integration/crosswalks/csl/CSLNestedGenerator.java | 3 ++- .../content/integration/crosswalks/csl/CSLResult.java | 7 +++++-- .../crosswalks/csl/DSpaceListItemDataProvider.java | 2 +- .../test/data/dspaceFolder/assetstore/crosswalk/apa.txt | 4 ++-- .../assetstore/crosswalk/publication-ieee.html | 4 ++-- .../data/dspaceFolder/assetstore/crosswalk/publication.bib | 2 +- .../assetstore/crosswalk/publications-ieee.html | 6 +++--- .../integration/crosswalks/CSLItemDataCrosswalkIT.java | 3 +++ 9 files changed, 22 insertions(+), 15 deletions(-) diff --git a/dspace-api/pom.xml b/dspace-api/pom.xml index e570e0538ac3..fe2cd6a438cf 100644 --- a/dspace-api/pom.xml +++ b/dspace-api/pom.xml @@ -866,7 +866,7 @@ de.undercouch citeproc-java - 1.0.1 + 3.2.0 org.apache.commons @@ -885,12 +885,12 @@ org.citationstyles locales - 1.0 + 24.12 org.citationstyles styles - 1.0 + 24.12 diff --git a/dspace-api/src/main/java/org/dspace/content/integration/crosswalks/csl/CSLNestedGenerator.java b/dspace-api/src/main/java/org/dspace/content/integration/crosswalks/csl/CSLNestedGenerator.java index f4d27cc7203e..a12b343ce4c5 100644 --- a/dspace-api/src/main/java/org/dspace/content/integration/crosswalks/csl/CSLNestedGenerator.java +++ b/dspace-api/src/main/java/org/dspace/content/integration/crosswalks/csl/CSLNestedGenerator.java @@ -42,7 +42,8 @@ public CSLResult generate(DSpaceListItemDataProvider itemDataProvider, String st return null; } Bibliography bibliography = citeproc.makeBibliography(); - return CSLResult.fromBibliography(format, bibliography); + + return CSLResult.fromBibliography(format, itemDataProvider.getIds().toArray(String[]::new), bibliography); } private CSL createCitationProcessor(DSpaceListItemDataProvider itemDataProvider, String style, String format) { diff --git a/dspace-api/src/main/java/org/dspace/content/integration/crosswalks/csl/CSLResult.java b/dspace-api/src/main/java/org/dspace/content/integration/crosswalks/csl/CSLResult.java index 93aae0818d87..ca38b400b96f 100644 --- a/dspace-api/src/main/java/org/dspace/content/integration/crosswalks/csl/CSLResult.java +++ b/dspace-api/src/main/java/org/dspace/content/integration/crosswalks/csl/CSLResult.java @@ -50,8 +50,11 @@ public CSLResult(String format, UUID[] itemIds, String[] citationEntries, String } - public static CSLResult fromBibliography(String format, Bibliography bibliogr) { - UUID[] entryIds = convertToUUIDs(bibliogr.getEntryIds()); + public static CSLResult fromBibliography(String format, String[] uuids, Bibliography bibliogr) { + UUID[] entryIds = convertToUUIDs(uuids); + // UUID[] entryIds = bibliogr.getEntryIds() + // entryID in bibliography is empty in citeproc 3. See the Format who sets the empty value while generating the + // Bibliography return new CSLResult(format, entryIds, bibliogr.getEntries(), bibliogr.makeString()); } diff --git a/dspace-api/src/main/java/org/dspace/content/integration/crosswalks/csl/DSpaceListItemDataProvider.java b/dspace-api/src/main/java/org/dspace/content/integration/crosswalks/csl/DSpaceListItemDataProvider.java index 8cc43a339751..7833adbea021 100644 --- a/dspace-api/src/main/java/org/dspace/content/integration/crosswalks/csl/DSpaceListItemDataProvider.java +++ b/dspace-api/src/main/java/org/dspace/content/integration/crosswalks/csl/DSpaceListItemDataProvider.java @@ -201,7 +201,7 @@ protected CSLItemDataBuilder handleStringFields(Item item, CSLItemDataBuilder it consumeMetadataIfNotBlank(originalPublisherPlace, item, value -> itemBuilder.originalPublisherPlace(value)); consumeMetadataIfNotBlank(originalTitle, item, value -> itemBuilder.originalTitle(value)); consumeMetadataIfNotBlank(page, item, value -> itemBuilder.page(value)); - consumeMetadataIfNotBlank(pageFirst, item, value -> itemBuilder.pageFirst(value)); + //consumeMetadataIfNotBlank(pageFirst, item, value -> itemBuilder.pageFirst(value)); consumeMetadataIfNotBlank(PMCID, item, value -> itemBuilder.PMCID(value)); consumeMetadataIfNotBlank(PMID, item, value -> itemBuilder.PMID(value)); consumeMetadataIfNotBlank(publisher, item, value -> itemBuilder.publisher(value)); diff --git a/dspace-api/src/test/data/dspaceFolder/assetstore/crosswalk/apa.txt b/dspace-api/src/test/data/dspaceFolder/assetstore/crosswalk/apa.txt index f1c57aaa6c33..ea386baa320d 100644 --- a/dspace-api/src/test/data/dspaceFolder/assetstore/crosswalk/apa.txt +++ b/dspace-api/src/test/data/dspaceFolder/assetstore/crosswalk/apa.txt @@ -1,2 +1,2 @@ -Smith, J., & Red, E. (2018). Publication title. V01(3). https://doi.org/10.1000/182 -White, W. (2020). Another Publication title. https://doi.org/10.1000/183 +Smith, J., & Red, E. (2018). Publication title. V01(03). https://doi.org/10.1000/182 +White, W. (2020). Another Publication title (, Ed.). https://doi.org/10.1000/183 diff --git a/dspace-api/src/test/data/dspaceFolder/assetstore/crosswalk/publication-ieee.html b/dspace-api/src/test/data/dspaceFolder/assetstore/crosswalk/publication-ieee.html index 6c01e5e44183..2c3d72ce09df 100644 --- a/dspace-api/src/test/data/dspaceFolder/assetstore/crosswalk/publication-ieee.html +++ b/dspace-api/src/test/data/dspaceFolder/assetstore/crosswalk/publication-ieee.html @@ -1,5 +1,5 @@
-
[1]
John Smith and Edward Red, “Publication title.” 17-May-2018.
+
[1]
John Smith and Edward Red, “Publication title,” May 17, 2018, [Online Video]. Available: http://localhost:4000/handle/123456789/0001
-
\ No newline at end of file + diff --git a/dspace-api/src/test/data/dspaceFolder/assetstore/crosswalk/publication.bib b/dspace-api/src/test/data/dspaceFolder/assetstore/crosswalk/publication.bib index 76367c419237..deb30e06b52a 100644 --- a/dspace-api/src/test/data/dspaceFolder/assetstore/crosswalk/publication.bib +++ b/dspace-api/src/test/data/dspaceFolder/assetstore/crosswalk/publication.bib @@ -1 +1 @@ - @article{Smith_Red_2018, title={Publication title}, volume={V01}, ISBN={11-22-33}, url={http://localhost:4000/handle/123456789/0001}, DOI={10.1000/182}, number={3}, publisher={Publisher}, author={Smith, John and Red, Edward}, editor={EditorEditor}, year={2018}, month={May}} + @article{smith_red_2018, title={Publication title}, volume={V01}, ISBN={11-22-33}, ISSN={0002}, url={http://localhost:4000/handle/123456789/0001}, DOI={10.1000/182}, number={03}, publisher={Publisher}, author={Smith, John and Red, Edward}, editor={Editor}, year={2018}, month=May, keywords={publication} } diff --git a/dspace-api/src/test/data/dspaceFolder/assetstore/crosswalk/publications-ieee.html b/dspace-api/src/test/data/dspaceFolder/assetstore/crosswalk/publications-ieee.html index 4f8970a37629..5246a9af3864 100644 --- a/dspace-api/src/test/data/dspaceFolder/assetstore/crosswalk/publications-ieee.html +++ b/dspace-api/src/test/data/dspaceFolder/assetstore/crosswalk/publications-ieee.html @@ -1,8 +1,8 @@
-
[1]
John Smith and Edward Red, “Publication title.” 17-May-2018.
+
[1]
John Smith and Edward Red, “Publication title,” May 17, 2018, [Online Video]. Available: http://localhost:4000/handle/123456789/0001
-
[2]
Walter White, “Test publication.” 31-Jan-2020.
+
[2]
Walter White, “Test publication,” Jan. 31, 2020, [Online Video]. Available: http://localhost:4000/handle/123456789/0002
-
\ No newline at end of file + diff --git a/dspace-api/src/test/java/org/dspace/content/integration/crosswalks/CSLItemDataCrosswalkIT.java b/dspace-api/src/test/java/org/dspace/content/integration/crosswalks/CSLItemDataCrosswalkIT.java index 4aa64c8b0ebb..2e5561aa1ac3 100644 --- a/dspace-api/src/test/java/org/dspace/content/integration/crosswalks/CSLItemDataCrosswalkIT.java +++ b/dspace-api/src/test/java/org/dspace/content/integration/crosswalks/CSLItemDataCrosswalkIT.java @@ -77,6 +77,7 @@ public void testSingleItemDisseminate() throws Exception { .withIssueDate("2018-05-17") .withAuthor("John Smith") .withAuthor("Edward Red") + .withHandle("123456789/0001") .build(); context.restoreAuthSystemState(); @@ -107,6 +108,7 @@ public void testManyItemsDisseminate() throws Exception { .withTitle("Test publication") .withEntityType("Publication") .withIssueDate("2020-01-31") + .withHandle("123456789/0002") .withAuthor("Walter White") .build(); @@ -130,6 +132,7 @@ public void testBibtexDisseminate() throws Exception { .withEntityType("Publication") .withType("Controlled Vocabulary for Resource Type Genres::text::periodical::journal") .withLanguage("en") + .withHandle("123456789/0001") .withDoiIdentifier("10.1000/182") .withIsbnIdentifier("11-22-33") .withIssnIdentifier("0002")