From 565432df2b18a638d980b821e6e9730169416802 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Sun, 22 May 2022 22:10:27 -0400 Subject: [PATCH 01/93] Replacing the local_lib copies of the old lyncode.xoai libraries built from a local fork in 2016, with a new and improved io.gdcc version. Yay! Checking in the results of the first swipe of this I took last week. Very much work in progress; it (builds but) does not work properly yet. (ref. #8372) --- .../xoai-common-4.1.0-header-patch.jar | Bin 59259 -> 0 bytes .../xoai-common-4.1.0-header-patch.jar.md5 | 1 - .../xoai-common-4.1.0-header-patch.jar.sha1 | 1 - .../xoai-common-4.1.0-header-patch.pom | 77 ----- .../xoai-common-4.1.0-header-patch.pom.md5 | 1 - .../xoai-common-4.1.0-header-patch.pom.sha1 | 1 - ...ta-provider-4.1.0-header-patch-javadoc.jar | Bin 418350 -> 0 bytes ...rovider-4.1.0-header-patch-javadoc.jar.md5 | 1 - ...ovider-4.1.0-header-patch-javadoc.jar.sha1 | 1 - ...ta-provider-4.1.0-header-patch-sources.jar | Bin 59770 -> 0 bytes ...rovider-4.1.0-header-patch-sources.jar.md5 | 1 - ...ovider-4.1.0-header-patch-sources.jar.sha1 | 1 - .../xoai-data-provider-4.1.0-header-patch.jar | Bin 83877 -> 0 bytes ...i-data-provider-4.1.0-header-patch.jar.md5 | 1 - ...-data-provider-4.1.0-header-patch.jar.sha1 | 1 - .../xoai-data-provider-4.1.0-header-patch.pom | 54 ---- ...i-data-provider-4.1.0-header-patch.pom.md5 | 1 - ...-data-provider-4.1.0-header-patch.pom.sha1 | 1 - ...ce-provider-4.1.0-header-patch-javadoc.jar | Bin 283085 -> 0 bytes ...rovider-4.1.0-header-patch-javadoc.jar.md5 | 1 - ...ovider-4.1.0-header-patch-javadoc.jar.sha1 | 1 - ...ce-provider-4.1.0-header-patch-sources.jar | Bin 42972 -> 0 bytes ...rovider-4.1.0-header-patch-sources.jar.md5 | 1 - ...ovider-4.1.0-header-patch-sources.jar.sha1 | 1 - ...ai-service-provider-4.1.0-header-patch.jar | Bin 56533 -> 0 bytes ...ervice-provider-4.1.0-header-patch.jar.md5 | 1 - ...rvice-provider-4.1.0-header-patch.jar.sha1 | 1 - ...ai-service-provider-4.1.0-header-patch.pom | 67 ----- ...ervice-provider-4.1.0-header-patch.pom.md5 | 1 - ...rvice-provider-4.1.0-header-patch.pom.sha1 | 1 - .../xoai-4.1.0-header-patch.pom | 273 ------------------ .../xoai-4.1.0-header-patch.pom.md5 | 1 - .../xoai-4.1.0-header-patch.pom.sha1 | 1 - modules/dataverse-parent/pom.xml | 7 +- pom.xml | 17 +- .../harvest/client/HarvesterServiceBean.java | 4 +- .../harvest/client/oai/OaiHandler.java | 36 ++- .../harvest/server/OAIRecordServiceBean.java | 29 +- .../server/web/servlet/OAIServlet.java | 76 +++-- .../{Xitem.java => DataverseXoaiItem.java} | 36 ++- ....java => DataverseXoaiItemRepository.java} | 131 ++++++--- ...y.java => DataverseXoaiSetRepository.java} | 22 +- .../harvest/server/xoai/XdataProvider.java | 116 -------- .../harvest/server/xoai/XgetRecord.java | 52 ---- .../server/xoai/XgetRecordHandler.java | 92 ------ .../harvest/server/xoai/XlistRecords.java | 86 ------ .../server/xoai/XlistRecordsHandler.java | 168 ----------- .../harvest/server/xoai/Xmetadata.java | 27 -- .../harvest/server/xoai/Xrecord.java | 184 ------------ .../server/xoai/XresumptionTokenHelper.java | 61 ---- 50 files changed, 230 insertions(+), 1407 deletions(-) delete mode 100644 local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.jar delete mode 100644 local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.jar.md5 delete mode 100644 local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.jar.sha1 delete mode 100644 local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.pom delete mode 100644 local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.pom.md5 delete mode 100644 local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.pom.sha1 delete mode 100644 local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch-javadoc.jar delete mode 100644 local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch-javadoc.jar.md5 delete mode 100644 local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch-javadoc.jar.sha1 delete mode 100644 local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch-sources.jar delete mode 100644 local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch-sources.jar.md5 delete mode 100644 local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch-sources.jar.sha1 delete mode 100644 local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch.jar delete mode 100644 local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch.jar.md5 delete mode 100644 local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch.jar.sha1 delete mode 100644 local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch.pom delete mode 100644 local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch.pom.md5 delete mode 100644 local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch.pom.sha1 delete mode 100644 local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch-javadoc.jar delete mode 100644 local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch-javadoc.jar.md5 delete mode 100644 local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch-javadoc.jar.sha1 delete mode 100644 local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch-sources.jar delete mode 100644 local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch-sources.jar.md5 delete mode 100644 local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch-sources.jar.sha1 delete mode 100644 local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.jar delete mode 100644 local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.jar.md5 delete mode 100644 local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.jar.sha1 delete mode 100644 local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.pom delete mode 100644 local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.pom.md5 delete mode 100644 local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.pom.sha1 delete mode 100644 local_lib/com/lyncode/xoai/4.1.0-header-patch/xoai-4.1.0-header-patch.pom delete mode 100644 local_lib/com/lyncode/xoai/4.1.0-header-patch/xoai-4.1.0-header-patch.pom.md5 delete mode 100644 local_lib/com/lyncode/xoai/4.1.0-header-patch/xoai-4.1.0-header-patch.pom.sha1 rename src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/{Xitem.java => DataverseXoaiItem.java} (68%) rename src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/{XitemRepository.java => DataverseXoaiItemRepository.java} (58%) rename src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/{XsetRepository.java => DataverseXoaiSetRepository.java} (78%) delete mode 100644 src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XdataProvider.java delete mode 100644 src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XgetRecord.java delete mode 100644 src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XgetRecordHandler.java delete mode 100644 src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XlistRecords.java delete mode 100644 src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XlistRecordsHandler.java delete mode 100644 src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/Xmetadata.java delete mode 100644 src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/Xrecord.java delete mode 100644 src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XresumptionTokenHelper.java diff --git a/local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.jar b/local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.jar deleted file mode 100644 index a23530b895c81ce68b071307cde110eadbbe7962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59259 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 diff --git a/local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.jar.md5 b/local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.jar.md5 deleted file mode 100644 index d8b1ce2fa75..00000000000 --- a/local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.jar.md5 +++ /dev/null @@ -1 +0,0 @@ -f578d8ec91811d5d72981355cb7a1f0f diff --git a/local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.jar.sha1 b/local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.jar.sha1 deleted file mode 100644 index 4c7d114634b..00000000000 --- a/local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -523abaf48b4423eb874dbc086b876aa917930a04 diff --git a/local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.pom b/local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.pom deleted file mode 100644 index 2915745c27d..00000000000 --- a/local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.pom +++ /dev/null @@ -1,77 +0,0 @@ - - - - xoai - com.lyncode - 4.1.0 - - 4.0.0 - - XOAI Commons - xoai-common - 4.1.0-header-patch - - - - com.lyncode - xml-io - - - com.lyncode - test-support - - - - commons-codec - commons-codec - - - - commons-io - commons-io - - - - com.google.guava - guava - - - - xml-apis - xml-apis - - - - org.hamcrest - hamcrest-all - - - - org.codehaus.woodstox - stax2-api - - - - javax.xml.stream - stax-api - - - - org.apache.commons - commons-lang3 - - - - stax - stax-api - - - - junit - junit - test - - - - - diff --git a/local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.pom.md5 b/local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.pom.md5 deleted file mode 100644 index 15f47f4140a..00000000000 --- a/local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.pom.md5 +++ /dev/null @@ -1 +0,0 @@ -346e9f235523e52256006bbe8eba60bb diff --git a/local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.pom.sha1 b/local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.pom.sha1 deleted file mode 100644 index 88668a4d49c..00000000000 --- a/local_lib/com/lyncode/xoai-common/4.1.0-header-patch/xoai-common-4.1.0-header-patch.pom.sha1 +++ /dev/null @@ -1 +0,0 @@ -cd83d08c097d6aa1b27b20ef4742c7e4fa47e6b5 diff --git a/local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch-javadoc.jar b/local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch-javadoc.jar deleted file mode 100644 index 28e5da7b0d61cc3644e4c66398deae9e66b046f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 418350 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
%HkB<>A++7yea*BY0U=z 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�CQ1nbDK;UDf$F(K=(7PW&(h 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

~ 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≪gT_Ftaq>XH0rCa;q!UnJIUBjEBQj8@Dgvm|&x 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

pqwg&H53&EgYi%BzO3heRS}K`L}= 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 CwB{rL diff --git a/local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch-javadoc.jar.md5 b/local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch-javadoc.jar.md5 deleted file mode 100644 index 67dda34a6c9..00000000000 --- a/local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch-javadoc.jar.md5 +++ /dev/null @@ -1 +0,0 @@ -546f1ab3f3f654280f88e429ba3471ae diff --git a/local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch-javadoc.jar.sha1 b/local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch-javadoc.jar.sha1 deleted file mode 100644 index 50e8f2f42cd..00000000000 --- a/local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch-javadoc.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -f4da7ebc3fda69e1e7db12bda6d7b5fb4aecc7a4 diff --git a/local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch-sources.jar b/local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch-sources.jar deleted file mode 100644 index bdec990e2c6d4a85c9bdfbcf0ec1285efb45a18c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59770 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 z 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 gx!Qq4@zMK`9BqYQ5`w|3g@032F_ - - - xoai - com.lyncode - 4.1.0-header-patch - - - 4.0.0 - - XOAI Data Provider - xoai-data-provider - 4.1.0-header-patch - - - - com.lyncode - xoai-common - ${project.version} - - - - log4j - log4j - - - - com.google.guava - guava - - - - com.lyncode - builder-commons - - - - org.apache.commons - commons-lang3 - - - - org.mockito - mockito-all - test - - - - junit - junit - test - - - diff --git a/local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch.pom.md5 b/local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch.pom.md5 deleted file mode 100644 index 5959ea476c7..00000000000 --- a/local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch.pom.md5 +++ /dev/null @@ -1 +0,0 @@ -a1b49c13fcf448de9628798f8682fcaa diff --git a/local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch.pom.sha1 b/local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch.pom.sha1 deleted file mode 100644 index 87fd86c23e0..00000000000 --- a/local_lib/com/lyncode/xoai-data-provider/4.1.0-header-patch/xoai-data-provider-4.1.0-header-patch.pom.sha1 +++ /dev/null @@ -1 +0,0 @@ -41be98af31f8d17d83ab6c38bd7939ba212eab8d diff --git a/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch-javadoc.jar b/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch-javadoc.jar deleted file mode 100644 index 4382b3ded5d1bf29c588665a7d3452bdc05107e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 283085 zcmbrm1CS)&wmsaorfu7{ZQHi(p0;hIY1=lZ?Qbp~?tB0E#oYI0oT|#G+__>! zo?UD2vvX(3O96vG0sL)4Hfj|A`_4b#Ab)?#h$sutNXUxP$^X*~0s!f^najY%ti|uc ze!pMH|J_VRKvqIjL`j)eM)Xc*aza{)hISTKiiUD(a=KBGet~J{(2-hlYLr@vMi2u0 zphz_dm8zH6y)7$J5lKo>$vK;{8W|fJF_B3T#T#it@$UB#NhT-B-aU?R4+@d;aubAl zWS!b1>o`zUPq154(@yP9ZGiuv2Jm-kzuElf2J(B)$j;_J$^UN)n15PWd)OM;8Jqlt z<+uM~>27CW@fYR<|1WbV6GvAIBNKZ^J68*16UV zV(a`DbQu2)ls{ob{U>-P?!PaUvxS|l(_b)S{Wp>RgdN47V454)8e9M695VeoFn_{} z^iKe-4Lm*m;(F2lF~*-TBKs3Go8Lby>%XAH@aG_Z!s(BE%ih4zz{bSc#PR>PZ~Zr< zKVkPrzV#dPw^aNUwLkK$|A6@uUL=1q3GOz3HIHWAAD2?CBmb1#aX#V~JM^!eAay#f|6t^Q80q0d%>y ziBDIiPsm{H%o8((Q{f#n7>N+&GmQ z!BCbcZkXpX?@$Yg|5d4A0Fo06me18bBCdRwIHU#*V}kX$+OX$g%+9YlD(aURvA+vX zu^P+*2)~y&)>!(SJO#WAF}H0DM8Z~3<@x5SZDg^aM5*VU>G{NuWg*EBFhUCuzU1Ze zogW6agR9!yVdf@gCDDRbzROFo#Os_VmC+K@g-OuxLpg0>(XIX`r8p=a1)IHO9phqgo|`&sV}wiQGol4J|> z3ivA@lB(GqTl^YnDi~KDse|FrltC8)Bk@(}oMx+`WatQLK*Ck)tYHr+4rr620n5YB zv3_UF>0nmfF0ADqD0e94;EI7GEXxTup*(}(&0KQFDmLA4xZy||A~x;i3+xqDkf3nl zM`0BxhHm$}PC`RL>END4oMpAw{hFHUE9L|2gH;6-Seed4Mdv(IYl{gLnS-Ci0k-l7 zhGS}JMGIY`XO*a$9b)TEW4Y?N+b>cHjah=i5 zrN%BGOG?1cm<&_PtKLl}Z{!(}{7$1%e5dI40~8&gyQ-u`KecxALss62XA7L|weo_Ij-Z|)W@x6I8$#?BO~M5 z0$-Oe!9tw%FI_Yl3Xz-|Nc?Q{qFD5$ zXtR-oCJWk`AHd^xjTgTYv^k?pTSHA*m2Gs^U^Y?8!yeQseaR|EPZ0xM@CN6FxeUo? z@fhM<{w@>97wEm9llcdV7S=Ys!(dmHLz(F1e7_v&uACe0x#kV)^?b=%kw|Zjo@F*y$4ci&**k*^5jngtNmYQL?Q97g zh`N$2GHR>WQHvkd&A4?c)X93$G{tS96J;eM9o6**Ix-G(MI0@0OE5CdFUr||aXoe( zc!n|Of$RzrJh|qkX<&J*7*1sx4sbzpP zehgAvdmwq$BSisQK(k>KILG~B5!*B|ewG=(v;JZ45`2WPpe}D-^j>qXeaP{Ns}_-1 zWdY3c(^A|^fMn%^2_-T-yW}%$^tR}&J5yKfRlSUOXu5W%hG2=5gO2m8g2qF@4M|;X zM;M(u0~@_#j@|pJlFCV>nq0>KE37F~(#FRqrPU=oWl(N9INiVar)1`2i7NN>HMKBl zRX_PfXbYR>zKXvK=y3TUmJlu6bwF3AikfyGWf0E*1T~xZE9OPAC|~>_Tr2POV(~Dn?mWFm|2NQa&KSdi+d3BYlrGWn)gjV&9;9;VnTK0hu0GtnZ=Dj=R4(zw z-um^@H1NS|W&{E9YRSrKij+)ZMDf9@+p>6wEW!TZu zy2j~~^vmX^R4MzKth22w=*+lwWg3s9=tX{QNEX|NO4$>BlSK~BDZUTCG$$N!5198F zl41jE>WUAMxF+v7C7zqG@4SzN9&B$ZkPtRP$lAxCk>=J#jNFQ_RiD2uJ1(aC zekB6)Ras)U9xh)=7LVu<%)xh}YU#sQA*FxOx%R?QO#9ia4>_f_Ce-vIp;=Glb1SIS z!cC$vx6MuAdqa&U6gq9@Od})U7C2wV+dZpTUpbr7KNhj_|6IiWJt@0X zx3Sw}NBG>*V>nNCJq=wczEtrc$Rf9~^Rfh-z1QVcA!UfG4tHwyFPQ&)!Xn$n(Nt~W zw2;Fhz?9?O_wX>yNgD5{H0612bb-wcc;hnX(cRiy@^_E=@KrXupllt-!=4Xh1j!&H zZLXJWHNI#U_)?90GGSO!_4VtyOSH)qnD^jP;ILGt8N3LbY(j#cnv{u#V}o?QMHnDNl# z(2--YQhOhi-d%wgVm^I*YVhM6vQNxmqTB@)LlMI+{RAi=gYIA9D0HlM&p`dW%cAOE z46V1a*>bGSipqG=^m*;_sT=6Z*zz0_f+&!$1@6+(GllHP<*J43h#9;G=c@G~b9g`3 zXpj}t!ecGcaouSx^ShGP>)@M~E`5U!Ls0>Vz45&f4H!|iT?IVB`8*Dpj*Fra&1M8& z2Uo(8OXz|~^cltpTW8RLd}!Kv^OI>lW;B*!O2`pWXkpzXxAJUM~gwC;Ff7j zr%%j;Dv}NTUDXvfVj@WG(yKWkE&z2^<#w(wrgR+8Bo%`<`eNJ7&9j8}idSiTqM}1Z zgGAL|RpEz5d~SSh#^0dNt|Z%r-xY-C?RRV=?7!w;6C%^4^d674^Vj7OHRXIh8%ESa z_B~LMSURHj6du$jSA}xMR``*zw&GV9SFn*-7G`EGqiW`%oHA#p0@|$@{XF}G;3_drMc*K}haG-B< zebb?*AHW-*eJ8&%Sp*BU2U!rU=Q6|GYnS_hWo5*Gl$nJ!UT#-rkA}tNl*hnDY**Jd zO=Yh}q~^--IB8G6<0-g_Pq1i8FqJLz!9qje@5}50s3;Zvt0l4f?n7 zf-#TKI7%S9HON(N>QjF(FSte9Rs&5jVdGysB|f*nng6@;ocEOY;J45?(TlRQ zGU3VlrB)M@fEwAOrc(|Tb<>3N;YCy2)m~x_CR01#&>NYwv`O)C4Wfx_o8*`p-)aGG zJC2Q&wN*UkYh4PDtX6tVsF2~V%{_lTzbQ?|<09`>n1G`XN8aUxRfVOBK2g&tybmr% zT5E43->K@)yc0a+kHCU2K4hL;wrwUUGzD)p;VzpwyS+0C6+6S!0Npu@zTy)H4YgAc zCM&QL-$fedjdQK%n{IDM*Z7YMLBL3G8#2}zRJbX^em_2^WGJa@wjnxzRe0LPF2Db* z7yct(Yqp_$ZvL%=hrg9j_|KH^@5QqJ5=3!lXL~sT2_fsheg986)RNn0NA^8d%Ni4B zIwW8PMRl-f4*-IuGN*#@@({G$YsTGRx9Xr-wETR-9XX9o$EhccNltB4i$OsmPw078b>wh=d!Uf5p?IKiZgd?#IN_L!Om z?X#b$CjF4&w;F~=t5+bFDUT7XdT_I^fF%oT;PumF@;^XSbc}Sojd+FHJKzpn$v*UA zq1#XNwxRv%2{A+lg-zDTS*6c8;Ql_yC*prN-F)*5lE6D3vVKC)4FjJor>Z`74j+Og zuVXH53PTAOmSr3+$>E_YjWF;aPRzY*Nvv2SK?n+zNX5L#*=36?C;tL`y}Lyh?AnGp zuSvp{51oBZZ^n8$VDaYJA=-7w7!d{Qj$D)$589(sv^ynd@G$B@De?%CF+oo6O4xSl zWD8t}Zi!)FC=KBAvqOO&!sj;qJkC(ZfCuU-dnG?pIC6uwzpcXE0zj0^N+5FiAQAGc z=@($WxyEsfB$*w-vJRW|KU8sVN~ZuCr5y2yGrlz~Y*g`c<4lzo3W*S6c_lx7QRveF zs{o?^>@lFd!?8pszOFt5*iA|FeLIztJ^kgu!|F4;6%?iBVc~XKD+$$yN6w_gw51$< z(QjyQ^UWCwxSYO<$RWsHoz$`{zi<)#gN)@2mFTx9Vzrxl_W5{wq6wWN?x|vBl=ft2 zZ^>-G&I$sEYlqYsQ`$9rQ?*HNMe}zgLBCU$4sZg{6ngU zj1*E~R!^PvuDKK3gF3~^-Tfn=I-E&Y>u$$;)G%B_4qX=hPl&uvqV}HnP)P^|usW=ntF1F{<<4EONGgs+74etm<%G4&nXS zg)5Rarp+q}$agR^`th1Ptm?>heA}ps-C~azyc|cCKQ{?6#HELyO#VzR>as_^%nFB%(-5FBky8*YBz` z|NluB|A!`O+Wc+7`#DuBznRWDxxng=JDxz@O^T6pL77SwsIot5|)T6ot8=Aga(5H-**d1dG6E?rh~#>i&6DP^^RrTwp2!z zJp!pD?AtI3I%MoLuj+xukT#;^o}C=+Rgm^p0{uLr6NNp}O^ja1tu5N#*H}yd|<-DLepFe0NT2qKR}4HAc+V-&%iU z#QFWi(d`tY6bwNonib0C#udA$S*+|lD2J9#3xI(Af!UC{P7D#IwMiSlpDZ5?7to6d zcSAb={MNC?L4NT1gXIIpK_HkS8T!*=;z>qZP6lIQk9Du`^;*A`%1SmTA*}QV6@DrKu8kw5C--7~5C|adS zWjKN44izxx6;dhThwpxnrHqy~CY{pIiQ8!Nju6xi=7kBNgFh1a8fnYYuMkwE!0q$4 zMMN@s@YE>6rl^x{$R9KS_HoF$5b!sy3?8j19}U%|65VrSb)4GM=UMI%G_yabvRWSk zqe6QlVr~I(Pt7)6o>(@t;f1O3MXKTLFXl$7Z4X!K4OVWFEhnM*Pw%@JZI`pnSThl( zP#T|*QZ5}?AWeLrVJ9T_@Vi-JjNRSt_9!r-ly z*)$_`090Yzd%96CcnAgJvvE#wGFV|LucHRLOtBdfRRYZT?!ZK?7Vje=M|4zsJ{+~$ zk5gjJ;91u0-+!u|*~zC8=Xwg2>67z=LT_-BnL}N_UQ({VuouuS-5^DGUAt%M=J<{@ zEupRcVmBsz9WJ=ekon?10DCFW3WaWkc;7LGg%e-oCt#Bt$iRBxn1-@O{tzoF#8zcg zpMfJb2z|nlp@$U|3@Qq#Vl$}$wUO!!%|bSZbGFzesPRuo z)5=MSJ9m$04Mh{{MP{8n+O{6WOJo%o4bI4D-RjCSET>>pGdGKrOujmB)`FxF)qD$K zEISz|x6``ejGSqHLfuu(-MAWMe5sv_@3H{RkkN!OT@N`vvVgijnI_F1hScNGLuw%e zNhcFwg6GwOhQGZdx`H!&Lo22$g4|lN>ZPBuQj&DewFKIW8&OS@lWF`o}Ryw zfZ3L}Za=1a*Osem?T_`{6{3)>4+dZgL7c}0lN8Z>I#$b_e;FE?G)26bhVbr?SVFW) zPE^XrQWQrb=iDN<2bUHQnH7b-bpk~U2)PsQix#$DQ^Bto;WYTnVnDDKw z&nFSYooTsqvS^DmTvLC4%~#_>^vw$tm*=cXaNG;Q-s7o5p*3I#7nh(BstcFjROGQf zZFG+rkGT2VeZ%3w-rR?PXlwr_8CxgJE^ukUW?x#!DHb9|v^;ZHn~bRebCh~0N(Ib% z#-sxBd*Ei46W%u5wpDhOef6p{QOguPRmalVYxPVg?~3We!SRr$(f8V+c*W!oT5&G@ zcDh2A_{V-)Uu>`j_R2Ke3NOIVTnOW8JUkE+yf&ilpf@I3ATP|$QXLRxrv``8t_?MK zEkf&<1Fr&toNam=6$hPCUG5~Hs)jDe6+VIqNn;Er@w}kD4$3eNrFwew9QmWK?~IY@ z4=6fnO9#f4hOfMxk?BE2k3M3YGH~ zI+NXDI_}Wx$(j>=bNjqp4>n}J7_nZw_l?@QQy)2hAHD%jJroEZJ7Rw6gnSF9+ZB{` z7Xb8pUs|dj4ReVHyl5985h2o~D-|&O@0`5kzVpimLw9GN>%ez@dbohc@lx2bVu>>k1C zY!7%-%S?bnO?;0;())2(1hC1?uC}&Q^5$MkoOL->pfD4JF#&hc0`QFaJA+w_A=-Ev8&s+Zr{2&jLbaCVJtCC zw8qQb@*7nWAJ*V(|LABKDG##Z4xnt6A*@ac2i)kb!JvWCX?sSFdHG@ zM}lwBwd<&n^^7NbFciG zT3%XQUh94Yp+2$JHqEXN07Rq|0`9DDK9giNm8pXXLvxQM6pdlE*J~-pEs6wNWWM4e z!^UrOZ^k`h(g_n`F1&#W0#9XV4hZ2&UtmF@NpE|nsTyVI7+(^<9YiyZW9c_S=dEYbm| zK9*dqg;pTGMQI6q3n-sAR1LT!ydqYP_N;KRz^+`anqR?YtmFnjRaG=YX&(&&Yc_^0 ztdx7tiHd;d$KM^I#M})^-qJ1`9wWbX*CzM)T+~ekjS_h4IqCdpfJ6adWt9$y`Z0!w zy8Yu(GjscC5m+L$!sThRIRtKp#JVd+ft8^A8l}F-WTB9El3u3RLaKMblSrs1v~y*e zKo)W;V6O8gSf+2jjK3N24h9tHN!7eD^(cbAu{1k4tt%K0ii7j3>!%QH=T(~+SZ){_ zJ5lLokKaYkv0Rf?Akdx|^F;4P!hMo#@3`Z3#Hq1(Fz_YEB?8UCT)XjOG+M!0=9Ye< zl7c)t!jHgL$R5=r$r+J8q9fLQ_7`L`1`aiCV?r@{_Qp43NQ{_O0O(42+vNYK2pAs0qRY?A6u~azKo8A78hiI zPIgG+o6>jsmgX}Li>|HF(PKYjguWxHA*+XvAk>J)%pT^^mgY~)w)f^XBn=1q3CgpB zlCgtr*KwBio;N}2FHcRbQD=N*YZd2xwO>RXrx76(wuYS8`6wLRN&s9~_l0cJ`DUDi zPnBsfi}VMw*0~pDXgrD}4xmRC}v(>4M$#lTlcu-eYx+){?^FNCdjb7t}z!JzjmjE$= z8KIh3OZ2gaYY>#~yRd{)VAnO{tU*(Wy5&na$kCZtK$lVj)6Q0Z+3>y(YWz6Sz_7yy z4$`N8G$F(u=;AM~`1W+B>yhn|RKUsCI+XmoGl*B4@ zFOB{a^o(L?*TTpdLzfvHjTDf5Y3#)|sIcmK#I?*Q&SJ;D+5epc3ZC80%3GxGt6$B@SqjNBt*dS)9(Q zR$UFELsS0-rYu?V8~U&w{Gqd=eS<+C9uG!7j69(b4+WoH723Lx5X1qCGm{lP3l}Ty z?JB5dv{sr{V5=w73{w3n%TAV*3s_mY&bx^mHg+64FUvuj|9@u(&*T0;1N;#{JH9qx9eEylt$IR* z)QSs_#9z@rQg$GLUlXA&E@<){0KOnQg0+ch;cR(Tit?EbDBlT@YCNEEaEJXD$B4?t zlATECrS91=Qeg04@plQ*bBio-BJHdEiAsDWbiiw192lBVF28}d?Eh&t7)hW{Kk^W%)<7}1^>WU_R4x*ZQ;lISw0A`VXV@!fmYRhZ zVmKT50TNo@C4o}{$ag5+l)P#R%d%n&XC8yW2LEXWlNP-8;)Bq0zSS|ni{0jCkSAik z9wgVy`QH9$2NF{xU)(MTtTenJM7MhCD?EFZ=58cm^~sc)VrUOUn%QY8LQ3DRP@mSW z7OD|@fM%quRKs&NRia+fL>=~LtrRX@E}hU}?9Toq!w42CyBd%_6=bOgXM19e!?-B8 z0FI|JY^(D9+?*|vHtu=ylcCqXn8c*Dmq(N&073UhzF9Kc#S=p`V@KOE75*Y-4&WI| zsMKd}atcGL2blY^bVbA%<&9&y*>|)#>I?tuS|GZ=eeXc{vgnLruerCHCjivK$%)_z z_MMSIEE(nIkZ~H|I>fOJiuvM8yY9P5tsWyYz%KxI5z3alHFviU(bUPtkwv>R(5%n= zWgbr7vsW42^_~{*!fl~6{amZ|rxm|ts(YXe*=RIciPrflTz;vhxN@c<&0I7+)ifm# zZFMnnDo9u?_Xy7ZY%qN|d#9(*+0Y2GhUh(O#$`&~BMt>4rqM5NvGO%G-IrLH+q?Ww zwXIc}4SgScC9#!(_s9G@iiguPqx?F};OXs$1=)k=@E8CbG>SU{K!$67RL!3_^UY?g<4SCD-6GT0xr?V~ zZthgZgl=61xp%|fkFZ`Z0U!IlcVJ`>Zoio9Rzky*#>}tGd|zkxyYHDebDoX(svjP_ zdX}$0bbFq>KDO*$u0JG2-S1i5;JoaqENOZlB$jtk$05Kp6VLFBgO-(W}1;zTI z>%#Wy)yj=^-0Wp(_waGx!G`U>e)c?pb@Rc5n(A+_U&hJLRqaGXMwN8?d7dJWDNyp= zf4q2K{e0pkxc;~qmRlg+d{QESIvS#M_0$^SYo%>7zO(Y24m$?|JdR5;eexe*%!;SS zTo3=!$4FGJPm4l3VB;*T4;ytId0Soou(z)h5*F<@mZUuiaNbIgeX8s5YkgvKhY2c4E z(2ZGH*nM?{)pCcrEamYSFP;J>n~zFCg*cofgiLPz5Eao+5N_<|zwhCDS8IB6Pu%6a zvq6Xj|A-i{v!y_ zSFBm-o5DRYyxaaQwJE%s+dAKEKPZ88Kq#oB?5Z5s?~=;;szu#CSt;VwH1J58>`kBT zQ(K8+4CQHV^Vu~7nKcu|#37%}3$N#Llq8U-jIegx_xIf!o#UIG`S=nl&ZWUXHoM0y z?9XL|jw!3s+>(QSdiF1`O%X@5(ZVWuW?<0sdLQg{p%jOF;%H?aQ?$Ht%rIqf^+AeU z946wSPE5+&Y{}}RVCN{I!$zC{k!P6gN=O?hX)AYr(u$F^Y0obZuWd}a9nf$Oe`$u{ z6G3Sbj6h7##I5?+L;=}A93vibz5~{a?Vy9Rs35iFgNCo##7`LxOF~SLIPzij41vk_pd##&|D zhE%dUxoG>+47+99EHux+V2(TGlYvqf3Bj-}vr`3CCTFHsH)u){A(NruZzoT6G#V7( zp4SB(F?~R|bq(8D7f|Jd`j9BWsb#p>V5aQ9AFw1mIJ;@m_dtnLefae87DgvTt&S0J z+op9n129aGMADnIQe@>F;;Al_O3acU%rQ5;6M6e#TJ_IufHF5^UGFsYoyaM@vtG?Q z51*>P?QxR1dv}RTzdOf^5So4l=55fy%pIbhyo=|yf59Q{B*02u&z*nE5n#-4S4|0R z=p@m|i3cT6I$*98M8N+-e1FH@!0QxkSdCq69gVG$+gZ?kyPySJ)pEi#yDNTME}46K zc~gotJVY<+3^l&?p2>3{HJ}>;Gvb@_q?oKx6}Dc(+;spL&9-Eu;ziGU*6%xy*IDMa zCB3reIJb+_#U$$xh1~a)8(*pmOAaUrww5Q+Sh=$pzqvJLh-hK6HUM{`=vmJRj2`5M z_^w(q-E1zmOpRL<#T~2&H#db|5fICXX7p)d(U&ut79OSIO)A1>l|p%=c|Rh&7TcL1`oO|MRduO#7)8k(IW@f^!O7jYy+PVdoP@Z2&_ zvjlCeY(sHJW44f7rN;P!>ihh}?(4grD!|WEmo9qt>+P)s1HOwyeWgBqN?tQiU!g(4 z(kEdE>P6XhlCYS(m{d1p%2p_%EGUBL3l^okh^rbIh-SK8)!<*&BD-lAxy>j7mk6Bp zmVW9|F)VQ8gHXSuNRKcuWE_#ExI4&LyWs?=bk>IasyF5lO?AkZ%)-_siJOU^K{0w# zXrEZLuo#EQ3=)dTdwJ7U)g$CMXR9w z!fzV02#g5&@ckR1;owm8W%tvJ-nz}U zc5etj;Pzb)doAb;J>!-^q?nyK)&;sqnIm^|>%e>OswmxwDtI%~BqK2p0xw*yA&#iA}In0|?);}Fu zUKC z7KpP@56nD#_&KhK2X430ZSCp6tUFuj7G}}&(b~kXtd=Wb})-nlaBJ!l}NN-a7 z6PDyltz*JS4L`Y`6rB}Uxk1khhdZJ`&g2T3ChM)kf&NRKFq^}K{7<8V{5ibcVYH=)O=Yg zo8T&C70*(6^=YRnS5vzJR~ytoWu&WJ%UpSMu%cnZqw6w^&n9SX@@@3Bd-Ou8)z*KG zky;Nc|9zXpih0i6R60ygM{AyB<`uroj<`4@&i9RpzP45+0|WqY z^!vW}zf;|^H!!j?Ff;jY-P*-UI&$mu$Uetv+V3Fn&6)iObtQ;a2FiPdm;&oLr2E>K zf#=4}>j{2*ToM#8qy#b*3xiM38%|ek7}l}1Vyn}q6j^4eX!Knljtm%p`B{G3SPr~X z!!`!F4~U~x^s*i*nE4!hU4;Bl*Of+7YLzHjm-TZ~?!QY9zBNy6v{IqePaGJwu+0>~ zRN68_F#dD)2n>0_>BS&2!pP*m;GR)nHFp_8J1}tv6%UGovV(9MwrT?db;x0jhk$5B zV8^}@f9!vL-fj_O#W0;bB?LD2VRwBekKMZt)+{kr#*7`Fud0drZoRFzcRR)w!52s! zQWEu=A(UK362WGq)KKbfyX8JZ_eAy;DNd|D!Tw zmZVCokmtt_L|s&S#_S6?_lYeE7Q+~dvA}b*wF0cQH{ry>GEu5K2virztXh_Kpjo7w zKG|bIPO-c?_guu`=ZWnjAS-^E^Q4Wzeeug8m1Ms$l##6*M0?e46Kl(hzWCidFG%iA zsoR>#^E3+}Md)KiM>1=Gh^NJ1z&qPsZn(5B7X2-_G&Moq5YPf!hFoZ^#x%_v!VBsk z(F|EL*2#Ep<_17C0iSq~@;1$yCd$Npr47{leq7d$RXsUt#Dw}MLBpFa4>;@(0IicJ zeTLTPhdRQ-k|#|cFM(>h?~FGB57%0Ft&(Zc$uW-=jvoKnzqZbb@H<;}Q1V{_q-3yd&$FS156`Z`P+S*Z=<5mQXq#&WabLk^q4MD)0R+Q3O4mbOE`=DNu zzN=n->1tpzYOWx6fg%HrZxrnZ+c0UiN z5;ABLUx%5R{W)vC+J)iCSzo-}hSA(~d5oC-QU|9s0$EobbDIRr zrjTAIaF%q6hlL2F-~94ZkRJCC`Vrn=cM&^094Q%m0sBoES?Pj1w#nkREQ;Um`u5mZ zL0CvlEH;jT1*sX)cE^PuGK%Jp?9j8c&>EBl5-8V>)j=Sh+S0^Nq!@%E1Hl*u$<4wy zlVsF+?Xj{qg=e~g%GLv?RY-l+*W!jw)HKIHPJdfFF+M@0{OwjYKq39xO9Cg3bcYq%Eci)du zVdY5%jZn*TmGg1TOs;;RvnMZQbAe%^s+20C*mHZJ=g&$IhAG2&MV}Z0is$vkGhan( zoY$ngfUj}y>k&>v?x%WO=&7gYwn1^yjraB}IwI@27J&7XRl4&5MKY0cB&9Rs>IDgm zsYT`|;!NJ@S4zHW$JSW4SW6@LXM>qiSMn=;z4hW1kz*?&{X~=EuU};zHP<$5u*}Iq z*b!UVmk_Cl(26_(vviOr5XZ+Mc{;X&89}%KQ?yJj$DVyUv$@>}{-CkB;r5Lf~G#`_esla`i}>aA>hJPUGP$nI==yf(dGpfsIt0 z_08PBD-j&K-$3@A?-U_fOOC_n6v`wZ3tGvL{211wx>$z(SW9B0rBX?0pS_*PeQjo0V9h0VT zv|a{ARLBTn%LpYGG?a>a4NmpE-n`2%Rws8MSWsXG%ZS9n6cVn(G<;fXN9P8ELBH!U zk@AiBM-WV0BuRrBdglh)AJM`nmL1pFWW~pWM;o10*^J#pH`XmH zpzQ?~m!YjF65H@LL;hzYf@@x#QCIw#iw`Q|THhXj&NMqBXjz^_Vhwq)MYQ9odcBGY zT|-w7xt}-n+kEt7iV*B$>Ct8_l)eqkf9#$5-a7ZRYB5*fy+kOu-wJIqx<-fDphf@6 zskfmiBjtA(C`APT;P^j;0cS^(e>_}j+kGi}BX3Gd@W?g1nkZnp|Z_!UQna2Jb56*~+Y7o_CJo{$c z)1Bm@wX(09H&1;OS)sYK1~)IyzY3spZqMFC#9XL%7b;Q=NLU-yHo82IKjn{@0lSX$Jt^!wem5S|*|{CO zM0Y?%!}8mMT%P=e9^&-eUqY?=?Z?^y&uZK1`Z`!LKYK&>Z@B6AC%8lu z)nBqj!@^UE;zL>7?hq-SIJA*M*kF$I33b#LZW+dV_0*@GPqOzrI zMYFWvsoT}uQ84!V#P8O7iGr5CP@#x_w=(0nFUwv?XNpHIEZMZtA1J~{#Vpa7ZjYkv zyTC<)uH}m;hf?P7nKkbl_JBUC^Mv*^uswxonMCN+9eY<>FzS>h_I^WM~akKG7CU2X??bBUabYKuIV zQhvaUv^X~FtU7;(3iek=XH7~YPJ?q|nWbN_48e^PI%6%&&S;ma%=6yi5sOkA%7_Y}>nx7D5j9QCy{3fr z!uu$5%zg4ct95SI^z^>i>HaY*4PfLt>1~7MJKKgN-uX0zBMe-=icKZEgnSA3r7G?t{4n;LIN9{H z%uMb?yNI)2LD$eYdH0EqBrz<2?m`zHPa4zkTi~Z!hJwy^Q$w)qj1w+SqT=@wzW1Z7p&i$oIO@_I)^rY~j z)||}-tZEo+T{DsIHP@yycg=B5?1-F>sb}WW8^$t}??Xv3$kIiI3{$5tEr@DNjB`%y zp?E|>8kCHXF0ViM-unwX6}+`^nkuH!IY7{P{c%sVLXhIc^ML%zm1E-q*MyEZ&J33) z;m8FQnome`S&KkkmWSHQVvgMv*w2>P`i$y#<`3Ei$llvq9t@yhnCclp+@TW67Wtt0tofeK_#Jyyd1q z-)XAgQd%vxIy6l4`K;UPtvtsbzipg7efxR~`|=s|yCwQ8nCv{D=(*Vwfqjidc`niD z!G6fhkepSSW86vDW>{4@-FRqb=)Z0aMs*{Cw$p8S;>9-ZnMSl9_?3)=)w&lm#7zpp zqr_2EE~NBsnD)WAzWR#wuVSxX2>rDATkILJ007wk4`ToOzY_kD?`y2v{%%I}nO2il z$&>jm8I@=|!Al-A_Lk^%P2Sz-{aFKKj@)Q&sEpuL0Tb6P<4Uanu{o(y@)5>iP*w}~ z4VWZ~9Yne`Y2N|;s7S8xvTJISsGtwvngpw-1f?lbR?l_H@x7;ilAd(0i?^HAK0 z`v}0oaII&oiL|^3l9}v&aLy75+yPq}ca)25T%1dR906wZJ}%DSHLEh5P7e2%qZ^d0 zToL;^J+1~UnDm0Y-It481x~mw)12Q`alQ=H$-tHF;2guJaeUqocm7~wN^d-!=UQgc zWXdVbYm&scr#zv3u4ulgP{3SMhn%_{-ck$vbo5dNDq&t(B+`Ji(lSifFUwr*{^;zW zm`oA1r2rqj%!wd9c@+4aBBwSrGFP@x?n0rzCI1F+mCaMzUqiKBODFCboBsOT_eB|w zq~K8$@W>g*RT0Ja`uOT}_W|E0zkY%MHI7>2c(Qq_SEkg9L$lOMh4#gG;)`@v%ua&h z6)l%_pe+b#D|dJ>eq^nM#C*W*h=o(UTjku7UG~vV8&%xV&Mbjgq}08++C6zt`Y88< z92u1jhVg6%(u4Fgvys*CfufxB0L+^+FThW2TqCJpxAy;XFnh!~2knp!L%bNl5tKff z+DJWIG)joU>M3lrt%6p9l%TXoHHz2gkiLumUNcG-#$JZhh5j%Ze%=5z0ly(kw*2h} z9loVop3AS1(=itgt4MGZ{>kzr^pZ~VSq9P4$+4)I4rLH_T~teosctq~L_#e$UggPit6x`smjmC6-R{FQ5is!K3; ziaEzdIIgU>hvw`>hM4AOH<&hT)_wW!1quD8D+zHE9U|!^VCr2{yFA4OW9+p$OwJS~ zS7gl!0Sql-L9tl;G#V-TIgRS`HPf>!vY%C$o3fGRGP#ad2Xqf_t_8ru(0Eo065T_~ z90H7czwa{p@J@*8BpRO=SUsIXu;yHD2@b2vw@F+iqGCq%5E>wep$j8{X%NB~LIx%| zU`U{$$}8XB7Twy)VCXB@#)ggizSnwPEpUZ=1g@#%n6dMKG|N1$94&6?{}f+ts+I(7wy^vJwf(zOXW zOpzNz5R(kkQN~Fhs{fr?)Bb{3@TT2;as#7%3HfKMu@;o6$1r6Z3aZ{-g$bPYZn>g< zeB-p1**S(6tl2u#sIv;obMwGd3}dmBGMeoL$=z8fmDgyN0J z$1w)$akJwDO3@F{F3S65eNq}#J^$gF{d|6S2h&W1OcyhhMOsZ< ze6Fo&KKrmQb57H8$*wCb__nO@)c%;-)GqgKeH&S+o;$T+jdg1Z5tJPp8EZ}-=6MQ(=%&jB`aTG z@8dqs>pHh(_s0*7cQs6+OfHvAd?^p``q&Zt1WfZ@?sL_xi70AM4FqIg(Vp-|L8Y4u z>&ugex|f;)ASU-8Rbk|Mtl0x}&`9mbWl181)YG{5m%~&4#bpwKM7r+)s*K1*fq=yS zSFVizsdh%h*i6{b(!~z2*CYP#Win!T{;o^Tw6B{-Xd=Lj=b#u zLGy8Cn3_F&`2C^{iCtp%<-1aMSv{|gxup#Wf53$IhX}d=Np)S|5_|L}iAj@x79jc>HY@#(RrjN zDV`|{2@(GIgf_>R(Q(#b;B|=S`OoKvK%~gQv#N8zap^5E`xZf$kDK!|r}LW2%zDtU z7kghY85XoV#fuZpM1}+<3@Qpm32R(LfZjuuHQ9kK39_G9bsRRO^xfKv*(V7Txv+@z zIhdCnM~*_?+bL(-U_X%6b?(O_HVzU8tX?34HXAHof3E`kc`sT!lEpBWgU>=Y-@0IP z3Kcxl-r#=qG4txMUz#_|?M=Apz3D5@T)G zTSI}~#O#9wc~hc{5UZV=&w~p?GoAe>pmCRm|`5phth!IF2cm)sG|j=_n*M`vjg_R--e(ii!7cy;1t+KkFTf4cHK{K4tKx_e?2 z2Uug3Rk|Z-b-iJ;7?5GqS~2uiYWcc8|2uz5Y<~le2ptaYBNZe`)?HV}Z+}kB0#`Qx z>&R9QE)5`%`Nw72I+(*~KsiQB#K|1hP%E{h8MI{MS4YXH9W-hWV#`?@ zpmfH;CsPRCdb1s7uyKRYtt3MkXwhXOZVgLe(h0JQgUM&NmV0jlp|8Qi6m;7Be^|Zg z;TnIby=x?>M30{;g_^7LmA)`w|NOv0@OXDfS(O#quritVIFTTz>k;RwZIeN$n}X+% z=I;;5t%d>%d_NQ8B%^Dijgf|i2PY!Pgk1m0`ja1!wObCA*6VfbbR<HrLB$rOYT~RfkC2g|qC~{Q zk|6#)Opo5-ozKuJTD2sCg`kGOuTnB0S|G`FfVcRX`)5cIIKQI$@DN%HZ6UTSQ*2_c z42Px07OlJ8jcN;lqo}rBlZb!}8fvfAMa|wR4RIKphTR$MHpp(-r}oQp;tdvJ-lj zvh$=?Ia2IspF~CIyvoVvI$OZ_kbgN#ass&(`{Y?pZ``(q2J__ekS`cyz6x<11bzUQ zvoyEv=_E$wYrMot&?SbeadzYa{T*E0_JDZWIv0Xj6g`KQtKV}=@6O>7u%acI0XUgnHk z5!>6=ccVWL2w8apGfCU<+|E&GXllRh>BZyu*y?R-zvB9!WozwjwKDurHbHO+wygY> zsKKzEeS^q8l*pfO1V9ReA$c+6^HVZZ7HpIfUMwptW+sPuE+8FYs+hWC@V(TN{8t2D zmqWMK>R)M3%;T)Y+#|STkAG$e(T(mnp~48>B@b|GUzj>n_e@R&(DlWiSFaq6fA8*E zpI}!dbDf3DhWMwNtWx++Iam=k!-aP!(_N<5DS_)5ogJ-SuPAsM%aMl^t1yA5ijn?~ zN2wv}aG^7CMJ{3a-u-=Rrn<*7w_Vp|h)t86td6E=_3^Rq2Z*Q5#9+k?{>ksCdH!GI zLBYaA0=*dLDm3h~?cOrdzd5DSV-N`riqo+2Wev)Wh8WkJzGF;5&gEJ*Kx?mfnw8>y zL24Uk?mi4&wbSyi)Z?Y4Pxt#IP_%Qo2t0Mj>Y4Mm7hIWa4yY}3<)BDwo3>N7S-V0y z3fDh)OHKSjqTyWld2en9U6i))$CqZK!!%LPFdG)4P$1&xHs9uwby~#>jTY$i(Q<|D zP}RIV_&4!LPiMHJ`W#D`is<5B!mY4xKl|81FX@hJPb=xb5H(DMHK^Hgp+2ed?&WQ>HszA6_5pGBpF}zxXW^8U4P1xa&PB)iXnBxDSmD~LZ=>3 z2Lnh09t+r;eky2*JD#0|@G9YNsyc-DaBCpFx_D$RwGp4|f#BA*?^*f4@shn2G`+Nf zjQI2wBiqlOlH*a9>`#M7}r*EBFzM2u8 z4QKkU95*&phps%++xK=)4#UdsEXx#MW9NIcyx%=fjn9me$!3fGxG=j|cX19kM#J~8 zl@xV%b3VRqt(<$A)?CN%uX>q!fO!9|iM6IT*e3Au@w#~H=5LNvRCCBl{-frAC2z8~ zfRr4~d?|LTXEq2uXeR4z+_$1Q6W0;*L?|%UgJ4X2+dr6Mbp$oX!Ug&ceoGYwq>gHJ zpUW2Shgr~cXZWA3L()VJ@-+Y~t;_)n3c+V^kf_WyU1+~@jBk~8V$ z*rhh>MW^P!tP{)PXVz_nMUYt=?#g8AQU+s8yvQiyH?zOGH4z2((vgzlL$y^lsU;t~ zc%JerNLP;z!dzPp-+f&|ySdUZPtK0+_c}x1=9~R^ZC72_tt(IoD}!(xu@G7b-;Djs z>~dY;%%bUX zh0!1f+J!+JhQf^$4WAKFkU~xO@;~8x22?LX7}hGZ1$7|}<6<9`v4||$gwxzZZ3vYw zKW^U;N5cFhE$tw?1WWPD5QfQyrFvO^6QcU*aOxN%B@uCCYm31hlpDH`Qasg(y+gN= zPH;t>b52>_Sq4x)n#$n(TIrzhW{C|xRB)FKZ174OHMF`m+ytmEWR3^@z-le72mbzE zeRcp%QXpGMaJfpBdbo7^nb5}I==+Zp*}EHABgEDA@;zs2zfmD63ATzy&$RdLW0QM} zN!jLM$<2)FPrK{ou7^MAZvSCNEyeg3Jn0g(K z8IJe__O!)s^F5g)P+dp5-4wowScUtLB#4L;6!KzouDdBCudI9TC4JiL+fo$Z6oxjA zcX~*dA60xSHITHh6QpDiK(^QsgjF$T!GK)bm;|4GPJVnkR(QOOgnfiEh0YUnv(>dQ zIw~NNL*(~cd#2Gj!J(T{O2P%FjAeu~ zUkQaL7?+Hm9FCf#1{)-QkOP$o?qHH=9(NdIsXq+8^8ywajg+8h)Wo>cvVU|1(ba$c zrOB*7wzfR{1;vkiIC7Lz*j1G^x>spAy+Jd0?_tv$G3-`o`PzWqkm-FiA<9d!m>f7K z;DBdGbuLNNxy;lhAPFWs`OEBjAhx< ztWwi5Q57!8u`Av>b`OxfnMuVAFM4-DH8J(}62g%+7xa??6`Q7n zP2|dnDrH+$N=+5vN?b_NCl&Np5om7Iku7b4v8j@ykESNrCBiRMV&i2(VleU+(qU%# zU_QA!Nm9UZur_7a)L^^R?0;QnsQ^9nF4Lx&Q4gZNQxN$oF1Q_+#EoRe1)*l@9+P?b z89@9VK%}O=1f4>Pkt}cka^U3xI-F`t@m^7$X6OQMxR)(A4A&oUqJUUWQQT&f?60(M zSFDZCGpi$3q>Nvj#Ju7y5y8cmo$cj?m|n|hq2*WW23ZGpedb~%OR?y&n0mm0F_DD~ zj-n+gK?stoj0f|}=HvVA zfo1MY*p#^{J(6fTB&9tbi>x9qQ`D#ga)sn!fOV`$9B4ic@)0P`w_YPMS=mY$)3w*Y zRkR6d)-@|VnMK(-*FHtNye- zH)#Dlh8J`&Ck+srG8Ir42@7l@J#k>?vq)*`XG@V9!Cp^%RHhD%gk)h-5;W`<*9$>v zf!qywn9s>$wA_pZl_1R9^6!u#8K{>Sx=Mp_kY!zp~uI>wyU6mlJMdy`w(loDmHp(+C)Z49hF(~cW&L@ z@FIE_Zf8C)!4^m{^LRdWbhZcD`_$gSjtSO18=>l`l)#pA3b$%0@2pq9<*d`R^H=snm(6U)y#xTP>I&QoI4Ji zPn*Bu7xJS!v!hJqxikG?a-*CA-0-c3mUNr=A%{D3{49dr@)e{kV?Cv;aGdp6wxvrb zXvtK>2JsRZrN}h{=G`*pD#v`>9@% z6i-pC*z|SIcZcS2bw6_3pkE*7%8$LnmnDf!MJoKJ*=WTc~Qi~5|Tl1^;%?W zuvX*Muw(;*k{udtR>Yq!W_#qjxknC_m|YVf$AIC(8X*QFMcriW&hcCIF`7y%(~I@r~baz1`=CZJLq82T;i%b2FQ{bk-)u zpGlEH(ALy;(G;wn#r#_9Jx(xnoC~L{W)>0L8c|M=KPveh-BgAH#xTo)@hNr{Vk4&~ z<}U5-9m5{Wj_Pt5Y82d8U-(6VGv07E=3pqx(=1T$G1>jM>UNZ3ge77`t}Fg8FYYhB zmwwf~52n}whf`jkvjxwZ2Wxy>-v&i%AFsCS%fs%Lw6`sTD=)9M?;&Y#^(LPg+t>3N zon3oRkCEF?K10{U_G-i1D6bmBBW%P`D3VGngN^7CtjdHV@k#KvK`#T!(Y_m1_&)Ds zUtAF(gRpeV1wTnkDUsm9F%JsSfY+#JP6UgIzv!e*kN=CC^g$6@dHCxl0mVbY|9!C3 zFn2WhuQd4qDA~aI1S}JOvv4&oX_h{HXihexBy%2zCxc_|Xc2Tl)9qu3yiCcO+1UKN zemWZTo&J(_OQ*IZpwD8wU4jD>IVJU=%4a44}PuF3#S^YBqu)Xy0 z`0~XRCw6?t<{5xpc=gx$j=0s$yYj`$bH#gdX>i_kW+a0W4aS%B&JBBHSBMz`4UIal zJvb;-{kq73@`pYlT##gWBs!_c=hU0U43ML;=J(c<@Z&7)u5FWaZY0MZh$8^5=e8~6KBJNu(NE? z4Gy!&I)oxd@{ip3K_Td!r5^x{JYZ$9#!WTH{5piE)0TGKj7zCItj09o#OgYdobvD`gExadqUcS+Oxr&G2_iIJ&)zGh})}^kK zN7u_Trn`LtYhY2YgW-7qkC?(3!-r$cM&~m}*>f2$<U456_jJmIear>8)e3QHdn(n)>t_^V)7@i3H<4i@eI66E||KbwQuD;tuANf~G z7Uba#P6yGR3X+*%h!izz-6xf64VlURBPH=$vE}Q8gXaHAN#Ugk92S6-1d??Z7K( zPm)!*0!m>LaW;o!_+F-8A0%lap_iZ`4->j@`KEpPQ8Y?yViW*vO z|AOs{fwRU6;K*b&Q%8h9QE{Nbd*-nBxS` z{E^jppBk)C;k~%v3X2GTD3l08A$+0LQ7dp19|8S&kzr5y%6!!dEe!sY6?I#V=1Vqm z1;6XL6)zc6gqyk3<#S+!4w5Rd&W#5?>U+1>PPUvWsRmN;N>4{ zPsW%q02P66^^)J2iAW{!j$EV4bQ3-{l^Hyo-5XqQ6A#g6u7OC(#=X&Tp0^j(=1F0Q zY9@=RGwP0}j_>4P85TmTKJ27BG7;f!vm9W8kzT51(LX-5_>E6A-PHVU1{MbCb7smp0Fah!U-c9I#RpZ ziPl)i56|utmTHrStlS5MjzZ)!w`>NRZHXDQT{fD#EKCWv<_NG8z45|kZ{$(@ICpN%+N z0!TW-kA#X5at9O-S~=SU;&CFa{6cZ;SW4V|{1E%vlzkktJ<@`U#`AG|Yfg`zftEZ$PE^95*kjP@9C!23Q1p*`Aj@2N=VR z*mdKJEMXKWr2fjv&#>n}bT!JH80#IHMP+`(VN(!RokiY6=oF2Jgxy(DK2SaKBPTG@ex6edK?c$ro|c%e}stRHzQRul-Jz z8woyzfxwZ3n^@;~^p`-AF}?5zSZUqV?CJYe{SN=+^5odkw1JxF(pdOrCMU)nbLqHgoGb=4!5ZkN!LJ@fpitB$T1okb7v(iN2ZRA zd-{2o3JGkUP7#*!AFX79O#x78*6~%`cUX%;-^oTCaz^DLD ztE^dY%&FJ{wsutBgQL;g@cBU1VLpCW7uZC>&(8(nq&>|VvN$|9PqY!*^xFz!pg!42 zi*HE*5yvvhjEqnP0 zk4IbF0h8`oPUy{cX%fbTY?Qcs3T)M25}#SdW0UnYxJ2qG96&B8!HI_KrXA&z5IfNA zG=yumQVxqj_KFD8BOBMkS)2iB&8tA2OfrGL3!u3cO-yInlQ|?IV>p0rARwhtZ3{k2 zjD&GIJf~)WMnQKL<$GHUG-D$cO}}|}neH7r?S0nG^K<)LnC{)bwDT%PETZ~&a>$b} z;?q`px_${@+-xt}PKg@d-ol9Uj4ck96?-D&pJeIQE!lqhNM1}o!JX%8&=a(D8V%U* zuvup3=?`rEdTv|uPJ*mwJTYp

&&&svxkc_7G}&6>|FIyPKVH2(=uK6VfEGB9N3u zk^g4MquR3MbuBmUexNy>ys+FdZLlq%D|`a@?d9`!@%3@pz!%bUfH~8MQFEQw)gAQc zvn|{agS=SRoZPrr$0R@S*H!8nuSM;Jj0UTQ|Bij`3#1hk7PN2K@_VNG;t35Iq{YH4 zNGDBq>BZh*43}I58!Ztk{HhFk@4(8g`mgh_XiRhRUjU|bk^lly{%}S~**A+ZCLsI%`A_ye3}YufPrv?uW#6#2#->D3v<|kWM>#or_&EA5iG*6O_YgMQc3d_tMz}2r!*jzyZp3{s z^)56k@m4s=G+S?wF5e$>QPL&vsMjQ_1%&u^M_OU64$uZu-3ztB{ z7a$gJwU*(MA@PTTdA0A?kP*R+42phWzeZB7!0I<@HuyFpba(po#PtJl4=}g)vZ}rL z+kB4$FecACFOMC7F@-O?aE!!E{>7M&lrDwn5X{gf^FPJ^GNwAG$shVu0Asp^V^cbO z{LQ}Un1+1iqzglWh@#g8j?E4r{m)fLCAb7WjuNG~KrcTk*7-#F`zg9*XUJhGyCt!n zD=qNT`x*Ktphm8c*cqoEWj)b6DCxUu@HX(vQJOt?uLRI1Ng`iu7-xxXR!j7uS9Mu^Q7i(uqkdvMP`Avh-cm=hobXN!G6 zoH0GWc@X{HEN3SQ<^kD9X~B9==s_m%33NF-Gt~bpwRZRqXq@*s!lUn>HfR~Bpuvg} zTRGn~$p;>mZ*SZVw-HRBU)u4E`w3h#NA_HS!z0c!J+AfNHJw*TqsdD@*XrzkM*YkU zWa7Vnm)GM#YjwDBwc(ccOq7W=H>#~5@&tlcd3Uu!8=_K&sH1XxQEg(nn% zwajL#No=s;`IogEBn4PY5M!xC#@?iVtfeaYe^|@Yf3ubYf34*^F18|>BbG`@qjq#s zdTaP^oag9~od}j6rWr<{0ZzFi)cy)Q;Ta;>M@V(Y{k9enCPr-S?b-pL zFCOH`uHW<1(SsS(&$HwZcAzcjMXWC){SkEw+Qb?z>|+5vi^Ww0_Zdm#M5YqqR{(2? z-v#S?D>WESJ60>*SEtjR-CSKFu3(I+T7Eb^c)chV7A!#_XHE~G%_Fc&X7p{EZ-2OX zuEx>m$79|`oCXs9Wi3B3Otz283B=m*R>&OqS`=%aaE(7is1i4l21o?`0|n|EWn@bm zVQ8x4$mM7N)-twU$bgyU<*&6YoWhxHs>{HwNO!?$<=Qi)*?XHN%7R#D zsRcd!FaT9=tq4`K$OS+qI%g%vty1(V{0#VhRAp8!me#;^`0pS#SCPX+@JTmr&=-SE z|2B%hd3fXrrvA$Htty2n#I6wBFG~HSIXx{Iq0*O@IZwnOD|(Wn(%3n399w~6F}$3K zsm?B5xfRUuYQdFE5w!v9E(E*ZGQ2fwiIpRPhinDC$mgRcpf#;2RB1jL%==gbp2gFpXzUXt_4^Taq+iX9;$DpG2S7JmhPMe@o zF;=Nen$!rmPMGewl&Xl01@h`3;Eoy_2g{i{0FWu)o5fZbGaRDkqqxTKTm~P!@(b3! z{0dr;MyC%MdU%MOoR~yBut7)!CBQ?(boFW2=MmIgCzYIs)nO;m z1bx0ku@nLrz7FzD@uL47z1U!h(4;3UiJ`^eU>rmDg6q=$i`D@>|E0LKfr`$7I7l5q z0g>qf)~E|rhAw~5swgaVj??gka2doB%3JFKox@VB+%eO2qQ(!mjx^04vDOs+N{!Ax z(@5?dZHMMj6Wj8IZ5neva-^+%2f1nL3||kzkl|>xTzTz6+PrRu@x&I5+7X!dyn)Q` z85xbF4gP8Aw~1h**N&{*hhGgR{s$7r2)Dea`K?(W+A!SD)=q%G1YHUr{+GX;s&L2+ zNB?2nNH)KP><^0Q%s>BADQB}EUAy-9y;piKkbt;U+QU8hiUtG3uyeQ=6j*l~xK(y< zd-DMAw+TEq^%Q-u*D8f3YghT5Nvz91`qE|7v0by&&BtN3^R=*-2cR#pRjJAKJDpki z7VhO9#WF}irMb{F4TkWfAg~jZbD1{#gg)W}I?jiIXOKj!gZZa1mlF^dzlYb+`VDyS zcXmGO;z9pr-Xd~v0DUdQ`^%ZVe>pQKTPWT@B5<>gOYLWBSnie9aS6#)E=10(l+>@O zZZT*r>Jlfu33sH+epgTj&gddSRfr0ISh>qe8iMs(B`#HK;|L770O?t!`qCBJ6MMX< z_w2B;jm*m-PGt~{wd*T}bMuS}G$v-JqHj-+eQo`ngS&N_dxUx1+cADDYx7aqWDeqf zRkGU)dFPIt#pLTn#;#7aDr7ysZOdT^bPZ7XmmxA9nt z#A?Q+EGOe@?W0s>C^uTIZr`Q6eOwr{l6g=_dptVnw-_|{Q)*FiVrwi{@za7iQ!2?1 z&-%F2Pd#(UE7{TrAa@xqnmqTRnm3hhyZ(q9o0A?nqpRE{>>zr}Oa~f7Z|Xv_p)`PO z6kNC>4Gh}tGS>vNC9LA~-_58mvoH{)?ga$d7)9;r4ty}Ru1mbsI%lJ95G+-4sSUOt z%IrXP=V+ay*Qrgr8cEjX2rv=D6etF18lE>ZsPmG#-xtU~>nlM#ZpiPL^#RFGCrW%g z4=FbUQhUFlQy{PxRsyjmc)~cFUMI|XZcqse$+$)2*qIpcshxX1~3jh(A^^@Fm}L=FAy!% zd#NJ;p}2|;K0cHk@DAFW1G;U&SF@2Yc8ABmP&0+T*NuR2<545-;r7AaYkK?1K9^^* z;ZA=0Q6WcA&vRLq|F%?fUTmJGMf}^2!|cGXnY`*vvsc7#i~pPzLU^Y)i9EFcSk?Jvh1CY zhXei*xHliH?C&{vLT*B@sUhp`PJC{xA=?s9ACuDWKOK|Gu&`F%gOaglvJ07&QyW7* zFcW<@`kZ8v5WHIY2RD}@Lk4jm5c?LmUW4UJ&A?|aRPMe-mHkkO4*mu=bxl-P;pcfj&ZRyU=%V}>xNM4s-*zODFKn$1NVRep*yhlpXabE(5Xy`{&^ zD~Z7w!e$r^9WX&_Qw%Xhqz_);*heRz3FOUoU%9eK78Fj4g=unRsr>=} z{dE{d?iG8{IQmhS64z@GI)OHMP5`zODw?%8P`cl zf06LH-YVc>u%Sd3P()LfC)WHv*Ia)78-~gH-D;7aW}X?@4)MAV@rlOds&80+>IOcH zJ-`}dZXS|i`|DiG@Jvfc-i>&LewQgPWcrO$;!-i@b+gcv)`Qj49p^QuhoGnwz?A{1 zppTxQ;J|;r;i?`SB`HH|4Ei&lQ)PX7SM9pGOeOI(%=8Yk7~n~&pV@uGA;!2wttctz zj7~KEaI4)dZm=y-N~T)dMbaXg)q*2ClVS!@zad}-%%q^TK@a6U=Z!ypisNPz7Cw5w zvOj%st@KdkwEKfXP_YezTt`$&hwU_i)KcTSmJZe$kbxeALuD7MZ6_u!2;UcL_p8Fm zNcHp75>oJ=`FKXK_Q9m zdvN?&%-jCu7%e}1dv^R%pM%7H%?IRGmFPgArN}+zah&zBxO@>aJe&$34}7Z1ZCi4d#W05< z4Kg|LF`4!d5cagtb7DdTI6U_+=-YqFX)d<)1ZVz8a^N{ES05`|RE z@Ndl>n(?uh{Cv~nNlmo%aN9&lCcE5Y4b7fGRyci(Cd>ZGjg?u%O*BhS{>D1V93jqf z>>v&^U!B$J9pgJoXQoXwyTZJZ)SXCe_evK;A>h53bKXP6Zs39(UC>xuXcY3j{b~=( zx9?Y~JUuV*ZKDk;+8}!fzt`>QVI9X@M1L3~7Zrjdm*~{5U+iy2x>*w8PZF9RGESQ2 z@;XQpGuEB3U^?j!!j)X30Grda>sJjuGHo#geMIanFtx{>EaIQp00Euz`+f#s9&3rw zmgKUwyc}Z>9rEK3oR6xCFYKFlvm%pkf^B8S&`uIrHsPIQ*+dX9;p33fw>Khc;ti-T z#odC#0uSVsthV!QPwK!d*oX-56yrnGACm@|nE1oabEnP+`z&2ESxe{B-(5WjaQT%B zkISBLWs7`PG5sz*4P#G&@uMl#In20Tlr>QG*X}VKMBk7eiV%c(g4V1t=v#uiM&e&> zP3Y(-2$$~#pX~x^mGL?-)i~KvWv~hkDI&h#7^Zs64oJXv$D$Ew7_5#DP~hU8wTPw3 zdJ~vJ96XvJCes2VaI+qbwu8g9UFkiyn;Iz}f4G{=`?6iX)a37as{q5s&^y$(v%qG?k|D_Ty=8jZ0+IxFK0bCv=brZX?rQc!;+{JWGG~sr zdOGO!Soq^E@6$s`5ZghKWeGKR@i>yN%;BTnQJKAt5#mvuoTf%ud)H~oGnrG2gCkps zaIhv5_vgJyj6qlBW#@L&*Kq(c7ovW;c?d�C$v}pqcceltmHsSoy81&!ymhzH3c` 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

mcqVLK=S)))S7qfa{cF$?LblUF!tw}5}} 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

C)3&X)o6E_9a0Rw#lIyGGXShce@(!N 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 diff --git a/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch-javadoc.jar.md5 b/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch-javadoc.jar.md5 deleted file mode 100644 index c9e720e6039..00000000000 --- a/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch-javadoc.jar.md5 +++ /dev/null @@ -1 +0,0 @@ -21bc45a29b715720f4b77f51bf9f1754 diff --git a/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch-javadoc.jar.sha1 b/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch-javadoc.jar.sha1 deleted file mode 100644 index 756955d2840..00000000000 --- a/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch-javadoc.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -b544162e82d322116b87d99f2fbb6ddd4c4745e1 diff --git a/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch-sources.jar b/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch-sources.jar deleted file mode 100644 index 314dad81872885fd878c5d8a5a813982e2ea815d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42972 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 z 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%0Dkt|3P=8n0&p>y#Y2JbkOMU~S_}?~d z-YvJgdtGiBNN<0G@vr6o|7FH^Hx}G-VC()roPS&Jjbp#N2z^Tts=uAGyj_yMEscM# zi~ti*|2+3WzJ8@|{BDWk+bZYn9RJ-#(VKP7zn`1LI{!`#xa03uJ^#0$n|04yL2*A9 z^xu~)Z!`Jd*FnDlGQHOSKjQyc75$!a(;D4fJG-S|w*0Fozb}pdo{1aE?Mj-QBqY?0 RKq27YC@{CP2Z#g#`9Jtf9RC0S diff --git a/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.jar.md5 b/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.jar.md5 deleted file mode 100644 index 84891040047..00000000000 --- a/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.jar.md5 +++ /dev/null @@ -1 +0,0 @@ -52f8b446f78009757d593312778f428c diff --git a/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.jar.sha1 b/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.jar.sha1 deleted file mode 100644 index dbded3dd83f..00000000000 --- a/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -feb6903ad32d4b42461b7ca1b3fae6146740bb31 diff --git a/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.pom b/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.pom deleted file mode 100644 index c45e15a91f9..00000000000 --- a/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.pom +++ /dev/null @@ -1,67 +0,0 @@ - - - - xoai - com.lyncode - 4.1.0-header-patch - - 4.0.0 - - XOAI Service Provider - xoai-service-provider - 4.1.0-header-patch - - - - com.lyncode - xoai-common - ${project.version} - - - - com.lyncode - xml-io - - - - log4j - log4j - - - - org.apache.commons - commons-lang3 - - - - org.apache.httpcomponents - httpclient - - - - org.codehaus.woodstox - wstx-asl - - - - - com.lyncode - xoai-data-provider - ${project.version} - test - - - - org.mockito - mockito-all - test - - - - junit - junit - test - - - - diff --git a/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.pom.md5 b/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.pom.md5 deleted file mode 100644 index 5e51f198572..00000000000 --- a/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.pom.md5 +++ /dev/null @@ -1 +0,0 @@ -b97b8ee92daa5fc4fd87004465f9ad2b diff --git a/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.pom.sha1 b/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.pom.sha1 deleted file mode 100644 index 2c6dc74f02b..00000000000 --- a/local_lib/com/lyncode/xoai-service-provider/4.1.0-header-patch/xoai-service-provider-4.1.0-header-patch.pom.sha1 +++ /dev/null @@ -1 +0,0 @@ -f772583549263bd72ea4d5268d9db0a84c27cb9f diff --git a/local_lib/com/lyncode/xoai/4.1.0-header-patch/xoai-4.1.0-header-patch.pom b/local_lib/com/lyncode/xoai/4.1.0-header-patch/xoai-4.1.0-header-patch.pom deleted file mode 100644 index 89a14d88c51..00000000000 --- a/local_lib/com/lyncode/xoai/4.1.0-header-patch/xoai-4.1.0-header-patch.pom +++ /dev/null @@ -1,273 +0,0 @@ - - 4.0.0 - pom - - - xoai-common - xoai-data-provider - xoai-service-provider - - - - org.sonatype.oss - oss-parent - 7 - - - com.lyncode - xoai - 4.1.0-header-patch - - XOAI : OAI-PMH Java Toolkit - http://www.lyncode.com - - - 1.9.5 - 15.0 - 3.1 - 1.2.14 - 4.2.1 - 4.0.0 - - 1.0.2 - 1.0.3 - 1.0.4 - - - - - The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - repo - - - - - scm:git:git@github.com:lyncode/xoai.git - scm:git:git@github.com:lyncode/xoai.git - git@github.com:lyncode/xoai.git - xoai-4.1.0 - - - - - ossrh - https://oss.sonatype.org/content/repositories/snapshots - - - ossrh - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - - - - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.5 - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.8.1 - - - org.apache.maven.plugins - maven-source-plugin - 2.2.1 - - - org.apache.maven.plugins - maven-release-plugin - 2.5 - - - org.apache.maven.plugins - maven-compiler-plugin - 3.1 - - - - - - org.apache.maven.plugins - maven-release-plugin - - true - false - release - deploy - - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.6 - 1.6 - false - false - true - - - - org.apache.maven.plugins - maven-javadoc-plugin - true - - - attach-javadocs - - jar - - - - - - org.apache.maven.plugins - maven-source-plugin - true - - - attach-sources - - jar - - - - - - - - - - - com.lyncode - xml-io - ${lyncode.xml-io} - - - - com.lyncode - test-support - ${lyncode.test-support} - - - - - log4j - log4j - ${log4j.version} - - - - org.apache.commons - commons-lang3 - ${commons.lang3.version} - - - - org.apache.httpcomponents - httpclient - ${http-commons.version} - - - - org.codehaus.woodstox - wstx-asl - ${woodstox.version} - - - - org.codehaus.woodstox - stax2-api - 3.0.4 - - - - commons-codec - commons-codec - 1.3 - - - org.hamcrest - hamcrest-all - 1.3 - - - xalan - xalan - 2.7.2 - - - dom4j - dom4j - 1.6.1 - - - - javax.xml.stream - stax-api - 1.0-2 - - - jaxen - jaxen - 1.1.4 - - - junit - junit - 4.11 - - - commons-io - commons-io - 2.4 - - - - xml-apis - xml-apis - 1.0.b2 - - - - stax - stax-api - 1.0.1 - - - - org.mockito - mockito-all - ${mockito.version} - - - - com.google.guava - guava - ${guava.version} - - - - com.lyncode - builder-commons - ${lyncode.builder-commons} - - - - - - - - DSpace @ Lyncode - dspace@lyncode.com - Lyncode - http://www.lyncode.com - - - - diff --git a/local_lib/com/lyncode/xoai/4.1.0-header-patch/xoai-4.1.0-header-patch.pom.md5 b/local_lib/com/lyncode/xoai/4.1.0-header-patch/xoai-4.1.0-header-patch.pom.md5 deleted file mode 100644 index d2fdadd114f..00000000000 --- a/local_lib/com/lyncode/xoai/4.1.0-header-patch/xoai-4.1.0-header-patch.pom.md5 +++ /dev/null @@ -1 +0,0 @@ -b50966bebe8cfdcb58478cf029b08aa3 diff --git a/local_lib/com/lyncode/xoai/4.1.0-header-patch/xoai-4.1.0-header-patch.pom.sha1 b/local_lib/com/lyncode/xoai/4.1.0-header-patch/xoai-4.1.0-header-patch.pom.sha1 deleted file mode 100644 index b142cd649e8..00000000000 --- a/local_lib/com/lyncode/xoai/4.1.0-header-patch/xoai-4.1.0-header-patch.pom.sha1 +++ /dev/null @@ -1 +0,0 @@ -28a5d65399cbc25b29b270caebbb86e292c5ba18 diff --git a/modules/dataverse-parent/pom.xml b/modules/dataverse-parent/pom.xml index e85608dd0c4..e83ba818aeb 100644 --- a/modules/dataverse-parent/pom.xml +++ b/modules/dataverse-parent/pom.xml @@ -161,6 +161,9 @@ 1.21 4.5.13 4.4.14 + + + 5.0.0-SNAPSHOT 1.15.0 @@ -301,7 +304,7 @@ Local repository for hosting jars not available from network repositories. file://${project.basedir}/local_lib - oss-sonatype oss-sonatype @@ -312,7 +315,7 @@ true - --> + diff --git a/pom.xml b/pom.xml index ce9f1c4b63d..b2e6b1787d9 100644 --- a/pom.xml +++ b/pom.xml @@ -393,7 +393,7 @@ - + + + io.gdcc + xoai-common + ${gdcc.xoai.version} + + + io.gdcc + xoai-data-provider + ${gdcc.xoai.version} + + + io.gdcc + xoai-service-provider + ${gdcc.xoai.version} diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java index 71cc23e242b..397a90b0c99 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java @@ -35,7 +35,7 @@ import org.apache.commons.lang3.mutable.MutableLong; import org.xml.sax.SAXException; -import com.lyncode.xoai.model.oaipmh.Header; +import io.gdcc.xoai.model.oaipmh.Header; import edu.harvard.iq.dataverse.EjbDataverseEngine; import edu.harvard.iq.dataverse.api.imports.ImportServiceBean; import edu.harvard.iq.dataverse.engine.command.DataverseRequest; @@ -254,7 +254,7 @@ private List harvestOAI(DataverseRequest dataverseRequest, HarvestingClien Header h = idIter.next(); String identifier = h.getIdentifier(); - Date dateStamp = h.getDatestamp(); + Date dateStamp = Date.from(h.getDatestamp()); hdLogger.info("processing identifier: " + identifier + ", date: " + dateStamp); diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/client/oai/OaiHandler.java b/src/main/java/edu/harvard/iq/dataverse/harvest/client/oai/OaiHandler.java index d1aaea50793..83bf6068090 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/client/oai/OaiHandler.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/client/oai/OaiHandler.java @@ -5,18 +5,19 @@ */ package edu.harvard.iq.dataverse.harvest.client.oai; -import com.lyncode.xoai.model.oaipmh.Description; -import com.lyncode.xoai.model.oaipmh.Granularity; -import com.lyncode.xoai.model.oaipmh.Header; -import com.lyncode.xoai.model.oaipmh.MetadataFormat; -import com.lyncode.xoai.model.oaipmh.Set; -import com.lyncode.xoai.serviceprovider.ServiceProvider; -import com.lyncode.xoai.serviceprovider.client.HttpOAIClient; -import com.lyncode.xoai.serviceprovider.exceptions.BadArgumentException; -import com.lyncode.xoai.serviceprovider.exceptions.InvalidOAIResponse; -import com.lyncode.xoai.serviceprovider.exceptions.NoSetHierarchyException; -import com.lyncode.xoai.serviceprovider.model.Context; -import com.lyncode.xoai.serviceprovider.parameters.ListIdentifiersParameters; +import io.gdcc.xoai.model.oaipmh.Description; +import io.gdcc.xoai.model.oaipmh.Granularity; +import io.gdcc.xoai.model.oaipmh.Header; +import io.gdcc.xoai.model.oaipmh.MetadataFormat; +import io.gdcc.xoai.model.oaipmh.Set; +import io.gdcc.xoai.serviceprovider.ServiceProvider; +import io.gdcc.xoai.serviceprovider.client.JdkHttpOaiClient; //.HttpOAIClient; +import io.gdcc.xoai.serviceprovider.exceptions.BadArgumentException; +import io.gdcc.xoai.serviceprovider.exceptions.InvalidOAIResponse; +import io.gdcc.xoai.serviceprovider.exceptions.NoSetHierarchyException; +import io.gdcc.xoai.serviceprovider.exceptions.IdDoesNotExistException; +import io.gdcc.xoai.serviceprovider.model.Context; +import io.gdcc.xoai.serviceprovider.parameters.ListIdentifiersParameters; import edu.harvard.iq.dataverse.harvest.client.FastGetRecord; import edu.harvard.iq.dataverse.harvest.client.HarvestingClient; import java.io.IOException; @@ -133,8 +134,8 @@ private ServiceProvider getServiceProvider() throws OaiHandlerException { context.withBaseUrl(baseOaiUrl); context.withGranularity(Granularity.Second); - context.withOAIClient(new HttpOAIClient(baseOaiUrl)); - + // builds the client with the default parameters and the JDK http client: + context.withOAIClient(JdkHttpOaiClient.newBuilder().withBaseUrl(baseOaiUrl).build()); serviceProvider = new ServiceProvider(context); } @@ -199,6 +200,11 @@ public List runListMetadataFormats() throws OaiHandlerException { try { mfIter = sp.listMetadataFormats(); + } catch (IdDoesNotExistException idnee) { + // TODO: + // not sure why this exception is now thrown by List Metadata Formats (?) + // but looks like it was added in xoai 4.2. + throw new OaiHandlerException("Id does not exist exception"); } catch (InvalidOAIResponse ior) { throw new OaiHandlerException("No valid response received from the OAI server."); } @@ -261,7 +267,7 @@ private ListIdentifiersParameters buildListIdentifiersParams() throws OaiHandler mip.withMetadataPrefix(metadataPrefix); if (this.fromDate != null) { - mip.withFrom(this.fromDate); + mip.withFrom(this.fromDate.toInstant()); } if (!StringUtils.isEmpty(this.setName)) { diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAIRecordServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAIRecordServiceBean.java index 02e7675a776..a7e180ce233 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAIRecordServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAIRecordServiceBean.java @@ -12,6 +12,7 @@ import edu.harvard.iq.dataverse.export.ExportService; import edu.harvard.iq.dataverse.search.IndexServiceBean; import edu.harvard.iq.dataverse.settings.SettingsServiceBean; +import java.time.Instant; import java.io.File; import java.io.IOException; import java.sql.Timestamp; @@ -286,15 +287,15 @@ public List findOaiRecordsBySetName(String setName) { return findOaiRecordsBySetName(setName, null, null); } - public List findOaiRecordsBySetName(String setName, Date from, Date until) { + public List findOaiRecordsBySetName(String setName, Instant from, Instant until) { return findOaiRecordsBySetName(setName, from, until, false); } - public List findOaiRecordsNotInThisSet(String setName, Date from, Date until) { + public List findOaiRecordsNotInThisSet(String setName, Instant from, Instant until) { return findOaiRecordsBySetName(setName, from, until, true); } - public List findOaiRecordsBySetName(String setName, Date from, Date until, boolean excludeSet) { + public List findOaiRecordsBySetName(String setName, Instant from, Instant until, boolean excludeSet) { if (setName == null) { setName = ""; @@ -314,8 +315,14 @@ public List findOaiRecordsBySetName(String setName, Date from, Date u logger.fine("Query: "+queryString); TypedQuery query = em.createQuery(queryString, OAIRecord.class); - if (setName != null) { query.setParameter("setName",setName); } - if (from != null) { query.setParameter("from",from,TemporalType.TIMESTAMP); } + if (setName != null) { + query.setParameter("setName",setName); + } + // TODO: review and phase out the use of java.util.Date throughout this service. + + if (from != null) { + query.setParameter("from",Date.from(from),TemporalType.TIMESTAMP); + } // In order to achieve inclusivity on the "until" matching, we need to do // the following (if the "until" parameter is supplied): // 1) if the supplied "until" parameter has the time portion (and is not just @@ -332,17 +339,21 @@ public List findOaiRecordsBySetName(String setName, Date from, Date u if (until != null) { // 24 * 3600 * 1000 = number of milliseconds in a day. + + Date untilDate = Date.from(until); - if (until.getTime() % (24 * 3600 * 1000) == 0) { + if (untilDate.getTime() % (24 * 3600 * 1000) == 0) { // The supplied "until" parameter is a date, with no time // portion. + // TODO: review/reimplement this! + logger.fine("plain date. incrementing by one day"); - until.setTime(until.getTime()+(24 * 3600 * 1000)); + untilDate.setTime(untilDate.getTime()+(24 * 3600 * 1000)); } else { logger.fine("date and time. incrementing by one second"); - until.setTime(until.getTime()+1000); + untilDate.setTime(untilDate.getTime()+1000); } - query.setParameter("until",until,TemporalType.TIMESTAMP); + query.setParameter("until",untilDate,TemporalType.TIMESTAMP); } try { diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java index d8619c42dfa..90b425b8e2b 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java @@ -5,26 +5,27 @@ */ package edu.harvard.iq.dataverse.harvest.server.web.servlet; -import com.lyncode.xml.exceptions.XmlWriteException; -import com.lyncode.xoai.dataprovider.builder.OAIRequestParametersBuilder; -import com.lyncode.xoai.dataprovider.exceptions.OAIException; -import com.lyncode.xoai.dataprovider.repository.Repository; -import com.lyncode.xoai.dataprovider.repository.RepositoryConfiguration; -import com.lyncode.xoai.dataprovider.model.Context; -import com.lyncode.xoai.dataprovider.model.MetadataFormat; -import com.lyncode.xoai.services.impl.SimpleResumptionTokenFormat; -import com.lyncode.xoai.dataprovider.repository.ItemRepository; -import com.lyncode.xoai.dataprovider.repository.SetRepository; -import com.lyncode.xoai.model.oaipmh.DeletedRecord; -import com.lyncode.xoai.model.oaipmh.Granularity; -import com.lyncode.xoai.model.oaipmh.OAIPMH; -import static com.lyncode.xoai.model.oaipmh.OAIPMH.NAMESPACE_URI; -import static com.lyncode.xoai.model.oaipmh.OAIPMH.SCHEMA_LOCATION; -import com.lyncode.xoai.model.oaipmh.Verb; -import com.lyncode.xoai.xml.XSISchema; - -import com.lyncode.xoai.xml.XmlWriter; -import static com.lyncode.xoai.xml.XmlWriter.defaultContext; +import io.gdcc.xoai.xmlio.exceptions.XmlWriteException; +import io.gdcc.xoai.dataprovider.DataProvider; +import io.gdcc.xoai.dataprovider.builder.OAIRequestParametersBuilder; +import io.gdcc.xoai.dataprovider.repository.Repository; +import io.gdcc.xoai.dataprovider.repository.RepositoryConfiguration; +import io.gdcc.xoai.dataprovider.model.Context; +import io.gdcc.xoai.dataprovider.model.MetadataFormat; +import io.gdcc.xoai.services.impl.SimpleResumptionTokenFormat; +import io.gdcc.xoai.dataprovider.repository.ItemRepository; +import io.gdcc.xoai.dataprovider.repository.SetRepository; +import io.gdcc.xoai.model.oaipmh.DeletedRecord; +import io.gdcc.xoai.model.oaipmh.Granularity; +import io.gdcc.xoai.model.oaipmh.OAIPMH; +import io.gdcc.xoai.model.oaipmh.GetRecord; +import static io.gdcc.xoai.model.oaipmh.OAIPMH.NAMESPACE_URI; +import static io.gdcc.xoai.model.oaipmh.OAIPMH.SCHEMA_LOCATION; +import io.gdcc.xoai.model.oaipmh.Verb; +import io.gdcc.xoai.xml.XSISchema; + +import io.gdcc.xoai.xml.XmlWriter; +import static io.gdcc.xoai.xml.XmlWriter.defaultContext; import edu.harvard.iq.dataverse.DatasetServiceBean; import edu.harvard.iq.dataverse.DataverseServiceBean; import edu.harvard.iq.dataverse.export.ExportException; @@ -32,11 +33,8 @@ import edu.harvard.iq.dataverse.export.spi.Exporter; import edu.harvard.iq.dataverse.harvest.server.OAIRecordServiceBean; import edu.harvard.iq.dataverse.harvest.server.OAISetServiceBean; -import edu.harvard.iq.dataverse.harvest.server.xoai.XdataProvider; -import edu.harvard.iq.dataverse.harvest.server.xoai.XgetRecord; -import edu.harvard.iq.dataverse.harvest.server.xoai.XitemRepository; -import edu.harvard.iq.dataverse.harvest.server.xoai.XsetRepository; -import edu.harvard.iq.dataverse.harvest.server.xoai.XlistRecords; +import edu.harvard.iq.dataverse.harvest.server.xoai.DataverseXoaiItemRepository; +import edu.harvard.iq.dataverse.harvest.server.xoai.DataverseXoaiSetRepository; import edu.harvard.iq.dataverse.settings.SettingsServiceBean; import edu.harvard.iq.dataverse.util.MailUtil; import edu.harvard.iq.dataverse.util.SystemConfig; @@ -62,7 +60,7 @@ * * @author Leonid Andreev * Dedicated servlet for handling OAI-PMH requests. - * Uses lyncode XOAI data provider implementation for serving content. + * Uses lyncode/Dspace/gdcc XOAI data provider implementation for serving content. * The servlet itself is somewhat influenced by the older OCLC OAIcat implementation. */ public class OAIServlet extends HttpServlet { @@ -95,7 +93,7 @@ public class OAIServlet extends HttpServlet { private ItemRepository itemRepository; private RepositoryConfiguration repositoryConfiguration; private Repository xoaiRepository; - private XdataProvider dataProvider; + private DataProvider dataProvider; public void init(ServletConfig config) throws ServletException { super.init(config); @@ -106,8 +104,8 @@ public void init(ServletConfig config) throws ServletException { xoaiContext = addDataverseJsonMetadataFormat(xoaiContext); } - setRepository = new XsetRepository(setService); - itemRepository = new XitemRepository(recordService, datasetService); + setRepository = new DataverseXoaiSetRepository(setService); + itemRepository = new DataverseXoaiItemRepository(recordService, datasetService); repositoryConfiguration = createRepositoryConfiguration(); @@ -117,7 +115,7 @@ public void init(ServletConfig config) throws ServletException { .withResumptionTokenFormatter(new SimpleResumptionTokenFormat()) .withConfiguration(repositoryConfiguration); - dataProvider = new XdataProvider(getXoaiContext(), getXoaiRepository()); + dataProvider = new DataProvider(getXoaiContext(), getXoaiRepository()); } private Context createContext() { @@ -188,7 +186,7 @@ private RepositoryConfiguration createRepositoryConfiguration() { .withMaxListIdentifiers(100) .withMaxListRecords(100) .withMaxListSets(100) - .withEarliestDate(new Date()); + .withEarliestDate(new Date().toInstant()); // TODO: return repositoryConfiguration; } @@ -246,24 +244,24 @@ private void processRequest(HttpServletRequest request, HttpServletResponse resp OAIPMH handle = dataProvider.handle(parametersBuilder); response.setContentType("text/xml;charset=UTF-8"); - if (isGetRecord(request) && !handle.hasErrors()) { + /* if (isGetRecord(request) && !handle.hasErrors()) { writeGetRecord(response, handle); } else if (isListRecords(request) && !handle.hasErrors()) { writeListRecords(response, handle); - } else { + } else { */ XmlWriter xmlWriter = new XmlWriter(response.getOutputStream()); xmlWriter.write(handle); xmlWriter.flush(); xmlWriter.close(); - } + /* } */ } catch (IOException ex) { logger.warning("IO exception in Get; "+ex.getMessage()); throw new ServletException ("IO Exception in Get", ex); - } catch (OAIException oex) { + } /* catch (OAIException oex) { logger.warning("OAI exception in Get; "+oex.getMessage()); throw new ServletException ("OAI Exception in Get", oex); - } catch (XMLStreamException xse) { + } */ catch (XMLStreamException xse) { logger.warning("XML Stream exception in Get; "+xse.getMessage()); throw new ServletException ("XML Stream Exception in Get", xse); } catch (XmlWriteException xwe) { @@ -278,7 +276,7 @@ private void processRequest(HttpServletRequest request, HttpServletResponse resp // Custom methods for the potentially expensive GetRecord and ListRecords requests: - private void writeListRecords(HttpServletResponse response, OAIPMH handle) throws IOException { + /* private void writeListRecords(HttpServletResponse response, OAIPMH handle) throws IOException { OutputStream outputStream = response.getOutputStream(); outputStream.write(oaiPmhResponseToString(handle).getBytes()); @@ -326,7 +324,7 @@ private void writeGetRecord(HttpServletResponse response, OAIPMH handle) throws outputStream.flush(); - ((XgetRecord) verb).writeToStream(outputStream); + verb.writeToStream(outputStream); outputStream.write(("").getBytes()); outputStream.write(("\n").getBytes()); @@ -334,7 +332,7 @@ private void writeGetRecord(HttpServletResponse response, OAIPMH handle) throws outputStream.flush(); outputStream.close(); - } + } */ // This function produces the string representation of the top level, // "service" record of an OAIPMH response (i.e., the header that precedes diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/Xitem.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItem.java similarity index 68% rename from src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/Xitem.java rename to src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItem.java index bd7a35ddb79..db9d6612763 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/Xitem.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItem.java @@ -5,14 +5,15 @@ */ package edu.harvard.iq.dataverse.harvest.server.xoai; -import com.lyncode.xoai.dataprovider.model.Item; -import com.lyncode.xoai.dataprovider.model.Set; -import com.lyncode.xoai.model.oaipmh.About; +import io.gdcc.xoai.dataprovider.model.Item; +import io.gdcc.xoai.dataprovider.model.Set; +import io.gdcc.xoai.model.oaipmh.Metadata; +import io.gdcc.xoai.model.oaipmh.About; import edu.harvard.iq.dataverse.Dataset; import edu.harvard.iq.dataverse.harvest.server.OAIRecord; import edu.harvard.iq.dataverse.util.StringUtil; +import java.time.Instant; import java.util.ArrayList; -import java.util.Date; import java.util.List; @@ -20,13 +21,13 @@ * * @author Leonid Andreev * - * This is an implemention of an Lyncode XOAI Item; + * This is an implemention of a Lyncode/DSpace/gdcc XOAI Item. * You can think of it as an XOAI Item wrapper around the * Dataverse OAIRecord entity. */ -public class Xitem implements Item { +public class DataverseXoaiItem implements Item { - public Xitem(OAIRecord oaiRecord) { + public DataverseXoaiItem(OAIRecord oaiRecord) { super(); this.oaiRecord = oaiRecord; oaisets = new ArrayList<>(); @@ -34,7 +35,7 @@ public Xitem(OAIRecord oaiRecord) { oaisets.add(new Set(oaiRecord.getSetName())); } } - + private OAIRecord oaiRecord; public OAIRecord getOaiRecord() { @@ -51,7 +52,7 @@ public Dataset getDataset() { return dataset; } - public Xitem withDataset(Dataset dataset) { + public DataverseXoaiItem withDataset(Dataset dataset) { this.dataset = dataset; return this; } @@ -61,9 +62,16 @@ public List getAbout() { return null; } + private Metadata metadata; + @Override - public Xmetadata getMetadata() { - return new Xmetadata((String)null); + public Metadata getMetadata() { + return metadata; + } + + public DataverseXoaiItem withMetadata(Metadata metadata) { + this.metadata = metadata; + return this; } @Override @@ -72,8 +80,8 @@ public String getIdentifier() { } @Override - public Date getDatestamp() { - return oaiRecord.getLastUpdateTime(); + public Instant getDatestamp() { + return oaiRecord.getLastUpdateTime().toInstant(); } private List oaisets; @@ -82,12 +90,10 @@ public Date getDatestamp() { public List getSets() { return oaisets; - } @Override public boolean isDeleted() { return oaiRecord.isRemoved(); } - } diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XitemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java similarity index 58% rename from src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XitemRepository.java rename to src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index b4c60a3171d..58d19f40d2d 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XitemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -5,22 +5,28 @@ */ package edu.harvard.iq.dataverse.harvest.server.xoai; -import com.lyncode.xoai.dataprovider.exceptions.IdDoesNotExistException; -import com.lyncode.xoai.dataprovider.exceptions.OAIException; -import com.lyncode.xoai.dataprovider.filter.ScopedFilter; -import com.lyncode.xoai.dataprovider.handlers.results.ListItemIdentifiersResult; -import com.lyncode.xoai.dataprovider.handlers.results.ListItemsResults; -import com.lyncode.xoai.dataprovider.model.Item; -import com.lyncode.xoai.dataprovider.model.ItemIdentifier; -import com.lyncode.xoai.dataprovider.model.Set; -import com.lyncode.xoai.dataprovider.repository.ItemRepository; +import io.gdcc.xoai.dataprovider.exceptions.IdDoesNotExistException; +import io.gdcc.xoai.dataprovider.exceptions.OAIException; +import io.gdcc.xoai.dataprovider.filter.ScopedFilter; +import io.gdcc.xoai.dataprovider.handlers.results.ListItemIdentifiersResult; +import io.gdcc.xoai.dataprovider.handlers.results.ListItemsResults; +import io.gdcc.xoai.dataprovider.model.Item; +import io.gdcc.xoai.dataprovider.model.ItemIdentifier; +import io.gdcc.xoai.dataprovider.model.Set; +import io.gdcc.xoai.dataprovider.model.MetadataFormat; +import io.gdcc.xoai.dataprovider.repository.ItemRepository; import edu.harvard.iq.dataverse.Dataset; import edu.harvard.iq.dataverse.DatasetServiceBean; +import edu.harvard.iq.dataverse.export.ExportException; +import edu.harvard.iq.dataverse.export.ExportService; import edu.harvard.iq.dataverse.harvest.server.OAIRecord; import edu.harvard.iq.dataverse.harvest.server.OAIRecordServiceBean; import edu.harvard.iq.dataverse.util.StringUtil; +import io.gdcc.xoai.model.oaipmh.Metadata; +import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; -import java.util.Date; +import java.time.Instant; import java.util.List; import java.util.logging.Logger; @@ -32,33 +38,64 @@ * XOAI "items". */ -public class XitemRepository implements ItemRepository { +public class DataverseXoaiItemRepository implements ItemRepository { private static Logger logger = Logger.getLogger("edu.harvard.iq.dataverse.harvest.server.xoai.XitemRepository"); private OAIRecordServiceBean recordService; private DatasetServiceBean datasetService; - public XitemRepository (OAIRecordServiceBean recordService, DatasetServiceBean datasetService) { + public DataverseXoaiItemRepository (OAIRecordServiceBean recordService, DatasetServiceBean datasetService) { super(); this.recordService = recordService; this.datasetService = datasetService; } - private List list = new ArrayList(); + private List list = new ArrayList(); @Override public Item getItem(String identifier) throws IdDoesNotExistException, OAIException { + // I'm assuming we don't want to use this version of getItem + // that does not specify the requested metadata format - ? + throw new OAIException("Metadata Format is Required"); + } + + @Override + public Item getItem(String identifier, MetadataFormat metadataFormat) throws IdDoesNotExistException, OAIException { logger.fine("getItem; calling findOaiRecordsByGlobalId, identifier " + identifier); + + if (metadataFormat == null) { + throw new OAIException("Metadata Format is Required"); + } + List oaiRecords = recordService.findOaiRecordsByGlobalId(identifier); if (oaiRecords != null && !oaiRecords.isEmpty()) { - Xitem xoaiItem = null; + DataverseXoaiItem xoaiItem = null; for (OAIRecord record : oaiRecords) { if (xoaiItem == null) { Dataset dataset = datasetService.findByGlobalId(record.getGlobalId()); - if (dataset != null) { - xoaiItem = new Xitem(record).withDataset(dataset); + if (dataset == null) { + // This should not happen - but if there are no longer datasets + // associated with this persistent identifier, we should simply + // bail out. + break; + } + + InputStream pregeneratedMetadataStream; + try { + pregeneratedMetadataStream = ExportService.getInstance().getExport(dataset, metadataFormat.getPrefix()); + } catch (ExportException|IOException ex) { + // Again, this is not supposed to happen in normal operations; + // since by design only the datasets for which the metadata + // records have been pre-generated ("exported") should be + // served as "OAI Record". But, things happen. If for one + // reason or another that cached metadata file is no longer there, + // we are not going to serve this record. + break; } + + Metadata metadata = Metadata.copyFromStream(pregeneratedMetadataStream); + xoaiItem = new DataverseXoaiItem(record).withDataset(dataset).withMetadata(metadata); } else { // Adding extra set specs to the XOAI Item, if this record // is part of multiple sets: @@ -81,17 +118,17 @@ public ListItemIdentifiersResult getItemIdentifiers(List filters, } @Override - public ListItemIdentifiersResult getItemIdentifiers(List filters, int offset, int length, Date from) throws OAIException { + public ListItemIdentifiersResult getItemIdentifiers(List filters, int offset, int length, Instant from) throws OAIException { return getItemIdentifiers(filters, offset, length, null, from, null); } @Override - public ListItemIdentifiersResult getItemIdentifiersUntil(List filters, int offset, int length, Date until) throws OAIException { + public ListItemIdentifiersResult getItemIdentifiersUntil(List filters, int offset, int length, Instant until) throws OAIException { return getItemIdentifiers(filters, offset, length, null, null, until); } @Override - public ListItemIdentifiersResult getItemIdentifiers(List filters, int offset, int length, Date from, Date until) throws OAIException { + public ListItemIdentifiersResult getItemIdentifiers(List filters, int offset, int length, Instant from, Instant until) throws OAIException { return getItemIdentifiers(filters, offset, length, null, from, until); } @@ -101,17 +138,17 @@ public ListItemIdentifiersResult getItemIdentifiers(List filters, } @Override - public ListItemIdentifiersResult getItemIdentifiers(List filters, int offset, int length, String setSpec, Date from) throws OAIException { + public ListItemIdentifiersResult getItemIdentifiers(List filters, int offset, int length, String setSpec, Instant from) throws OAIException { return getItemIdentifiers(filters, offset, length, setSpec, from, null); } @Override - public ListItemIdentifiersResult getItemIdentifiersUntil(List filters, int offset, int length, String setSpec, Date until) throws OAIException { + public ListItemIdentifiersResult getItemIdentifiersUntil(List filters, int offset, int length, String setSpec, Instant until) throws OAIException { return getItemIdentifiers(filters, offset, length, setSpec, null, until); } @Override - public ListItemIdentifiersResult getItemIdentifiers(List filters, int offset, int length, String setSpec, Date from, Date until) throws OAIException { + public ListItemIdentifiersResult getItemIdentifiers(List filters, int offset, int length, String setSpec, Instant from, Instant until) throws OAIException { logger.fine("calling getItemIdentifiers; offset=" + offset + ", length=" + length + ", setSpec=" + setSpec @@ -120,14 +157,14 @@ public ListItemIdentifiersResult getItemIdentifiers(List filters, List oaiRecords = recordService.findOaiRecordsBySetName(setSpec, from, until); - logger.fine("total " + oaiRecords.size() + " returned"); + //logger.fine("total " + oaiRecords.size() + " returned"); List xoaiItems = new ArrayList<>(); if (oaiRecords != null && !oaiRecords.isEmpty()) { for (int i = offset; i < offset + length && i < oaiRecords.size(); i++) { OAIRecord record = oaiRecords.get(i); - xoaiItems.add(new Xitem(record)); + xoaiItems.add(new DataverseXoaiItem(record)); } // Run a second pass, looking for records in this set that occur @@ -150,17 +187,17 @@ public ListItemsResults getItems(List filters, int offset, int len } @Override - public ListItemsResults getItems(List filters, int offset, int length, Date from) throws OAIException { + public ListItemsResults getItems(List filters, int offset, int length, Instant from) throws OAIException { return getItems(filters, offset, length, null, from, null); } @Override - public ListItemsResults getItemsUntil(List filters, int offset, int length, Date until) throws OAIException { + public ListItemsResults getItemsUntil(List filters, int offset, int length, Instant until) throws OAIException { return getItems(filters, offset, length, null, null, until); } @Override - public ListItemsResults getItems(List filters, int offset, int length, Date from, Date until) throws OAIException { + public ListItemsResults getItems(List filters, int offset, int length, Instant from, Instant until) throws OAIException { return getItems(filters, offset, length, null, from, until); } @@ -170,17 +207,17 @@ public ListItemsResults getItems(List filters, int offset, int len } @Override - public ListItemsResults getItems(List filters, int offset, int length, String setSpec, Date from) throws OAIException { + public ListItemsResults getItems(List filters, int offset, int length, String setSpec, Instant from) throws OAIException { return getItems(filters, offset, length, setSpec, from, null); } @Override - public ListItemsResults getItemsUntil(List filters, int offset, int length, String setSpec, Date until) throws OAIException { + public ListItemsResults getItemsUntil(List filters, int offset, int length, String setSpec, Instant until) throws OAIException { return getItems(filters, offset, length, setSpec, null, until); } @Override - public ListItemsResults getItems(List filters, int offset, int length, String setSpec, Date from, Date until) throws OAIException { + public ListItemsResults getItems(List filters, int offset, int length, String setSpec, Instant from, Instant until) throws OAIException { logger.fine("calling getItems; offset=" + offset + ", length=" + length + ", setSpec=" + setSpec @@ -198,7 +235,33 @@ public ListItemsResults getItems(List filters, int offset, int len OAIRecord oaiRecord = oaiRecords.get(i); Dataset dataset = datasetService.findByGlobalId(oaiRecord.getGlobalId()); if (dataset != null) { - Xitem xItem = new Xitem(oaiRecord).withDataset(dataset); + // TODO: What if it is null? - i.e., what if the dataset with this + // global id no longer exists? We cannot serve it as an OAI Item; + // but skipping it, like we are doing now, is going to mess up + // the offsets and counts, if there is a Resumption Token + // involved! -- L.A. + + // TODO: we need to know the MetadataFormat requested, in + // order to look up the pre-generated metadata stream + // and create a CopyElement Metadata object out of it! + // (cheating/defaulting to dc for testing purposes, for now) + MetadataFormat metadataFormat = MetadataFormat.metadataFormat("oai_dc"); + + InputStream pregeneratedMetadataStream; + try { + pregeneratedMetadataStream = ExportService.getInstance().getExport(dataset, metadataFormat.getPrefix()); + } catch (ExportException|IOException ex) { + // Again, this is not supposed to happen in normal operations; + // since by design only the datasets for which the metadata + // records have been pre-generated ("exported") should be + // served as "OAI Record". But, things happen. If for one + // reason or another that cached metadata file is no longer there, + // we are not going to serve this record. + continue; + } + + Metadata metadata = Metadata.copyFromStream(pregeneratedMetadataStream); + DataverseXoaiItem xItem = new DataverseXoaiItem(oaiRecord).withDataset(dataset).withMetadata(metadata); xoaiItems.add(xItem); } } @@ -214,9 +277,9 @@ public ListItemsResults getItems(List filters, int offset, int len return new ListItemsResults(false, xoaiItems); } - private void addExtraSets(Object xoaiItemsList, String setSpec, Date from, Date until) { + private void addExtraSets(Object xoaiItemsList, String setSpec, Instant from, Instant until) { - List xoaiItems = (List)xoaiItemsList; + List xoaiItems = (List)xoaiItemsList; List oaiRecords = recordService.findOaiRecordsNotInThisSet(setSpec, from, until); @@ -232,7 +295,7 @@ private void addExtraSets(Object xoaiItemsList, String setSpec, Date from, Date // fast-forward the second list, until we find a record with this identifier, // or until we are past this record (both lists are sorted alphabetically by // the identifier: - Xitem xitem = xoaiItems.get(i); + DataverseXoaiItem xitem = xoaiItems.get(i); while (j < oaiRecords.size() && xitem.getIdentifier().compareTo(oaiRecords.get(j).getGlobalId()) > 0) { j++; diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XsetRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java similarity index 78% rename from src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XsetRepository.java rename to src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java index 8e58e1bbf9a..3b2b3f3708b 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XsetRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java @@ -5,11 +5,11 @@ */ package edu.harvard.iq.dataverse.harvest.server.xoai; -import com.lyncode.xoai.model.xoai.Element; -import com.lyncode.xoai.dataprovider.repository.SetRepository; -import com.lyncode.xoai.dataprovider.handlers.results.ListSetsResult; -import com.lyncode.xoai.dataprovider.model.Set; -import com.lyncode.xoai.model.xoai.XOAIMetadata; +import io.gdcc.xoai.model.xoai.Element; +import io.gdcc.xoai.dataprovider.repository.SetRepository; +import io.gdcc.xoai.dataprovider.handlers.results.ListSetsResult; +import io.gdcc.xoai.dataprovider.model.Set; +import io.gdcc.xoai.model.xoai.XOAIMetadata; import edu.harvard.iq.dataverse.harvest.server.OAISet; import edu.harvard.iq.dataverse.harvest.server.OAISetServiceBean; @@ -21,12 +21,12 @@ * * @author Leonid Andreev */ -public class XsetRepository implements SetRepository { - private static Logger logger = Logger.getLogger("edu.harvard.iq.dataverse.harvest.server.xoai.XsetRepository"); +public class DataverseXoaiSetRepository implements SetRepository { + private static Logger logger = Logger.getLogger("edu.harvard.iq.dataverse.harvest.server.xoai.DataverseXoaiSetRepository"); private OAISetServiceBean setService; - public XsetRepository (OAISetServiceBean setService) { + public DataverseXoaiSetRepository (OAISetServiceBean setService) { super(); this.setService = setService; } @@ -62,11 +62,11 @@ public ListSetsResult retrieveSets(int offset, int length) { OAISet dataverseSet = dataverseOAISets.get(i); Set xoaiSet = new Set(dataverseSet.getSpec()); xoaiSet.withName(dataverseSet.getName()); - XOAIMetadata xMetadata = new XOAIMetadata(); + XOAIMetadata xoaiMetadata = new XOAIMetadata(); Element element = new Element("description"); element.withField("description", dataverseSet.getDescription()); - xMetadata.getElements().add(element); - xoaiSet.withDescription(xMetadata); + xoaiMetadata.getElements().add(element); + xoaiSet.withDescription(xoaiMetadata); XOAISets.add(xoaiSet); } } diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XdataProvider.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XdataProvider.java deleted file mode 100644 index 8ba8fe96bec..00000000000 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XdataProvider.java +++ /dev/null @@ -1,116 +0,0 @@ -package edu.harvard.iq.dataverse.harvest.server.xoai; - - -import com.lyncode.builder.Builder; -import com.lyncode.xoai.dataprovider.exceptions.*; -import com.lyncode.xoai.dataprovider.handlers.*; -import com.lyncode.xoai.exceptions.InvalidResumptionTokenException; -import com.lyncode.xoai.dataprovider.model.Context; -import com.lyncode.xoai.model.oaipmh.Identify; -import com.lyncode.xoai.model.oaipmh.OAIPMH; -import com.lyncode.xoai.model.oaipmh.Request; -import com.lyncode.xoai.dataprovider.parameters.OAICompiledRequest; -import com.lyncode.xoai.dataprovider.parameters.OAIRequest; -import com.lyncode.xoai.dataprovider.repository.Repository; -import com.lyncode.xoai.services.api.DateProvider; -import com.lyncode.xoai.services.impl.UTCDateProvider; -import static com.lyncode.xoai.dataprovider.parameters.OAIRequest.Parameter.*; - -import java.util.logging.Logger; - -/** - * - * @author Leonid Andreev - */ -public class XdataProvider { - private static Logger log = Logger.getLogger(XdataProvider.class.getCanonicalName()); - - public static XdataProvider dataProvider (Context context, Repository repository) { - return new XdataProvider(context, repository); - } - - private Repository repository; - private DateProvider dateProvider; - - private final IdentifyHandler identifyHandler; - private final XgetRecordHandler getRecordHandler; - private final ListSetsHandler listSetsHandler; - private final XlistRecordsHandler listRecordsHandler; - private final ListIdentifiersHandler listIdentifiersHandler; - private final ListMetadataFormatsHandler listMetadataFormatsHandler; - private final ErrorHandler errorsHandler; - - public XdataProvider (Context context, Repository repository) { - this.repository = repository; - this.dateProvider = new UTCDateProvider(); - - this.identifyHandler = new IdentifyHandler(context, repository); - this.listSetsHandler = new ListSetsHandler(context, repository); - this.listMetadataFormatsHandler = new ListMetadataFormatsHandler(context, repository); - this.listRecordsHandler = new XlistRecordsHandler(context, repository); - this.listIdentifiersHandler = new ListIdentifiersHandler(context, repository); - //this.getRecordHandler = new GetRecordHandler(context, repository); - this.getRecordHandler = new XgetRecordHandler(context, repository); - this.errorsHandler = new ErrorHandler(); - } - - public OAIPMH handle (Builder builder) throws OAIException { - return handle(builder.build()); - } - - public OAIPMH handle (OAIRequest requestParameters) throws OAIException { - log.fine("Handling OAI request"); - Request request = new Request(repository.getConfiguration().getBaseUrl()) - .withVerbType(requestParameters.get(Verb)) - .withResumptionToken(requestParameters.get(ResumptionToken)) - .withIdentifier(requestParameters.get(Identifier)) - .withMetadataPrefix(requestParameters.get(MetadataPrefix)) - .withSet(requestParameters.get(Set)) - .withFrom(requestParameters.get(From)) - .withUntil(requestParameters.get(Until)); - - OAIPMH response = new OAIPMH() - .withRequest(request) - .withResponseDate(dateProvider.now()); - try { - OAICompiledRequest parameters = compileParameters(requestParameters); - - switch (request.getVerbType()) { - case Identify: - Identify identify = identifyHandler.handle(parameters); - identify.getDescriptions().clear(); // We don't want to use the default description - response.withVerb(identify); - break; - case ListSets: - response.withVerb(listSetsHandler.handle(parameters)); - break; - case ListMetadataFormats: - response.withVerb(listMetadataFormatsHandler.handle(parameters)); - break; - case GetRecord: - response.withVerb(getRecordHandler.handle(parameters)); - break; - case ListIdentifiers: - response.withVerb(listIdentifiersHandler.handle(parameters)); - break; - case ListRecords: - response.withVerb(listRecordsHandler.handle(parameters)); - break; - } - } catch (HandlerException e) { - log.fine("HandlerException when executing "+request.getVerbType()+": " + e.getMessage()); - response.withError(errorsHandler.handle(e)); - } - - return response; - } - - private OAICompiledRequest compileParameters(OAIRequest requestParameters) throws IllegalVerbException, UnknownParameterException, BadArgumentException, DuplicateDefinitionException, BadResumptionToken { - try { - return requestParameters.compile(); - } catch (InvalidResumptionTokenException e) { - throw new BadResumptionToken("The resumption token is invalid"); - } - } - -} diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XgetRecord.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XgetRecord.java deleted file mode 100644 index d86f555d105..00000000000 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XgetRecord.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package edu.harvard.iq.dataverse.harvest.server.xoai; - -import com.lyncode.xoai.model.oaipmh.GetRecord; -import com.lyncode.xoai.model.oaipmh.Record; -import java.io.IOException; -import java.io.OutputStream; - -/** - * - * @author Leonid Andreev - * - * This is the Dataverse extension of XOAI GetRecord, - * optimized to stream individual records to the output directly - */ - -public class XgetRecord extends GetRecord { - private static final String RECORD_FIELD = "record"; - private static final String RECORD_START_ELEMENT = "<"+RECORD_FIELD+">"; - private static final String RECORD_CLOSE_ELEMENT = ""; - private static final String RESUMPTION_TOKEN_FIELD = "resumptionToken"; - private static final String EXPIRATION_DATE_ATTRIBUTE = "expirationDate"; - private static final String COMPLETE_LIST_SIZE_ATTRIBUTE = "completeListSize"; - private static final String CURSOR_ATTRIBUTE = "cursor"; - - - public XgetRecord(Xrecord record) { - super(record); - } - - public void writeToStream(OutputStream outputStream) throws IOException { - - if (this.getRecord() == null) { - throw new IOException("XgetRecord: null Record"); - } - Xrecord xrecord = (Xrecord) this.getRecord(); - - outputStream.write(RECORD_START_ELEMENT.getBytes()); - outputStream.flush(); - - xrecord.writeToStream(outputStream); - - outputStream.write(RECORD_CLOSE_ELEMENT.getBytes()); - outputStream.flush(); - - } - -} diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XgetRecordHandler.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XgetRecordHandler.java deleted file mode 100644 index ba28894482a..00000000000 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XgetRecordHandler.java +++ /dev/null @@ -1,92 +0,0 @@ -package edu.harvard.iq.dataverse.harvest.server.xoai; - -import com.lyncode.xml.exceptions.XmlWriteException; -import com.lyncode.xoai.dataprovider.exceptions.BadArgumentException; -import com.lyncode.xoai.dataprovider.exceptions.CannotDisseminateFormatException; -import com.lyncode.xoai.dataprovider.parameters.OAICompiledRequest; -import com.lyncode.xoai.dataprovider.exceptions.CannotDisseminateRecordException; -import com.lyncode.xoai.dataprovider.exceptions.HandlerException; -import com.lyncode.xoai.dataprovider.exceptions.IdDoesNotExistException; -import com.lyncode.xoai.dataprovider.exceptions.NoMetadataFormatsException; -import com.lyncode.xoai.dataprovider.exceptions.OAIException; -import com.lyncode.xoai.dataprovider.handlers.VerbHandler; -import com.lyncode.xoai.dataprovider.handlers.helpers.ItemHelper; -import com.lyncode.xoai.dataprovider.model.Context; -import com.lyncode.xoai.dataprovider.model.Item; -import com.lyncode.xoai.dataprovider.model.MetadataFormat; -import com.lyncode.xoai.dataprovider.model.Set; -import com.lyncode.xoai.model.oaipmh.*; -import com.lyncode.xoai.dataprovider.repository.Repository; -import com.lyncode.xoai.xml.XSLPipeline; -import com.lyncode.xoai.xml.XmlWriter; -import edu.harvard.iq.dataverse.Dataset; - -import javax.xml.stream.XMLStreamException; -import javax.xml.transform.TransformerException; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.logging.Logger; - -/* - * @author Leonid Andreev -*/ -public class XgetRecordHandler extends VerbHandler { - private static Logger logger = Logger.getLogger("edu.harvard.iq.dataverse.harvest.server.xoai.XgetRecordHandler"); - public XgetRecordHandler(Context context, Repository repository) { - super(context, repository); - } - - @Override - public GetRecord handle(OAICompiledRequest parameters) throws OAIException, HandlerException { - - MetadataFormat format = getContext().formatForPrefix(parameters.getMetadataPrefix()); - Item item = getRepository().getItemRepository().getItem(parameters.getIdentifier()); - - if (getContext().hasCondition() && - !getContext().getCondition().getFilter(getRepository().getFilterResolver()).isItemShown(item)) - throw new IdDoesNotExistException("This context does not include this item"); - - if (format.hasCondition() && - !format.getCondition().getFilter(getRepository().getFilterResolver()).isItemShown(item)) - throw new CannotDisseminateRecordException("Format not applicable to this item"); - - - Xrecord record = this.createRecord(parameters, item); - GetRecord result = new XgetRecord(record); - - return result; - } - - private Xrecord createRecord(OAICompiledRequest parameters, Item item) - throws BadArgumentException, CannotDisseminateRecordException, - OAIException, NoMetadataFormatsException, CannotDisseminateFormatException { - MetadataFormat format = getContext().formatForPrefix(parameters.getMetadataPrefix()); - Header header = new Header(); - - Dataset dataset = ((Xitem)item).getDataset(); - Xrecord xrecord = new Xrecord().withFormatName(parameters.getMetadataPrefix()).withDataset(dataset); - header.withIdentifier(item.getIdentifier()); - - ItemHelper itemHelperWrap = new ItemHelper(item); - header.withDatestamp(item.getDatestamp()); - for (Set set : itemHelperWrap.getSets(getContext(), getRepository().getFilterResolver())) - header.withSetSpec(set.getSpec()); - if (item.isDeleted()) - header.withStatus(Header.Status.DELETED); - - xrecord.withHeader(header); - xrecord.withMetadata(item.getMetadata()); - - return xrecord; - } - - private XSLPipeline toPipeline(Item item) throws XmlWriteException, XMLStreamException { - ByteArrayOutputStream output = new ByteArrayOutputStream(); - XmlWriter writer = new XmlWriter(output); - Metadata metadata = item.getMetadata(); - metadata.write(writer); - writer.close(); - return new XSLPipeline(new ByteArrayInputStream(output.toByteArray()), true); - } -} diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XlistRecords.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XlistRecords.java deleted file mode 100644 index 15bd005cacf..00000000000 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XlistRecords.java +++ /dev/null @@ -1,86 +0,0 @@ -package edu.harvard.iq.dataverse.harvest.server.xoai; - -import com.lyncode.xml.exceptions.XmlWriteException; -import static com.lyncode.xoai.model.oaipmh.Granularity.Second; -import com.lyncode.xoai.model.oaipmh.ListRecords; -import com.lyncode.xoai.model.oaipmh.Record; -import com.lyncode.xoai.model.oaipmh.ResumptionToken; -import com.lyncode.xoai.xml.XmlWriter; -import static com.lyncode.xoai.xml.XmlWriter.defaultContext; -import java.io.ByteArrayOutputStream; - -import java.io.IOException; -import java.io.OutputStream; -import javax.xml.stream.XMLStreamException; - -/** - * - * @author Leonid Andreev - * - * This is the Dataverse extension of XOAI ListRecords, - * optimized to stream individual records using fast dumping - * of pre-exported metadata fragments (and by-passing expensive - * XML parsing and writing). - */ -public class XlistRecords extends ListRecords { - private static final String RECORD_FIELD = "record"; - private static final String RECORD_START_ELEMENT = "<"+RECORD_FIELD+">"; - private static final String RECORD_CLOSE_ELEMENT = ""; - private static final String RESUMPTION_TOKEN_FIELD = "resumptionToken"; - private static final String EXPIRATION_DATE_ATTRIBUTE = "expirationDate"; - private static final String COMPLETE_LIST_SIZE_ATTRIBUTE = "completeListSize"; - private static final String CURSOR_ATTRIBUTE = "cursor"; - - public void writeToStream(OutputStream outputStream) throws IOException { - if (!this.records.isEmpty()) { - for (Record record : this.records) { - outputStream.write(RECORD_START_ELEMENT.getBytes()); - outputStream.flush(); - - ((Xrecord)record).writeToStream(outputStream); - - outputStream.write(RECORD_CLOSE_ELEMENT.getBytes()); - outputStream.flush(); - } - } - - if (resumptionToken != null) { - - String resumptionTokenString = resumptionTokenToString(resumptionToken); - if (resumptionTokenString == null) { - throw new IOException("XlistRecords: failed to output resumption token"); - } - outputStream.write(resumptionTokenString.getBytes()); - outputStream.flush(); - } - } - - private String resumptionTokenToString(ResumptionToken token) { - try { - ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream(); - XmlWriter writer = new XmlWriter(byteOutputStream, defaultContext()); - - writer.writeStartElement(RESUMPTION_TOKEN_FIELD); - - if (token.getExpirationDate() != null) - writer.writeAttribute(EXPIRATION_DATE_ATTRIBUTE, token.getExpirationDate(), Second); - if (token.getCompleteListSize() != null) - writer.writeAttribute(COMPLETE_LIST_SIZE_ATTRIBUTE, "" + token.getCompleteListSize()); - if (token.getCursor() != null) - writer.writeAttribute(CURSOR_ATTRIBUTE, "" + token.getCursor()); - if (token.getValue() != null) - writer.write(token.getValue()); - - writer.writeEndElement(); // resumptionToken; - writer.flush(); - writer.close(); - - String ret = byteOutputStream.toString(); - - return ret; - } catch (XMLStreamException | XmlWriteException e) { - return null; - } - } - -} diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XlistRecordsHandler.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XlistRecordsHandler.java deleted file mode 100644 index 8fe13bc4044..00000000000 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XlistRecordsHandler.java +++ /dev/null @@ -1,168 +0,0 @@ -package edu.harvard.iq.dataverse.harvest.server.xoai; - -import com.lyncode.xml.exceptions.XmlWriteException; -import com.lyncode.xoai.dataprovider.exceptions.BadArgumentException; -import com.lyncode.xoai.dataprovider.exceptions.CannotDisseminateFormatException; -import com.lyncode.xoai.dataprovider.exceptions.CannotDisseminateRecordException; -import com.lyncode.xoai.dataprovider.exceptions.DoesNotSupportSetsException; -import com.lyncode.xoai.dataprovider.exceptions.HandlerException; -import com.lyncode.xoai.dataprovider.exceptions.NoMatchesException; -import com.lyncode.xoai.dataprovider.exceptions.NoMetadataFormatsException; -import com.lyncode.xoai.dataprovider.exceptions.OAIException; -import com.lyncode.xoai.dataprovider.handlers.VerbHandler; -import com.lyncode.xoai.dataprovider.handlers.results.ListItemsResults; -import com.lyncode.xoai.dataprovider.handlers.helpers.ItemHelper; -import com.lyncode.xoai.dataprovider.handlers.helpers.ItemRepositoryHelper; -import com.lyncode.xoai.dataprovider.handlers.helpers.SetRepositoryHelper; -import com.lyncode.xoai.dataprovider.model.Context; -import com.lyncode.xoai.dataprovider.model.Item; -import com.lyncode.xoai.dataprovider.model.MetadataFormat; -import com.lyncode.xoai.dataprovider.model.Set; -import com.lyncode.xoai.dataprovider.parameters.OAICompiledRequest; -import com.lyncode.xoai.dataprovider.repository.Repository; -import com.lyncode.xoai.model.oaipmh.Header; -import com.lyncode.xoai.model.oaipmh.ListRecords; -import com.lyncode.xoai.model.oaipmh.Metadata; -import com.lyncode.xoai.model.oaipmh.Record; -import com.lyncode.xoai.model.oaipmh.ResumptionToken; -import com.lyncode.xoai.xml.XSLPipeline; -import com.lyncode.xoai.xml.XmlWriter; -import edu.harvard.iq.dataverse.Dataset; - -import javax.xml.stream.XMLStreamException; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.util.List; - -/** - * - * @author Leonid Andreev - * - * This is Dataverse's own implementation of ListRecords Verb Handler - * (used instead of the ListRecordsHandler provided by XOAI). - * It is customized to support the optimizations that allows - * Dataverse to directly output pre-exported metadata records to the output - * stream, bypassing expensive XML parsing and writing. - */ -public class XlistRecordsHandler extends VerbHandler { - private static java.util.logging.Logger logger = java.util.logging.Logger.getLogger("XlistRecordsHandler"); - private final ItemRepositoryHelper itemRepositoryHelper; - private final SetRepositoryHelper setRepositoryHelper; - - public XlistRecordsHandler(Context context, Repository repository) { - super(context, repository); - this.itemRepositoryHelper = new ItemRepositoryHelper(getRepository().getItemRepository()); - this.setRepositoryHelper = new SetRepositoryHelper(getRepository().getSetRepository()); - } - - @Override - public ListRecords handle(OAICompiledRequest parameters) throws OAIException, HandlerException { - XlistRecords res = new XlistRecords(); - int length = getRepository().getConfiguration().getMaxListRecords(); - - if (parameters.hasSet() && !getRepository().getSetRepository().supportSets()) - throw new DoesNotSupportSetsException(); - - int offset = getOffset(parameters); - ListItemsResults result; - if (!parameters.hasSet()) { - if (parameters.hasFrom() && !parameters.hasUntil()) - result = itemRepositoryHelper.getItems(getContext(), offset, - length, parameters.getMetadataPrefix(), - parameters.getFrom()); - else if (!parameters.hasFrom() && parameters.hasUntil()) - result = itemRepositoryHelper.getItemsUntil(getContext(), offset, - length, parameters.getMetadataPrefix(), - parameters.getUntil()); - else if (parameters.hasFrom() && parameters.hasUntil()) - result = itemRepositoryHelper.getItems(getContext(), offset, - length, parameters.getMetadataPrefix(), - parameters.getFrom(), parameters.getUntil()); - else - result = itemRepositoryHelper.getItems(getContext(), offset, - length, parameters.getMetadataPrefix()); - } else { - if (!setRepositoryHelper.exists(getContext(), parameters.getSet())) { - // throw new NoMatchesException(); - } - if (parameters.hasFrom() && !parameters.hasUntil()) - result = itemRepositoryHelper.getItems(getContext(), offset, - length, parameters.getMetadataPrefix(), - parameters.getSet(), parameters.getFrom()); - else if (!parameters.hasFrom() && parameters.hasUntil()) - result = itemRepositoryHelper.getItemsUntil(getContext(), offset, - length, parameters.getMetadataPrefix(), - parameters.getSet(), parameters.getUntil()); - else if (parameters.hasFrom() && parameters.hasUntil()) - result = itemRepositoryHelper.getItems(getContext(), offset, - length, parameters.getMetadataPrefix(), - parameters.getSet(), parameters.getFrom(), - parameters.getUntil()); - else - result = itemRepositoryHelper.getItems(getContext(), offset, - length, parameters.getMetadataPrefix(), - parameters.getSet()); - } - - List results = result.getResults(); - if (results.isEmpty()) throw new NoMatchesException(); - for (Item i : results) - res.withRecord(this.createRecord(parameters, i)); - - - ResumptionToken.Value currentResumptionToken = new ResumptionToken.Value(); - if (parameters.hasResumptionToken()) { - currentResumptionToken = parameters.getResumptionToken(); - } else if (result.hasMore()) { - currentResumptionToken = parameters.extractResumptionToken(); - } - - XresumptionTokenHelper resumptionTokenHelper = new XresumptionTokenHelper(currentResumptionToken, - getRepository().getConfiguration().getMaxListRecords()); - res.withResumptionToken(resumptionTokenHelper.resolve(result.hasMore())); - - return res; - } - - - private int getOffset(OAICompiledRequest parameters) { - if (!parameters.hasResumptionToken()) - return 0; - if (parameters.getResumptionToken().getOffset() == null) - return 0; - return parameters.getResumptionToken().getOffset().intValue(); - } - - private Record createRecord(OAICompiledRequest parameters, Item item) - throws BadArgumentException, CannotDisseminateRecordException, - OAIException, NoMetadataFormatsException, CannotDisseminateFormatException { - MetadataFormat format = getContext().formatForPrefix(parameters.getMetadataPrefix()); - Header header = new Header(); - - Dataset dataset = ((Xitem)item).getDataset(); - Xrecord xrecord = new Xrecord().withFormatName(parameters.getMetadataPrefix()).withDataset(dataset); - header.withIdentifier(item.getIdentifier()); - - ItemHelper itemHelperWrap = new ItemHelper(item); - header.withDatestamp(item.getDatestamp()); - for (Set set : itemHelperWrap.getSets(getContext(), getRepository().getFilterResolver())) - header.withSetSpec(set.getSpec()); - if (item.isDeleted()) - header.withStatus(Header.Status.DELETED); - - xrecord.withHeader(header); - xrecord.withMetadata(item.getMetadata()); - - return xrecord; - } - - - private XSLPipeline toPipeline(Item item) throws XmlWriteException, XMLStreamException { - ByteArrayOutputStream output = new ByteArrayOutputStream(); - XmlWriter writer = new XmlWriter(output); - Metadata metadata = item.getMetadata(); - metadata.write(writer); - writer.close(); - return new XSLPipeline(new ByteArrayInputStream(output.toByteArray()), true); - } -} diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/Xmetadata.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/Xmetadata.java deleted file mode 100644 index 225b9b13777..00000000000 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/Xmetadata.java +++ /dev/null @@ -1,27 +0,0 @@ - -package edu.harvard.iq.dataverse.harvest.server.xoai; - -import com.lyncode.xml.exceptions.XmlWriteException; -import com.lyncode.xoai.model.oaipmh.Metadata; -import com.lyncode.xoai.xml.XmlWriter; - -/** - * - * @author Leonid Andreev - */ -public class Xmetadata extends Metadata { - - - public Xmetadata(String value) { - super(value); - } - - - @Override - public void write(XmlWriter writer) throws XmlWriteException { - // Do nothing! - // - rather than writing Metadata as an XML writer stram, we will write - // the pre-exported *and pre-validated* content as a byte stream, directly. - } - -} diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/Xrecord.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/Xrecord.java deleted file mode 100644 index 7e115c78f06..00000000000 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/Xrecord.java +++ /dev/null @@ -1,184 +0,0 @@ -package edu.harvard.iq.dataverse.harvest.server.xoai; - -import com.lyncode.xoai.model.oaipmh.Header; -import com.lyncode.xoai.model.oaipmh.Record; -import com.lyncode.xoai.xml.XmlWriter; -import static com.lyncode.xoai.xml.XmlWriter.defaultContext; - -import edu.harvard.iq.dataverse.Dataset; -import edu.harvard.iq.dataverse.export.ExportException; -import edu.harvard.iq.dataverse.export.ExportService; -import static edu.harvard.iq.dataverse.util.SystemConfig.FQDN; -import static edu.harvard.iq.dataverse.util.SystemConfig.SITE_URL; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.InetAddress; -import java.net.UnknownHostException; -import org.apache.poi.util.ReplacingInputStream; - -/** - * - * @author Leonid Andreev - * - * This is the Dataverse extension of XOAI Record, - * optimized to directly output a pre-exported metadata record to the - * output stream, thus by-passing expensive parsing and writing by - * an XML writer, as in the original XOAI implementation. - */ - -public class Xrecord extends Record { - private static final String METADATA_FIELD = "metadata"; - private static final String METADATA_START_ELEMENT = "<"+METADATA_FIELD+">"; - private static final String METADATA_END_ELEMENT = ""; - private static final String HEADER_FIELD = "header"; - private static final String STATUS_ATTRIBUTE = "status"; - private static final String IDENTIFIER_FIELD = "identifier"; - private static final String DATESTAMP_FIELD = "datestamp"; - private static final String SETSPEC_FIELD = "setSpec"; - private static final String DATAVERSE_EXTENDED_METADATA_FORMAT = "dataverse_json"; - private static final String DATAVERSE_EXTENDED_METADATA_API = "/api/datasets/export"; - - protected Dataset dataset; - protected String formatName; - - - public Dataset getDataset() { - return dataset; - } - - public Xrecord withDataset(Dataset dataset) { - this.dataset = dataset; - return this; - } - - - public String getFormatName() { - return formatName; - } - - - public Xrecord withFormatName(String formatName) { - this.formatName = formatName; - return this; - } - - public void writeToStream(OutputStream outputStream) throws IOException { - outputStream.flush(); - - String headerString = itemHeaderToString(this.header); - - if (headerString == null) { - throw new IOException("Xrecord: failed to stream item header."); - } - - outputStream.write(headerString.getBytes()); - - // header.getStatus() is only non-null when it's indicating "deleted". - if (header.getStatus() == null) { // Deleted records should not show metadata - if (!isExtendedDataverseMetadataMode(formatName)) { - outputStream.write(METADATA_START_ELEMENT.getBytes()); - - outputStream.flush(); - - if (dataset != null && formatName != null) { - InputStream inputStream = null; - try { - inputStream = new ReplacingInputStream( - ExportService.getInstance().getExport(dataset, formatName), - "", - "" - ); - } catch (ExportException ex) { - inputStream = null; - } - - if (inputStream == null) { - throw new IOException("Xrecord: failed to open metadata stream."); - } - writeMetadataStream(inputStream, outputStream); - } - outputStream.write(METADATA_END_ELEMENT.getBytes()); - } else { - outputStream.write(customMetadataExtensionRef(this.dataset.getGlobalIdString()).getBytes()); - } - } - outputStream.flush(); - } - - private String itemHeaderToString(Header header) { - try { - ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream(); - XmlWriter writer = new XmlWriter(byteOutputStream, defaultContext()); - - writer.writeStartElement(HEADER_FIELD); - - if (header.getStatus() != null) { - writer.writeAttribute(STATUS_ATTRIBUTE, header.getStatus().value()); - } - writer.writeElement(IDENTIFIER_FIELD, header.getIdentifier()); - writer.writeElement(DATESTAMP_FIELD, header.getDatestamp()); - for (String setSpec : header.getSetSpecs()) { - writer.writeElement(SETSPEC_FIELD, setSpec); - } - writer.writeEndElement(); // header - writer.flush(); - writer.close(); - - String ret = byteOutputStream.toString(); - - return ret; - } catch (Exception ex) { - return null; - } - } - - private void writeMetadataStream(InputStream inputStream, OutputStream outputStream) throws IOException { - int bufsize; - byte[] buffer = new byte[4 * 8192]; - - while ((bufsize = inputStream.read(buffer)) != -1) { - outputStream.write(buffer, 0, bufsize); - outputStream.flush(); - } - - inputStream.close(); - } - - private String customMetadataExtensionRef(String identifier) { - String ret = "<" + METADATA_FIELD - + " directApiCall=\"" - + getDataverseSiteUrl() - + DATAVERSE_EXTENDED_METADATA_API - + "?exporter=" - + DATAVERSE_EXTENDED_METADATA_FORMAT - + "&persistentId=" - + identifier - + "\"" - + "/>"; - - return ret; - } - - private boolean isExtendedDataverseMetadataMode(String formatName) { - return DATAVERSE_EXTENDED_METADATA_FORMAT.equals(formatName); - } - - private String getDataverseSiteUrl() { - String hostUrl = System.getProperty(SITE_URL); - if (hostUrl != null && !"".equals(hostUrl)) { - return hostUrl; - } - String hostName = System.getProperty(FQDN); - if (hostName == null) { - try { - hostName = InetAddress.getLocalHost().getCanonicalHostName(); - } catch (UnknownHostException e) { - return null; - } - } - hostUrl = "https://" + hostName; - return hostUrl; - } -} diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XresumptionTokenHelper.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XresumptionTokenHelper.java deleted file mode 100644 index 7f9eac2cbe8..00000000000 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/XresumptionTokenHelper.java +++ /dev/null @@ -1,61 +0,0 @@ - -package edu.harvard.iq.dataverse.harvest.server.xoai; - -import com.lyncode.xoai.dataprovider.handlers.helpers.ResumptionTokenHelper; -import com.lyncode.xoai.model.oaipmh.ResumptionToken; -import static java.lang.Math.round; -import static com.google.common.base.Predicates.isNull; - -/** - * - * @author Leonid Andreev - * Dataverse's own version of the XOAI ResumptionTokenHelper - * Fixes the issue with the offset cursor: the OAI validation spec - * insists that it starts with 0, while the XOAI implementation uses 1 - * as the initial offset. - */ -public class XresumptionTokenHelper { - - private ResumptionToken.Value current; - private long maxPerPage; - private Long totalResults; - - public XresumptionTokenHelper(ResumptionToken.Value current, long maxPerPage) { - this.current = current; - this.maxPerPage = maxPerPage; - } - - public XresumptionTokenHelper withTotalResults(long totalResults) { - this.totalResults = totalResults; - return this; - } - - public ResumptionToken resolve (boolean hasMoreResults) { - if (isInitialOffset() && !hasMoreResults) return null; - else { - if (hasMoreResults) { - ResumptionToken.Value next = current.next(maxPerPage); - return populate(new ResumptionToken(next)); - } else { - ResumptionToken resumptionToken = new ResumptionToken(); - resumptionToken.withCursor(round((current.getOffset()) / maxPerPage)); - if (totalResults != null) - resumptionToken.withCompleteListSize(totalResults); - return resumptionToken; - } - } - } - - private boolean isInitialOffset() { - return isNull().apply(current.getOffset()) || current.getOffset() == 0; - } - - private ResumptionToken populate(ResumptionToken resumptionToken) { - if (totalResults != null) - resumptionToken.withCompleteListSize(totalResults); - resumptionToken.withCursor(round((resumptionToken.getValue().getOffset() - maxPerPage)/ maxPerPage)); - return resumptionToken; - } - - -} From 7cc0a44300a389abf0492936e3d7e949a7fde588 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Mon, 23 May 2022 09:04:51 -0400 Subject: [PATCH 02/93] adding a quick todo: (#8372) --- .../harvest/server/xoai/DataverseXoaiItemRepository.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index 58d19f40d2d..49c2a190132 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -78,6 +78,9 @@ public Item getItem(String identifier, MetadataFormat metadataFormat) throws IdD // This should not happen - but if there are no longer datasets // associated with this persistent identifier, we should simply // bail out. + // TODO: double-check what happens/what NEEDS to happen + // when somebody tries to call GetRecord on a DELETED + // OAI Record! break; } @@ -235,11 +238,7 @@ public ListItemsResults getItems(List filters, int offset, int len OAIRecord oaiRecord = oaiRecords.get(i); Dataset dataset = datasetService.findByGlobalId(oaiRecord.getGlobalId()); if (dataset != null) { - // TODO: What if it is null? - i.e., what if the dataset with this - // global id no longer exists? We cannot serve it as an OAI Item; - // but skipping it, like we are doing now, is going to mess up - // the offsets and counts, if there is a Resumption Token - // involved! -- L.A. + // TODO: This needs to handle DELETED OAI records properly! -- L.A. // TODO: we need to know the MetadataFormat requested, in // order to look up the pre-generated metadata stream From 0f137b1e3106a68fc837abc9d012d5cfaa13d0fd Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Tue, 24 May 2022 14:21:39 -0400 Subject: [PATCH 03/93] addresses handling of deleted OAI records in the items repository implementation. (#8372) --- .../xoai/DataverseXoaiItemRepository.java | 138 +++++++++++------- 1 file changed, 89 insertions(+), 49 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index 49c2a190132..ae11279cac4 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -73,32 +73,51 @@ public Item getItem(String identifier, MetadataFormat metadataFormat) throws IdD DataverseXoaiItem xoaiItem = null; for (OAIRecord record : oaiRecords) { if (xoaiItem == null) { - Dataset dataset = datasetService.findByGlobalId(record.getGlobalId()); - if (dataset == null) { - // This should not happen - but if there are no longer datasets - // associated with this persistent identifier, we should simply - // bail out. - // TODO: double-check what happens/what NEEDS to happen - // when somebody tries to call GetRecord on a DELETED - // OAI Record! - break; - } + xoaiItem = new DataverseXoaiItem(record); - InputStream pregeneratedMetadataStream; - try { - pregeneratedMetadataStream = ExportService.getInstance().getExport(dataset, metadataFormat.getPrefix()); - } catch (ExportException|IOException ex) { - // Again, this is not supposed to happen in normal operations; - // since by design only the datasets for which the metadata - // records have been pre-generated ("exported") should be - // served as "OAI Record". But, things happen. If for one - // reason or another that cached metadata file is no longer there, - // we are not going to serve this record. - break; - } + // If this is a "deleted" OAI record - i.e., if someone + // has called GetRecord on a deleted record (??), our + // job here is done. If it's a live record, let's try to + // look up the dataset and open the pre-generated metadata + // stream. - Metadata metadata = Metadata.copyFromStream(pregeneratedMetadataStream); - xoaiItem = new DataverseXoaiItem(record).withDataset(dataset).withMetadata(metadata); + if (!record.isRemoved()) { + Dataset dataset = datasetService.findByGlobalId(record.getGlobalId()); + if (dataset == null) { + // This should not happen - but if there are no longer datasets + // associated with this persistent identifier, we should simply + // bail out. + // TODO: Consider an alternative - instead of throwing + // an IdDoesNotExist exception, mark the record as + // "deleted" and serve it to the client (?). For all practical + // purposes, this is what this record represents - it's + // still in the database as part of an OAI set; but the + // corresponding dataset no longer exists, because it + // must have been deleted. + // i.e. + // xoaiItem.getOaiRecord().setRemoved(true); + break; + } + + InputStream pregeneratedMetadataStream; + try { + pregeneratedMetadataStream = ExportService.getInstance().getExport(dataset, metadataFormat.getPrefix()); + } catch (ExportException | IOException ex) { + // Again, this is not supposed to happen in normal operations; + // since by design only the datasets for which the metadata + // records have been pre-generated ("exported") should be + // served as "OAI Record". But, things happen. If for one + // reason or another that cached metadata file is no longer there, + // we are not going to serve this record. + // TODO: see the comment above; and consider + // xoaiItem.getOaiRecord().setRemoved(true); + // instead. + break; + } + + Metadata metadata = Metadata.copyFromStream(pregeneratedMetadataStream); + xoaiItem.withDataset(dataset).withMetadata(metadata); + } } else { // Adding extra set specs to the XOAI Item, if this record // is part of multiple sets: @@ -236,33 +255,55 @@ public ListItemsResults getItems(List filters, int offset, int len for (int i = offset; i < offset + length && i < oaiRecords.size(); i++) { OAIRecord oaiRecord = oaiRecords.get(i); - Dataset dataset = datasetService.findByGlobalId(oaiRecord.getGlobalId()); - if (dataset != null) { - // TODO: This needs to handle DELETED OAI records properly! -- L.A. - - // TODO: we need to know the MetadataFormat requested, in - // order to look up the pre-generated metadata stream - // and create a CopyElement Metadata object out of it! - // (cheating/defaulting to dc for testing purposes, for now) - MetadataFormat metadataFormat = MetadataFormat.metadataFormat("oai_dc"); + + DataverseXoaiItem xoaiItem = new DataverseXoaiItem(oaiRecord); + + // This may be a "deleted" OAI record - i.e., a record kept in + // the OAI set for a dataset that's no longer in this Dataverse. + // (it serves to tell the remote client to delete it from their + // holdings too). + // If this is the case here, our job is done with this record. + // If not, if it's a live record, let's try to + // look up the dataset and open the pre-generated metadata + // stream. + + if (!oaiRecord.isRemoved()) { + Dataset dataset = datasetService.findByGlobalId(oaiRecord.getGlobalId()); + if (dataset != null) { + // TODO: we need to know the MetadataFormat requested, in + // order to look up the pre-generated metadata stream + // and create a CopyElement Metadata object out of it! + // (cheating/defaulting to dc for testing purposes, for now) + MetadataFormat metadataFormat = MetadataFormat.metadataFormat("oai_dc"); - InputStream pregeneratedMetadataStream; - try { - pregeneratedMetadataStream = ExportService.getInstance().getExport(dataset, metadataFormat.getPrefix()); - } catch (ExportException|IOException ex) { - // Again, this is not supposed to happen in normal operations; - // since by design only the datasets for which the metadata - // records have been pre-generated ("exported") should be - // served as "OAI Record". But, things happen. If for one - // reason or another that cached metadata file is no longer there, - // we are not going to serve this record. - continue; + InputStream pregeneratedMetadataStream; + try { + pregeneratedMetadataStream = ExportService.getInstance().getExport(dataset, metadataFormat.getPrefix()); + + Metadata metadata = Metadata.copyFromStream(pregeneratedMetadataStream); + xoaiItem.withDataset(dataset).withMetadata(metadata); + } catch (ExportException|IOException ex) { + // Again, this is not supposed to happen in normal operations; + // since by design only the datasets for which the metadata + // records have been pre-generated ("exported") should be + // served as "OAI Record". But, things happen. If for one + // reason or another that cached metadata file is no longer there, + // we are not going to serve any metadata for this record, + // BUT we are going to include it marked as "deleted" + // (because skipping it could potentially mess up the + // counts and offsets, in a resumption token scenario. + xoaiItem.getOaiRecord().setRemoved(true); + } + } else { + // If dataset (somehow) no longer exists (again, this is + // not supposed to happen), we will serve the record, + // marked as "deleted" and without any metadata. + // We can't just skip it, because that could mess up the + // counts and offsets, in a resumption token scenario. + xoaiItem.getOaiRecord().setRemoved(true); } - - Metadata metadata = Metadata.copyFromStream(pregeneratedMetadataStream); - DataverseXoaiItem xItem = new DataverseXoaiItem(oaiRecord).withDataset(dataset).withMetadata(metadata); - xoaiItems.add(xItem); } + xoaiItems.add(xoaiItem); } addExtraSets(xoaiItems, setSpec, from, until); @@ -305,6 +346,5 @@ private void addExtraSets(Object xoaiItemsList, String setSpec, Instant from, In j++; } } - } } From a27768e2c8a4a8e6c8f6283a21119dae2b3bcc17 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Tue, 24 May 2022 15:30:37 -0400 Subject: [PATCH 04/93] cosmetic/comments (#8372) --- .../server/web/servlet/OAIServlet.java | 10 ++-- .../xoai/DataverseXoaiItemRepository.java | 47 ++++++++++--------- 2 files changed, 31 insertions(+), 26 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java index 90b425b8e2b..4fd7c3a6a53 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java @@ -243,16 +243,16 @@ private void processRequest(HttpServletRequest request, HttpServletResponse resp OAIPMH handle = dataProvider.handle(parametersBuilder); response.setContentType("text/xml;charset=UTF-8"); - + /* if (isGetRecord(request) && !handle.hasErrors()) { writeGetRecord(response, handle); } else if (isListRecords(request) && !handle.hasErrors()) { writeListRecords(response, handle); } else { */ - XmlWriter xmlWriter = new XmlWriter(response.getOutputStream()); - xmlWriter.write(handle); - xmlWriter.flush(); - xmlWriter.close(); + XmlWriter xmlWriter = new XmlWriter(response.getOutputStream()); + xmlWriter.write(handle); + xmlWriter.flush(); + xmlWriter.close(); /* } */ } catch (IOException ex) { diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index ae11279cac4..bc1a6e4b619 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -71,26 +71,26 @@ public Item getItem(String identifier, MetadataFormat metadataFormat) throws IdD List oaiRecords = recordService.findOaiRecordsByGlobalId(identifier); if (oaiRecords != null && !oaiRecords.isEmpty()) { DataverseXoaiItem xoaiItem = null; - for (OAIRecord record : oaiRecords) { + for (OAIRecord oaiRecord : oaiRecords) { if (xoaiItem == null) { - xoaiItem = new DataverseXoaiItem(record); + xoaiItem = new DataverseXoaiItem(oaiRecord); - // If this is a "deleted" OAI record - i.e., if someone - // has called GetRecord on a deleted record (??), our - // job here is done. If it's a live record, let's try to + // If this is a "deleted" OAI oaiRecord - i.e., if someone + // has called GetRecord on a deleted oaiRecord (??), our + // job here is done. If it's a live oaiRecord, let's try to // look up the dataset and open the pre-generated metadata // stream. - if (!record.isRemoved()) { - Dataset dataset = datasetService.findByGlobalId(record.getGlobalId()); + if (!oaiRecord.isRemoved()) { + Dataset dataset = datasetService.findByGlobalId(oaiRecord.getGlobalId()); if (dataset == null) { // This should not happen - but if there are no longer datasets // associated with this persistent identifier, we should simply // bail out. // TODO: Consider an alternative - instead of throwing - // an IdDoesNotExist exception, mark the record as + // an IdDoesNotExist exception, mark the oaiRecord as // "deleted" and serve it to the client (?). For all practical - // purposes, this is what this record represents - it's + // purposes, this is what this oaiRecord represents - it's // still in the database as part of an OAI set; but the // corresponding dataset no longer exists, because it // must have been deleted. @@ -108,7 +108,7 @@ public Item getItem(String identifier, MetadataFormat metadataFormat) throws IdD // records have been pre-generated ("exported") should be // served as "OAI Record". But, things happen. If for one // reason or another that cached metadata file is no longer there, - // we are not going to serve this record. + // we are not going to serve this oaiRecord. // TODO: see the comment above; and consider // xoaiItem.getOaiRecord().setRemoved(true); // instead. @@ -119,10 +119,10 @@ public Item getItem(String identifier, MetadataFormat metadataFormat) throws IdD xoaiItem.withDataset(dataset).withMetadata(metadata); } } else { - // Adding extra set specs to the XOAI Item, if this record + // Adding extra set specs to the XOAI Item, if this oaiRecord // is part of multiple sets: - if (!StringUtil.isEmpty(record.getSetName())) { - xoaiItem.getSets().add(new Set(record.getSetName())); + if (!StringUtil.isEmpty(oaiRecord.getSetName())) { + xoaiItem.getSets().add(new Set(oaiRecord.getSetName())); } } } @@ -258,19 +258,24 @@ public ListItemsResults getItems(List filters, int offset, int len DataverseXoaiItem xoaiItem = new DataverseXoaiItem(oaiRecord); - // This may be a "deleted" OAI record - i.e., a record kept in + // This may be a "deleted" OAI oaiRecord - i.e., a oaiRecord kept in // the OAI set for a dataset that's no longer in this Dataverse. // (it serves to tell the remote client to delete it from their // holdings too). - // If this is the case here, our job is done with this record. - // If not, if it's a live record, let's try to + // If this is the case here, our job is done with this oaiRecord. + // If not, if it's a live oaiRecord, let's try to // look up the dataset and open the pre-generated metadata // stream. if (!oaiRecord.isRemoved()) { Dataset dataset = datasetService.findByGlobalId(oaiRecord.getGlobalId()); if (dataset != null) { - // TODO: we need to know the MetadataFormat requested, in + // TODO: (on the GDCC side?) + // (do we simply offer versions of each of all these methods + // with the extra MetadataFormat argument, like we did with getItem()? + // or do we define a condition/filter indicating "stream + // pre-generated" and encoding the format name?) + // we need to know the MetadataFormat requested, in // order to look up the pre-generated metadata stream // and create a CopyElement Metadata object out of it! // (cheating/defaulting to dc for testing purposes, for now) @@ -288,7 +293,7 @@ public ListItemsResults getItems(List filters, int offset, int len // records have been pre-generated ("exported") should be // served as "OAI Record". But, things happen. If for one // reason or another that cached metadata file is no longer there, - // we are not going to serve any metadata for this record, + // we are not going to serve any metadata for this oaiRecord, // BUT we are going to include it marked as "deleted" // (because skipping it could potentially mess up the // counts and offsets, in a resumption token scenario. @@ -296,7 +301,7 @@ public ListItemsResults getItems(List filters, int offset, int len } } else { // If dataset (somehow) no longer exists (again, this is - // not supposed to happen), we will serve the record, + // not supposed to happen), we will serve the oaiRecord, // marked as "deleted" and without any metadata. // We can't just skip it, because that could mess up the // counts and offsets, in a resumption token scenario. @@ -332,8 +337,8 @@ private void addExtraSets(Object xoaiItemsList, String setSpec, Instant from, In int j = 0; for (int i = 0; i < xoaiItems.size(); i++) { - // fast-forward the second list, until we find a record with this identifier, - // or until we are past this record (both lists are sorted alphabetically by + // fast-forward the second list, until we find a oaiRecord with this identifier, + // or until we are past this oaiRecord (both lists are sorted alphabetically by // the identifier: DataverseXoaiItem xitem = xoaiItems.get(i); From c29ee4000dec54d26dd92a1702a4168391d8f033 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Wed, 25 May 2022 16:42:45 -0400 Subject: [PATCH 05/93] implements passing the MetadataFormat to the ItemRepository via ScopedFilters; fixes a couple of other small things. (#8372) --- .../harvest/client/oai/OaiHandler.java | 10 ++-- .../server/web/servlet/OAIServlet.java | 5 ++ .../server/xoai/DataverseXoaiItem.java | 10 ++-- .../xoai/DataverseXoaiItemRepository.java | 54 +++++++++++++------ .../UsePregeneratedMetadataFormat.java | 43 +++++++++++++++ 5 files changed, 94 insertions(+), 28 deletions(-) create mode 100644 src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/conditions/UsePregeneratedMetadataFormat.java diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/client/oai/OaiHandler.java b/src/main/java/edu/harvard/iq/dataverse/harvest/client/oai/OaiHandler.java index 83bf6068090..e55e9726dc4 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/client/oai/OaiHandler.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/client/oai/OaiHandler.java @@ -1,8 +1,3 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package edu.harvard.iq.dataverse.harvest.client.oai; import io.gdcc.xoai.model.oaipmh.Description; @@ -204,6 +199,11 @@ public List runListMetadataFormats() throws OaiHandlerException { // TODO: // not sure why this exception is now thrown by List Metadata Formats (?) // but looks like it was added in xoai 4.2. + // It appears that the answer is, they added it because you can + // call ListMetadataFormats on a specific identifier, optionally, + // and therefore it is possible to get back that response. Of course + // it will never be the case when calling it on an entire repository. + // But it's ok. throw new OaiHandlerException("Id does not exist exception"); } catch (InvalidOAIResponse ior) { throw new OaiHandlerException("No valid response received from the OAI server."); diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java index 4fd7c3a6a53..a07e2ba220b 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java @@ -35,6 +35,7 @@ import edu.harvard.iq.dataverse.harvest.server.OAISetServiceBean; import edu.harvard.iq.dataverse.harvest.server.xoai.DataverseXoaiItemRepository; import edu.harvard.iq.dataverse.harvest.server.xoai.DataverseXoaiSetRepository; +import edu.harvard.iq.dataverse.harvest.server.xoai.conditions.UsePregeneratedMetadataFormat; import edu.harvard.iq.dataverse.settings.SettingsServiceBean; import edu.harvard.iq.dataverse.util.MailUtil; import edu.harvard.iq.dataverse.util.SystemConfig; @@ -143,6 +144,10 @@ private void addSupportedMetadataFormats(Context context) { metadataFormat = MetadataFormat.metadataFormat(formatName); metadataFormat.withNamespace(exporter.getXMLNameSpace()); metadataFormat.withSchemaLocation(exporter.getXMLSchemaLocation()); + + UsePregeneratedMetadataFormat condition = new UsePregeneratedMetadataFormat(); + condition.withMetadataFormat(metadataFormat); + metadataFormat.withCondition(condition); } catch (ExportException ex) { metadataFormat = null; } diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItem.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItem.java index db9d6612763..ecdbb8f07eb 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItem.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItem.java @@ -1,8 +1,3 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package edu.harvard.iq.dataverse.harvest.server.xoai; import io.gdcc.xoai.dataprovider.model.Item; @@ -34,6 +29,7 @@ public DataverseXoaiItem(OAIRecord oaiRecord) { if (!StringUtil.isEmpty(oaiRecord.getSetName())) { oaisets.add(new Set(oaiRecord.getSetName())); } + about = new ArrayList<>(); } private OAIRecord oaiRecord; @@ -57,9 +53,11 @@ public DataverseXoaiItem withDataset(Dataset dataset) { return this; } + private List about; + @Override public List getAbout() { - return null; + return about; } private Metadata metadata; diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index bc1a6e4b619..9a569137a43 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -1,8 +1,3 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package edu.harvard.iq.dataverse.harvest.server.xoai; import io.gdcc.xoai.dataprovider.exceptions.IdDoesNotExistException; @@ -21,7 +16,10 @@ import edu.harvard.iq.dataverse.export.ExportService; import edu.harvard.iq.dataverse.harvest.server.OAIRecord; import edu.harvard.iq.dataverse.harvest.server.OAIRecordServiceBean; +import edu.harvard.iq.dataverse.harvest.server.xoai.conditions.UsePregeneratedMetadataFormat; import edu.harvard.iq.dataverse.util.StringUtil; +import io.gdcc.xoai.dataprovider.filter.Scope; +import io.gdcc.xoai.dataprovider.model.conditions.Condition; import io.gdcc.xoai.model.oaipmh.Metadata; import java.io.IOException; import java.io.InputStream; @@ -240,15 +238,47 @@ public ListItemsResults getItemsUntil(List filters, int offset, in @Override public ListItemsResults getItems(List filters, int offset, int length, String setSpec, Instant from, Instant until) throws OAIException { - logger.fine("calling getItems; offset=" + offset + logger.info("calling getItems; offset=" + offset + ", length=" + length + ", setSpec=" + setSpec + ", from=" + from + ", until=" + until); + // TODO:?/WORKINPROGRESS: + // we need to know the MetadataFormat requested, in + // order to look up the pre-generated metadata stream + // and create a CopyElement Metadata object out of it. + // In the current implementation this is solved by encoding the + // MetadataFormat in a custom Condition, which results in it being + // passed to the getItems() method as a ScopedFilter. + // (or should we simply offer versions of all these methods, + // with the extra MetadataFormat argument, on the gdcc.xoai side, + // like it was done with getItem() above? + + MetadataFormat metadataFormat = null; + + for (ScopedFilter f : filters) { + + if (f.getScope().equals(Scope.MetadataFormat)) { + logger.fine("found metadata-scoped filter"); + Condition condition = f.getCondition(); + if (condition instanceof UsePregeneratedMetadataFormat) { + logger.fine("found pregenerated metadata condition"); + metadataFormat = ((UsePregeneratedMetadataFormat) condition).getMetadataFormat(); + break; + } + } + } + + if (metadataFormat == null) { + // we should throw a "cannot dissiminate format" (?) exception here; + // but let's do this for now: + metadataFormat = MetadataFormat.metadataFormat("oai_dc"); + } + List oaiRecords = recordService.findOaiRecordsBySetName(setSpec, from, until); - logger.fine("total " + oaiRecords.size() + " returned"); + logger.info("total " + oaiRecords.size() + " returned"); List xoaiItems = new ArrayList<>(); if (oaiRecords != null && !oaiRecords.isEmpty()) { @@ -270,16 +300,6 @@ public ListItemsResults getItems(List filters, int offset, int len if (!oaiRecord.isRemoved()) { Dataset dataset = datasetService.findByGlobalId(oaiRecord.getGlobalId()); if (dataset != null) { - // TODO: (on the GDCC side?) - // (do we simply offer versions of each of all these methods - // with the extra MetadataFormat argument, like we did with getItem()? - // or do we define a condition/filter indicating "stream - // pre-generated" and encoding the format name?) - // we need to know the MetadataFormat requested, in - // order to look up the pre-generated metadata stream - // and create a CopyElement Metadata object out of it! - // (cheating/defaulting to dc for testing purposes, for now) - MetadataFormat metadataFormat = MetadataFormat.metadataFormat("oai_dc"); InputStream pregeneratedMetadataStream; try { diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/conditions/UsePregeneratedMetadataFormat.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/conditions/UsePregeneratedMetadataFormat.java new file mode 100644 index 00000000000..bab79315030 --- /dev/null +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/conditions/UsePregeneratedMetadataFormat.java @@ -0,0 +1,43 @@ +package edu.harvard.iq.dataverse.harvest.server.xoai.conditions; + +import io.gdcc.xoai.dataprovider.filter.Filter; +import io.gdcc.xoai.dataprovider.filter.FilterResolver; +import io.gdcc.xoai.dataprovider.model.ItemIdentifier; +import io.gdcc.xoai.dataprovider.model.MetadataFormat; +import io.gdcc.xoai.dataprovider.model.conditions.Condition; + +/** + * The purpose of this Condition is to pass the MetadataFormat to the + * getItems() methods in the Dataverse ItemRepository, as part of a + * ScopedFilter. + * + * @author Leonid Andreev + */ +public class UsePregeneratedMetadataFormat implements Condition { + + public UsePregeneratedMetadataFormat() { + alwaysTrueFilter = new Filter() { + @Override + public boolean isItemShown(ItemIdentifier item) { + return true; + } + }; + } + + private final Filter alwaysTrueFilter; + + @Override + public Filter getFilter(FilterResolver filterResolver) { + return alwaysTrueFilter; + } + + private MetadataFormat metadataFormat; + + public void withMetadataFormat(MetadataFormat metadataFormat) { + this.metadataFormat = metadataFormat; + } + + public MetadataFormat getMetadataFormat() { + return metadataFormat; + } +} From e9c3ec2adeeaa79e3727bcea52cca0c47a33cd5c Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Wed, 25 May 2022 16:47:42 -0400 Subject: [PATCH 06/93] removes the commented-out old lyncode.xoai packages and reload4j from the pom file. (#8372) --- pom.xml | 48 +----------------------------------------------- 1 file changed, 1 insertion(+), 47 deletions(-) diff --git a/pom.xml b/pom.xml index b2e6b1787d9..550e60ff8b6 100644 --- a/pom.xml +++ b/pom.xml @@ -382,44 +382,7 @@ oauth2-oidc-sdk 9.9.1 - - - - - - - - - - - - + io.gdcc xoai-common @@ -435,15 +398,6 @@ xoai-service-provider ${gdcc.xoai.version} - - - - - ch.qos.reload4j - reload4j - ${reload4j.version} - runtime - com.google.auto.service From 2c2e88dbe3e84052fb39c76d2c6b71838b69b154 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Wed, 25 May 2022 17:09:01 -0400 Subject: [PATCH 07/93] Adds an "if set exists" check to the set repo. (#8372) --- .../dataverse/harvest/server/OAISetServiceBean.java | 2 +- .../server/xoai/DataverseXoaiSetRepository.java | 12 ++---------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAISetServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAISetServiceBean.java index f300f02f70c..6b28c8808a0 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAISetServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAISetServiceBean.java @@ -67,7 +67,7 @@ public OAISet find(Object pk) { return em.find(OAISet.class, pk); } - public boolean specExists(String spec) { + public boolean setExists(String spec) { boolean specExists = false; OAISet set = findBySpec(spec); diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java index 3b2b3f3708b..765bacea32d 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java @@ -1,8 +1,3 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package edu.harvard.iq.dataverse.harvest.server.xoai; import io.gdcc.xoai.model.xoai.Element; @@ -76,11 +71,8 @@ public ListSetsResult retrieveSets(int offset, int length) { @Override public boolean exists(String setSpec) { - //for (Set s : this.sets) - // if (s.getSpec().equals(setSpec)) - // return true; - - return false; + // return true; + return setService.setExists(setSpec); } } From 99454c8c6f198a35cda47b4dda4cbcf9753b5473 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Wed, 25 May 2022 17:32:08 -0400 Subject: [PATCH 08/93] Exception handling for missing MetadataFormat in getItems() (#8372) --- .../server/xoai/DataverseXoaiItemRepository.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index 9a569137a43..792ba28e893 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -238,7 +238,7 @@ public ListItemsResults getItemsUntil(List filters, int offset, in @Override public ListItemsResults getItems(List filters, int offset, int length, String setSpec, Instant from, Instant until) throws OAIException { - logger.info("calling getItems; offset=" + offset + logger.fine("calling getItems; offset=" + offset + ", length=" + length + ", setSpec=" + setSpec + ", from=" + from @@ -258,12 +258,10 @@ public ListItemsResults getItems(List filters, int offset, int len MetadataFormat metadataFormat = null; for (ScopedFilter f : filters) { - + if (f.getScope().equals(Scope.MetadataFormat)) { - logger.fine("found metadata-scoped filter"); Condition condition = f.getCondition(); if (condition instanceof UsePregeneratedMetadataFormat) { - logger.fine("found pregenerated metadata condition"); metadataFormat = ((UsePregeneratedMetadataFormat) condition).getMetadataFormat(); break; } @@ -271,14 +269,12 @@ public ListItemsResults getItems(List filters, int offset, int len } if (metadataFormat == null) { - // we should throw a "cannot dissiminate format" (?) exception here; - // but let's do this for now: - metadataFormat = MetadataFormat.metadataFormat("oai_dc"); + throw new OAIException("Metadata Format is Required"); } List oaiRecords = recordService.findOaiRecordsBySetName(setSpec, from, until); - logger.info("total " + oaiRecords.size() + " returned"); + logger.fine("total " + oaiRecords.size() + " records returned"); List xoaiItems = new ArrayList<>(); if (oaiRecords != null && !oaiRecords.isEmpty()) { From 03b1372405d4592087b6887a3577ff85b6e75ddf Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Fri, 27 May 2022 16:29:11 -0400 Subject: [PATCH 09/93] Adds back a quick fix for the "proprietary json format harvesting" workaround (to be revisited; #8372) --- .../server/web/servlet/OAIServlet.java | 17 +++++-- .../xoai/DataverseXoaiItemRepository.java | 47 ++++++++++++++----- 2 files changed, 48 insertions(+), 16 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java index a07e2ba220b..e46bc89a82c 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java @@ -104,9 +104,10 @@ public void init(ServletConfig config) throws ServletException { if (isDataverseOaiExtensionsSupported()) { xoaiContext = addDataverseJsonMetadataFormat(xoaiContext); } + addMetadataFormatConditions(xoaiContext); setRepository = new DataverseXoaiSetRepository(setService); - itemRepository = new DataverseXoaiItemRepository(recordService, datasetService); + itemRepository = new DataverseXoaiItemRepository(recordService, datasetService, systemConfig.getDataverseSiteUrl()+"/oai"); repositoryConfiguration = createRepositoryConfiguration(); @@ -145,9 +146,9 @@ private void addSupportedMetadataFormats(Context context) { metadataFormat.withNamespace(exporter.getXMLNameSpace()); metadataFormat.withSchemaLocation(exporter.getXMLSchemaLocation()); - UsePregeneratedMetadataFormat condition = new UsePregeneratedMetadataFormat(); - condition.withMetadataFormat(metadataFormat); - metadataFormat.withCondition(condition); + //UsePregeneratedMetadataFormat condition = new UsePregeneratedMetadataFormat(); + //condition.withMetadataFormat(metadataFormat); + //metadataFormat.withCondition(condition); } catch (ExportException ex) { metadataFormat = null; } @@ -167,6 +168,14 @@ private Context addDataverseJsonMetadataFormat(Context context) { return context; } + private void addMetadataFormatConditions(Context context) { + for (MetadataFormat metadataFormat : context.getMetadataFormats()) { + UsePregeneratedMetadataFormat condition = new UsePregeneratedMetadataFormat(); + condition.withMetadataFormat(metadataFormat); + metadataFormat.withCondition(condition); + } + } + private boolean isDataverseOaiExtensionsSupported() { return true; } diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index 792ba28e893..a96a1993d68 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -21,6 +21,7 @@ import io.gdcc.xoai.dataprovider.filter.Scope; import io.gdcc.xoai.dataprovider.model.conditions.Condition; import io.gdcc.xoai.model.oaipmh.Metadata; +import io.gdcc.xoai.xml.EchoElement; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; @@ -41,11 +42,13 @@ public class DataverseXoaiItemRepository implements ItemRepository { private OAIRecordServiceBean recordService; private DatasetServiceBean datasetService; + private String serverUrl; - public DataverseXoaiItemRepository (OAIRecordServiceBean recordService, DatasetServiceBean datasetService) { + public DataverseXoaiItemRepository (OAIRecordServiceBean recordService, DatasetServiceBean datasetService, String serverUrl) { super(); this.recordService = recordService; this.datasetService = datasetService; + this.serverUrl = serverUrl; } private List list = new ArrayList(); @@ -54,7 +57,8 @@ public DataverseXoaiItemRepository (OAIRecordServiceBean recordService, DatasetS @Override public Item getItem(String identifier) throws IdDoesNotExistException, OAIException { // I'm assuming we don't want to use this version of getItem - // that does not specify the requested metadata format - ? + // that does not specify the requested metadata format, ever + // in our implementation - ? throw new OAIException("Metadata Format is Required"); } @@ -96,10 +100,11 @@ public Item getItem(String identifier, MetadataFormat metadataFormat) throws IdD // xoaiItem.getOaiRecord().setRemoved(true); break; } - - InputStream pregeneratedMetadataStream; + + Metadata metadata; + try { - pregeneratedMetadataStream = ExportService.getInstance().getExport(dataset, metadataFormat.getPrefix()); + metadata = getDatasetMetadata(dataset, metadataFormat.getPrefix()); } catch (ExportException | IOException ex) { // Again, this is not supposed to happen in normal operations; // since by design only the datasets for which the metadata @@ -112,8 +117,6 @@ public Item getItem(String identifier, MetadataFormat metadataFormat) throws IdD // instead. break; } - - Metadata metadata = Metadata.copyFromStream(pregeneratedMetadataStream); xoaiItem.withDataset(dataset).withMetadata(metadata); } } else { @@ -296,12 +299,8 @@ public ListItemsResults getItems(List filters, int offset, int len if (!oaiRecord.isRemoved()) { Dataset dataset = datasetService.findByGlobalId(oaiRecord.getGlobalId()); if (dataset != null) { - - InputStream pregeneratedMetadataStream; try { - pregeneratedMetadataStream = ExportService.getInstance().getExport(dataset, metadataFormat.getPrefix()); - - Metadata metadata = Metadata.copyFromStream(pregeneratedMetadataStream); + Metadata metadata = getDatasetMetadata(dataset, metadataFormat.getPrefix()); xoaiItem.withDataset(dataset).withMetadata(metadata); } catch (ExportException|IOException ex) { // Again, this is not supposed to happen in normal operations; @@ -368,4 +367,28 @@ private void addExtraSets(Object xoaiItemsList, String setSpec, Instant from, In } } } + + private Metadata getDatasetMetadata(Dataset dataset, String metadataPrefix) throws ExportException, IOException { + Metadata metadata; + + if ("dataverse_json".equals(metadataPrefix)) { + // Slightly modified version of the old proprietary Json harvesting hack: + String apiUrl = customDataverseJsonApiUri(dataset.getGlobalId().asString()); + metadata = new Metadata(new EchoElement("")); + } else { + InputStream pregeneratedMetadataStream; + pregeneratedMetadataStream = ExportService.getInstance().getExport(dataset, metadataPrefix); + + metadata = Metadata.copyFromStream(pregeneratedMetadataStream); + } + return metadata; + } + + private String customDataverseJsonApiUri(String identifier) { + String ret = serverUrl + + "/api/datasets/export?exporter=dataverse_json&persistentId=" + + identifier; + + return ret; + } } From 6d6a49b35da3c9c6c74c10549dc50a176c10b8c1 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Thu, 2 Jun 2022 19:18:02 -0400 Subject: [PATCH 10/93] a few minor fixes here and there (#8372) --- .../server/web/servlet/OAIServlet.java | 167 +++--------------- .../xoai/DataverseXoaiItemRepository.java | 4 +- .../settings/SettingsServiceBean.java | 16 +- .../iq/dataverse/util/SystemConfig.java | 27 +++ 4 files changed, 71 insertions(+), 143 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java index e46bc89a82c..8024c0ade0b 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java @@ -18,14 +18,8 @@ import io.gdcc.xoai.model.oaipmh.DeletedRecord; import io.gdcc.xoai.model.oaipmh.Granularity; import io.gdcc.xoai.model.oaipmh.OAIPMH; -import io.gdcc.xoai.model.oaipmh.GetRecord; -import static io.gdcc.xoai.model.oaipmh.OAIPMH.NAMESPACE_URI; -import static io.gdcc.xoai.model.oaipmh.OAIPMH.SCHEMA_LOCATION; -import io.gdcc.xoai.model.oaipmh.Verb; -import io.gdcc.xoai.xml.XSISchema; import io.gdcc.xoai.xml.XmlWriter; -import static io.gdcc.xoai.xml.XmlWriter.defaultContext; import edu.harvard.iq.dataverse.DatasetServiceBean; import edu.harvard.iq.dataverse.DataverseServiceBean; import edu.harvard.iq.dataverse.export.ExportException; @@ -41,10 +35,8 @@ import edu.harvard.iq.dataverse.util.SystemConfig; import org.apache.commons.lang3.StringUtils; -import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.io.OutputStream; import java.util.Date; import java.util.HashMap; import java.util.logging.Logger; @@ -81,12 +73,15 @@ public class OAIServlet extends HttpServlet { private static final Logger logger = Logger.getLogger("edu.harvard.iq.dataverse.harvest.server.web.servlet.OAIServlet"); protected HashMap attributesMap = new HashMap(); - private static final String OAI_PMH = "OAI-PMH"; - private static final String RESPONSEDATE_FIELD = "responseDate"; - private static final String REQUEST_FIELD = "request"; + // If we are going to stick with this solution - of providing a minimalist + // xml record containing a link to the proprietary json metadata API for + // "dataverse json harvesting", we'll probably want to create minimalistic, + // but valid schemas for this format as well. + // (although the more I'm thinking about this... these records just don't seem + // needed at all) private static final String DATAVERSE_EXTENDED_METADATA_FORMAT = "dataverse_json"; - private static final String DATAVERSE_EXTENDED_METADATA_INFO = "Custom Dataverse metadata in JSON format (Dataverse4 to Dataverse4 harvesting only)"; - private static final String DATAVERSE_EXTENDED_METADATA_SCHEMA = "JSON schema pending"; + private static final String DATAVERSE_EXTENDED_METADATA_NAMESPACE = ""; + private static final String DATAVERSE_EXTENDED_METADATA_SCHEMA = ""; private Context xoaiContext; @@ -94,7 +89,7 @@ public class OAIServlet extends HttpServlet { private ItemRepository itemRepository; private RepositoryConfiguration repositoryConfiguration; private Repository xoaiRepository; - private DataProvider dataProvider; + private DataProvider dataProvider; public void init(ServletConfig config) throws ServletException { super.init(config); @@ -146,9 +141,6 @@ private void addSupportedMetadataFormats(Context context) { metadataFormat.withNamespace(exporter.getXMLNameSpace()); metadataFormat.withSchemaLocation(exporter.getXMLSchemaLocation()); - //UsePregeneratedMetadataFormat condition = new UsePregeneratedMetadataFormat(); - //condition.withMetadataFormat(metadataFormat); - //metadataFormat.withCondition(condition); } catch (ExportException ex) { metadataFormat = null; } @@ -157,12 +149,11 @@ private void addSupportedMetadataFormats(Context context) { } } } - //return context; } private Context addDataverseJsonMetadataFormat(Context context) { MetadataFormat metadataFormat = MetadataFormat.metadataFormat(DATAVERSE_EXTENDED_METADATA_FORMAT); - metadataFormat.withNamespace(DATAVERSE_EXTENDED_METADATA_INFO); + metadataFormat.withNamespace(DATAVERSE_EXTENDED_METADATA_NAMESPACE); metadataFormat.withSchemaLocation(DATAVERSE_EXTENDED_METADATA_SCHEMA); context.withMetadataFormat(metadataFormat); return context; @@ -181,25 +172,29 @@ private boolean isDataverseOaiExtensionsSupported() { } private RepositoryConfiguration createRepositoryConfiguration() { - // TODO: - // some of the settings below - such as the max list numbers - - // need to be configurable! - - String dataverseName = dataverseService.getRootDataverseName(); - String repositoryName = StringUtils.isEmpty(dataverseName) || "Root".equals(dataverseName) ? "Test Dataverse OAI Archive" : dataverseName + " Dataverse OAI Archive"; + + String repositoryName = settingsService.getValueForKey(SettingsServiceBean.Key.oaiServerRepositoryName); + if (repositoryName == null) { + String dataverseName = dataverseService.getRootDataverseName(); + repositoryName = StringUtils.isEmpty(dataverseName) || "Root".equals(dataverseName) ? "Test Dataverse OAI Archive" : dataverseName + " Dataverse OAI Archive"; + } + // The admin email address associated with this installation: + // (Note: if the setting does not exist, we are going to assume that they + // have a reason not to want to advertise their email address, so no + // email will be shown in the output of Identify. InternetAddress internetAddress = MailUtil.parseSystemAddress(settingsService.getValueForKey(SettingsServiceBean.Key.SystemEmail)); RepositoryConfiguration repositoryConfiguration = new RepositoryConfiguration() .withRepositoryName(repositoryName) .withBaseUrl(systemConfig.getDataverseSiteUrl()+"/oai") - .withCompression("gzip") // ? - .withCompression("deflate") // ? + .withCompression("gzip") + .withCompression("deflate") .withAdminEmail(internetAddress != null ? internetAddress.getAddress() : null) .withDeleteMethod(DeletedRecord.TRANSIENT) .withGranularity(Granularity.Second) - .withMaxListIdentifiers(100) - .withMaxListRecords(100) - .withMaxListSets(100) + .withMaxListIdentifiers(systemConfig.getOaiServerMaxIdentifiers()) + .withMaxListRecords(systemConfig.getOaiServerMaxRecords()) + .withMaxListSets(systemConfig.getOaiServerMaxSets()) .withEarliestDate(new Date().toInstant()); // TODO: return repositoryConfiguration; @@ -258,24 +253,15 @@ private void processRequest(HttpServletRequest request, HttpServletResponse resp OAIPMH handle = dataProvider.handle(parametersBuilder); response.setContentType("text/xml;charset=UTF-8"); - /* if (isGetRecord(request) && !handle.hasErrors()) { - writeGetRecord(response, handle); - } else if (isListRecords(request) && !handle.hasErrors()) { - writeListRecords(response, handle); - } else { */ XmlWriter xmlWriter = new XmlWriter(response.getOutputStream()); xmlWriter.write(handle); xmlWriter.flush(); xmlWriter.close(); - /* } */ } catch (IOException ex) { logger.warning("IO exception in Get; "+ex.getMessage()); throw new ServletException ("IO Exception in Get", ex); - } /* catch (OAIException oex) { - logger.warning("OAI exception in Get; "+oex.getMessage()); - throw new ServletException ("OAI Exception in Get", oex); - } */ catch (XMLStreamException xse) { + } catch (XMLStreamException xse) { logger.warning("XML Stream exception in Get; "+xse.getMessage()); throw new ServletException ("XML Stream Exception in Get", xse); } catch (XmlWriteException xwe) { @@ -288,107 +274,6 @@ private void processRequest(HttpServletRequest request, HttpServletResponse resp } - // Custom methods for the potentially expensive GetRecord and ListRecords requests: - - /* private void writeListRecords(HttpServletResponse response, OAIPMH handle) throws IOException { - OutputStream outputStream = response.getOutputStream(); - - outputStream.write(oaiPmhResponseToString(handle).getBytes()); - - Verb verb = handle.getVerb(); - - if (verb == null) { - throw new IOException("An error or a valid response must be set"); - } - - if (!verb.getType().equals(Verb.Type.ListRecords)) { - throw new IOException("writeListRecords() called on a non-ListRecords verb"); - } - - outputStream.write(("<" + verb.getType().displayName() + ">").getBytes()); - - outputStream.flush(); - - ((XlistRecords) verb).writeToStream(outputStream); - - outputStream.write(("").getBytes()); - outputStream.write(("\n").getBytes()); - - outputStream.flush(); - outputStream.close(); - - } - - private void writeGetRecord(HttpServletResponse response, OAIPMH handle) throws IOException, XmlWriteException, XMLStreamException { - OutputStream outputStream = response.getOutputStream(); - - outputStream.write(oaiPmhResponseToString(handle).getBytes()); - - Verb verb = handle.getVerb(); - - if (verb == null) { - throw new IOException("An error or a valid response must be set"); - } - - if (!verb.getType().equals(Verb.Type.GetRecord)) { - throw new IOException("writeListRecords() called on a non-GetRecord verb"); - } - - outputStream.write(("<" + verb.getType().displayName() + ">").getBytes()); - - outputStream.flush(); - - verb.writeToStream(outputStream); - - outputStream.write(("").getBytes()); - outputStream.write(("\n").getBytes()); - - outputStream.flush(); - outputStream.close(); - - } */ - - // This function produces the string representation of the top level, - // "service" record of an OAIPMH response (i.e., the header that precedes - // the actual "payload" record, such as , , - // , etc. - - private String oaiPmhResponseToString(OAIPMH handle) { - try { - ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream(); - XmlWriter writer = new XmlWriter(byteOutputStream, defaultContext()); - - writer.writeStartElement(OAI_PMH); - writer.writeDefaultNamespace(NAMESPACE_URI); - writer.writeNamespace(XSISchema.PREFIX, XSISchema.NAMESPACE_URI); - writer.writeAttribute(XSISchema.PREFIX, XSISchema.NAMESPACE_URI, "schemaLocation", - NAMESPACE_URI + " " + SCHEMA_LOCATION); - - writer.writeElement(RESPONSEDATE_FIELD, handle.getResponseDate(), Granularity.Second); - writer.writeElement(REQUEST_FIELD, handle.getRequest()); - writer.writeEndElement(); - writer.flush(); - writer.close(); - - String ret = byteOutputStream.toString().replaceFirst("", ""); - - return ret; - } catch (Exception ex) { - logger.warning("caught exception trying to convert an OAIPMH response header to string: " + ex.getMessage()); - ex.printStackTrace(); - return null; - } - } - - private boolean isGetRecord(HttpServletRequest request) { - return "GetRecord".equals(request.getParameter("verb")); - - } - - private boolean isListRecords(HttpServletRequest request) { - return "ListRecords".equals(request.getParameter("verb")); - } - protected Context getXoaiContext () { return xoaiContext; } diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index a96a1993d68..c364571296c 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -373,8 +373,10 @@ private Metadata getDatasetMetadata(Dataset dataset, String metadataPrefix) thro if ("dataverse_json".equals(metadataPrefix)) { // Slightly modified version of the old proprietary Json harvesting hack: + // (decision pending as to whether we want to provide backward compatibility + // for older Dataverse harvesting clients) String apiUrl = customDataverseJsonApiUri(dataset.getGlobalId().asString()); - metadata = new Metadata(new EchoElement("")); + metadata = new Metadata(new EchoElement("" + apiUrl + "")); } else { InputStream pregeneratedMetadataStream; pregeneratedMetadataStream = ExportService.getInstance().getExport(dataset, metadataPrefix); diff --git a/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java index 12ae777f3f8..9c40999829b 100644 --- a/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java @@ -522,7 +522,21 @@ Whether Harvesting (OAI) service is enabled * would also work) of never muted notifications that cannot be turned off by the users. AlwaysMuted setting overrides * Nevermuted setting warning is logged. */ - NeverMuted + NeverMuted, + /* + * The following values are for the OAI server, to limit the output of + * the ListIdentifiers, ListRecords and ListSets verbs to the number + * of records specified. Sensible defaults are going to be provided for + * these by SystemConfig. + */ + oaiServerMaxListIdentifiers, + oaiServerMaxListRecords, + oaiServerMaxListSets, + /* + * The OAI "repository name", shown by the OAI Identify verb, needs + * to be configurable as well. + */ + oaiServerRepositoryName ; @Override diff --git a/src/main/java/edu/harvard/iq/dataverse/util/SystemConfig.java b/src/main/java/edu/harvard/iq/dataverse/util/SystemConfig.java index bd27405fae5..64f08c5dd19 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/SystemConfig.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/SystemConfig.java @@ -1204,4 +1204,31 @@ public Map getCurationLabels() { } return labelMap; } + + public int getOaiServerMaxIdentifiers() { + return getIntSettingOrDefault(SettingsServiceBean.Key.oaiServerMaxListIdentifiers, 100); + } + + public int getOaiServerMaxSets() { + return getIntSettingOrDefault(SettingsServiceBean.Key.oaiServerMaxListSets, 100); + } + + public int getOaiServerMaxRecords() { + return getIntSettingOrDefault(SettingsServiceBean.Key.oaiServerMaxListRecords, 10); + } + + private int getIntSettingOrDefault(SettingsServiceBean.Key key, int defaultValue) { + String settingValue = settingsService.getValueForKey(key); + if (settingValue != null) { + try { + int intFromSetting = Integer.parseInt(settingValue); + if (intFromSetting > 0) { + return intFromSetting; + } + } catch (NumberFormatException ex) { + // will use the default + } + } + return defaultValue; + } } From bf413e7b937bbb7e3e52a1d4800576bdbdfc2119 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Mon, 6 Jun 2022 17:02:29 -0400 Subject: [PATCH 11/93] Moved all the handling of custom dataverse_json metadata out of OaiHandler and GetRecord parser. (#8372) --- .../harvest/client/FastGetRecord.java | 104 +--------- .../harvest/client/HarvesterServiceBean.java | 178 ++++++++---------- 2 files changed, 90 insertions(+), 192 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/client/FastGetRecord.java b/src/main/java/edu/harvard/iq/dataverse/harvest/client/FastGetRecord.java index 60abc97bccd..5b3e4df331d 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/client/FastGetRecord.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/client/FastGetRecord.java @@ -72,7 +72,6 @@ public class FastGetRecord { - private static final String DATAVERSE_EXTENDED_METADATA = "dataverse_json"; private static final String XML_METADATA_TAG = "metadata"; private static final String XML_METADATA_TAG_OPEN = "<"+XML_METADATA_TAG+">"; private static final String XML_METADATA_TAG_CLOSE = ""; @@ -222,13 +221,7 @@ public void harvestRecord(String baseURL, String identifier, String metadataPref //metadataOut.println(""); /* ? */ metadataFlag = true; - } else if (line.matches(".*<"+XML_METADATA_TAG+" [^>]*>.*")) { - if (metadataPrefix.equals(DATAVERSE_EXTENDED_METADATA)) { - oaiResponseHeader = oaiResponseHeader.concat(line); - metadataWritten = true; - metadataFlag = true; - } - } + } } //System.out.println(line); @@ -380,19 +373,12 @@ public void harvestRecord(String baseURL, String identifier, String metadataPref try { StringReader reader = new StringReader(oaiResponseHeader); xmlr = xmlInputFactory.createXMLStreamReader(reader); - processOAIheader(xmlr, metadataPrefix.equals(DATAVERSE_EXTENDED_METADATA)); + processOAIheader(xmlr); } catch (XMLStreamException ex) { - //Logger.getLogger("global").log(Level.SEVERE, null, ex); if (this.errorMessage == null) { this.errorMessage = "Malformed GetRecord response; baseURL=" + baseURL + ", identifier=" + identifier + ", metadataPrefix=" + metadataPrefix; } - - // delete the temp metadata file; we won't need it: - if (savedMetadataFile != null) { - //savedMetadataFile.delete(); - } - } try { @@ -414,14 +400,8 @@ public void harvestRecord(String baseURL, String identifier, String metadataPref if (!(metadataWritten) && !(this.isDeleted())) { this.errorMessage = "Failed to parse GetRecord response; baseURL=" + baseURL + ", identifier=" + identifier + ", metadataPrefix=" + metadataPrefix; - //savedMetadataFile.delete(); - } - - if (this.isDeleted()) { - //savedMetadataFile.delete(); } - } else { this.errorMessage = "GetRecord request failed. HTTP error code "+responseCode; } @@ -445,16 +425,16 @@ private static String getRequestURL(String baseURL, return requestURL.toString(); } - private void processOAIheader (XMLStreamReader xmlr, boolean extensionMode) throws XMLStreamException, IOException { + private void processOAIheader (XMLStreamReader xmlr) throws XMLStreamException, IOException { // is this really a GetRecord response? xmlr.nextTag(); xmlr.require(XMLStreamConstants.START_ELEMENT, null, "OAI-PMH"); - processOAIPMH(xmlr, extensionMode); + processOAIPMH(xmlr); } - private void processOAIPMH (XMLStreamReader xmlr, boolean extensionMode) throws XMLStreamException, IOException { + private void processOAIPMH (XMLStreamReader xmlr) throws XMLStreamException, IOException { for (int event = xmlr.next(); event != XMLStreamConstants.END_DOCUMENT; event = xmlr.next()) { if (event == XMLStreamConstants.START_ELEMENT) { @@ -477,7 +457,7 @@ else if (xmlr.getLocalName().equals("error")) { } else if (xmlr.getLocalName().equals("GetRecord")) { - processGetRecordSection(xmlr, extensionMode); + processGetRecordSection(xmlr); } } else if (event == XMLStreamConstants.END_ELEMENT) { if (xmlr.getLocalName().equals("OAI-PMH")) return; @@ -485,11 +465,11 @@ else if (xmlr.getLocalName().equals("GetRecord")) { } } - private void processGetRecordSection (XMLStreamReader xmlr, boolean extensionMode) throws XMLStreamException, IOException { + private void processGetRecordSection (XMLStreamReader xmlr) throws XMLStreamException, IOException { for (int event = xmlr.next(); event != XMLStreamConstants.END_DOCUMENT; event = xmlr.next()) { if (event == XMLStreamConstants.START_ELEMENT) { if (xmlr.getLocalName().equals("record")) { - processRecord(xmlr, extensionMode); + processRecord(xmlr); } } else if (event == XMLStreamConstants.END_ELEMENT) { if (xmlr.getLocalName().equals("GetRecord")) return; @@ -498,7 +478,7 @@ private void processGetRecordSection (XMLStreamReader xmlr, boolean extensionMod } - private void processRecord (XMLStreamReader xmlr, boolean extensionMode) throws XMLStreamException, IOException { + private void processRecord (XMLStreamReader xmlr) throws XMLStreamException, IOException { for (int event = xmlr.next(); event != XMLStreamConstants.END_DOCUMENT; event = xmlr.next()) { if (event == XMLStreamConstants.START_ELEMENT) { if (xmlr.getLocalName().equals("header")) { @@ -506,11 +486,6 @@ private void processRecord (XMLStreamReader xmlr, boolean extensionMode) throws this.recordDeleted = true; } processHeader(xmlr); - } else if (xmlr.getLocalName().equals("metadata")) { - if (extensionMode) { - String extendedMetadataApiUrl = xmlr.getAttributeValue(null, "directApiCall"); - processMetadataExtended(extendedMetadataApiUrl); - } } } else if (event == XMLStreamConstants.END_ELEMENT) { if (xmlr.getLocalName().equals("record")) return; @@ -532,67 +507,6 @@ else if (xmlr.getLocalName().equals("setSpec")) {/*do nothing*/} } } - private void processMetadataExtended (String extendedApiUrl) throws IOException { - InputStream in = null; - int responseCode = 0; - HttpURLConnection con = null; - - - - try { - URL url = new URL(extendedApiUrl.replaceAll("&", "&")); // is this necessary? - - con = (HttpURLConnection) url.openConnection(); - con.setRequestProperty("User-Agent", "DataverseHarvester/3.0"); - responseCode = con.getResponseCode(); - } catch (MalformedURLException mue) { - throw new IOException ("Bad API URL: "+extendedApiUrl); - } catch (FileNotFoundException e) { - responseCode = HttpURLConnection.HTTP_UNAVAILABLE; - } - - - - - if (responseCode == 200) { - in = con.getInputStream(); - // TODO: - /* we should probably still support gzip/compress encoding here - ? - String contentEncoding = con.getHeaderField("Content-Encoding"); - - // support for the standard compress/gzip/deflate compression - // schemes: - - if ("compress".equals(contentEncoding)) { - ZipInputStream zis = new ZipInputStream(con.getInputStream()); - zis.getNextEntry(); - in = zis; - } else if ("gzip".equals(contentEncoding)) { - in = new GZIPInputStream(con.getInputStream()); - } else if ("deflate".equals(contentEncoding)) { - in = new InflaterInputStream(con.getInputStream()); - } ... - */ - FileOutputStream tempOut = new FileOutputStream(savedMetadataFile); - - int bufsize; - byte[] buffer = new byte[4 * 8192]; - - while ((bufsize = in.read(buffer)) != -1) { - tempOut.write(buffer, 0, bufsize); - tempOut.flush(); - } - - in.close(); - tempOut.close(); - return; - } - - throw new IOException("Failed to download extended metadata."); - - } - - // (from Gustavo's ddiServiceBean -- L.A.) // /* We had to add this method because the ref getElementText has a bug where it diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java index 397a90b0c99..86430a25ef0 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java @@ -32,7 +32,6 @@ import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; import org.apache.commons.lang3.mutable.MutableBoolean; -import org.apache.commons.lang3.mutable.MutableLong; import org.xml.sax.SAXException; import io.gdcc.xoai.model.oaipmh.Header; @@ -42,8 +41,13 @@ import edu.harvard.iq.dataverse.harvest.client.oai.OaiHandler; import edu.harvard.iq.dataverse.harvest.client.oai.OaiHandlerException; import edu.harvard.iq.dataverse.search.IndexServiceBean; +import java.io.FileOutputStream; import java.io.FileWriter; +import java.io.InputStream; import java.io.PrintWriter; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @@ -75,13 +79,12 @@ public class HarvesterServiceBean { IndexServiceBean indexService; private static final Logger logger = Logger.getLogger("edu.harvard.iq.dataverse.harvest.client.HarvesterServiceBean"); - private static final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); private static final SimpleDateFormat logFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH-mm-ss"); public static final String HARVEST_RESULT_SUCCESS="success"; public static final String HARVEST_RESULT_FAILED="failed"; - private static final Long INDEXING_CONTENT_BATCH_SIZE = 10000000L; - + public static final String DATAVERSE_PROPRIETARY_METADATA_FORMAT="dataverse_json"; + public static final String DATAVERSE_PROPRIETARY_METADATA_API="/api/datasets/export?exporter="+DATAVERSE_PROPRIETARY_METADATA_FORMAT; public HarvesterServiceBean() { @@ -183,24 +186,7 @@ public void doHarvest(DataverseRequest dataverseRequest, Long harvestingClientId hdLogger.log(Level.INFO, "COMPLETED HARVEST, server=" + harvestingClientConfig.getArchiveUrl() + ", metadataPrefix=" + harvestingClientConfig.getMetadataPrefix()); hdLogger.log(Level.INFO, "Datasets created/updated: " + harvestedDatasetIds.size() + ", datasets deleted: " + deletedIdentifiers.size() + ", datasets failed: " + failedIdentifiers.size()); - // now index all the datasets we have harvested - created, modified or deleted: - /* (TODO: may not be needed at all. In Dataverse4, we may be able to get away with the normal - reindexing after every import. See the rest of the comments about batch indexing throughout - this service bean) - if (this.processedSizeThisBatch > 0) { - hdLogger.log(Level.INFO, "POST HARVEST, reindexing the remaining studies."); - if (this.harvestedDatasetIdsThisBatch != null) { - hdLogger.log(Level.INFO, this.harvestedDatasetIdsThisBatch.size()+" studies in the batch"); - } - hdLogger.log(Level.INFO, this.processedSizeThisBatch + " bytes of content"); - indexService.updateIndexList(this.harvestedDatasetIdsThisBatch); - hdLogger.log(Level.INFO, "POST HARVEST, calls to index finished."); - } else { - hdLogger.log(Level.INFO, "(All harvested content already reindexed)"); - } - */ } - //mailService.sendHarvestNotification(...getSystemEmail(), harvestingDataverse.getName(), logFileName, logTimestamp, harvestErrorOccurred.booleanValue(), harvestedDatasetIds.size(), failedIdentifiers); } catch (Throwable e) { harvestErrorOccurred.setValue(true); String message = "Exception processing harvest, server= " + harvestingClientConfig.getHarvestingUrl() + ",format=" + harvestingClientConfig.getMetadataPrefix() + " " + e.getClass().getName() + " " + e.getMessage(); @@ -235,7 +221,6 @@ private List harvestOAI(DataverseRequest dataverseRequest, HarvestingClien logBeginOaiHarvest(hdLogger, harvestingClient); List harvestedDatasetIds = new ArrayList(); - MutableLong processedSizeThisBatch = new MutableLong(0L); OaiHandler oaiHandler; try { @@ -261,9 +246,8 @@ private List harvestOAI(DataverseRequest dataverseRequest, HarvestingClien MutableBoolean getRecordErrorOccurred = new MutableBoolean(false); // Retrieve and process this record with a separate GetRecord call: - Long datasetId = processRecord(dataverseRequest, hdLogger, importCleanupLog, oaiHandler, identifier, getRecordErrorOccurred, processedSizeThisBatch, deletedIdentifiers, dateStamp); + Long datasetId = processRecord(dataverseRequest, hdLogger, importCleanupLog, oaiHandler, identifier, getRecordErrorOccurred, deletedIdentifiers, dateStamp); - hdLogger.info("Total content processed in this batch so far: "+processedSizeThisBatch); if (datasetId != null) { harvestedDatasetIds.add(datasetId); @@ -280,20 +264,6 @@ private List harvestOAI(DataverseRequest dataverseRequest, HarvestingClien //temporary: //throw new IOException("Exception occured, stopping harvest"); } - - // reindexing in batches? - this is from DVN 3; - // we may not need it anymore. - if ( processedSizeThisBatch.longValue() > INDEXING_CONTENT_BATCH_SIZE ) { - - hdLogger.log(Level.INFO, "REACHED CONTENT BATCH SIZE LIMIT; calling index ("+ harvestedDatasetIdsThisBatch.size()+" datasets in the batch)."); - //indexService.updateIndexList(this.harvestedDatasetIdsThisBatch); - hdLogger.log(Level.INFO, "REINDEX DONE."); - - - processedSizeThisBatch.setValue(0L); - harvestedDatasetIdsThisBatch = null; - } - } } catch (OaiHandlerException e) { throw new IOException("Failed to run ListIdentifiers: " + e.getMessage()); @@ -303,23 +273,34 @@ private List harvestOAI(DataverseRequest dataverseRequest, HarvestingClien return harvestedDatasetIds; - } - + } - - private Long processRecord(DataverseRequest dataverseRequest, Logger hdLogger, PrintWriter importCleanupLog, OaiHandler oaiHandler, String identifier, MutableBoolean recordErrorOccurred, MutableLong processedSizeThisBatch, List deletedIdentifiers, Date dateStamp) { + private Long processRecord(DataverseRequest dataverseRequest, Logger hdLogger, PrintWriter importCleanupLog, OaiHandler oaiHandler, String identifier, MutableBoolean recordErrorOccurred, List deletedIdentifiers, Date dateStamp) { String errMessage = null; Dataset harvestedDataset = null; logGetRecord(hdLogger, oaiHandler, identifier); File tempFile = null; - try { - FastGetRecord record = oaiHandler.runGetRecord(identifier); - errMessage = record.getErrorMessage(); + try { + boolean deleted = false; + + if (DATAVERSE_PROPRIETARY_METADATA_FORMAT.equals(oaiHandler.getMetadataPrefix())) { + // Make direct call to obtain the proprietary Dataverse metadata + // in JSON from the remote Dataverse server: + String extendedApiUrl = getProprietaryDataverseMetadataURL(oaiHandler.getBaseOaiUrl(), identifier); + tempFile = retrieveProprietaryDataverseMetadata(extendedApiUrl); + + } else { + FastGetRecord record = oaiHandler.runGetRecord(identifier); + errMessage = record.getErrorMessage(); + deleted = record.isDeleted(); + tempFile = record.getMetadataFile(); + } if (errMessage != null) { hdLogger.log(Level.SEVERE, "Error calling GetRecord - " + errMessage); - } else if (record.isDeleted()) { + + } else if (deleted) { hdLogger.info("Deleting harvesting dataset for "+identifier+", per the OAI server's instructions."); Dataset dataset = datasetService.getDatasetByHarvestInfo(oaiHandler.getHarvestingClient().getDataverse(), identifier); @@ -336,24 +317,21 @@ private Long processRecord(DataverseRequest dataverseRequest, Logger hdLogger, P } else { hdLogger.info("Successfully retrieved GetRecord response."); - tempFile = record.getMetadataFile(); PrintWriter cleanupLog; harvestedDataset = importService.doImportHarvestedDataset(dataverseRequest, oaiHandler.getHarvestingClient(), identifier, oaiHandler.getMetadataPrefix(), - record.getMetadataFile(), + tempFile, dateStamp, importCleanupLog); hdLogger.fine("Harvest Successful for identifier " + identifier); - hdLogger.fine("Size of this record: " + record.getMetadataFile().length()); - processedSizeThisBatch.add(record.getMetadataFile().length()); + hdLogger.fine("Size of this record: " + tempFile.length()); } } catch (Throwable e) { logGetRecordException(hdLogger, oaiHandler, identifier, e); errMessage = "Caught exception while executing GetRecord on "+identifier; - //logException(e, hdLogger); } finally { if (tempFile != null) { @@ -364,14 +342,12 @@ private Long processRecord(DataverseRequest dataverseRequest, Logger hdLogger, P } } - // TODO: the message below is taken from DVN3; - figure out what it means... - // // If we got an Error from the OAI server or an exception happened during import, then // set recordErrorOccurred to true (if recordErrorOccurred is being used) // otherwise throw an exception (if recordErrorOccurred is not used, i.e null) if (errMessage != null) { - if (recordErrorOccurred != null) { + if (recordErrorOccurred != null) { recordErrorOccurred.setValue(true); } else { throw new EJBException(errMessage); @@ -380,6 +356,56 @@ private Long processRecord(DataverseRequest dataverseRequest, Logger hdLogger, P return harvestedDataset != null ? harvestedDataset.getId() : null; } + + File retrieveProprietaryDataverseMetadata (String remoteApiUrl) throws IOException { + InputStream in; + int responseCode = 0; + HttpURLConnection con = null; + + File tempMetadataFile = File.createTempFile("meta", ".tmp"); + + try { + URL url = new URL(remoteApiUrl); + + con = (HttpURLConnection) url.openConnection(); + con.setRequestProperty("User-Agent", "DataverseHarvester/3.0"); + responseCode = con.getResponseCode(); + } catch (MalformedURLException mue) { + throw new IOException ("Bad API URL: "+remoteApiUrl); + } + + if (responseCode == 200) { + in = con.getInputStream(); + + FileOutputStream tempOut = new FileOutputStream(tempMetadataFile); + + int bufsize; + byte[] buffer = new byte[4 * 8192]; + + while ((bufsize = in.read(buffer)) != -1) { + tempOut.write(buffer, 0, bufsize); + tempOut.flush(); + } + + in.close(); + tempOut.close(); + return tempMetadataFile; + } + + throw new IOException("Failed to download extended metadata."); + + } + + private static String getProprietaryDataverseMetadataURL(String baseURL, String identifier) { + + baseURL = baseURL.replaceAll("/oai", ""); + + StringBuilder requestURL = new StringBuilder(baseURL); + requestURL.append(DATAVERSE_PROPRIETARY_METADATA_API); + requestURL.append("&persistentId=").append(identifier); + + return requestURL.toString(); + } private void logBeginOaiHarvest(Logger hdLogger, HarvestingClient harvestingClient) { hdLogger.log(Level.INFO, "BEGIN HARVEST, oaiUrl=" @@ -448,47 +474,5 @@ private void logException(Throwable e, Logger logger) { } while ((e = e.getCause()) != null); logger.severe(fullMessage); } - - /* - some dead code below: - this functionality has been moved into OaiHandler. - TODO: test that harvesting is still working and remove. - - private ServiceProvider getServiceProvider(String baseOaiUrl, Granularity oaiGranularity) { - Context context = new Context(); - - context.withBaseUrl(baseOaiUrl); - context.withGranularity(oaiGranularity); - context.withOAIClient(new HttpOAIClient(baseOaiUrl)); - - ServiceProvider serviceProvider = new ServiceProvider(context); - return serviceProvider; - } - */ - - /** - * Creates an XOAI parameters object for the ListIdentifiers call - * - * @param metadataPrefix - * @param set - * @param from - * @return ListIdentifiersParameters - */ - /* - private ListIdentifiersParameters buildParams(String metadataPrefix, String set, Date from) { - ListIdentifiersParameters mip = ListIdentifiersParameters.request(); - mip.withMetadataPrefix(metadataPrefix); - - if (from != null) { - mip.withFrom(from); - } - - if (set != null) { - mip.withSetSpec(set); - } - return mip; - } - */ - - + } From 171f2f48b2120cfee6db09f214cf90c62af50060 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Mon, 6 Jun 2022 17:36:12 -0400 Subject: [PATCH 12/93] rearranged/cleaned up handling of OAI delete in harvesting. (#8372) --- .../harvest/client/HarvesterServiceBean.java | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java index 86430a25ef0..c2a01e44cd0 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java @@ -242,6 +242,13 @@ private List harvestOAI(DataverseRequest dataverseRequest, HarvestingClien Date dateStamp = Date.from(h.getDatestamp()); hdLogger.info("processing identifier: " + identifier + ", date: " + dateStamp); + + if (h.isDeleted()) { + hdLogger.info("Deleting harvesting dataset for " + identifier + ", per ListIdentifiers."); + + deleteHarvestedDatasetIfExists(identifier, oaiHandler.getHarvestingClient().getDataverse(), dataverseRequest, deletedIdentifiers, hdLogger); + continue; + } MutableBoolean getRecordErrorOccurred = new MutableBoolean(false); @@ -301,19 +308,9 @@ private Long processRecord(DataverseRequest dataverseRequest, Logger hdLogger, P hdLogger.log(Level.SEVERE, "Error calling GetRecord - " + errMessage); } else if (deleted) { - hdLogger.info("Deleting harvesting dataset for "+identifier+", per the OAI server's instructions."); + hdLogger.info("Deleting harvesting dataset for "+identifier+", per GetRecord."); - Dataset dataset = datasetService.getDatasetByHarvestInfo(oaiHandler.getHarvestingClient().getDataverse(), identifier); - if (dataset != null) { - hdLogger.info("Deleting dataset " + dataset.getGlobalIdString()); - datasetService.deleteHarvestedDataset(dataset, dataverseRequest, hdLogger); - // TODO: - // check the status of that Delete - see if it actually succeeded - deletedIdentifiers.add(identifier); - } else { - hdLogger.info("No dataset found for "+identifier+", skipping delete. "); - } - + deleteHarvestedDatasetIfExists(identifier, oaiHandler.getHarvestingClient().getDataverse(), dataverseRequest, deletedIdentifiers, hdLogger); } else { hdLogger.info("Successfully retrieved GetRecord response."); @@ -396,6 +393,18 @@ File retrieveProprietaryDataverseMetadata (String remoteApiUrl) throws IOExcepti } + private void deleteHarvestedDatasetIfExists(String persistentIdentifier, Dataverse harvestingDataverse, DataverseRequest dataverseRequest, List deletedIdentifiers, Logger hdLogger) { + Dataset dataset = datasetService.getDatasetByHarvestInfo(harvestingDataverse, persistentIdentifier); + if (dataset != null) { + datasetService.deleteHarvestedDataset(dataset, dataverseRequest, hdLogger); + // TODO: + // check the status of that Delete - see if it actually succeeded + deletedIdentifiers.add(persistentIdentifier); + return; + } + hdLogger.info("No dataset found for " + persistentIdentifier + ", skipping delete. "); + } + private static String getProprietaryDataverseMetadataURL(String baseURL, String identifier) { baseURL = baseURL.replaceAll("/oai", ""); From 09b6441f9c5e40902942e6f8871e95343714bdfb Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Wed, 15 Jun 2022 18:54:27 -0400 Subject: [PATCH 13/93] some *partial* fixes syncing the branch with the latest gdcc/xoai snapshot (#8372) --- .../harvest/client/HarvesterServiceBean.java | 2 +- .../harvest/client/oai/OaiHandler.java | 8 +- .../server/web/servlet/OAIServlet.java | 35 ++++----- .../server/xoai/DataverseXoaiItem.java | 4 +- .../xoai/DataverseXoaiItemRepository.java | 78 +++++++------------ .../xoai/DataverseXoaiSetRepository.java | 6 +- .../UsePregeneratedMetadataFormat.java | 43 ---------- 7 files changed, 50 insertions(+), 126 deletions(-) delete mode 100644 src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/conditions/UsePregeneratedMetadataFormat.java diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java index c2a01e44cd0..3d443a24fc5 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java @@ -34,7 +34,7 @@ import org.apache.commons.lang3.mutable.MutableBoolean; import org.xml.sax.SAXException; -import io.gdcc.xoai.model.oaipmh.Header; +import io.gdcc.xoai.model.oaipmh.results.record.Header; import edu.harvard.iq.dataverse.EjbDataverseEngine; import edu.harvard.iq.dataverse.api.imports.ImportServiceBean; import edu.harvard.iq.dataverse.engine.command.DataverseRequest; diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/client/oai/OaiHandler.java b/src/main/java/edu/harvard/iq/dataverse/harvest/client/oai/OaiHandler.java index e55e9726dc4..a32feeed5a7 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/client/oai/OaiHandler.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/client/oai/OaiHandler.java @@ -1,10 +1,10 @@ package edu.harvard.iq.dataverse.harvest.client.oai; -import io.gdcc.xoai.model.oaipmh.Description; +import io.gdcc.xoai.model.oaipmh.results.Description; import io.gdcc.xoai.model.oaipmh.Granularity; -import io.gdcc.xoai.model.oaipmh.Header; -import io.gdcc.xoai.model.oaipmh.MetadataFormat; -import io.gdcc.xoai.model.oaipmh.Set; +import io.gdcc.xoai.model.oaipmh.results.record.Header; +import io.gdcc.xoai.model.oaipmh.results.MetadataFormat; +import io.gdcc.xoai.model.oaipmh.results.Set; import io.gdcc.xoai.serviceprovider.ServiceProvider; import io.gdcc.xoai.serviceprovider.client.JdkHttpOaiClient; //.HttpOAIClient; import io.gdcc.xoai.serviceprovider.exceptions.BadArgumentException; diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java index 8024c0ade0b..d06c2a51009 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java @@ -5,14 +5,14 @@ */ package edu.harvard.iq.dataverse.harvest.server.web.servlet; -import io.gdcc.xoai.xmlio.exceptions.XmlWriteException; import io.gdcc.xoai.dataprovider.DataProvider; -import io.gdcc.xoai.dataprovider.builder.OAIRequestParametersBuilder; +//import io.gdcc.xoai.dataprovider.builder.OAIRequestParametersBuilder; import io.gdcc.xoai.dataprovider.repository.Repository; import io.gdcc.xoai.dataprovider.repository.RepositoryConfiguration; import io.gdcc.xoai.dataprovider.model.Context; import io.gdcc.xoai.dataprovider.model.MetadataFormat; -import io.gdcc.xoai.services.impl.SimpleResumptionTokenFormat; +import io.gdcc.xoai.dataprovider.request.RequestBuilder; +import io.gdcc.xoai.dataprovider.request.RequestBuilder.RawRequest; import io.gdcc.xoai.dataprovider.repository.ItemRepository; import io.gdcc.xoai.dataprovider.repository.SetRepository; import io.gdcc.xoai.model.oaipmh.DeletedRecord; @@ -29,7 +29,6 @@ import edu.harvard.iq.dataverse.harvest.server.OAISetServiceBean; import edu.harvard.iq.dataverse.harvest.server.xoai.DataverseXoaiItemRepository; import edu.harvard.iq.dataverse.harvest.server.xoai.DataverseXoaiSetRepository; -import edu.harvard.iq.dataverse.harvest.server.xoai.conditions.UsePregeneratedMetadataFormat; import edu.harvard.iq.dataverse.settings.SettingsServiceBean; import edu.harvard.iq.dataverse.util.MailUtil; import edu.harvard.iq.dataverse.util.SystemConfig; @@ -99,7 +98,7 @@ public void init(ServletConfig config) throws ServletException { if (isDataverseOaiExtensionsSupported()) { xoaiContext = addDataverseJsonMetadataFormat(xoaiContext); } - addMetadataFormatConditions(xoaiContext); + //addMetadataFormatConditions(xoaiContext); setRepository = new DataverseXoaiSetRepository(setService); itemRepository = new DataverseXoaiItemRepository(recordService, datasetService, systemConfig.getDataverseSiteUrl()+"/oai"); @@ -109,7 +108,7 @@ public void init(ServletConfig config) throws ServletException { xoaiRepository = new Repository() .withSetRepository(setRepository) .withItemRepository(itemRepository) - .withResumptionTokenFormatter(new SimpleResumptionTokenFormat()) + //.withResumptionTokenFormatter(new SimpleResumptionTokenFormat()) .withConfiguration(repositoryConfiguration); dataProvider = new DataProvider(getXoaiContext(), getXoaiRepository()); @@ -159,13 +158,14 @@ private Context addDataverseJsonMetadataFormat(Context context) { return context; } + /* No longer needed after the modifications on the gdcc/xoai side private void addMetadataFormatConditions(Context context) { for (MetadataFormat metadataFormat : context.getMetadataFormats()) { UsePregeneratedMetadataFormat condition = new UsePregeneratedMetadataFormat(); condition.withMetadataFormat(metadataFormat); metadataFormat.withCondition(condition); } - } + }*/ private boolean isDataverseOaiExtensionsSupported() { return true; @@ -230,7 +230,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) } - private void processRequest(HttpServletRequest request, HttpServletResponse response) + private void processRequest(HttpServletRequest httpServletRequest, HttpServletResponse response) throws ServletException, IOException { try { @@ -241,16 +241,17 @@ private void processRequest(HttpServletRequest request, HttpServletResponse resp return; } - OAIRequestParametersBuilder parametersBuilder = newXoaiRequest(); + //OAIRequestParametersBuilder parametersBuilder = newXoaiRequest(); + RawRequest rawRequest = RequestBuilder.buildRawRequest(httpServletRequest.getParameterMap()); - for (Object p : request.getParameterMap().keySet()) { + /*for (Object p : httpServletRequest.getParameterMap().keySet()) { String parameterName = (String)p; - String parameterValue = request.getParameter(parameterName); + String parameterValue = httpServletRequest.getParameter(parameterName); parametersBuilder = parametersBuilder.with(parameterName, parameterValue); - } + }*/ - OAIPMH handle = dataProvider.handle(parametersBuilder); + OAIPMH handle = dataProvider.handle(rawRequest); response.setContentType("text/xml;charset=UTF-8"); XmlWriter xmlWriter = new XmlWriter(response.getOutputStream()); @@ -264,9 +265,6 @@ private void processRequest(HttpServletRequest request, HttpServletResponse resp } catch (XMLStreamException xse) { logger.warning("XML Stream exception in Get; "+xse.getMessage()); throw new ServletException ("XML Stream Exception in Get", xse); - } catch (XmlWriteException xwe) { - logger.warning("XML Write exception in Get; "+xwe.getMessage()); - throw new ServletException ("XML Write Exception in Get", xwe); } catch (Exception e) { logger.warning("Unknown exception in Get; "+e.getMessage()); throw new ServletException ("Unknown servlet exception in Get.", e); @@ -282,11 +280,6 @@ protected Repository getXoaiRepository() { return xoaiRepository; } - protected OAIRequestParametersBuilder newXoaiRequest() { - return new OAIRequestParametersBuilder(); - } - - public boolean isHarvestingServerEnabled() { return systemConfig.isOAIServerEnabled(); } diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItem.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItem.java index ecdbb8f07eb..f7c19cee328 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItem.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItem.java @@ -2,8 +2,8 @@ import io.gdcc.xoai.dataprovider.model.Item; import io.gdcc.xoai.dataprovider.model.Set; -import io.gdcc.xoai.model.oaipmh.Metadata; -import io.gdcc.xoai.model.oaipmh.About; +import io.gdcc.xoai.model.oaipmh.results.record.Metadata; +import io.gdcc.xoai.model.oaipmh.results.record.About; import edu.harvard.iq.dataverse.Dataset; import edu.harvard.iq.dataverse.harvest.server.OAIRecord; import edu.harvard.iq.dataverse.util.StringUtil; diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index c364571296c..d6c14a4e2ab 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -1,10 +1,10 @@ package edu.harvard.iq.dataverse.harvest.server.xoai; -import io.gdcc.xoai.dataprovider.exceptions.IdDoesNotExistException; -import io.gdcc.xoai.dataprovider.exceptions.OAIException; +import io.gdcc.xoai.dataprovider.exceptions.handler.IdDoesNotExistException; +import io.gdcc.xoai.exceptions.OAIException; import io.gdcc.xoai.dataprovider.filter.ScopedFilter; -import io.gdcc.xoai.dataprovider.handlers.results.ListItemIdentifiersResult; -import io.gdcc.xoai.dataprovider.handlers.results.ListItemsResults; +//import io.gdcc.xoai.dataprovider.handlers.results.ListItemIdentifiersResult; +//import io.gdcc.xoai.dataprovider.handlers.results.ListItemsResults; import io.gdcc.xoai.dataprovider.model.Item; import io.gdcc.xoai.dataprovider.model.ItemIdentifier; import io.gdcc.xoai.dataprovider.model.Set; @@ -16,11 +16,13 @@ import edu.harvard.iq.dataverse.export.ExportService; import edu.harvard.iq.dataverse.harvest.server.OAIRecord; import edu.harvard.iq.dataverse.harvest.server.OAIRecordServiceBean; -import edu.harvard.iq.dataverse.harvest.server.xoai.conditions.UsePregeneratedMetadataFormat; import edu.harvard.iq.dataverse.util.StringUtil; +import io.gdcc.xoai.dataprovider.exceptions.handler.HandlerException; +import io.gdcc.xoai.dataprovider.exceptions.handler.NoMetadataFormatsException; import io.gdcc.xoai.dataprovider.filter.Scope; -import io.gdcc.xoai.dataprovider.model.conditions.Condition; -import io.gdcc.xoai.model.oaipmh.Metadata; +import io.gdcc.xoai.dataprovider.repository.ResultsPage; +import io.gdcc.xoai.model.oaipmh.ResumptionToken; +import io.gdcc.xoai.model.oaipmh.results.record.Metadata; import io.gdcc.xoai.xml.EchoElement; import java.io.IOException; import java.io.InputStream; @@ -55,19 +57,19 @@ public DataverseXoaiItemRepository (OAIRecordServiceBean recordService, DatasetS @Override - public Item getItem(String identifier) throws IdDoesNotExistException, OAIException { + public Item getItem(String identifier) throws IdDoesNotExistException { // I'm assuming we don't want to use this version of getItem // that does not specify the requested metadata format, ever // in our implementation - ? - throw new OAIException("Metadata Format is Required"); + throw new IdDoesNotExistException("Metadata Format is Required"); } @Override - public Item getItem(String identifier, MetadataFormat metadataFormat) throws IdDoesNotExistException, OAIException { + public Item getItem(String identifier, MetadataFormat metadataFormat) throws HandlerException { logger.fine("getItem; calling findOaiRecordsByGlobalId, identifier " + identifier); if (metadataFormat == null) { - throw new OAIException("Metadata Format is Required"); + throw new NoMetadataFormatsException("Metadata Format is Required"); } List oaiRecords = recordService.findOaiRecordsByGlobalId(identifier); @@ -136,44 +138,15 @@ public Item getItem(String identifier, MetadataFormat metadataFormat) throws IdD } @Override - public ListItemIdentifiersResult getItemIdentifiers(List filters, int offset, int length) throws OAIException { - return getItemIdentifiers(filters, offset, length, null, null, null); - } - - @Override - public ListItemIdentifiersResult getItemIdentifiers(List filters, int offset, int length, Instant from) throws OAIException { - return getItemIdentifiers(filters, offset, length, null, from, null); - } - - @Override - public ListItemIdentifiersResult getItemIdentifiersUntil(List filters, int offset, int length, Instant until) throws OAIException { - return getItemIdentifiers(filters, offset, length, null, null, until); - } - - @Override - public ListItemIdentifiersResult getItemIdentifiers(List filters, int offset, int length, Instant from, Instant until) throws OAIException { - return getItemIdentifiers(filters, offset, length, null, from, until); - } - - @Override - public ListItemIdentifiersResult getItemIdentifiers(List filters, int offset, int length, String setSpec) throws OAIException { - return getItemIdentifiers(filters, offset, length, setSpec, null, null); - } - - @Override - public ListItemIdentifiersResult getItemIdentifiers(List filters, int offset, int length, String setSpec, Instant from) throws OAIException { - return getItemIdentifiers(filters, offset, length, setSpec, from, null); - } - - @Override - public ListItemIdentifiersResult getItemIdentifiersUntil(List filters, int offset, int length, String setSpec, Instant until) throws OAIException { - return getItemIdentifiers(filters, offset, length, setSpec, null, until); - } - - @Override - public ListItemIdentifiersResult getItemIdentifiers(List filters, int offset, int length, String setSpec, Instant from, Instant until) throws OAIException { + public ResultsPage getItemIdentifiers(List filters, MetadataFormat metadataFormat, int maxResponseLength, ResumptionToken.Value resumptionToken) throws HandlerException { + + int offset = resumptionToken.getOffset().intValue(); + String setSpec = resumptionToken.getSetSpec(); + Instant from = resumptionToken.getFrom(); + Instant until = resumptionToken.getUntil(); + logger.fine("calling getItemIdentifiers; offset=" + offset - + ", length=" + length + + ", length=" + maxResponseLength + ", setSpec=" + setSpec + ", from=" + from + ", until=" + until); @@ -185,7 +158,7 @@ public ListItemIdentifiersResult getItemIdentifiers(List filters, List xoaiItems = new ArrayList<>(); if (oaiRecords != null && !oaiRecords.isEmpty()) { - for (int i = offset; i < offset + length && i < oaiRecords.size(); i++) { + for (int i = offset; i < offset + maxResponseLength && i < oaiRecords.size(); i++) { OAIRecord record = oaiRecords.get(i); xoaiItems.add(new DataverseXoaiItem(record)); } @@ -195,13 +168,14 @@ public ListItemIdentifiersResult getItemIdentifiers(List filters, // formatted output in the header: addExtraSets(xoaiItems, setSpec, from, until); - boolean hasMore = offset + length < oaiRecords.size(); - ListItemIdentifiersResult result = new ListItemIdentifiersResult(hasMore, xoaiItems); + boolean hasMore = offset + maxResponseLength < oaiRecords.size(); + //ListItemIdentifiersResult result = new ListItemIdentifiersResult(hasMore, xoaiItems); + ResultsPage result = new ResultsPage(resumptionToken, hasMore, xoaiItems, oaiRecords.size()); logger.fine("returning result with " + xoaiItems.size() + " items."); return result; } - return new ListItemIdentifiersResult(false, xoaiItems); + return new ResultsPage(resumptionToken, false, xoaiItems, 0); } @Override diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java index 765bacea32d..f1a0ecf185f 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java @@ -2,7 +2,7 @@ import io.gdcc.xoai.model.xoai.Element; import io.gdcc.xoai.dataprovider.repository.SetRepository; -import io.gdcc.xoai.dataprovider.handlers.results.ListSetsResult; +//import io.gdcc.xoai.dataprovider.handlers.results.ListSetsResult; import io.gdcc.xoai.dataprovider.model.Set; import io.gdcc.xoai.model.xoai.XOAIMetadata; import edu.harvard.iq.dataverse.harvest.server.OAISet; @@ -47,7 +47,7 @@ public boolean supportSets() { } @Override - public ListSetsResult retrieveSets(int offset, int length) { + public List getSets() { //int offset, int length) { logger.fine("calling retrieveSets()"); List dataverseOAISets = setService.findAllNamedSets(); List XOAISets = new ArrayList(); @@ -66,7 +66,7 @@ public ListSetsResult retrieveSets(int offset, int length) { } } - return new ListSetsResult(offset + length < XOAISets.size(), XOAISets.subList(offset, Math.min(offset + length, XOAISets.size()))); + return XOAISets; } @Override diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/conditions/UsePregeneratedMetadataFormat.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/conditions/UsePregeneratedMetadataFormat.java deleted file mode 100644 index bab79315030..00000000000 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/conditions/UsePregeneratedMetadataFormat.java +++ /dev/null @@ -1,43 +0,0 @@ -package edu.harvard.iq.dataverse.harvest.server.xoai.conditions; - -import io.gdcc.xoai.dataprovider.filter.Filter; -import io.gdcc.xoai.dataprovider.filter.FilterResolver; -import io.gdcc.xoai.dataprovider.model.ItemIdentifier; -import io.gdcc.xoai.dataprovider.model.MetadataFormat; -import io.gdcc.xoai.dataprovider.model.conditions.Condition; - -/** - * The purpose of this Condition is to pass the MetadataFormat to the - * getItems() methods in the Dataverse ItemRepository, as part of a - * ScopedFilter. - * - * @author Leonid Andreev - */ -public class UsePregeneratedMetadataFormat implements Condition { - - public UsePregeneratedMetadataFormat() { - alwaysTrueFilter = new Filter() { - @Override - public boolean isItemShown(ItemIdentifier item) { - return true; - } - }; - } - - private final Filter alwaysTrueFilter; - - @Override - public Filter getFilter(FilterResolver filterResolver) { - return alwaysTrueFilter; - } - - private MetadataFormat metadataFormat; - - public void withMetadataFormat(MetadataFormat metadataFormat) { - this.metadataFormat = metadataFormat; - } - - public MetadataFormat getMetadataFormat() { - return metadataFormat; - } -} From 709bd3bb4161ef4ce35af60ad5b5b1c60f8860f8 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Wed, 15 Jun 2022 19:07:37 -0400 Subject: [PATCH 14/93] more of (still *partial*) fixes syncing the branch with the latest gdcc/xoai snapshot (#8372) --- .../xoai/DataverseXoaiItemRepository.java | 93 +++++-------------- 1 file changed, 22 insertions(+), 71 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index d6c14a4e2ab..1d50254fef9 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -138,7 +138,7 @@ public Item getItem(String identifier, MetadataFormat metadataFormat) throws Han } @Override - public ResultsPage getItemIdentifiers(List filters, MetadataFormat metadataFormat, int maxResponseLength, ResumptionToken.Value resumptionToken) throws HandlerException { + public ResultsPage getItemIdentifiers(List filters, MetadataFormat metadataFormat, int maxResponseLength, ResumptionToken.Value resumptionToken) throws HandlerException { int offset = resumptionToken.getOffset().intValue(); String setSpec = resumptionToken.getSetSpec(); @@ -178,85 +178,34 @@ public ResultsPage getItemIdentifiers(List filter return new ResultsPage(resumptionToken, false, xoaiItems, 0); } + /* ResultsPage getItems( + final List filters, final MetadataFormat metadataFormat, final int maxResponseLength, + final ResumptionToken.Value resumptionToken) throws HandlerException; */ @Override - public ListItemsResults getItems(List filters, int offset, int length) throws OAIException { - return getItems(filters, offset, length, null, null, null); - } - - @Override - public ListItemsResults getItems(List filters, int offset, int length, Instant from) throws OAIException { - return getItems(filters, offset, length, null, from, null); - } - - @Override - public ListItemsResults getItemsUntil(List filters, int offset, int length, Instant until) throws OAIException { - return getItems(filters, offset, length, null, null, until); - } - - @Override - public ListItemsResults getItems(List filters, int offset, int length, Instant from, Instant until) throws OAIException { - return getItems(filters, offset, length, null, from, until); - } - - @Override - public ListItemsResults getItems(List filters, int offset, int length, String setSpec) throws OAIException { - return getItems(filters, offset, length, setSpec, null, null); - } - - @Override - public ListItemsResults getItems(List filters, int offset, int length, String setSpec, Instant from) throws OAIException { - return getItems(filters, offset, length, setSpec, from, null); - } - - @Override - public ListItemsResults getItemsUntil(List filters, int offset, int length, String setSpec, Instant until) throws OAIException { - return getItems(filters, offset, length, setSpec, null, until); - } - - @Override - public ListItemsResults getItems(List filters, int offset, int length, String setSpec, Instant from, Instant until) throws OAIException { + public ResultsPage getItems(List filters, MetadataFormat metadataFormat, int maxResponseLength, ResumptionToken.Value resumptionToken) throws HandlerException { + int offset = resumptionToken.getOffset().intValue(); + String setSpec = resumptionToken.getSetSpec(); + Instant from = resumptionToken.getFrom(); + Instant until = resumptionToken.getUntil(); + logger.fine("calling getItems; offset=" + offset - + ", length=" + length + + ", length=" + maxResponseLength + ", setSpec=" + setSpec + ", from=" + from + ", until=" + until); - - // TODO:?/WORKINPROGRESS: - // we need to know the MetadataFormat requested, in - // order to look up the pre-generated metadata stream - // and create a CopyElement Metadata object out of it. - // In the current implementation this is solved by encoding the - // MetadataFormat in a custom Condition, which results in it being - // passed to the getItems() method as a ScopedFilter. - // (or should we simply offer versions of all these methods, - // with the extra MetadataFormat argument, on the gdcc.xoai side, - // like it was done with getItem() above? - - MetadataFormat metadataFormat = null; - - for (ScopedFilter f : filters) { - - if (f.getScope().equals(Scope.MetadataFormat)) { - Condition condition = f.getCondition(); - if (condition instanceof UsePregeneratedMetadataFormat) { - metadataFormat = ((UsePregeneratedMetadataFormat) condition).getMetadataFormat(); - break; - } - } - } - + + // this is not needed, is it? if (metadataFormat == null) { - throw new OAIException("Metadata Format is Required"); + throw new NoMetadataFormatsException("Metadata Format is Required"); } List oaiRecords = recordService.findOaiRecordsBySetName(setSpec, from, until); - logger.fine("total " + oaiRecords.size() + " records returned"); - List xoaiItems = new ArrayList<>(); - if (oaiRecords != null && !oaiRecords.isEmpty()) { + if (!(oaiRecords == null || oaiRecords.isEmpty())) { + logger.fine("total " + oaiRecords.size() + " records returned"); - for (int i = offset; i < offset + length && i < oaiRecords.size(); i++) { + for (int i = offset; i < offset + maxResponseLength && i < oaiRecords.size(); i++) { OAIRecord oaiRecord = oaiRecords.get(i); DataverseXoaiItem xoaiItem = new DataverseXoaiItem(oaiRecord); @@ -302,13 +251,15 @@ public ListItemsResults getItems(List filters, int offset, int len addExtraSets(xoaiItems, setSpec, from, until); - boolean hasMore = offset + length < oaiRecords.size(); - ListItemsResults result = new ListItemsResults(hasMore, xoaiItems); + boolean hasMore = offset + maxResponseLength < oaiRecords.size(); + //ListItemsResults result = new ListItemsResults(hasMore, xoaiItems); + ResultsPage result = new ResultsPage(resumptionToken, hasMore, xoaiItems, oaiRecords.size()); logger.fine("returning result with " + xoaiItems.size() + " items."); return result; } - return new ListItemsResults(false, xoaiItems); + logger.fine("no records found"); + return new ResultsPage(resumptionToken, false, xoaiItems, 0); } private void addExtraSets(Object xoaiItemsList, String setSpec, Instant from, Instant until) { From f87bea8d17e0644714f381e77b1294b0eaece03e Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Thu, 23 Jun 2022 18:46:59 -0400 Subject: [PATCH 15/93] a few more lines to accommodate the changes in gdcc/xoai (#8372) --- .../harvest/server/web/servlet/OAIServlet.java | 13 ++++++------- .../server/xoai/DataverseXoaiItemRepository.java | 13 +++++++------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java index d06c2a51009..7fc03dc90d6 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java @@ -101,10 +101,10 @@ public void init(ServletConfig config) throws ServletException { //addMetadataFormatConditions(xoaiContext); setRepository = new DataverseXoaiSetRepository(setService); - itemRepository = new DataverseXoaiItemRepository(recordService, datasetService, systemConfig.getDataverseSiteUrl()+"/oai"); + itemRepository = new DataverseXoaiItemRepository(recordService, datasetService, systemConfig.getDataverseSiteUrl()); repositoryConfiguration = createRepositoryConfiguration(); - + xoaiRepository = new Repository() .withSetRepository(setRepository) .withItemRepository(itemRepository) @@ -182,20 +182,19 @@ private RepositoryConfiguration createRepositoryConfiguration() { // (Note: if the setting does not exist, we are going to assume that they // have a reason not to want to advertise their email address, so no // email will be shown in the output of Identify. - InternetAddress internetAddress = MailUtil.parseSystemAddress(settingsService.getValueForKey(SettingsServiceBean.Key.SystemEmail)); + InternetAddress systemEmailAddress = MailUtil.parseSystemAddress(settingsService.getValueForKey(SettingsServiceBean.Key.SystemEmail)); - RepositoryConfiguration repositoryConfiguration = new RepositoryConfiguration() + RepositoryConfiguration repositoryConfiguration = RepositoryConfiguration.defaults() .withRepositoryName(repositoryName) .withBaseUrl(systemConfig.getDataverseSiteUrl()+"/oai") .withCompression("gzip") .withCompression("deflate") - .withAdminEmail(internetAddress != null ? internetAddress.getAddress() : null) + .withAdminEmail(systemEmailAddress != null ? systemEmailAddress.getAddress() : null) .withDeleteMethod(DeletedRecord.TRANSIENT) - .withGranularity(Granularity.Second) .withMaxListIdentifiers(systemConfig.getOaiServerMaxIdentifiers()) .withMaxListRecords(systemConfig.getOaiServerMaxRecords()) .withMaxListSets(systemConfig.getOaiServerMaxSets()) - .withEarliestDate(new Date().toInstant()); // TODO: + .withEnableMetadataAttributes(true); return repositoryConfiguration; } diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index 1d50254fef9..6f246309593 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -140,7 +140,7 @@ public Item getItem(String identifier, MetadataFormat metadataFormat) throws Han @Override public ResultsPage getItemIdentifiers(List filters, MetadataFormat metadataFormat, int maxResponseLength, ResumptionToken.Value resumptionToken) throws HandlerException { - int offset = resumptionToken.getOffset().intValue(); + int offset = Long.valueOf(resumptionToken.getOffset()).intValue(); String setSpec = resumptionToken.getSetSpec(); Instant from = resumptionToken.getFrom(); Instant until = resumptionToken.getUntil(); @@ -183,7 +183,7 @@ public ResultsPage getItemIdentifiers(List filters final ResumptionToken.Value resumptionToken) throws HandlerException; */ @Override public ResultsPage getItems(List filters, MetadataFormat metadataFormat, int maxResponseLength, ResumptionToken.Value resumptionToken) throws HandlerException { - int offset = resumptionToken.getOffset().intValue(); + int offset = Long.valueOf(resumptionToken.getOffset()).intValue(); String setSpec = resumptionToken.getSetSpec(); Instant from = resumptionToken.getFrom(); Instant until = resumptionToken.getUntil(); @@ -297,11 +297,12 @@ private Metadata getDatasetMetadata(Dataset dataset, String metadataPrefix) thro Metadata metadata; if ("dataverse_json".equals(metadataPrefix)) { - // Slightly modified version of the old proprietary Json harvesting hack: - // (decision pending as to whether we want to provide backward compatibility - // for older Dataverse harvesting clients) + // Solely for backward compatibility, for older Dataverse harvesting clients + // that may still be relying on harvesting "dataverse_json"; + // we will want to eventually get rid of this hack! String apiUrl = customDataverseJsonApiUri(dataset.getGlobalId().asString()); - metadata = new Metadata(new EchoElement("" + apiUrl + "")); + metadata = new Metadata(new EchoElement("custom metadata")).withAttribute("directApiCall", apiUrl); + } else { InputStream pregeneratedMetadataStream; pregeneratedMetadataStream = ExportService.getInstance().getExport(dataset, metadataPrefix); From 27683b3cef2cb3f0dae3cb9ff3ab06a3a1201d33 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Sun, 10 Jul 2022 21:25:28 -0400 Subject: [PATCH 16/93] Some more cleanup for the harvesting subsystem migration to gdcc/xoai (#8372) --- .../server/web/servlet/OAIServlet.java | 43 ++++++------------- .../xoai/DataverseXoaiItemRepository.java | 24 ++++------- .../xoai/DataverseXoaiSetRepository.java | 5 +-- 3 files changed, 23 insertions(+), 49 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java index 7fc03dc90d6..8cbde519446 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java @@ -71,17 +71,21 @@ public class OAIServlet extends HttpServlet { SystemConfig systemConfig; private static final Logger logger = Logger.getLogger("edu.harvard.iq.dataverse.harvest.server.web.servlet.OAIServlet"); - protected HashMap attributesMap = new HashMap(); // If we are going to stick with this solution - of providing a minimalist // xml record containing a link to the proprietary json metadata API for // "dataverse json harvesting", we'll probably want to create minimalistic, // but valid schemas for this format as well. - // (although the more I'm thinking about this... these records just don't seem - // needed at all) + // UPDATE: we are keeping this hack on the server side purely for backward + // compatibility with older (pre v6) Dataverses who may still be using the + // format. Once v6 has been around for a while, we will get rid of it completely. + // Starting this version, harvesting clients will not be making GetRecord + // calls at all when using harvesting dataverse_json; instead they will only + // be calling ListIdentifiers, and then making direct calls to the export + // API of the remote Dataverse, to obtain the records in native json. This + // is how we should have implemented this in the first place, really. private static final String DATAVERSE_EXTENDED_METADATA_FORMAT = "dataverse_json"; - private static final String DATAVERSE_EXTENDED_METADATA_NAMESPACE = ""; - private static final String DATAVERSE_EXTENDED_METADATA_SCHEMA = ""; - + private static final String DATAVERSE_EXTENDED_METADATA_NAMESPACE = "Custom Dataverse metadata in JSON format (Dataverse4 to Dataverse4 harvesting only)"; + private static final String DATAVERSE_EXTENDED_METADATA_SCHEMA = "JSON schema pending"; private Context xoaiContext; private SetRepository setRepository; @@ -98,7 +102,6 @@ public void init(ServletConfig config) throws ServletException { if (isDataverseOaiExtensionsSupported()) { xoaiContext = addDataverseJsonMetadataFormat(xoaiContext); } - //addMetadataFormatConditions(xoaiContext); setRepository = new DataverseXoaiSetRepository(setService); itemRepository = new DataverseXoaiItemRepository(recordService, datasetService, systemConfig.getDataverseSiteUrl()); @@ -108,7 +111,6 @@ public void init(ServletConfig config) throws ServletException { xoaiRepository = new Repository() .withSetRepository(setRepository) .withItemRepository(itemRepository) - //.withResumptionTokenFormatter(new SimpleResumptionTokenFormat()) .withConfiguration(repositoryConfiguration); dataProvider = new DataProvider(getXoaiContext(), getXoaiRepository()); @@ -158,15 +160,6 @@ private Context addDataverseJsonMetadataFormat(Context context) { return context; } - /* No longer needed after the modifications on the gdcc/xoai side - private void addMetadataFormatConditions(Context context) { - for (MetadataFormat metadataFormat : context.getMetadataFormats()) { - UsePregeneratedMetadataFormat condition = new UsePregeneratedMetadataFormat(); - condition.withMetadataFormat(metadataFormat); - metadataFormat.withCondition(condition); - } - }*/ - private boolean isDataverseOaiExtensionsSupported() { return true; } @@ -185,6 +178,7 @@ private RepositoryConfiguration createRepositoryConfiguration() { InternetAddress systemEmailAddress = MailUtil.parseSystemAddress(settingsService.getValueForKey(SettingsServiceBean.Key.SystemEmail)); RepositoryConfiguration repositoryConfiguration = RepositoryConfiguration.defaults() + .withEnableMetadataAttributes(true) .withRepositoryName(repositoryName) .withBaseUrl(systemConfig.getDataverseSiteUrl()+"/oai") .withCompression("gzip") @@ -193,8 +187,7 @@ private RepositoryConfiguration createRepositoryConfiguration() { .withDeleteMethod(DeletedRecord.TRANSIENT) .withMaxListIdentifiers(systemConfig.getOaiServerMaxIdentifiers()) .withMaxListRecords(systemConfig.getOaiServerMaxRecords()) - .withMaxListSets(systemConfig.getOaiServerMaxSets()) - .withEnableMetadataAttributes(true); + .withMaxListSets(systemConfig.getOaiServerMaxSets()); return repositoryConfiguration; } @@ -239,21 +232,13 @@ private void processRequest(HttpServletRequest httpServletRequest, HttpServletRe "Sorry. OAI Service is disabled on this Dataverse node."); return; } - - //OAIRequestParametersBuilder parametersBuilder = newXoaiRequest(); + RawRequest rawRequest = RequestBuilder.buildRawRequest(httpServletRequest.getParameterMap()); - /*for (Object p : httpServletRequest.getParameterMap().keySet()) { - String parameterName = (String)p; - String parameterValue = httpServletRequest.getParameter(parameterName); - parametersBuilder = parametersBuilder.with(parameterName, parameterValue); - - }*/ - OAIPMH handle = dataProvider.handle(rawRequest); response.setContentType("text/xml;charset=UTF-8"); - XmlWriter xmlWriter = new XmlWriter(response.getOutputStream()); + XmlWriter xmlWriter = new XmlWriter(response.getOutputStream(), repositoryConfiguration); xmlWriter.write(handle); xmlWriter.flush(); xmlWriter.close(); diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index 6f246309593..c9dfe65d722 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -1,10 +1,7 @@ package edu.harvard.iq.dataverse.harvest.server.xoai; import io.gdcc.xoai.dataprovider.exceptions.handler.IdDoesNotExistException; -import io.gdcc.xoai.exceptions.OAIException; import io.gdcc.xoai.dataprovider.filter.ScopedFilter; -//import io.gdcc.xoai.dataprovider.handlers.results.ListItemIdentifiersResult; -//import io.gdcc.xoai.dataprovider.handlers.results.ListItemsResults; import io.gdcc.xoai.dataprovider.model.Item; import io.gdcc.xoai.dataprovider.model.ItemIdentifier; import io.gdcc.xoai.dataprovider.model.Set; @@ -19,7 +16,6 @@ import edu.harvard.iq.dataverse.util.StringUtil; import io.gdcc.xoai.dataprovider.exceptions.handler.HandlerException; import io.gdcc.xoai.dataprovider.exceptions.handler.NoMetadataFormatsException; -import io.gdcc.xoai.dataprovider.filter.Scope; import io.gdcc.xoai.dataprovider.repository.ResultsPage; import io.gdcc.xoai.model.oaipmh.ResumptionToken; import io.gdcc.xoai.model.oaipmh.results.record.Metadata; @@ -40,7 +36,7 @@ */ public class DataverseXoaiItemRepository implements ItemRepository { - private static Logger logger = Logger.getLogger("edu.harvard.iq.dataverse.harvest.server.xoai.XitemRepository"); + private static Logger logger = Logger.getLogger("edu.harvard.iq.dataverse.harvest.server.xoai.DataverseXoaiItemRepository"); private OAIRecordServiceBean recordService; private DatasetServiceBean datasetService; @@ -60,7 +56,7 @@ public DataverseXoaiItemRepository (OAIRecordServiceBean recordService, DatasetS public Item getItem(String identifier) throws IdDoesNotExistException { // I'm assuming we don't want to use this version of getItem // that does not specify the requested metadata format, ever - // in our implementation - ? + // in our implementation - ? (L.A.) throw new IdDoesNotExistException("Metadata Format is Required"); } @@ -153,8 +149,6 @@ public ResultsPage getItemIdentifiers(List filters List oaiRecords = recordService.findOaiRecordsBySetName(setSpec, from, until); - //logger.fine("total " + oaiRecords.size() + " returned"); - List xoaiItems = new ArrayList<>(); if (oaiRecords != null && !oaiRecords.isEmpty()) { @@ -169,7 +163,6 @@ public ResultsPage getItemIdentifiers(List filters addExtraSets(xoaiItems, setSpec, from, until); boolean hasMore = offset + maxResponseLength < oaiRecords.size(); - //ListItemIdentifiersResult result = new ListItemIdentifiersResult(hasMore, xoaiItems); ResultsPage result = new ResultsPage(resumptionToken, hasMore, xoaiItems, oaiRecords.size()); logger.fine("returning result with " + xoaiItems.size() + " items."); return result; @@ -178,9 +171,6 @@ public ResultsPage getItemIdentifiers(List filters return new ResultsPage(resumptionToken, false, xoaiItems, 0); } - /* ResultsPage getItems( - final List filters, final MetadataFormat metadataFormat, final int maxResponseLength, - final ResumptionToken.Value resumptionToken) throws HandlerException; */ @Override public ResultsPage getItems(List filters, MetadataFormat metadataFormat, int maxResponseLength, ResumptionToken.Value resumptionToken) throws HandlerException { int offset = Long.valueOf(resumptionToken.getOffset()).intValue(); @@ -194,7 +184,8 @@ public ResultsPage getItems(List filters, MetadataFormat met + ", from=" + from + ", until=" + until); - // this is not needed, is it? + // this is not needed, is it? (the parameters should be pre-validated + // on the gdcc/xoai side by this point) if (metadataFormat == null) { throw new NoMetadataFormatsException("Metadata Format is Required"); } @@ -252,7 +243,6 @@ public ResultsPage getItems(List filters, MetadataFormat met addExtraSets(xoaiItems, setSpec, from, until); boolean hasMore = offset + maxResponseLength < oaiRecords.size(); - //ListItemsResults result = new ListItemsResults(hasMore, xoaiItems); ResultsPage result = new ResultsPage(resumptionToken, hasMore, xoaiItems, oaiRecords.size()); logger.fine("returning result with " + xoaiItems.size() + " items."); return result; @@ -300,8 +290,10 @@ private Metadata getDatasetMetadata(Dataset dataset, String metadataPrefix) thro // Solely for backward compatibility, for older Dataverse harvesting clients // that may still be relying on harvesting "dataverse_json"; // we will want to eventually get rid of this hack! - String apiUrl = customDataverseJsonApiUri(dataset.getGlobalId().asString()); - metadata = new Metadata(new EchoElement("custom metadata")).withAttribute("directApiCall", apiUrl); + // @Deprecated(since = "5.0") + metadata = new Metadata( + new EchoElement("custom metadata")) + .withAttribute("directApiCall", customDataverseJsonApiUri(dataset.getGlobalId().asString())); } else { InputStream pregeneratedMetadataStream; diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java index f1a0ecf185f..edbe1da8d69 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java @@ -2,7 +2,6 @@ import io.gdcc.xoai.model.xoai.Element; import io.gdcc.xoai.dataprovider.repository.SetRepository; -//import io.gdcc.xoai.dataprovider.handlers.results.ListSetsResult; import io.gdcc.xoai.dataprovider.model.Set; import io.gdcc.xoai.model.xoai.XOAIMetadata; import edu.harvard.iq.dataverse.harvest.server.OAISet; @@ -37,7 +36,6 @@ public void setSetService(OAISetServiceBean setService) { @Override public boolean supportSets() { - logger.fine("calling supportSets()"); List dataverseOAISets = setService.findAllNamedSets(); if (dataverseOAISets == null || dataverseOAISets.isEmpty()) { @@ -47,7 +45,7 @@ public boolean supportSets() { } @Override - public List getSets() { //int offset, int length) { + public List getSets() { logger.fine("calling retrieveSets()"); List dataverseOAISets = setService.findAllNamedSets(); List XOAISets = new ArrayList(); @@ -71,7 +69,6 @@ public List getSets() { //int offset, int length) { @Override public boolean exists(String setSpec) { - // return true; return setService.setExists(setSpec); } From 3864f1e58bbf47a123def38e48916d9be0f661ba Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Mon, 11 Jul 2022 13:47:04 -0400 Subject: [PATCH 17/93] pointing the pom file to the 5.0.0-RC1 release of gdcc/xoai! (#8372) --- modules/dataverse-parent/pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/dataverse-parent/pom.xml b/modules/dataverse-parent/pom.xml index d154bad82c1..70153b71565 100644 --- a/modules/dataverse-parent/pom.xml +++ b/modules/dataverse-parent/pom.xml @@ -163,7 +163,7 @@ 4.4.14 - 5.0.0-SNAPSHOT + 5.0.0-RC1 1.15.0 @@ -304,7 +304,7 @@ Local repository for hosting jars not available from network repositories. file://${project.basedir}/local_lib - + + --> From 14fae8b0d0721914a26bf65b92c7c193ad346135 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Tue, 12 Jul 2022 22:39:47 -0400 Subject: [PATCH 18/93] removed all the logic that we used to have in the record service for manipulating the "until" date parameter to ensure inclusivity. (#8372) --- .../harvest/server/OAIRecordServiceBean.java | 27 ------------------- 1 file changed, 27 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAIRecordServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAIRecordServiceBean.java index a7e180ce233..4fb02a0c86c 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAIRecordServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAIRecordServiceBean.java @@ -323,36 +323,9 @@ public List findOaiRecordsBySetName(String setName, Instant from, Ins if (from != null) { query.setParameter("from",Date.from(from),TemporalType.TIMESTAMP); } - // In order to achieve inclusivity on the "until" matching, we need to do - // the following (if the "until" parameter is supplied): - // 1) if the supplied "until" parameter has the time portion (and is not just - // a date), we'll increment it by one second. This is because the time stamps we - // keep in the database also have fractional thousands of a second. - // So, a record may be shown as "T17:35:45", but in the database it is - // actually "17:35:45.356", so "<= 17:35:45" isn't going to work on this - // time stamp! - So we want to try "<= 17:35:45" instead. - // 2) if it's just a date, we'll increment it by a *full day*. Otherwise - // our database time stamp of 2016-10-23T17:35:45.123Z is NOT going to - // match " <= 2016-10-23" - which is really going to be interpreted as - // "2016-10-23T00:00:00.000". - // -- L.A. 4.6 if (until != null) { - // 24 * 3600 * 1000 = number of milliseconds in a day. - Date untilDate = Date.from(until); - - if (untilDate.getTime() % (24 * 3600 * 1000) == 0) { - // The supplied "until" parameter is a date, with no time - // portion. - // TODO: review/reimplement this! - - logger.fine("plain date. incrementing by one day"); - untilDate.setTime(untilDate.getTime()+(24 * 3600 * 1000)); - } else { - logger.fine("date and time. incrementing by one second"); - untilDate.setTime(untilDate.getTime()+1000); - } query.setParameter("until",untilDate,TemporalType.TIMESTAMP); } From 6ee6fdf919c7a6146f5ce1564603fbace0df4843 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Tue, 12 Jul 2022 23:09:59 -0400 Subject: [PATCH 19/93] fixed the implementation of getItem(String identifier) in the item repository (#8372) --- .../xoai/DataverseXoaiItemRepository.java | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index c9dfe65d722..f6ad332314d 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -53,11 +53,26 @@ public DataverseXoaiItemRepository (OAIRecordServiceBean recordService, DatasetS @Override - public Item getItem(String identifier) throws IdDoesNotExistException { - // I'm assuming we don't want to use this version of getItem - // that does not specify the requested metadata format, ever - // in our implementation - ? (L.A.) - throw new IdDoesNotExistException("Metadata Format is Required"); + public ItemIdentifier getItem(String identifier) throws IdDoesNotExistException { + // This method is called when ListMetadataFormats request specifies + // the identifier, requesting the formats available for this specific record. + // In our case, under the current implementation, we need to simply look + // up if the record exists; if it does, all the OAI formats that we serve + // should be available for this record. + + List oaiRecords = recordService.findOaiRecordsByGlobalId(identifier); + if (oaiRecords != null && !oaiRecords.isEmpty()) { + DataverseXoaiItem xoaiItem = null; + for (OAIRecord oaiRecord : oaiRecords) { + // We can return the first *active* record we find for this identifier. + if (!oaiRecord.isRemoved()) { + xoaiItem = new DataverseXoaiItem(oaiRecord); + return xoaiItem; + } + } + } + + throw new IdDoesNotExistException(); } @Override From d6d169ec90303fb08cd80a48277f9800b3464bb5 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Tue, 12 Jul 2022 23:17:43 -0400 Subject: [PATCH 20/93] removed the unnecessary xoai-common dependency from pom.xml (#8372) --- pom.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pom.xml b/pom.xml index 550e60ff8b6..a45c56235be 100644 --- a/pom.xml +++ b/pom.xml @@ -383,11 +383,6 @@ 9.9.1 - - io.gdcc - xoai-common - ${gdcc.xoai.version} - io.gdcc xoai-data-provider From 3c8f2259c66d7e7f93bb459fa385976c7d7e6dd7 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Wed, 13 Jul 2022 09:45:42 -0400 Subject: [PATCH 21/93] replaced the old http get-and-save fragment with some code that uses the jdk http client and stream .transferTo() (#8372) --- .../harvest/client/HarvesterServiceBean.java | 81 ++++++++++--------- 1 file changed, 43 insertions(+), 38 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java index 3d443a24fc5..7f34847cbf3 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java @@ -5,6 +5,7 @@ */ package edu.harvard.iq.dataverse.harvest.client; +import static java.net.HttpURLConnection.HTTP_OK; import edu.harvard.iq.dataverse.Dataset; import edu.harvard.iq.dataverse.DatasetServiceBean; import edu.harvard.iq.dataverse.Dataverse; @@ -17,7 +18,6 @@ import java.util.Date; import java.util.Iterator; import java.util.List; -//import java.net.URLEncoder; import java.util.logging.FileHandler; import java.util.logging.Level; import java.util.logging.Logger; @@ -28,7 +28,6 @@ import javax.ejb.Stateless; import javax.ejb.Timer; import javax.inject.Named; -//import javax.xml.bind.Unmarshaller; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; import org.apache.commons.lang3.mutable.MutableBoolean; @@ -45,9 +44,10 @@ import java.io.FileWriter; import java.io.InputStream; import java.io.PrintWriter; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @@ -222,6 +222,7 @@ private List harvestOAI(DataverseRequest dataverseRequest, HarvestingClien List harvestedDatasetIds = new ArrayList(); OaiHandler oaiHandler; + HttpClient httpClient = null; try { oaiHandler = new OaiHandler(harvestingClient); @@ -233,7 +234,13 @@ private List harvestOAI(DataverseRequest dataverseRequest, HarvestingClien hdLogger.log(Level.SEVERE, errorMessage); throw new IOException(errorMessage); } - + + if (DATAVERSE_PROPRIETARY_METADATA_FORMAT.equals(oaiHandler.getMetadataPrefix())) { + // If we are harvesting native Dataverse json, we'll also need this + // jdk http client to make direct calls to the remote Dataverse API: + httpClient = HttpClient.newBuilder().followRedirects(HttpClient.Redirect.ALWAYS).build(); + } + try { for (Iterator

idIter = oaiHandler.runListIdentifiers(); idIter.hasNext();) { @@ -253,7 +260,8 @@ private List harvestOAI(DataverseRequest dataverseRequest, HarvestingClien MutableBoolean getRecordErrorOccurred = new MutableBoolean(false); // Retrieve and process this record with a separate GetRecord call: - Long datasetId = processRecord(dataverseRequest, hdLogger, importCleanupLog, oaiHandler, identifier, getRecordErrorOccurred, deletedIdentifiers, dateStamp); + + Long datasetId = processRecord(dataverseRequest, hdLogger, importCleanupLog, oaiHandler, identifier, getRecordErrorOccurred, deletedIdentifiers, dateStamp, httpClient); if (datasetId != null) { harvestedDatasetIds.add(datasetId); @@ -282,7 +290,7 @@ private List harvestOAI(DataverseRequest dataverseRequest, HarvestingClien } - private Long processRecord(DataverseRequest dataverseRequest, Logger hdLogger, PrintWriter importCleanupLog, OaiHandler oaiHandler, String identifier, MutableBoolean recordErrorOccurred, List deletedIdentifiers, Date dateStamp) { + private Long processRecord(DataverseRequest dataverseRequest, Logger hdLogger, PrintWriter importCleanupLog, OaiHandler oaiHandler, String identifier, MutableBoolean recordErrorOccurred, List deletedIdentifiers, Date dateStamp, HttpClient httpClient) { String errMessage = null; Dataset harvestedDataset = null; logGetRecord(hdLogger, oaiHandler, identifier); @@ -295,7 +303,7 @@ private Long processRecord(DataverseRequest dataverseRequest, Logger hdLogger, P // Make direct call to obtain the proprietary Dataverse metadata // in JSON from the remote Dataverse server: String extendedApiUrl = getProprietaryDataverseMetadataURL(oaiHandler.getBaseOaiUrl(), identifier); - tempFile = retrieveProprietaryDataverseMetadata(extendedApiUrl); + tempFile = retrieveProprietaryDataverseMetadata(httpClient, extendedApiUrl); } else { FastGetRecord record = oaiHandler.runGetRecord(identifier); @@ -354,43 +362,40 @@ private Long processRecord(DataverseRequest dataverseRequest, Logger hdLogger, P return harvestedDataset != null ? harvestedDataset.getId() : null; } - File retrieveProprietaryDataverseMetadata (String remoteApiUrl) throws IOException { - InputStream in; - int responseCode = 0; - HttpURLConnection con = null; + File retrieveProprietaryDataverseMetadata (HttpClient client, String remoteApiUrl) throws IOException { - File tempMetadataFile = File.createTempFile("meta", ".tmp"); + if (client == null) { + throw new IOException("Null Http Client, cannot make a call to obtain native metadata."); + } - try { - URL url = new URL(remoteApiUrl); - - con = (HttpURLConnection) url.openConnection(); - con.setRequestProperty("User-Agent", "DataverseHarvester/3.0"); - responseCode = con.getResponseCode(); - } catch (MalformedURLException mue) { - throw new IOException ("Bad API URL: "+remoteApiUrl); - } + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(remoteApiUrl)) + .GET() + .header("User-Agent", "DataverseHarvester/6.0") + .build(); - if (responseCode == 200) { - in = con.getInputStream(); + HttpResponse response; + + try { + response = client.send(request, HttpResponse.BodyHandlers.ofInputStream()); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + throw new IOException("Failed to connect to the remote dataverse server to obtain native metadata"); + } - FileOutputStream tempOut = new FileOutputStream(tempMetadataFile); + int responseCode = response.statusCode(); - int bufsize; - byte[] buffer = new byte[4 * 8192]; + if (responseCode == HTTP_OK) { + File tempMetadataFile = File.createTempFile("meta", ".tmp"); - while ((bufsize = in.read(buffer)) != -1) { - tempOut.write(buffer, 0, bufsize); - tempOut.flush(); + try (InputStream inputStream = response.body(); + FileOutputStream outputStream = new FileOutputStream(tempMetadataFile);) { + inputStream.transferTo(outputStream); + return tempMetadataFile; } - - in.close(); - tempOut.close(); - return tempMetadataFile; } - - throw new IOException("Failed to download extended metadata."); - + + throw new IOException("Failed to download native metadata from the remote dataverse server."); } private void deleteHarvestedDatasetIfExists(String persistentIdentifier, Dataverse harvestingDataverse, DataverseRequest dataverseRequest, List deletedIdentifiers, Logger hdLogger) { From e64a81d18d8d68ca6efc1dcbf3c37c81244d7e54 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Wed, 13 Jul 2022 10:19:50 -0400 Subject: [PATCH 22/93] try-with-resources for the xmlwriter in the servlet (#8372) --- .../dataverse/harvest/server/web/servlet/OAIServlet.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java index 8cbde519446..2b3e327e5d2 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java @@ -238,10 +238,9 @@ private void processRequest(HttpServletRequest httpServletRequest, HttpServletRe OAIPMH handle = dataProvider.handle(rawRequest); response.setContentType("text/xml;charset=UTF-8"); - XmlWriter xmlWriter = new XmlWriter(response.getOutputStream(), repositoryConfiguration); - xmlWriter.write(handle); - xmlWriter.flush(); - xmlWriter.close(); + try (XmlWriter xmlWriter = new XmlWriter(response.getOutputStream(), repositoryConfiguration);) { + xmlWriter.write(handle); + } } catch (IOException ex) { logger.warning("IO exception in Get; "+ex.getMessage()); From 088d9b8269c385ca8303fc6fdc1197d0b5d2db42 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Wed, 13 Jul 2022 10:35:41 -0400 Subject: [PATCH 23/93] less messy exception handling in the oai servlet (#8372) --- .../harvest/server/web/servlet/OAIServlet.java | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java index 2b3e327e5d2..d3876e76cf7 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java @@ -16,7 +16,6 @@ import io.gdcc.xoai.dataprovider.repository.ItemRepository; import io.gdcc.xoai.dataprovider.repository.SetRepository; import io.gdcc.xoai.model.oaipmh.DeletedRecord; -import io.gdcc.xoai.model.oaipmh.Granularity; import io.gdcc.xoai.model.oaipmh.OAIPMH; import io.gdcc.xoai.xml.XmlWriter; @@ -32,6 +31,7 @@ import edu.harvard.iq.dataverse.settings.SettingsServiceBean; import edu.harvard.iq.dataverse.util.MailUtil; import edu.harvard.iq.dataverse.util.SystemConfig; +import io.gdcc.xoai.exceptions.OAIException; import org.apache.commons.lang3.StringUtils; @@ -220,7 +220,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } - + private void processRequest(HttpServletRequest httpServletRequest, HttpServletResponse response) throws ServletException, IOException { @@ -242,15 +242,8 @@ private void processRequest(HttpServletRequest httpServletRequest, HttpServletRe xmlWriter.write(handle); } - } catch (IOException ex) { - logger.warning("IO exception in Get; "+ex.getMessage()); - throw new ServletException ("IO Exception in Get", ex); - } catch (XMLStreamException xse) { - logger.warning("XML Stream exception in Get; "+xse.getMessage()); - throw new ServletException ("XML Stream Exception in Get", xse); - } catch (Exception e) { - logger.warning("Unknown exception in Get; "+e.getMessage()); - throw new ServletException ("Unknown servlet exception in Get.", e); + } catch (XMLStreamException | OAIException e) { + throw new ServletException (e); } } From f81a0101ef1cdb4d6875e457da6be7886f728ccf Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Wed, 13 Jul 2022 12:04:06 -0400 Subject: [PATCH 24/93] got rid of an inefficient/unnecessary instance of .replaceAll() (#8372) --- .../harvest/client/HarvesterServiceBean.java | 20 ++++----------- .../harvest/client/oai/OaiHandler.java | 25 +++++++++++++------ 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java index 7f34847cbf3..e7156dfe9aa 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/client/HarvesterServiceBean.java @@ -84,7 +84,7 @@ public class HarvesterServiceBean { public static final String HARVEST_RESULT_SUCCESS="success"; public static final String HARVEST_RESULT_FAILED="failed"; public static final String DATAVERSE_PROPRIETARY_METADATA_FORMAT="dataverse_json"; - public static final String DATAVERSE_PROPRIETARY_METADATA_API="/api/datasets/export?exporter="+DATAVERSE_PROPRIETARY_METADATA_FORMAT; + public static final String DATAVERSE_PROPRIETARY_METADATA_API="/api/datasets/export?exporter="+DATAVERSE_PROPRIETARY_METADATA_FORMAT+"&persistentId="; public HarvesterServiceBean() { @@ -302,8 +302,9 @@ private Long processRecord(DataverseRequest dataverseRequest, Logger hdLogger, P if (DATAVERSE_PROPRIETARY_METADATA_FORMAT.equals(oaiHandler.getMetadataPrefix())) { // Make direct call to obtain the proprietary Dataverse metadata // in JSON from the remote Dataverse server: - String extendedApiUrl = getProprietaryDataverseMetadataURL(oaiHandler.getBaseOaiUrl(), identifier); - tempFile = retrieveProprietaryDataverseMetadata(httpClient, extendedApiUrl); + String metadataApiUrl = oaiHandler.getProprietaryDataverseMetadataURL(identifier); + logger.info("calling "+metadataApiUrl); + tempFile = retrieveProprietaryDataverseMetadata(httpClient, metadataApiUrl); } else { FastGetRecord record = oaiHandler.runGetRecord(identifier); @@ -409,18 +410,7 @@ private void deleteHarvestedDatasetIfExists(String persistentIdentifier, Dataver } hdLogger.info("No dataset found for " + persistentIdentifier + ", skipping delete. "); } - - private static String getProprietaryDataverseMetadataURL(String baseURL, String identifier) { - - baseURL = baseURL.replaceAll("/oai", ""); - - StringBuilder requestURL = new StringBuilder(baseURL); - requestURL.append(DATAVERSE_PROPRIETARY_METADATA_API); - requestURL.append("&persistentId=").append(identifier); - - return requestURL.toString(); - } - + private void logBeginOaiHarvest(Logger hdLogger, HarvestingClient harvestingClient) { hdLogger.log(Level.INFO, "BEGIN HARVEST, oaiUrl=" +harvestingClient.getHarvestingUrl() diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/client/oai/OaiHandler.java b/src/main/java/edu/harvard/iq/dataverse/harvest/client/oai/OaiHandler.java index a32feeed5a7..c0a039e2d2b 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/client/oai/OaiHandler.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/client/oai/OaiHandler.java @@ -1,12 +1,11 @@ package edu.harvard.iq.dataverse.harvest.client.oai; -import io.gdcc.xoai.model.oaipmh.results.Description; import io.gdcc.xoai.model.oaipmh.Granularity; import io.gdcc.xoai.model.oaipmh.results.record.Header; import io.gdcc.xoai.model.oaipmh.results.MetadataFormat; import io.gdcc.xoai.model.oaipmh.results.Set; import io.gdcc.xoai.serviceprovider.ServiceProvider; -import io.gdcc.xoai.serviceprovider.client.JdkHttpOaiClient; //.HttpOAIClient; +import io.gdcc.xoai.serviceprovider.client.JdkHttpOaiClient; import io.gdcc.xoai.serviceprovider.exceptions.BadArgumentException; import io.gdcc.xoai.serviceprovider.exceptions.InvalidOAIResponse; import io.gdcc.xoai.serviceprovider.exceptions.NoSetHierarchyException; @@ -14,16 +13,15 @@ import io.gdcc.xoai.serviceprovider.model.Context; import io.gdcc.xoai.serviceprovider.parameters.ListIdentifiersParameters; import edu.harvard.iq.dataverse.harvest.client.FastGetRecord; +import static edu.harvard.iq.dataverse.harvest.client.HarvesterServiceBean.DATAVERSE_PROPRIETARY_METADATA_API; import edu.harvard.iq.dataverse.harvest.client.HarvestingClient; import java.io.IOException; import java.io.Serializable; -import java.io.UnsupportedEncodingException; import javax.xml.parsers.ParserConfigurationException; import org.apache.commons.lang3.StringUtils; import org.xml.sax.SAXException; import javax.xml.transform.TransformerException; -import java.net.URLEncoder; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; @@ -70,8 +68,9 @@ public OaiHandler(HarvestingClient harvestingClient) throws OaiHandlerException this.harvestingClient = harvestingClient; } - private String baseOaiUrl; //= harvestingClient.getHarvestingUrl(); - private String metadataPrefix; // = harvestingClient.getMetadataPrefix(); + private String baseOaiUrl; + private String dataverseApiUrl; // if the remote server is a Dataverse and we access its native metadata + private String metadataPrefix; private String setName; private Date fromDate; private Boolean setListTruncated = false; @@ -120,7 +119,7 @@ public boolean isSetListTruncated() { return setListTruncated; } - private ServiceProvider getServiceProvider() throws OaiHandlerException { + public ServiceProvider getServiceProvider() throws OaiHandlerException { if (serviceProvider == null) { if (baseOaiUrl == null) { throw new OaiHandlerException("Could not instantiate Service Provider, missing OAI server URL."); @@ -277,6 +276,18 @@ private ListIdentifiersParameters buildListIdentifiersParams() throws OaiHandler return mip; } + public String getProprietaryDataverseMetadataURL(String identifier) { + + if (dataverseApiUrl == null) { + dataverseApiUrl = baseOaiUrl.replaceFirst("/oai", ""); + } + + StringBuilder requestURL = new StringBuilder(dataverseApiUrl); + requestURL.append(DATAVERSE_PROPRIETARY_METADATA_API).append(identifier); + + return requestURL.toString(); + } + public void runIdentify() { // not implemented yet // (we will need it, both for validating the remote server, From b4b8ebc31a31292a92b29c03677b09454657973a Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Wed, 13 Jul 2022 17:56:37 -0400 Subject: [PATCH 25/93] mpconfig for the oai server parameters (experimental? #8372) --- .../server/web/servlet/OAIServlet.java | 32 +++++++++++++------ .../settings/SettingsServiceBean.java | 16 +--------- .../iq/dataverse/util/SystemConfig.java | 27 ---------------- .../META-INF/microprofile-config.properties | 7 ++++ 4 files changed, 31 insertions(+), 51 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java index d3876e76cf7..5eacb1addb6 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java @@ -6,7 +6,6 @@ package edu.harvard.iq.dataverse.harvest.server.web.servlet; import io.gdcc.xoai.dataprovider.DataProvider; -//import io.gdcc.xoai.dataprovider.builder.OAIRequestParametersBuilder; import io.gdcc.xoai.dataprovider.repository.Repository; import io.gdcc.xoai.dataprovider.repository.RepositoryConfiguration; import io.gdcc.xoai.dataprovider.model.Context; @@ -36,10 +35,10 @@ import java.io.IOException; -import java.util.Date; -import java.util.HashMap; import java.util.logging.Logger; import javax.ejb.EJB; +import javax.inject.Inject; +import org.eclipse.microprofile.config.inject.ConfigProperty; import javax.mail.internet.InternetAddress; import javax.servlet.ServletConfig; import javax.servlet.ServletException; @@ -47,6 +46,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.stream.XMLStreamException; +import org.eclipse.microprofile.config.Config; +import org.eclipse.microprofile.config.ConfigProvider; /** * @@ -69,6 +70,18 @@ public class OAIServlet extends HttpServlet { @EJB SystemConfig systemConfig; + + @Inject + @ConfigProperty(name = "dataverse.oai.server.maxidentifiers", defaultValue="100") + private Integer maxListIdentifiers; + + @Inject + @ConfigProperty(name = "dataverse.oai.server.maxsets", defaultValue="100") + private Integer maxListSets; + + @Inject + @ConfigProperty(name = "dataverse.oai.server.maxrecords", defaultValue="10") + private Integer maxListRecords; private static final Logger logger = Logger.getLogger("edu.harvard.iq.dataverse.harvest.server.web.servlet.OAIServlet"); // If we are going to stick with this solution - of providing a minimalist @@ -165,9 +178,10 @@ private boolean isDataverseOaiExtensionsSupported() { } private RepositoryConfiguration createRepositoryConfiguration() { - - String repositoryName = settingsService.getValueForKey(SettingsServiceBean.Key.oaiServerRepositoryName); - if (repositoryName == null) { + Config config = ConfigProvider.getConfig(); + String repositoryName = config.getOptionalValue("dataverse.oai.server.repositoryname", String.class).orElse(""); + + if (repositoryName == null || repositoryName.isEmpty()) { String dataverseName = dataverseService.getRootDataverseName(); repositoryName = StringUtils.isEmpty(dataverseName) || "Root".equals(dataverseName) ? "Test Dataverse OAI Archive" : dataverseName + " Dataverse OAI Archive"; } @@ -185,9 +199,9 @@ private RepositoryConfiguration createRepositoryConfiguration() { .withCompression("deflate") .withAdminEmail(systemEmailAddress != null ? systemEmailAddress.getAddress() : null) .withDeleteMethod(DeletedRecord.TRANSIENT) - .withMaxListIdentifiers(systemConfig.getOaiServerMaxIdentifiers()) - .withMaxListRecords(systemConfig.getOaiServerMaxRecords()) - .withMaxListSets(systemConfig.getOaiServerMaxSets()); + .withMaxListIdentifiers(maxListIdentifiers) + .withMaxListRecords(maxListRecords) + .withMaxListSets(maxListSets); return repositoryConfiguration; } diff --git a/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java index 9c40999829b..12ae777f3f8 100644 --- a/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java @@ -522,21 +522,7 @@ Whether Harvesting (OAI) service is enabled * would also work) of never muted notifications that cannot be turned off by the users. AlwaysMuted setting overrides * Nevermuted setting warning is logged. */ - NeverMuted, - /* - * The following values are for the OAI server, to limit the output of - * the ListIdentifiers, ListRecords and ListSets verbs to the number - * of records specified. Sensible defaults are going to be provided for - * these by SystemConfig. - */ - oaiServerMaxListIdentifiers, - oaiServerMaxListRecords, - oaiServerMaxListSets, - /* - * The OAI "repository name", shown by the OAI Identify verb, needs - * to be configurable as well. - */ - oaiServerRepositoryName + NeverMuted ; @Override diff --git a/src/main/java/edu/harvard/iq/dataverse/util/SystemConfig.java b/src/main/java/edu/harvard/iq/dataverse/util/SystemConfig.java index 64f08c5dd19..b3b8b5c7a9f 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/SystemConfig.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/SystemConfig.java @@ -1204,31 +1204,4 @@ public Map getCurationLabels() { } return labelMap; } - - public int getOaiServerMaxIdentifiers() { - return getIntSettingOrDefault(SettingsServiceBean.Key.oaiServerMaxListIdentifiers, 100); - } - - public int getOaiServerMaxSets() { - return getIntSettingOrDefault(SettingsServiceBean.Key.oaiServerMaxListSets, 100); - } - - public int getOaiServerMaxRecords() { - return getIntSettingOrDefault(SettingsServiceBean.Key.oaiServerMaxListRecords, 10); - } - - private int getIntSettingOrDefault(SettingsServiceBean.Key key, int defaultValue) { - String settingValue = settingsService.getValueForKey(key); - if (settingValue != null) { - try { - int intFromSetting = Integer.parseInt(settingValue); - if (intFromSetting > 0) { - return intFromSetting; - } - } catch (NumberFormatException ex) { - // will use the default - } - } - return defaultValue; } -} diff --git a/src/main/resources/META-INF/microprofile-config.properties b/src/main/resources/META-INF/microprofile-config.properties index 09d71dfbf3a..8298c883403 100644 --- a/src/main/resources/META-INF/microprofile-config.properties +++ b/src/main/resources/META-INF/microprofile-config.properties @@ -3,3 +3,10 @@ dataverse.db.host=localhost dataverse.db.port=5432 dataverse.db.user=dataverse dataverse.db.name=dataverse +# OAI SERVER +dataverse.oai.server.maxidentifiers=100 +dataverse.oai.server.maxrecords=10 +dataverse.oai.server.maxsets=100 +# the OAI repository name, as shown by the Identify verb, +# can be customized via the setting below: +#dataverse.oai.server.repositoryname= From d1504be74185f99a5d1ee6256ef22278de09982b Mon Sep 17 00:00:00 2001 From: landreev Date: Thu, 14 Jul 2022 16:25:46 -0400 Subject: [PATCH 26/93] Update src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java Co-authored-by: Oliver Bertuch --- .../harvest/server/xoai/DataverseXoaiSetRepository.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java index edbe1da8d69..90def7e97ef 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java @@ -16,7 +16,7 @@ * @author Leonid Andreev */ public class DataverseXoaiSetRepository implements SetRepository { - private static Logger logger = Logger.getLogger("edu.harvard.iq.dataverse.harvest.server.xoai.DataverseXoaiSetRepository"); + private static final Logger logger = Logger.getLogger("edu.harvard.iq.dataverse.harvest.server.xoai.DataverseXoaiSetRepository"); private OAISetServiceBean setService; From dbf1309ac664c929deb0ff16d40ae105f64527fd Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Thu, 14 Jul 2022 16:52:39 -0400 Subject: [PATCH 27/93] more tweaks per review of the PR (#8372) --- .../harvest/server/xoai/DataverseXoaiItem.java | 10 +--------- .../server/xoai/DataverseXoaiItemRepository.java | 1 - .../server/xoai/DataverseXoaiSetRepository.java | 1 - .../edu/harvard/iq/dataverse/util/SystemConfig.java | 2 +- 4 files changed, 2 insertions(+), 12 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItem.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItem.java index f7c19cee328..ecfd2f82369 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItem.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItem.java @@ -20,7 +20,7 @@ * You can think of it as an XOAI Item wrapper around the * Dataverse OAIRecord entity. */ -public class DataverseXoaiItem implements Item { +public final class DataverseXoaiItem implements Item { public DataverseXoaiItem(OAIRecord oaiRecord) { super(); @@ -29,7 +29,6 @@ public DataverseXoaiItem(OAIRecord oaiRecord) { if (!StringUtil.isEmpty(oaiRecord.getSetName())) { oaisets.add(new Set(oaiRecord.getSetName())); } - about = new ArrayList<>(); } private OAIRecord oaiRecord; @@ -53,13 +52,6 @@ public DataverseXoaiItem withDataset(Dataset dataset) { return this; } - private List about; - - @Override - public List getAbout() { - return about; - } - private Metadata metadata; @Override diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index f6ad332314d..81233b9ba31 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -43,7 +43,6 @@ public class DataverseXoaiItemRepository implements ItemRepository { private String serverUrl; public DataverseXoaiItemRepository (OAIRecordServiceBean recordService, DatasetServiceBean datasetService, String serverUrl) { - super(); this.recordService = recordService; this.datasetService = datasetService; this.serverUrl = serverUrl; diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java index 90def7e97ef..b4e275b6059 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiSetRepository.java @@ -21,7 +21,6 @@ public class DataverseXoaiSetRepository implements SetRepository { private OAISetServiceBean setService; public DataverseXoaiSetRepository (OAISetServiceBean setService) { - super(); this.setService = setService; } diff --git a/src/main/java/edu/harvard/iq/dataverse/util/SystemConfig.java b/src/main/java/edu/harvard/iq/dataverse/util/SystemConfig.java index b3b8b5c7a9f..bd27405fae5 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/SystemConfig.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/SystemConfig.java @@ -1204,4 +1204,4 @@ public Map getCurationLabels() { } return labelMap; } - } +} From daf1446d6b1ccb1168515a4e9b8b65e80f1733f4 Mon Sep 17 00:00:00 2001 From: landreev Date: Thu, 14 Jul 2022 16:58:30 -0400 Subject: [PATCH 28/93] Update src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java Co-authored-by: Oliver Bertuch --- .../harvest/server/xoai/DataverseXoaiItemRepository.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index 81233b9ba31..a9b9638c139 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -36,7 +36,7 @@ */ public class DataverseXoaiItemRepository implements ItemRepository { - private static Logger logger = Logger.getLogger("edu.harvard.iq.dataverse.harvest.server.xoai.DataverseXoaiItemRepository"); + private static final Logger logger = Logger.getLogger("edu.harvard.iq.dataverse.harvest.server.xoai.DataverseXoaiItemRepository"); private OAIRecordServiceBean recordService; private DatasetServiceBean datasetService; From bbb9b222335cf09bbbd8ff760ceb2ded59f6ccca Mon Sep 17 00:00:00 2001 From: landreev Date: Thu, 14 Jul 2022 16:58:56 -0400 Subject: [PATCH 29/93] Update src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java Co-authored-by: Oliver Bertuch --- .../harvest/server/xoai/DataverseXoaiItemRepository.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index a9b9638c139..f332f662a1d 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -38,9 +38,9 @@ public class DataverseXoaiItemRepository implements ItemRepository { private static final Logger logger = Logger.getLogger("edu.harvard.iq.dataverse.harvest.server.xoai.DataverseXoaiItemRepository"); - private OAIRecordServiceBean recordService; - private DatasetServiceBean datasetService; - private String serverUrl; + private final OAIRecordServiceBean recordService; + private final DatasetServiceBean datasetService; + private final String serverUrl; public DataverseXoaiItemRepository (OAIRecordServiceBean recordService, DatasetServiceBean datasetService, String serverUrl) { this.recordService = recordService; From aea559f2e321e4d47a39af60b61b08bfb1eb8010 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Thu, 14 Jul 2022 17:05:49 -0400 Subject: [PATCH 30/93] deleted something that wasn't being used and wasn't needed. (#8372) --- .../harvest/server/xoai/DataverseXoaiItemRepository.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index f332f662a1d..cf1be0f1a5d 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -48,9 +48,6 @@ public DataverseXoaiItemRepository (OAIRecordServiceBean recordService, DatasetS this.serverUrl = serverUrl; } - private List list = new ArrayList(); - - @Override public ItemIdentifier getItem(String identifier) throws IdDoesNotExistException { // This method is called when ListMetadataFormats request specifies From b26eee4cf966f8c96d590dfc7b2cf1721f714a24 Mon Sep 17 00:00:00 2001 From: landreev Date: Thu, 14 Jul 2022 17:08:36 -0400 Subject: [PATCH 31/93] Update src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java Co-authored-by: Oliver Bertuch --- .../harvest/server/xoai/DataverseXoaiItemRepository.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index cf1be0f1a5d..d674f86760f 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -62,8 +62,7 @@ public ItemIdentifier getItem(String identifier) throws IdDoesNotExistException for (OAIRecord oaiRecord : oaiRecords) { // We can return the first *active* record we find for this identifier. if (!oaiRecord.isRemoved()) { - xoaiItem = new DataverseXoaiItem(oaiRecord); - return xoaiItem; + return new DataverseXoaiItem(oaiRecord); } } } From d5c187180f1a366be6ef99ffcaa683c94583ae29 Mon Sep 17 00:00:00 2001 From: landreev Date: Thu, 14 Jul 2022 17:40:59 -0400 Subject: [PATCH 32/93] Update src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java Co-authored-by: Oliver Bertuch --- .../harvest/server/xoai/DataverseXoaiItemRepository.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index d674f86760f..2184e349a53 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -58,7 +58,6 @@ public ItemIdentifier getItem(String identifier) throws IdDoesNotExistException List oaiRecords = recordService.findOaiRecordsByGlobalId(identifier); if (oaiRecords != null && !oaiRecords.isEmpty()) { - DataverseXoaiItem xoaiItem = null; for (OAIRecord oaiRecord : oaiRecords) { // We can return the first *active* record we find for this identifier. if (!oaiRecord.isRemoved()) { From dc74fad45d1450ae1eb4225969765b65efd31372 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Thu, 14 Jul 2022 22:33:28 -0400 Subject: [PATCH 33/93] moved some things around, moving duplicated code into private methods (#8372) --- .../xoai/DataverseXoaiItemRepository.java | 203 +++++++----------- 1 file changed, 75 insertions(+), 128 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java index 2184e349a53..faf3cf9ddc4 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java @@ -83,49 +83,7 @@ public Item getItem(String identifier, MetadataFormat metadataFormat) throws Han for (OAIRecord oaiRecord : oaiRecords) { if (xoaiItem == null) { xoaiItem = new DataverseXoaiItem(oaiRecord); - - // If this is a "deleted" OAI oaiRecord - i.e., if someone - // has called GetRecord on a deleted oaiRecord (??), our - // job here is done. If it's a live oaiRecord, let's try to - // look up the dataset and open the pre-generated metadata - // stream. - - if (!oaiRecord.isRemoved()) { - Dataset dataset = datasetService.findByGlobalId(oaiRecord.getGlobalId()); - if (dataset == null) { - // This should not happen - but if there are no longer datasets - // associated with this persistent identifier, we should simply - // bail out. - // TODO: Consider an alternative - instead of throwing - // an IdDoesNotExist exception, mark the oaiRecord as - // "deleted" and serve it to the client (?). For all practical - // purposes, this is what this oaiRecord represents - it's - // still in the database as part of an OAI set; but the - // corresponding dataset no longer exists, because it - // must have been deleted. - // i.e. - // xoaiItem.getOaiRecord().setRemoved(true); - break; - } - - Metadata metadata; - - try { - metadata = getDatasetMetadata(dataset, metadataFormat.getPrefix()); - } catch (ExportException | IOException ex) { - // Again, this is not supposed to happen in normal operations; - // since by design only the datasets for which the metadata - // records have been pre-generated ("exported") should be - // served as "OAI Record". But, things happen. If for one - // reason or another that cached metadata file is no longer there, - // we are not going to serve this oaiRecord. - // TODO: see the comment above; and consider - // xoaiItem.getOaiRecord().setRemoved(true); - // instead. - break; - } - xoaiItem.withDataset(dataset).withMetadata(metadata); - } + xoaiItem = addMetadata(xoaiItem, metadataFormat); } else { // Adding extra set specs to the XOAI Item, if this oaiRecord // is part of multiple sets: @@ -145,119 +103,69 @@ public Item getItem(String identifier, MetadataFormat metadataFormat) throws Han @Override public ResultsPage getItemIdentifiers(List filters, MetadataFormat metadataFormat, int maxResponseLength, ResumptionToken.Value resumptionToken) throws HandlerException { - int offset = Long.valueOf(resumptionToken.getOffset()).intValue(); - String setSpec = resumptionToken.getSetSpec(); - Instant from = resumptionToken.getFrom(); - Instant until = resumptionToken.getUntil(); - - logger.fine("calling getItemIdentifiers; offset=" + offset - + ", length=" + maxResponseLength - + ", setSpec=" + setSpec - + ", from=" + from - + ", until=" + until); - - List oaiRecords = recordService.findOaiRecordsBySetName(setSpec, from, until); - - List xoaiItems = new ArrayList<>(); - if (oaiRecords != null && !oaiRecords.isEmpty()) { - - for (int i = offset; i < offset + maxResponseLength && i < oaiRecords.size(); i++) { - OAIRecord record = oaiRecords.get(i); - xoaiItems.add(new DataverseXoaiItem(record)); - } - - // Run a second pass, looking for records in this set that occur - // in *other* sets. Then we'll add these multiple sets to the - // formatted output in the header: - addExtraSets(xoaiItems, setSpec, from, until); - - boolean hasMore = offset + maxResponseLength < oaiRecords.size(); - ResultsPage result = new ResultsPage(resumptionToken, hasMore, xoaiItems, oaiRecords.size()); - logger.fine("returning result with " + xoaiItems.size() + " items."); - return result; - } + return (ResultsPage)getRepositoryRecords(metadataFormat, maxResponseLength, resumptionToken, false); - return new ResultsPage(resumptionToken, false, xoaiItems, 0); } - + @Override public ResultsPage getItems(List filters, MetadataFormat metadataFormat, int maxResponseLength, ResumptionToken.Value resumptionToken) throws HandlerException { + + return (ResultsPage)getRepositoryRecords(metadataFormat, maxResponseLength, resumptionToken, true); + } + + private ResultsPage getRepositoryRecords ( + MetadataFormat metadataFormat, + int maxResponseLength, + ResumptionToken.Value resumptionToken, + boolean fullItems) throws HandlerException { + int offset = Long.valueOf(resumptionToken.getOffset()).intValue(); String setSpec = resumptionToken.getSetSpec(); Instant from = resumptionToken.getFrom(); Instant until = resumptionToken.getUntil(); - logger.fine("calling getItems; offset=" + offset + boolean hasMore = false; + + logger.fine("calling " + (fullItems ? "getItems" : "getItemIdentifiers") + + "; offset=" + offset + ", length=" + maxResponseLength + ", setSpec=" + setSpec + ", from=" + from + ", until=" + until); - - // this is not needed, is it? (the parameters should be pre-validated - // on the gdcc/xoai side by this point) - if (metadataFormat == null) { - throw new NoMetadataFormatsException("Metadata Format is Required"); - } - + List oaiRecords = recordService.findOaiRecordsBySetName(setSpec, from, until); + + List xoaiItems = new ArrayList<>(); - List xoaiItems = new ArrayList<>(); - if (!(oaiRecords == null || oaiRecords.isEmpty())) { + if (oaiRecords != null && !oaiRecords.isEmpty()) { logger.fine("total " + oaiRecords.size() + " records returned"); - + for (int i = offset; i < offset + maxResponseLength && i < oaiRecords.size(); i++) { - OAIRecord oaiRecord = oaiRecords.get(i); - - DataverseXoaiItem xoaiItem = new DataverseXoaiItem(oaiRecord); - - // This may be a "deleted" OAI oaiRecord - i.e., a oaiRecord kept in - // the OAI set for a dataset that's no longer in this Dataverse. - // (it serves to tell the remote client to delete it from their - // holdings too). - // If this is the case here, our job is done with this oaiRecord. - // If not, if it's a live oaiRecord, let's try to - // look up the dataset and open the pre-generated metadata - // stream. + OAIRecord record = oaiRecords.get(i); + DataverseXoaiItem xoaiItem = new DataverseXoaiItem(record); - if (!oaiRecord.isRemoved()) { - Dataset dataset = datasetService.findByGlobalId(oaiRecord.getGlobalId()); - if (dataset != null) { - try { - Metadata metadata = getDatasetMetadata(dataset, metadataFormat.getPrefix()); - xoaiItem.withDataset(dataset).withMetadata(metadata); - } catch (ExportException|IOException ex) { - // Again, this is not supposed to happen in normal operations; - // since by design only the datasets for which the metadata - // records have been pre-generated ("exported") should be - // served as "OAI Record". But, things happen. If for one - // reason or another that cached metadata file is no longer there, - // we are not going to serve any metadata for this oaiRecord, - // BUT we are going to include it marked as "deleted" - // (because skipping it could potentially mess up the - // counts and offsets, in a resumption token scenario. - xoaiItem.getOaiRecord().setRemoved(true); - } - } else { - // If dataset (somehow) no longer exists (again, this is - // not supposed to happen), we will serve the oaiRecord, - // marked as "deleted" and without any metadata. - // We can't just skip it, because that could mess up the - // counts and offsets, in a resumption token scenario. - xoaiItem.getOaiRecord().setRemoved(true); - } + if (fullItems) { + // If we are cooking "full" Items (for the ListRecords verb), + // add the metadata to the item object (if not a deleted + // record, if available, etc.): + xoaiItem = addMetadata(xoaiItem, metadataFormat); } + xoaiItems.add(xoaiItem); } + // Run a second pass, looking for records in this set that occur + // in *other* sets. Then we'll add these multiple sets to the + // formatted output in the header: addExtraSets(xoaiItems, setSpec, from, until); - boolean hasMore = offset + maxResponseLength < oaiRecords.size(); - ResultsPage result = new ResultsPage(resumptionToken, hasMore, xoaiItems, oaiRecords.size()); + hasMore = offset + maxResponseLength < oaiRecords.size(); + + ResultsPage result = new ResultsPage(resumptionToken, hasMore, xoaiItems, oaiRecords.size()); logger.fine("returning result with " + xoaiItems.size() + " items."); return result; } - logger.fine("no records found"); return new ResultsPage(resumptionToken, false, xoaiItems, 0); } @@ -292,6 +200,45 @@ private void addExtraSets(Object xoaiItemsList, String setSpec, Instant from, In } } + private DataverseXoaiItem addMetadata(DataverseXoaiItem xoaiItem, MetadataFormat metadataFormat) { + // This may be a "deleted" record - i.e., a oaiRecord kept in + // the OAI set for a dataset that's no longer in this Dataverse. + // (it serves to tell the remote client to delete it from their + // holdings too). + // If this is the case here, there's nothing we need to do for this item. + // If not, if it's a live record, let's try to look up the dataset and + // open the pre-generated metadata stream. + + if (!xoaiItem.isDeleted()) { + Dataset dataset = datasetService.findByGlobalId(xoaiItem.getIdentifier()); + if (dataset != null) { + try { + Metadata metadata = getDatasetMetadata(dataset, metadataFormat.getPrefix()); + xoaiItem.withDataset(dataset).withMetadata(metadata); + } catch (ExportException | IOException ex) { + // This is not supposed to happen in normal operations; + // since by design only the datasets for which the metadata + // records have been pre-generated ("exported") should be + // served as "OAI Record". But, things happen. If for one + // reason or another that cached metadata file is no longer there, + // we are not going to serve any metadata for this oaiRecord, + // BUT we are going to include it marked as "deleted" + // (because skipping it could potentially mess up the + // counts and offsets, in a resumption token scenario. + xoaiItem.getOaiRecord().setRemoved(true); + } + } else { + // If dataset (somehow) no longer exists (again, this is + // not supposed to happen), we will serve the oaiRecord, + // marked as "deleted" and without any metadata. + // We can't just skip it, because that could mess up the + // counts and offsets, in a resumption token scenario. + xoaiItem.getOaiRecord().setRemoved(true); + } + } + return xoaiItem; + } + private Metadata getDatasetMetadata(Dataset dataset, String metadataPrefix) throws ExportException, IOException { Metadata metadata; From 2c1e5df87f9c42bf44b67376356ac4b841558593 Mon Sep 17 00:00:00 2001 From: kuhlaid <41551429+kuhlaid@users.noreply.github.com> Date: Fri, 29 Jul 2022 11:55:19 -0400 Subject: [PATCH 34/93] Update layout.html Fixing broken link to Sphinx --- doc/sphinx_bootstrap_theme/bootstrap/layout.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx_bootstrap_theme/bootstrap/layout.html b/doc/sphinx_bootstrap_theme/bootstrap/layout.html index 9d17996292b..d3ccd463814 100755 --- a/doc/sphinx_bootstrap_theme/bootstrap/layout.html +++ b/doc/sphinx_bootstrap_theme/bootstrap/layout.html @@ -106,7 +106,7 @@ {%- if hasdoc('copyright') %} {% trans path=pathto('copyright'), copyright=copyright|e %}{% endtrans %} {%- else %} - {% trans copyright=copyright|e %}

Developed at the Institute for Quantitative Social Science  |  Code available at  |  Created using Sphinx {{ sphinx_version }}
Last updated on {{ last_updated }}  |  Dataverse v. {{ version }}  |  View the latest version of Dataverse Guides

+ {% trans copyright=copyright|e %}

Developed at the Institute for Quantitative Social Science  |  Code available at  |  Created using Sphinx {{ sphinx_version }}
Last updated on {{ last_updated }}  |  Dataverse v. {{ version }}  |  View the latest version of Dataverse Guides

Copyright © {{ copyright }}

{% endtrans %} {%- endif %} {%- endif %} From aed167bd7db866bd72fb0c17dd7931043b648e74 Mon Sep 17 00:00:00 2001 From: kuhlaid <41551429+kuhlaid@users.noreply.github.com> Date: Fri, 29 Jul 2022 12:25:38 -0400 Subject: [PATCH 35/93] Update docsdataverse_org.css Adding style to highlight current page in the menu --- doc/sphinx-guides/source/_static/docsdataverse_org.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx-guides/source/_static/docsdataverse_org.css b/doc/sphinx-guides/source/_static/docsdataverse_org.css index e4afe89e217..da4ba06ddd4 100755 --- a/doc/sphinx-guides/source/_static/docsdataverse_org.css +++ b/doc/sphinx-guides/source/_static/docsdataverse_org.css @@ -68,7 +68,7 @@ a.headerlink { #sidebar.bs-sidenav { background-color: #f8d5b8; } -#sidebar.bs-sidenav .nav > li > a:hover, #sidebar.bs-sidenav .nav > li > a:focus { +#sidebar.bs-sidenav .nav > li > a:hover, #sidebar.bs-sidenav .nav > li > a:focus, #sidebar.bs-sidenav .nav > li > a.current { background-color: #fbf4c5; border-right: 1px solid #dbd8e0; text-decoration: none; From 10bc4646bc9f52f557959fdda43c6a206d60d276 Mon Sep 17 00:00:00 2001 From: kuhlaid <41551429+kuhlaid@users.noreply.github.com> Date: Fri, 29 Jul 2022 13:30:20 -0400 Subject: [PATCH 36/93] Update dataset-semantic-metadata-api.rst Switching @context from a link to inline literal since this text should not link to anything --- .../source/developers/dataset-semantic-metadata-api.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx-guides/source/developers/dataset-semantic-metadata-api.rst b/doc/sphinx-guides/source/developers/dataset-semantic-metadata-api.rst index 7abae535276..85a44da48c6 100644 --- a/doc/sphinx-guides/source/developers/dataset-semantic-metadata-api.rst +++ b/doc/sphinx-guides/source/developers/dataset-semantic-metadata-api.rst @@ -74,7 +74,7 @@ To delete metadata for a Dataset, send a json-ld representation of the fields to curl -X PUT -H X-Dataverse-key:$API_TOKEN -H 'Content-Type: application/ld+json' -d '{"https://dataverse.org/schema/core#restrictions":"No restrictions"}' "$SERVER_URL/api/datasets/:persistentId/metadata/delete?persistentId=$DATASET_PID" -Note, this example uses the term URI directly rather than adding an '@context' element. You can use either form in any of these API calls. +Note, this example uses the term URI directly rather than adding an ``@context`` element. You can use either form in any of these API calls. You should expect a 200 ("OK") response indicating whether a draft Dataset version was created or an existing draft was updated. From 0893d172f72e87803da00b183f4ad1d6da67b280 Mon Sep 17 00:00:00 2001 From: kuhlaid <41551429+kuhlaid@users.noreply.github.com> Date: Fri, 29 Jul 2022 17:07:32 -0400 Subject: [PATCH 37/93] Update native-api.rst Changing openprovenance.org to use the https (because the site seems to only be using HTTPS and the HTTP URL is not redirecting to the HTTPS URL and is breaking page) --- doc/sphinx-guides/source/api/native-api.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx-guides/source/api/native-api.rst b/doc/sphinx-guides/source/api/native-api.rst index cbf9e6c9128..1f85ee02825 100644 --- a/doc/sphinx-guides/source/api/native-api.rst +++ b/doc/sphinx-guides/source/api/native-api.rst @@ -2513,7 +2513,7 @@ The fully expanded example above (without environment variables) looks like this curl -H "X-Dataverse-key:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -X POST "https://demo.dataverse.org/api/files/:persistentId/prov-freeform?persistentId=doi:10.5072/FK2/AAA000" -H "Content-type:application/json" --upload-file provenance.json -See a sample JSON file :download:`file-provenance.json <../_static/api/file-provenance.json>` from http://openprovenance.org (c.f. Huynh, Trung Dong and Moreau, Luc (2014) ProvStore: a public provenance repository. At 5th International Provenance and Annotation Workshop (IPAW'14), Cologne, Germany, 09-13 Jun 2014. pp. 275-277). +See a sample JSON file :download:`file-provenance.json <../_static/api/file-provenance.json>` from https://openprovenance.org (c.f. Huynh, Trung Dong and Moreau, Luc (2014) ProvStore: a public provenance repository. At 5th International Provenance and Annotation Workshop (IPAW'14), Cologne, Germany, 09-13 Jun 2014. pp. 275-277). Delete Provenance JSON for an uploaded file ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ From 1d5ec876de31a7bcb06b7a8bf78895a00e469852 Mon Sep 17 00:00:00 2001 From: kuhlaid <41551429+kuhlaid@users.noreply.github.com> Date: Sun, 31 Jul 2022 20:35:38 -0400 Subject: [PATCH 38/93] Update index.rst Removing index links because they no longer link to anything --- doc/sphinx-guides/source/index.rst | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/sphinx-guides/source/index.rst b/doc/sphinx-guides/source/index.rst index f7e81756e5b..148518d2ce5 100755 --- a/doc/sphinx-guides/source/index.rst +++ b/doc/sphinx-guides/source/index.rst @@ -73,6 +73,4 @@ If you have a **security issue** to report, please email `security@dataverse.org Indices and Tables ------------------ -* :ref:`genindex` -* :ref:`modindex` * :ref:`search` From 6b9d175cd46be347c157f249e01b243f96d9824c Mon Sep 17 00:00:00 2001 From: kuhlaid <41551429+kuhlaid@users.noreply.github.com> Date: Sun, 31 Jul 2022 20:43:44 -0400 Subject: [PATCH 39/93] Update metadatacustomization.rst Fixing link to https://orcid.org --- doc/sphinx-guides/source/admin/metadatacustomization.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx-guides/source/admin/metadatacustomization.rst b/doc/sphinx-guides/source/admin/metadatacustomization.rst index 094f310a156..2ee68ccbaa5 100644 --- a/doc/sphinx-guides/source/admin/metadatacustomization.rst +++ b/doc/sphinx-guides/source/admin/metadatacustomization.rst @@ -565,7 +565,7 @@ In general, the external vocabulary support mechanism may be a better choice for The specifics of the user interface for entering/selecting a vocabulary term and how that term is then displayed are managed by third-party Javascripts. The initial Javascripts that have been created provide auto-completion, displaying a list of choices that match what the user has typed so far, but other interfaces, such as displaying a tree of options for a hierarchical vocabulary, are possible. Similarly, existing scripts do relatively simple things for displaying a term - showing the term's name in the appropriate language and providing a link to an external URL with more information, but more sophisticated displays are possible. -Scripts supporting use of vocabularies from services supporting the SKOMOS protocol (see https://skosmos.org) and retrieving ORCIDs (from https:/orcid.org) are available https://github.com/gdcc/dataverse-external-vocab-support. (Custom scripts can also be used and community members are encouraged to share new scripts through the dataverse-external-vocab-support repository.) +Scripts supporting use of vocabularies from services supporting the SKOMOS protocol (see https://skosmos.org) and retrieving ORCIDs (from https://orcid.org) are available https://github.com/gdcc/dataverse-external-vocab-support. (Custom scripts can also be used and community members are encouraged to share new scripts through the dataverse-external-vocab-support repository.) Configuration involves specifying which fields are to be mapped, whether free-text entries are allowed, which vocabulary(ies) should be used, what languages those vocabulary(ies) are available in, and several service protocol and service instance specific parameters. These are all defined in the :ref:`:CVocConf <:CVocConf>` setting as a JSON array. Details about the required elements as well as example JSON arrays are available at https://github.com/gdcc/dataverse-external-vocab-support, along with an example metadata block that can be used for testing. From 01e1d5291b01de7bb79b329ce3ba2b9a3049ce59 Mon Sep 17 00:00:00 2001 From: kuhlaid <41551429+kuhlaid@users.noreply.github.com> Date: Sun, 31 Jul 2022 20:55:50 -0400 Subject: [PATCH 40/93] Update prerequisites.rst Fixing URL to the R Project --- doc/sphinx-guides/source/installation/prerequisites.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/sphinx-guides/source/installation/prerequisites.rst b/doc/sphinx-guides/source/installation/prerequisites.rst index 0ad3bf600c9..b7a01ea2ce8 100644 --- a/doc/sphinx-guides/source/installation/prerequisites.rst +++ b/doc/sphinx-guides/source/installation/prerequisites.rst @@ -288,11 +288,11 @@ If the installed location of the convert executable is different from ``/usr/bin (see the :doc:`config` section for more information on the JVM options) -R +The R Project for Statistical Computing - -The Dataverse Software uses `R `_ to handle -tabular data files. The instructions below describe a **minimal** R +The Dataverse Software uses `R Project `_ to handle +tabular data files. The instructions below describe a **minimal** R Project installation. It will allow you to ingest R (.RData) files as tabular data and to export tabular data as .RData files. R can be considered an optional component, meaning that if you don't have R installed, you will still be able to run and @@ -300,7 +300,7 @@ use the Dataverse Software - but the functionality specific to tabular data mentioned above will not be available to your users. -Installing R +Installing R Project ============ For RHEL/derivative, the EPEL distribution is strongly recommended: From 1968c752e1c554060e99b19274a4aff8fc0982a3 Mon Sep 17 00:00:00 2001 From: kuhlaid <41551429+kuhlaid@users.noreply.github.com> Date: Sun, 31 Jul 2022 21:02:51 -0400 Subject: [PATCH 41/93] Update config.rst Fixing link to PIP --- doc/sphinx-guides/source/installation/config.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx-guides/source/installation/config.rst b/doc/sphinx-guides/source/installation/config.rst index 00d7654f06f..dd80464fd62 100644 --- a/doc/sphinx-guides/source/installation/config.rst +++ b/doc/sphinx-guides/source/installation/config.rst @@ -474,7 +474,7 @@ named config in the same folder") Console Commands to Set Up Access Configuration ############################################### -Begin by installing the CLI tool `pip `_ to install the +Begin by installing the CLI tool `pip (package installer for Python) `_ to install the `AWS command line interface `_ if you don't have it. First, we'll get our access keys set up. If you already have your access keys configured, skip this step. From ab8d609efec85aef5ef0751441a8462db5706926 Mon Sep 17 00:00:00 2001 From: kuhlaid <41551429+kuhlaid@users.noreply.github.com> Date: Sun, 31 Jul 2022 21:13:43 -0400 Subject: [PATCH 42/93] Update integrations.rst Fixing Renku documentation link --- doc/sphinx-guides/source/admin/integrations.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx-guides/source/admin/integrations.rst b/doc/sphinx-guides/source/admin/integrations.rst index f6ca34bf3d4..b29e51b581d 100644 --- a/doc/sphinx-guides/source/admin/integrations.rst +++ b/doc/sphinx-guides/source/admin/integrations.rst @@ -57,7 +57,7 @@ their research results and retain links to imported and exported data. Users can organize their data in "Datasets", which can be exported to a Dataverse installation via the command-line interface (CLI). -Renku dataset documentation: https://renku-python.readthedocs.io/en/latest/reference/commands.html#module-renku.cli.dataset +Renku documentation: https://renku-python.readthedocs.io Flagship deployment of the Renku platform: https://renkulab.io From ff223d7a4bd360315cf61bfc7144885bd359444e Mon Sep 17 00:00:00 2001 From: Thibault Coupin Date: Tue, 24 May 2022 17:19:29 +0200 Subject: [PATCH 43/93] Use production date in citation for harvested dataset --- .../harvard/iq/dataverse/DataCitation.java | 38 +++++++++++++------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/DataCitation.java b/src/main/java/edu/harvard/iq/dataverse/DataCitation.java index 9027be1350b..325533fb03b 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DataCitation.java +++ b/src/main/java/edu/harvard/iq/dataverse/DataCitation.java @@ -713,25 +713,39 @@ private String flattenHtml(String html) { private Date getDateFrom(DatasetVersion dsv) { Date citationDate = null; - SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); - if (!dsv.getDataset().isHarvested()) { - citationDate = dsv.getCitationDate(); - if (citationDate == null) { - if (dsv.getDataset().getCitationDate() != null) { - citationDate = dsv.getDataset().getCitationDate(); - } else { // for drafts - citationDate = dsv.getLastUpdateTime(); - } - } - } else { + + if (dsv.getDataset().isHarvested()) { try { - citationDate= sdf.parse(dsv.getDistributionDate()); + SimpleDateFormat sdffull = new SimpleDateFormat("yyyy-MM-dd"); + citationDate = sdffull.parse(dsv.getProductionDate()); } catch (ParseException ex) { // ignore } catch (Exception ex) { // ignore } + + if (citationDate == null) { + try { + SimpleDateFormat sdfshort = new SimpleDateFormat("yyyy"); + citationDate = sdfshort.parse(dsv.getDistributionDate()); + } catch (ParseException ex) { + // ignore + } catch (Exception ex) { + // ignore + } + } } + + if (citationDate == null) { + if (dsv.getCitationDate() != null) { + citationDate = dsv.getCitationDate(); + } else if (dsv.getDataset().getCitationDate() != null) { + citationDate = dsv.getDataset().getCitationDate(); + } else { // for drafts + citationDate = dsv.getLastUpdateTime(); + } + } + if (citationDate == null) { //As a last resort, pick the current date logger.warning("Unable to find citation date for datasetversion: " + dsv.getId()); From ddbd3e5dbeba25a0aa1c78f34b5fef74a15817d0 Mon Sep 17 00:00:00 2001 From: Thibault Coupin Date: Mon, 30 May 2022 09:16:15 +0200 Subject: [PATCH 44/93] add release note --- .../8732-date-in-citation-harvested-datasets.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 doc/release-notes/8732-date-in-citation-harvested-datasets.md diff --git a/doc/release-notes/8732-date-in-citation-harvested-datasets.md b/doc/release-notes/8732-date-in-citation-harvested-datasets.md new file mode 100644 index 00000000000..85f2d24a8a9 --- /dev/null +++ b/doc/release-notes/8732-date-in-citation-harvested-datasets.md @@ -0,0 +1,7 @@ +Fix the year displayed in citation for harvested dataset, specialy for oai_dc format. + +For normal datasets, the date used is the "citation date" which is by default the publication date (the first release date) (https://guides.dataverse.org/en/latest/api/native-api.html?highlight=citationdate#set-citation-date-field-type-for-a-dataset). + +But for a harvested dataset, the distribution date is used instead and this date is not always present in the harvested metadata. With oai_dc format the date tag if used as production date. + +Now, the production date is used for harvested dataset in addition to distribution date. \ No newline at end of file From 0715520e5343945b512e4b94ade39fa3e9142f7c Mon Sep 17 00:00:00 2001 From: Thibault Coupin Date: Tue, 24 May 2022 18:08:40 +0200 Subject: [PATCH 45/93] OAIDC export use publication date if prodcution date is not set --- .../dataverse/export/dublincore/DublinCoreExportUtil.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/export/dublincore/DublinCoreExportUtil.java b/src/main/java/edu/harvard/iq/dataverse/export/dublincore/DublinCoreExportUtil.java index 9278faf1f8f..8b1531e67e0 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/dublincore/DublinCoreExportUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/dublincore/DublinCoreExportUtil.java @@ -172,7 +172,11 @@ private static void createOAIDC(XMLStreamWriter xmlw, DatasetDTO datasetDto, Str writeFullElementList(xmlw, dcFlavor+":"+"language", dto2PrimitiveList(version, DatasetFieldConstant.language)); - writeFullElement(xmlw, dcFlavor+":"+"date", dto2Primitive(version, DatasetFieldConstant.productionDate)); + String date = dto2Primitive(version, DatasetFieldConstant.productionDate); + if (date == null) { + date = datasetDto.getPublicationDate(); + } + writeFullElement(xmlw, dcFlavor+":"+"date", date); writeFullElement(xmlw, dcFlavor+":"+"contributor", dto2Primitive(version, DatasetFieldConstant.depositor)); From 7254c0cd28ec0fbf7606090f2cf138674e950c13 Mon Sep 17 00:00:00 2001 From: Thibault Coupin Date: Mon, 12 Sep 2022 15:19:36 +0200 Subject: [PATCH 46/93] improve date parsing --- .../harvard/iq/dataverse/DataCitation.java | 20 ++-------- .../harvard/iq/dataverse/util/DateUtil.java | 38 +++++++++++++++++++ 2 files changed, 41 insertions(+), 17 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/DataCitation.java b/src/main/java/edu/harvard/iq/dataverse/DataCitation.java index 325533fb03b..abe3cc3e6d7 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DataCitation.java +++ b/src/main/java/edu/harvard/iq/dataverse/DataCitation.java @@ -33,6 +33,7 @@ import javax.xml.stream.XMLStreamWriter; import edu.harvard.iq.dataverse.util.BundleUtil; +import edu.harvard.iq.dataverse.util.DateUtil; import org.apache.commons.text.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; @@ -715,24 +716,9 @@ private Date getDateFrom(DatasetVersion dsv) { Date citationDate = null; if (dsv.getDataset().isHarvested()) { - try { - SimpleDateFormat sdffull = new SimpleDateFormat("yyyy-MM-dd"); - citationDate = sdffull.parse(dsv.getProductionDate()); - } catch (ParseException ex) { - // ignore - } catch (Exception ex) { - // ignore - } - + citationDate = DateUtil.parseDate(dsv.getProductionDate()); if (citationDate == null) { - try { - SimpleDateFormat sdfshort = new SimpleDateFormat("yyyy"); - citationDate = sdfshort.parse(dsv.getDistributionDate()); - } catch (ParseException ex) { - // ignore - } catch (Exception ex) { - // ignore - } + citationDate = DateUtil.parseDate(dsv.getDistributionDate()); } } diff --git a/src/main/java/edu/harvard/iq/dataverse/util/DateUtil.java b/src/main/java/edu/harvard/iq/dataverse/util/DateUtil.java index d6f22471f68..669780b9436 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/DateUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/DateUtil.java @@ -16,7 +16,9 @@ */ public class DateUtil { + public static String YEAR_PATTERN = "yyyy"; public static String YEAR_DASH_MONTH_PATTERN = "yyyy-MM"; + public static String YEAR_DASH_MONTH_DASH_DAY_PATTERN = "yyyy-MM-dd"; public static String formatDate(Date dateToformat) { String formattedDate; @@ -63,4 +65,40 @@ public static String formatDate(Timestamp datetimeToformat) { } } + public static Date parseDate(String dateString) { + SimpleDateFormat sdf; + Date date; + + // YYYY-MM-DD + date = parseDate(dateString, YEAR_DASH_MONTH_DASH_DAY_PATTERN); + if (date != null) { + return date; + } + + // YYYY-MM + date = parseDate(dateString, YEAR_DASH_MONTH_PATTERN); + if (date != null) { + return date; + } + + // YYYT + date = parseDate(dateString, YEAR_PATTERN); + return date; + + } + + public static Date parseDate(String dateString, String format) { + + try { + SimpleDateFormat sdf = new SimpleDateFormat(format); + Date date = sdf.parse(dateString); + return date; + } catch (ParseException ex) { + // ignore + } catch (Exception ex) { + // ignore + } + return null; + } + } From 8d034d026b4054ab44cdf42c5a3fdf99ff0fc939 Mon Sep 17 00:00:00 2001 From: Thibault Coupin Date: Tue, 13 Sep 2022 07:35:31 +0200 Subject: [PATCH 47/93] use publication date in full dc --- .../dataverse/export/dublincore/DublinCoreExportUtil.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/export/dublincore/DublinCoreExportUtil.java b/src/main/java/edu/harvard/iq/dataverse/export/dublincore/DublinCoreExportUtil.java index 8b1531e67e0..4409d2340b1 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/dublincore/DublinCoreExportUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/dublincore/DublinCoreExportUtil.java @@ -122,7 +122,12 @@ private static void createDC(XMLStreamWriter xmlw, DatasetDTO datasetDto, String writeFullElementList(xmlw, dcFlavor+":"+"language", dto2PrimitiveList(version, DatasetFieldConstant.language)); writeRelPublElement(xmlw, version, dcFlavor); - writeFullElement(xmlw, dcFlavor+":"+"date", dto2Primitive(version, DatasetFieldConstant.productionDate)); + + String date = dto2Primitive(version, DatasetFieldConstant.productionDate); + if (date == null) { + date = datasetDto.getPublicationDate(); + } + writeFullElement(xmlw, dcFlavor+":"+"date", date); writeFullElement(xmlw, dcFlavor+":"+"contributor", dto2Primitive(version, DatasetFieldConstant.depositor)); From 72db330c1d9c9a8ce664ae44e686d4aa989bf63f Mon Sep 17 00:00:00 2001 From: chenganj Date: Mon, 26 Sep 2022 15:51:31 -0400 Subject: [PATCH 48/93] license internationalization - first commit --- .../harvard/iq/dataverse/util/MailUtil.java | 26 +++++++++++-------- src/main/java/propertyFiles/Bundle.properties | 20 +++++++------- .../iq/dataverse/util/MailUtilTest.java | 16 +++++++++--- 3 files changed, 37 insertions(+), 25 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/util/MailUtil.java b/src/main/java/edu/harvard/iq/dataverse/util/MailUtil.java index 55c6f4d83d6..a2c4039f04c 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/MailUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/MailUtil.java @@ -32,6 +32,10 @@ public static InternetAddress parseSystemAddress(String systemEmail) { public static String getSubjectTextBasedOnNotification(UserNotification userNotification, Object objectOfNotification) { List rootDvNameAsList = Arrays.asList(BrandingUtil.getInstallationBrandName()); + String datasetDisplayName = ""; + if (objectOfNotification != null) { + datasetDisplayName = ((Dataset)objectOfNotification).getDisplayName(); + } switch (userNotification.getType()) { case ASSIGNROLE: return BundleUtil.getStringFromBundle("notification.email.assign.role.subject", rootDvNameAsList); @@ -46,23 +50,23 @@ public static String getSubjectTextBasedOnNotification(UserNotification userNoti case REJECTFILEACCESS: return BundleUtil.getStringFromBundle("notification.email.rejected.file.access.subject", rootDvNameAsList); case DATASETCREATED: - return BundleUtil.getStringFromBundle("notification.email.dataset.created.subject", Arrays.asList(rootDvNameAsList.get(0), ((Dataset)objectOfNotification).getDisplayName())); + return BundleUtil.getStringFromBundle("notification.email.dataset.created.subject", Arrays.asList(rootDvNameAsList.get(0), datasetDisplayName)); case CREATEDS: - return BundleUtil.getStringFromBundle("notification.email.create.dataset.subject", rootDvNameAsList); + return BundleUtil.getStringFromBundle("notification.email.create.dataset.subject", Arrays.asList(rootDvNameAsList.get(0), datasetDisplayName)); case SUBMITTEDDS: - return BundleUtil.getStringFromBundle("notification.email.submit.dataset.subject", rootDvNameAsList); + return BundleUtil.getStringFromBundle("notification.email.submit.dataset.subject", Arrays.asList(rootDvNameAsList.get(0), datasetDisplayName)); case PUBLISHEDDS: - return BundleUtil.getStringFromBundle("notification.email.publish.dataset.subject", rootDvNameAsList); + return BundleUtil.getStringFromBundle("notification.email.publish.dataset.subject", Arrays.asList(rootDvNameAsList.get(0), datasetDisplayName)); case PUBLISHFAILED_PIDREG: - return BundleUtil.getStringFromBundle("notification.email.publishFailure.dataset.subject", rootDvNameAsList); + return BundleUtil.getStringFromBundle("notification.email.publishFailure.dataset.subject", Arrays.asList(rootDvNameAsList.get(0), datasetDisplayName)); case RETURNEDDS: - return BundleUtil.getStringFromBundle("notification.email.returned.dataset.subject", rootDvNameAsList); + return BundleUtil.getStringFromBundle("notification.email.returned.dataset.subject", Arrays.asList(rootDvNameAsList.get(0), datasetDisplayName)); case WORKFLOW_SUCCESS: - return BundleUtil.getStringFromBundle("notification.email.workflow.success.subject", rootDvNameAsList); + return BundleUtil.getStringFromBundle("notification.email.workflow.success.subject", Arrays.asList(rootDvNameAsList.get(0), datasetDisplayName)); case WORKFLOW_FAILURE: - return BundleUtil.getStringFromBundle("notification.email.workflow.failure.subject", rootDvNameAsList); + return BundleUtil.getStringFromBundle("notification.email.workflow.failure.subject", Arrays.asList(rootDvNameAsList.get(0), datasetDisplayName)); case STATUSUPDATED: - return BundleUtil.getStringFromBundle("notification.email.status.change.subject", rootDvNameAsList); + return BundleUtil.getStringFromBundle("notification.email.status.change.subject", Arrays.asList(rootDvNameAsList.get(0), datasetDisplayName)); case CREATEACC: return BundleUtil.getStringFromBundle("notification.email.create.account.subject", rootDvNameAsList); case CHECKSUMFAIL: @@ -83,9 +87,9 @@ public static String getSubjectTextBasedOnNotification(UserNotification userNoti case APIGENERATED: return BundleUtil.getStringFromBundle("notification.email.apiTokenGenerated.subject", rootDvNameAsList); case INGESTCOMPLETED: - return BundleUtil.getStringFromBundle("notification.email.ingestCompleted.subject", rootDvNameAsList); + return BundleUtil.getStringFromBundle("notification.email.ingestCompleted.subject", Arrays.asList(rootDvNameAsList.get(0), datasetDisplayName)); case INGESTCOMPLETEDWITHERRORS: - return BundleUtil.getStringFromBundle("notification.email.ingestCompletedWithErrors.subject", rootDvNameAsList); + return BundleUtil.getStringFromBundle("notification.email.ingestCompletedWithErrors.subject", Arrays.asList(rootDvNameAsList.get(0), datasetDisplayName)); } return ""; } diff --git a/src/main/java/propertyFiles/Bundle.properties b/src/main/java/propertyFiles/Bundle.properties index 5035325ee8d..32ae282edc2 100644 --- a/src/main/java/propertyFiles/Bundle.properties +++ b/src/main/java/propertyFiles/Bundle.properties @@ -686,28 +686,28 @@ dashboard.card.datamove.dataset.command.error.indexingProblem=Dataset could not #MailServiceBean.java notification.email.create.dataverse.subject={0}: Your dataverse has been created -notification.email.create.dataset.subject={0}: Your dataset has been created +notification.email.create.dataset.subject={0}: Dataset "{1}" has been created notification.email.dataset.created.subject={0}: Dataset "{1}" has been created notification.email.request.file.access.subject={0}: Access has been requested for a restricted file notification.email.grant.file.access.subject={0}: You have been granted access to a restricted file notification.email.rejected.file.access.subject={0}: Your request for access to a restricted file has been rejected -notification.email.submit.dataset.subject={0}: Your dataset has been submitted for review -notification.email.publish.dataset.subject={0}: Your dataset has been published -notification.email.publishFailure.dataset.subject={0}: Failed to publish your dataset -notification.email.returned.dataset.subject={0}: Your dataset has been returned -notification.email.workflow.success.subject={0}: Your dataset has been processed +notification.email.submit.dataset.subject={0}: Dataset "{1}" has been submitted for review +notification.email.publish.dataset.subject={0}: Dataset "{1}" has been published +notification.email.publishFailure.dataset.subject={0}: Failed to publish your dataset "{1}" +notification.email.returned.dataset.subject={0}: Dataset "{1}" has been returned +notification.email.workflow.success.subject={0}: Dataset "{1}" has been processed notification.email.workflow.success=A workflow running on {0} (view at {1} ) succeeded: {2} -notification.email.workflow.failure.subject={0}: Failed to process your dataset +notification.email.workflow.failure.subject={0}: Failed to process your dataset "{1}" notification.email.workflow.failure=A workflow running on {0} (view at {1} ) failed: {2} -notification.email.status.change.subject={0}: Dataset Status Change +notification.email.status.change.subject={0}: Dataset "{1}" Status Change notification.email.status.change=The Status of the dataset ({0}) has changed to {1} notification.email.workflow.nullMessage=No additional message sent from the workflow. notification.email.create.account.subject={0}: Your account has been created notification.email.assign.role.subject={0}: You have been assigned a role notification.email.revoke.role.subject={0}: Your role has been revoked notification.email.verifyEmail.subject={0}: Verify your email address -notification.email.ingestCompleted.subject={0}: Dataset status -notification.email.ingestCompletedWithErrors.subject={0}: Dataset status +notification.email.ingestCompleted.subject={0}: Dataset "{1}" status +notification.email.ingestCompletedWithErrors.subject={0}: Dataset "{1}" status notification.email.greeting=Hello, \n notification.email.greeting.html=Hello,
# Bundle file editors, please note that "notification.email.welcome" is used in a unit test diff --git a/src/test/java/edu/harvard/iq/dataverse/util/MailUtilTest.java b/src/test/java/edu/harvard/iq/dataverse/util/MailUtilTest.java index 4363d1dd3c9..61024328bd1 100644 --- a/src/test/java/edu/harvard/iq/dataverse/util/MailUtilTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/util/MailUtilTest.java @@ -98,25 +98,33 @@ public void testSubjectRejectFileAccess() { @Test public void testSubjectCreateDataset() { userNotification.setType(UserNotification.Type.CREATEDS); - assertEquals("LibraScholar: Your dataset has been created", MailUtil.getSubjectTextBasedOnNotification(userNotification, null)); + String output = MailUtil.getSubjectTextBasedOnNotification(userNotification, null) ; + System.out.println((" JAYANTHY 1=============== " + output )); + assertEquals("LibraScholar: Dataset \"\" has been created", MailUtil.getSubjectTextBasedOnNotification(userNotification, null)); } @Test public void testSubjectSubmittedDS() { userNotification.setType(UserNotification.Type.SUBMITTEDDS); - assertEquals("LibraScholar: Your dataset has been submitted for review", MailUtil.getSubjectTextBasedOnNotification(userNotification, null)); + String output = MailUtil.getSubjectTextBasedOnNotification(userNotification, null) ; + System.out.println((" JAYANTHY 2=============== " + output )); + assertEquals("LibraScholar: Dataset \"\" has been submitted for review", MailUtil.getSubjectTextBasedOnNotification(userNotification, null)); } @Test public void testSubjectPublishedDS() { userNotification.setType(UserNotification.Type.PUBLISHEDDS); - assertEquals("LibraScholar: Your dataset has been published", MailUtil.getSubjectTextBasedOnNotification(userNotification, null)); + String output = MailUtil.getSubjectTextBasedOnNotification(userNotification, null) ; + System.out.println((" JAYANTHY 3=============== " + output )); + assertEquals("LibraScholar: Dataset \"\" has been published", MailUtil.getSubjectTextBasedOnNotification(userNotification, null)); } @Test public void testSubjectReturnedDS() { userNotification.setType(UserNotification.Type.RETURNEDDS); - assertEquals("LibraScholar: Your dataset has been returned", MailUtil.getSubjectTextBasedOnNotification(userNotification, null)); + String output = MailUtil.getSubjectTextBasedOnNotification(userNotification, null) ; + System.out.println((" JAYANTHY 4=============== " + output )); + assertEquals("LibraScholar: Dataset \"\" has been returned", MailUtil.getSubjectTextBasedOnNotification(userNotification, null)); } @Test From 34585864b847f2ad1954ec64f8cfeeb05e3b2529 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Tue, 4 Oct 2022 14:56:36 -0400 Subject: [PATCH 49/93] document release tasks #9019 --- .../source/developers/making-releases.rst | 83 ++++++++++++++++--- 1 file changed, 70 insertions(+), 13 deletions(-) diff --git a/doc/sphinx-guides/source/developers/making-releases.rst b/doc/sphinx-guides/source/developers/making-releases.rst index 53fc11a5915..084d0fbba3e 100755 --- a/doc/sphinx-guides/source/developers/making-releases.rst +++ b/doc/sphinx-guides/source/developers/making-releases.rst @@ -10,7 +10,7 @@ Introduction See :doc:`version-control` for background on our branching strategy. -The steps below describe making both normal releases and hotfix releases. +The steps below describe making both regular releases and hotfix releases. Write Release Notes ------------------- @@ -43,49 +43,106 @@ Increment the version number to the milestone (e.g. 5.10.1) in the following two - modules/dataverse-parent/pom.xml -> ```` -> ```` (e.g. `pom.xml commit `_) - doc/sphinx-guides/source/conf.py (two places, e.g. `conf.py commit `_) -Add the version being released to the lists in the following two files: +Add the version being released to the lists in the following file: - doc/sphinx-guides/source/versions.rst (e.g. `versions.rst commit `_) Check in the Changes Above into a Release Branch and Merge It ------------------------------------------------------------- -For any ordinary release, make the changes above in the release branch you created, make a pull request, and merge it into the "develop" branch. Like usual, you can safely delete the branch after the merge is complete. +For a regular release, make the changes above in the release branch you created, make a pull request, and merge it into the "develop" branch. Like usual, you can safely delete the branch after the merge is complete. If you are making a hotfix release, make the pull request against the "master" branch. Do not delete the branch after merging because we will later merge it into the "develop" branch to pick up the hotfix. More on this later. -Either way, as usual, you should ensure that all tests are passing. Please note that you might need to bump the version in `jenkins.yml `_ in dataverse-ansible to get the tests to run. +Either way, as usual, you should ensure that all tests are passing. Please note that you will need to bump the version in `jenkins.yml `_ in dataverse-ansible to get the tests to pass. Consider doing this before making the pull request. Alternatively, you can bump jenkins.yml after making the pull request and re-run the Jenkins job to make sure tests pass. Merge "develop" into "master" ----------------------------- -Note: If you are making a hotfix release, the "develop" branch is not involved so you can skip this step. +If this is a regular (non-hotfix) release, create a pull request to merge the "develop" branch into the "master" branch using this "compare" link: https://github.com/IQSS/dataverse/compare/master...develop -The "develop" branch should be merged into "master" before tagging. +Once the tests have passed, merge the pull request. + +If this is a hotfix release, skip this step (the "develop" branch is not involved until later). + +Build the Guides for the Release +-------------------------------- + +Go to https://jenkins.dataverse.org/job/guides.dataverse.org/ and make the following adjustments to the config: + +- Repository URL: ``https://github.com/IQSS/dataverse.git`` +- Branch Specifier (blank for 'any'): ``*/master`` +- ``VERSION`` (under "Build Steps"): ``5.10.1`` (for example) + +Click "Save" then "Build Now". + +Make sure the guides directory appears in the expected location such as https://guides.dataverse.org/en/5.10.1/ + +As described below, we'll soon point the "latest" symlink to that new directory. Create a Draft Release on GitHub -------------------------------- -Create a draft release at https://github.com/IQSS/dataverse/releases/new +Go to https://github.com/IQSS/dataverse/releases/new to start creating a draft release. + +- Under "Choose a tag" you will be creating a new tag. Have it start with a "v" such as ``v5.10.1``. Click "Create new tag on publish". +- Under "Target" select ``master`` as the branch. +- Under "Release title" use the same name as the tag such as ``v5.10.1``. +- In the description, copy and paste the content from the release notes .md file created in the "Write Release Notes" steps above. +- Click "Save draft" because we do not want to publish the release yet. + +At this point you can send around the draft release for any final feedback. Links to the guides for this release should be working now, since you build them above. + +Make corrections to the draft, if necessary. It will be out of sync with the .md file, but that's ok (`#7988 `_ is tracking this). -The "tag version" and "title" should be the number of the milestone with a "v" in front (i.e. v5.10.1). +Run a Build to Create the War File +---------------------------------- -Copy in the content from the .md file created in the "Write Release Notes" steps above. +Go to https://jenkins.dataverse.org/job/IQSS_Dataverse_Internal/ and make the following adjustments to the config: + +- Repository URL: ``https://github.com/IQSS/dataverse.git`` +- Branch Specifier (blank for 'any'): ``*/master`` +- Execute shell: Update version in filenames to ``dataverse-5.10.1.war`` (for example) + +Click "Save" then "Build Now". + +Build Installer (dvinstall.zip) +------------------------------- + +ssh into the dataverse-internal server and do the following: + +- In a git checkout of the dataverse source switch to the master branch and pull the latest. +- Copy the war file from the previous step to the ``target`` directory in the root of the repo (create it, if necessary). +- ``cd scripts/installer`` +- ``make`` + +A zip file called ``dvinstall.zip`` should be produced. Make Artifacts Available for Download ------------------------------------- Upload the following artifacts to the draft release you created: -- war file (``mvn package`` from Jenkins) -- installer (``cd scripts/installer && make``) -- other files as needed, such as updated Solr schema and config files +- the war file (e.g. ``dataverse-5.10.1.war``, from above) +- the installer (``dvinstall.zip``, from above) +- other files as needed: + + - updated Solr schema + - metadata block tsv files + - config files Publish the Release ------------------- Click the "Publish release" button. +Update Guides Link +------------------ + +"latest" at https://guides.dataverse.org/en/latest/ is a symlink to the directory with the latest release. That directory (e.g. ``5.10.1``) was put into place by the Jenkins "guides" job described above. + +ssh into the guides server and update the symlink to point to the latest release. + Close Milestone on GitHub and Create a New One ---------------------------------------------- @@ -115,7 +172,7 @@ For Hotfixes, Merge Hotfix Branch into "develop" and Rename SQL Scripts Note: this only applies to hotfixes! -We've merged the hotfix into the "master" branch but now we need the fixes (and version bump) in the "develop" branch. Make a new branch off the hotfix branch and create a pull request against develop. Merge conflicts are possible and this pull request should go through review and QA like normal. Afterwards it's fine to delete this branch and the hotfix brach that was merged into master. +We've merged the hotfix into the "master" branch but now we need the fixes (and version bump) in the "develop" branch. Make a new branch off the hotfix branch and create a pull request against develop. Merge conflicts are possible and this pull request should go through review and QA like normal. Afterwards it's fine to delete this branch and the hotfix branch that was merged into master. Because of the hotfix version, any SQL scripts in "develop" should be renamed (from "5.11.0" to "5.11.1" for example). To read more about our naming conventions for SQL scripts, see :doc:`sql-upgrade-scripts`. From 53fd76d93bc4c77124ad8f43e0531c263f599999 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Tue, 4 Oct 2022 17:41:18 -0400 Subject: [PATCH 50/93] add addition details and corrections #9019 --- .../source/developers/making-releases.rst | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/doc/sphinx-guides/source/developers/making-releases.rst b/doc/sphinx-guides/source/developers/making-releases.rst index 084d0fbba3e..55f5f550dd9 100755 --- a/doc/sphinx-guides/source/developers/making-releases.rst +++ b/doc/sphinx-guides/source/developers/making-releases.rst @@ -61,9 +61,9 @@ Merge "develop" into "master" If this is a regular (non-hotfix) release, create a pull request to merge the "develop" branch into the "master" branch using this "compare" link: https://github.com/IQSS/dataverse/compare/master...develop -Once the tests have passed, merge the pull request. +Once important tests have passed (compile, unit tests, etc.), merge the pull request. Don't worry about style tests failing such as for shell scripts. -If this is a hotfix release, skip this step (the "develop" branch is not involved until later). +If this is a hotfix release, skip this whole "merge develop to master" step (the "develop" branch is not involved until later). Build the Guides for the Release -------------------------------- @@ -86,7 +86,7 @@ Create a Draft Release on GitHub Go to https://github.com/IQSS/dataverse/releases/new to start creating a draft release. - Under "Choose a tag" you will be creating a new tag. Have it start with a "v" such as ``v5.10.1``. Click "Create new tag on publish". -- Under "Target" select ``master`` as the branch. +- Under "Target" go to "Recent Commits" and select the merge commit from when you merged ``develop`` into ``master`` above. This commit will appear in ``/api/info/version`` from a running installation. - Under "Release title" use the same name as the tag such as ``v5.10.1``. - In the description, copy and paste the content from the release notes .md file created in the "Write Release Notes" steps above. - Click "Save draft" because we do not want to publish the release yet. @@ -98,6 +98,8 @@ Make corrections to the draft, if necessary. It will be out of sync with the .md Run a Build to Create the War File ---------------------------------- +ssh into the dataverse-internal server and undeploy the current war file. + Go to https://jenkins.dataverse.org/job/IQSS_Dataverse_Internal/ and make the following adjustments to the config: - Repository URL: ``https://github.com/IQSS/dataverse.git`` @@ -106,6 +108,8 @@ Go to https://jenkins.dataverse.org/job/IQSS_Dataverse_Internal/ and make the fo Click "Save" then "Build Now". +The build number will appear in ``/api/info/version`` (along with the commit mentioned above) from a running installation (e.g. ``{"version":"5.10.1","build":"907-b844672``). + Build Installer (dvinstall.zip) ------------------------------- From d8c3f6a4c1b99100a41965a0b7de14499dc763de Mon Sep 17 00:00:00 2001 From: Jan van Mansum Date: Thu, 6 Oct 2022 17:29:32 +0200 Subject: [PATCH 51/93] Initialize transient fields with empty HashMap instead of null --- .../iq/dataverse/authorization/users/AuthenticatedUser.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/authorization/users/AuthenticatedUser.java b/src/main/java/edu/harvard/iq/dataverse/authorization/users/AuthenticatedUser.java index b2b5fa92e76..2cd28d9aac9 100644 --- a/src/main/java/edu/harvard/iq/dataverse/authorization/users/AuthenticatedUser.java +++ b/src/main/java/edu/harvard/iq/dataverse/authorization/users/AuthenticatedUser.java @@ -18,6 +18,7 @@ import java.io.Serializable; import java.sql.Timestamp; import java.util.Date; +import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; @@ -135,10 +136,10 @@ public class AuthenticatedUser implements User, Serializable { private String mutedNotifications; @Transient - private Set mutedEmailsSet; + private Set mutedEmailsSet = new HashSet<>(); @Transient - private Set mutedNotificationsSet; + private Set mutedNotificationsSet = new HashSet<>(); @PrePersist void prePersist() { From 816e11fe2d7b057615dd50f1834f782f99170ecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Kir=C3=A1ly?= Date: Fri, 7 Oct 2022 16:39:31 +0200 Subject: [PATCH 52/93] #8351 fixing inconsistency in admin's Troubleshouting page --- doc/sphinx-guides/source/_static/util/clear_timer.sh | 2 +- doc/sphinx-guides/source/admin/troubleshooting.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/sphinx-guides/source/_static/util/clear_timer.sh b/doc/sphinx-guides/source/_static/util/clear_timer.sh index 3fcd9e8a387..1d9966e4e07 100755 --- a/doc/sphinx-guides/source/_static/util/clear_timer.sh +++ b/doc/sphinx-guides/source/_static/util/clear_timer.sh @@ -17,7 +17,7 @@ DV_DIR=${PAYARA_DIR}/glassfish/domains/domain1 ${PAYARA_DIR}/bin/asadmin stop-domain rm -rf ${PAYARA_DIR}/${DV_DIR}/generated/ -rm -rf ${PAYARA_DIR}/${DV_DIR}/osgi-cache/felix +rm -rf ${PAYARA_DIR}/${DV_DIR}/osgi-cache/ # restart the domain (also generates a warning if app server is stopped) ${PAYARA_DIR}/bin/asadmin start-domain diff --git a/doc/sphinx-guides/source/admin/troubleshooting.rst b/doc/sphinx-guides/source/admin/troubleshooting.rst index 79ce98322a8..9f085ba90cd 100644 --- a/doc/sphinx-guides/source/admin/troubleshooting.rst +++ b/doc/sphinx-guides/source/admin/troubleshooting.rst @@ -57,7 +57,7 @@ Ingest is both CPU- and memory-intensive, and depending on your system resources ``/usr/local/payara5/mq/bin/imqcmd -u admin purge dst -t q -n DataverseIngest`` will purge the DataverseIngest queue, and prompt for your confirmation. -Finally, list destinations to verify that the purge was successful:: +Finally, list destinations to verify that the purge was successful: ``/usr/local/payara5/mq/bin/imqcmd -u admin list dst`` From c807811d3780c02f81435e736e2d98b2a027d0c2 Mon Sep 17 00:00:00 2001 From: chenganj Date: Wed, 12 Oct 2022 13:41:32 -0400 Subject: [PATCH 53/93] removed comments --- .../java/edu/harvard/iq/dataverse/util/MailUtilTest.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/test/java/edu/harvard/iq/dataverse/util/MailUtilTest.java b/src/test/java/edu/harvard/iq/dataverse/util/MailUtilTest.java index 61024328bd1..76e447b3faa 100644 --- a/src/test/java/edu/harvard/iq/dataverse/util/MailUtilTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/util/MailUtilTest.java @@ -98,32 +98,24 @@ public void testSubjectRejectFileAccess() { @Test public void testSubjectCreateDataset() { userNotification.setType(UserNotification.Type.CREATEDS); - String output = MailUtil.getSubjectTextBasedOnNotification(userNotification, null) ; - System.out.println((" JAYANTHY 1=============== " + output )); assertEquals("LibraScholar: Dataset \"\" has been created", MailUtil.getSubjectTextBasedOnNotification(userNotification, null)); } @Test public void testSubjectSubmittedDS() { userNotification.setType(UserNotification.Type.SUBMITTEDDS); - String output = MailUtil.getSubjectTextBasedOnNotification(userNotification, null) ; - System.out.println((" JAYANTHY 2=============== " + output )); assertEquals("LibraScholar: Dataset \"\" has been submitted for review", MailUtil.getSubjectTextBasedOnNotification(userNotification, null)); } @Test public void testSubjectPublishedDS() { userNotification.setType(UserNotification.Type.PUBLISHEDDS); - String output = MailUtil.getSubjectTextBasedOnNotification(userNotification, null) ; - System.out.println((" JAYANTHY 3=============== " + output )); assertEquals("LibraScholar: Dataset \"\" has been published", MailUtil.getSubjectTextBasedOnNotification(userNotification, null)); } @Test public void testSubjectReturnedDS() { userNotification.setType(UserNotification.Type.RETURNEDDS); - String output = MailUtil.getSubjectTextBasedOnNotification(userNotification, null) ; - System.out.println((" JAYANTHY 4=============== " + output )); assertEquals("LibraScholar: Dataset \"\" has been returned", MailUtil.getSubjectTextBasedOnNotification(userNotification, null)); } From 3382ce40edd8c12d90a59c81fd4ab01eccd44b5f Mon Sep 17 00:00:00 2001 From: Sherry Lake Date: Wed, 12 Oct 2022 14:16:15 -0400 Subject: [PATCH 54/93] Removed unrestricted #5840 --- doc/sphinx-guides/source/admin/harvestserver.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx-guides/source/admin/harvestserver.rst b/doc/sphinx-guides/source/admin/harvestserver.rst index 4e3f6ac0038..88004d9dc5f 100644 --- a/doc/sphinx-guides/source/admin/harvestserver.rst +++ b/doc/sphinx-guides/source/admin/harvestserver.rst @@ -26,7 +26,7 @@ The email portion of :ref:`systemEmail` will be visible via OAI-PMH (from the "I How does it work? ----------------- -Only the published, unrestricted datasets in your Dataverse installation can +Only the published datasets in your Dataverse installation can be made harvestable. Remote clients normally keep their records in sync through scheduled incremental updates, daily or weekly, thus minimizing the load on your server. Note that it is only the metadata From 504c8b6924c6ba78a989f5b692cf3f86ff0e9cd3 Mon Sep 17 00:00:00 2001 From: Sherry Lake Date: Wed, 12 Oct 2022 14:30:00 -0400 Subject: [PATCH 55/93] added table of contents #8206 --- .../source/developers/dataset-semantic-metadata-api.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/sphinx-guides/source/developers/dataset-semantic-metadata-api.rst b/doc/sphinx-guides/source/developers/dataset-semantic-metadata-api.rst index 7abae535276..0d16a299fce 100644 --- a/doc/sphinx-guides/source/developers/dataset-semantic-metadata-api.rst +++ b/doc/sphinx-guides/source/developers/dataset-semantic-metadata-api.rst @@ -1,5 +1,8 @@ Dataset Semantic Metadata API ============================= +.. contents:: |toctitle| + :local: + The OAI_ORE metadata export format represents Dataset metadata using json-ld (see the :doc:`/admin/metadataexport` section). As part of an RDA-supported effort to allow import of Datasets exported as Bags with an included OAI_ORE metadata file, an experimental API has been created that provides a json-ld alternative to the v1.0 API calls to get/set/delete Dataset metadata in the :doc:`/api/native-api`. From 97cf6bc5445ebf8daab3cb02029361d1e89a4abb Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Thu, 13 Oct 2022 11:09:50 -0400 Subject: [PATCH 56/93] add release note #8733 --- doc/release-notes/8733-oai_dc-date.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 doc/release-notes/8733-oai_dc-date.md diff --git a/doc/release-notes/8733-oai_dc-date.md b/doc/release-notes/8733-oai_dc-date.md new file mode 100644 index 00000000000..a2a09f361d3 --- /dev/null +++ b/doc/release-notes/8733-oai_dc-date.md @@ -0,0 +1,4 @@ +For exports and harvesting in `oai_dc` format, if "Production Date" is not set, "Publication Date" is now used instead. This change is reflected in the [Dataverse 4+ Metadata Crosswalk][] linked from the [Appendix][] of the User Guide. + +[Dataverse 4+ Metadata Crosswalk]: https://docs.google.com/spreadsheets/d/10Luzti7svVTVKTA-px27oq3RxCUM-QbiTkm8iMd5C54/edit#gid=1901625433&range=K7 +[Appendix]: https://guides.dataverse.org/en/latest/user/appendix.html From 0fb1bf00f9b8fdecdb6e08554fa8fa2b83f56aad Mon Sep 17 00:00:00 2001 From: qqmyers Date: Fri, 14 Oct 2022 11:21:35 -0400 Subject: [PATCH 57/93] commons-text update --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 15ad1aa2c10..c6459cfc55c 100644 --- a/pom.xml +++ b/pom.xml @@ -233,7 +233,7 @@ org.apache.commons commons-text - 1.9 + 1.10.0 org.apache.commons From 15cb16f1c34d329e81d702f09a19caa24aedce1d Mon Sep 17 00:00:00 2001 From: Miguel Tomas Silva Date: Tue, 18 Oct 2022 09:07:26 +0200 Subject: [PATCH 58/93] added C/ C++ library ; organized chronological all libraries avail. --- .../source/api/client-libraries.rst | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/doc/sphinx-guides/source/api/client-libraries.rst b/doc/sphinx-guides/source/api/client-libraries.rst index 634f03a8125..9d653c549a6 100755 --- a/doc/sphinx-guides/source/api/client-libraries.rst +++ b/doc/sphinx-guides/source/api/client-libraries.rst @@ -8,14 +8,20 @@ Because a Dataverse installation is a SWORD server, additional client libraries .. contents:: |toctitle| :local: -Python ------- +C / C++ +------- +A C / C++ library to expedite deployment when connecting to a Dataverse API can be found here: +[https://github.com/aeonSolutions/OpenScience-Dataverse-API-C-library](https://github.com/aeonSolutions/OpenScience-Dataverse-API-C-library) -There are two Python modules for interacting with Dataverse Software APIs. +This C/C++ library was initialy coded and is currently maintained by [Miguel T.](https://www.linkedin.com/in/migueltomas/). A features common HTTPS GET and POST requests made to the API in a dataverse. To leanr how to install it and use it, goto the wiki page [here](https://github.com/aeonSolutions/OpenScience-Dataverse-API-C-library/wiki). -`pyDataverse `_ primarily allows developers to manage Dataverse collections, datasets and datafiles. Its intention is to help with data migrations and DevOps activities such as testing and configuration management. The module is developed by `Stefan Kasberger `_ from `AUSSDA - The Austrian Social Science Data Archive `_. -`dataverse-client-python `_ had its initial release in 2015. `Robert Liebowitz `_ created this library while at the `Center for Open Science (COS) `_ and the COS uses it to integrate the `Open Science Framework (OSF) `_ with a Dataverse installation via an add-on which itself is open source and listed on the :doc:`/api/apps` page. +Java +---- + +https://github.com/IQSS/dataverse-client-java is the official Java library for Dataverse Software APIs. + +`Richard Adams `_ from `ResearchSpace `_ created and maintains this library. Javascript ---------- @@ -24,6 +30,15 @@ https://github.com/IQSS/dataverse-client-javascript is the official Javascript p It was created and is maintained by `The Agile Monkeys `_. +Python +------ + +There are two Python modules for interacting with Dataverse Software APIs. + +`pyDataverse `_ primarily allows developers to manage Dataverse collections, datasets and datafiles. Its intention is to help with data migrations and DevOps activities such as testing and configuration management. The module is developed by `Stefan Kasberger `_ from `AUSSDA - The Austrian Social Science Data Archive `_. + +`dataverse-client-python `_ had its initial release in 2015. `Robert Liebowitz `_ created this library while at the `Center for Open Science (COS) `_ and the COS uses it to integrate the `Open Science Framework (OSF) `_ with a Dataverse installation via an add-on which itself is open source and listed on the :doc:`/api/apps` page. + R - @@ -32,12 +47,6 @@ The R client can search and download datasets. It is useful when automatically ( The package is currently maintained by `Shiro Kuriwaki `_. It was originally created by `Thomas Leeper `_ and then formerly maintained by `Will Beasley `_. -Java ----- - -https://github.com/IQSS/dataverse-client-java is the official Java library for Dataverse Software APIs. - -`Richard Adams `_ from `ResearchSpace `_ created and maintains this library. Ruby ---- From b607feb0c249c4c6b7cea85c12eab48719b109c8 Mon Sep 17 00:00:00 2001 From: Henning Timm Date: Tue, 18 Oct 2022 11:28:26 +0200 Subject: [PATCH 59/93] Removed link to resolved issue --- doc/sphinx-guides/source/admin/solr-search-index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx-guides/source/admin/solr-search-index.rst b/doc/sphinx-guides/source/admin/solr-search-index.rst index 5685672eceb..41b9c7b6a8f 100644 --- a/doc/sphinx-guides/source/admin/solr-search-index.rst +++ b/doc/sphinx-guides/source/admin/solr-search-index.rst @@ -36,7 +36,7 @@ Please note that the moment you issue this command, it will appear to end users Start Async Reindex ~~~~~~~~~~~~~~~~~~~ -Please note that this operation may take hours depending on the amount of data in your system. This known issue is being tracked at https://github.com/IQSS/dataverse/issues/50 +Please note that this operation may take hours depending on the amount of data in your system. ``curl http://localhost:8080/api/admin/index`` From 0a11e454a89912704389b694e45ba5a3fcf10171 Mon Sep 17 00:00:00 2001 From: Henning Timm Date: Tue, 18 Oct 2022 11:28:48 +0200 Subject: [PATCH 60/93] Made Solr casing consistent --- doc/sphinx-guides/source/admin/solr-search-index.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/sphinx-guides/source/admin/solr-search-index.rst b/doc/sphinx-guides/source/admin/solr-search-index.rst index 41b9c7b6a8f..ef661c14ef9 100644 --- a/doc/sphinx-guides/source/admin/solr-search-index.rst +++ b/doc/sphinx-guides/source/admin/solr-search-index.rst @@ -60,7 +60,7 @@ If indexing stops, this command should pick up where it left off based on which Manual Reindexing ----------------- -If you have made manual changes to a dataset in the database or wish to reindex a dataset that solr didn't want to index properly, it is possible to manually reindex Dataverse collections and datasets. +If you have made manual changes to a dataset in the database or wish to reindex a dataset that Solr didn't want to index properly, it is possible to manually reindex Dataverse collections and datasets. Reindexing Dataverse Collections ++++++++++++++++++++++++++++++++ @@ -89,7 +89,7 @@ To re-index a dataset by its database ID: Manually Querying Solr ---------------------- -If you suspect something isn't indexed properly in solr, you may bypass the Dataverse installation's web interface and query the command line directly to verify what solr returns: +If you suspect something isn't indexed properly in Solr, you may bypass the Dataverse installation's web interface and query the command line directly to verify what Solr returns: ``curl "http://localhost:8983/solr/collection1/select?q=dsPersistentId:doi:10.15139/S3/HFV0AO"`` From 6da6fd06e668e2edef4bca4d7369b4528cf1d92e Mon Sep 17 00:00:00 2001 From: Henning Timm Date: Tue, 18 Oct 2022 11:29:16 +0200 Subject: [PATCH 61/93] Minor punctuation fix --- doc/sphinx-guides/source/admin/solr-search-index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx-guides/source/admin/solr-search-index.rst b/doc/sphinx-guides/source/admin/solr-search-index.rst index ef661c14ef9..faf1a578387 100644 --- a/doc/sphinx-guides/source/admin/solr-search-index.rst +++ b/doc/sphinx-guides/source/admin/solr-search-index.rst @@ -22,7 +22,7 @@ Get a list of all database objects that are missing in Solr, and Solr documents ``curl http://localhost:8080/api/admin/index/status`` -Remove all Solr documents that are orphaned (ie not associated with objects in the database): +Remove all Solr documents that are orphaned (i.e. not associated with objects in the database): ``curl http://localhost:8080/api/admin/index/clear-orphans`` From e3f3fb4e7209d9917c7484a570bb6eac8916a777 Mon Sep 17 00:00:00 2001 From: Henning Timm Date: Tue, 18 Oct 2022 11:29:38 +0200 Subject: [PATCH 62/93] Highlighted search string --- doc/sphinx-guides/source/admin/solr-search-index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx-guides/source/admin/solr-search-index.rst b/doc/sphinx-guides/source/admin/solr-search-index.rst index faf1a578387..bcf55480625 100644 --- a/doc/sphinx-guides/source/admin/solr-search-index.rst +++ b/doc/sphinx-guides/source/admin/solr-search-index.rst @@ -69,7 +69,7 @@ Dataverse collections must be referenced by database object ID. If you have dire ``select id from dataverse where alias='dataversealias';`` -should work, or you may click the Dataverse Software's "Edit" menu and look for dataverseId= in the URLs produced by the drop-down. Then, to re-index: +should work, or you may click the Dataverse Software's "Edit" menu and look for *dataverseId=* in the URLs produced by the drop-down. Then, to re-index: ``curl http://localhost:8080/api/admin/index/dataverses/135`` From 9cac9fd19ac347a1f7bf97d86369521e63368762 Mon Sep 17 00:00:00 2001 From: Henning Timm Date: Tue, 18 Oct 2022 11:41:25 +0200 Subject: [PATCH 63/93] Made casing of Solr consistent across all documents --- doc/sphinx-guides/source/admin/harvestserver.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/sphinx-guides/source/admin/harvestserver.rst b/doc/sphinx-guides/source/admin/harvestserver.rst index 88004d9dc5f..6f4f23fc587 100644 --- a/doc/sphinx-guides/source/admin/harvestserver.rst +++ b/doc/sphinx-guides/source/admin/harvestserver.rst @@ -115,10 +115,10 @@ Some useful examples of search queries to define OAI sets: ``keywordValue:censorship`` -Important: New SOLR schema required! +Important: New Solr schema required! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In order to be able to define OAI sets, your SOLR server must be upgraded with the search schema that came with release 4.5 (or later), and all your local datasets must be re-indexed, once the new schema is installed. +In order to be able to define OAI sets, your Solr server must be upgraded with the search schema that came with release 4.5 (or later), and all your local datasets must be re-indexed, once the new schema is installed. OAI Set updates --------------- From 826093dc38f3488e9c4f589929c86fa3c974d2a6 Mon Sep 17 00:00:00 2001 From: j-n-c Date: Tue, 18 Oct 2022 12:30:35 +0100 Subject: [PATCH 64/93] #6071 - Update docs with information on setting dataverse.siteUrl JVM option --- doc/sphinx-guides/source/installation/config.rst | 11 ++++++----- .../source/installation/installation-main.rst | 5 +++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/doc/sphinx-guides/source/installation/config.rst b/doc/sphinx-guides/source/installation/config.rst index f2de9d5702f..a5564daf5a3 100644 --- a/doc/sphinx-guides/source/installation/config.rst +++ b/doc/sphinx-guides/source/installation/config.rst @@ -1376,6 +1376,8 @@ When changing values these values with ``asadmin``, you'll need to delete the ol It's also possible to change these values by stopping Payara, editing ``payara5/glassfish/domains/domain1/config/domain.xml``, and restarting Payara. +.. _dataverse.fqdn: + dataverse.fqdn ++++++++++++++ @@ -1394,12 +1396,11 @@ The password reset feature requires ``dataverse.fqdn`` to be configured. dataverse.siteUrl +++++++++++++++++ -.. note:: +To configure the ``siteUrl`` JVM option, follow the procedure stated in :ref:`jvm-options` and specify the protocol, host and port number you would prefer to be used to advertise the URL for your Dataverse installation. + +For example, if editing domain.xml: - and specify the protocol and port number you would prefer to be used to advertise the URL for your Dataverse installation. - For example, configured in domain.xml: - ``-Ddataverse.fqdn=dataverse.example.edu`` - ``-Ddataverse.siteUrl=http://${dataverse.fqdn}:8080`` +``-Ddataverse.siteUrl=http://${dataverse.fqdn}:8080`` dataverse.files.directory +++++++++++++++++++++++++ diff --git a/doc/sphinx-guides/source/installation/installation-main.rst b/doc/sphinx-guides/source/installation/installation-main.rst index 4b000f1ef9e..c82ebf31cca 100755 --- a/doc/sphinx-guides/source/installation/installation-main.rst +++ b/doc/sphinx-guides/source/installation/installation-main.rst @@ -134,6 +134,11 @@ Dataset Cannot Be Published Check to make sure you used a fully qualified domain name when installing the Dataverse Software. You can change the ``dataverse.fqdn`` JVM option after the fact per the :doc:`config` section. +Got ERR_ADDRESS_UNREACHABLE while navigating on interface or API calls +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If You are receiving an ``ERR_ADDRESS_UNREACHABLE`` while navigating the GUI or making an API call, make sure the ``siteUrl`` JVM option is defined. For details on how to set ``siteUrl``, please refer to :ref:`dataverse.siteUrl` from the :doc:`config` section. For context on why setting this option is necessary, refer to :ref:`dataverse.fqdn` from the :doc:`config` section. + Problems Sending Email ^^^^^^^^^^^^^^^^^^^^^^ From c1e39ba928dcc82272f5129d15e439796358e9f9 Mon Sep 17 00:00:00 2001 From: Sherry Lake Date: Tue, 18 Oct 2022 10:21:30 -0400 Subject: [PATCH 65/93] Removed incorrect example added link The curl command in :ArchiveClassName was incorrect. Redirected to correct commands for each of the configuration to the configuration section. --- doc/sphinx-guides/source/installation/config.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/sphinx-guides/source/installation/config.rst b/doc/sphinx-guides/source/installation/config.rst index f2de9d5702f..30ec1638b9a 100644 --- a/doc/sphinx-guides/source/installation/config.rst +++ b/doc/sphinx-guides/source/installation/config.rst @@ -2714,9 +2714,9 @@ Part of the database settings to configure the BagIt file handler. This is the p ++++++++++++++++++ Your Dataverse installation can export archival "Bag" files to an extensible set of storage systems (see :ref:`BagIt Export` above for details about this and for further explanation of the other archiving related settings below). -This setting specifies which storage system to use by identifying the particular Java class that should be run. Current options include DuraCloudSubmitToArchiveCommand, LocalSubmitToArchiveCommand, and GoogleCloudSubmitToArchiveCommand. +This setting specifies which storage system to use by identifying the particular Java class that should be run. Current configuration options include DuraCloudSubmitToArchiveCommand, LocalSubmitToArchiveCommand, GoogleCloudSubmitToArchiveCommand, and S3SubmitToArchiveCommand. -``curl -X PUT -d 'LocalSubmitToArchiveCommand' http://localhost:8080/api/admin/settings/:ArchiverClassName`` +For examples, see the specific configuration above in :ref:`BagIt Export`. :ArchiverSettings +++++++++++++++++ From 2d121aa5b52abc0f55d3287176e1302387ee1bf1 Mon Sep 17 00:00:00 2001 From: Sherry Lake Date: Tue, 18 Oct 2022 11:04:41 -0400 Subject: [PATCH 66/93] clarified moving dataverse collection description --- doc/sphinx-guides/source/admin/dataverses-datasets.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx-guides/source/admin/dataverses-datasets.rst b/doc/sphinx-guides/source/admin/dataverses-datasets.rst index a961ac0b067..7f32e8c2514 100644 --- a/doc/sphinx-guides/source/admin/dataverses-datasets.rst +++ b/doc/sphinx-guides/source/admin/dataverses-datasets.rst @@ -15,7 +15,7 @@ Dataverse collections have to be empty to delete them. Navigate to the Dataverse Move a Dataverse Collection ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Moves a Dataverse collection whose id is passed to a new Dataverse collection whose id is passed. The Dataverse collection alias also may be used instead of the id. If the moved Dataverse collection has a guestbook, template, metadata block, link, or featured Dataverse collection that is not compatible with the destination Dataverse collection, you will be informed and given the option to force the move and remove the association. Only accessible to superusers. :: +Moves a Dataverse collection whose id is passed to an existing Dataverse collection whose id is passed. The Dataverse collection alias also may be used instead of the id. If the moved Dataverse collection has a guestbook, template, metadata block, link, or featured Dataverse collection that is not compatible with the destination Dataverse collection, you will be informed and given the option to force the move and remove the association. Only accessible to superusers. :: curl -H "X-Dataverse-key: $API_TOKEN" -X POST http://$SERVER/api/dataverses/$id/move/$destination-id From 5f24e32531bf5bfa0cf9486b6a029eee02c9e58e Mon Sep 17 00:00:00 2001 From: Sherry Lake Date: Tue, 18 Oct 2022 12:35:13 -0400 Subject: [PATCH 67/93] removed bullet tabular data download all formats --- doc/sphinx-guides/source/user/dataset-management.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/sphinx-guides/source/user/dataset-management.rst b/doc/sphinx-guides/source/user/dataset-management.rst index 77a760ef838..b80d580ce35 100755 --- a/doc/sphinx-guides/source/user/dataset-management.rst +++ b/doc/sphinx-guides/source/user/dataset-management.rst @@ -193,8 +193,8 @@ Additional download options available for tabular data (found in the same drop-d - The original file uploaded by the user; - Saved as R data (if the original file was not in R format); - Variable Metadata (as a `DDI Codebook `_ XML file); -- Data File Citation (currently in either RIS, EndNote XML, or BibTeX format); -- All of the above, as a zipped bundle. +- Data File Citation (currently in either RIS, EndNote XML, or BibTeX format) + Differentially Private (DP) Metadata can also be accessed for restricted tabular files if the data depositor has created a DP Metadata Release. See :ref:`dp-release-create` for more information. From 25421a6df52381aec04658070110264b7d2d0a7d Mon Sep 17 00:00:00 2001 From: Henning Timm Date: Tue, 18 Oct 2022 21:17:44 +0200 Subject: [PATCH 68/93] Extend information on indexing times --- doc/sphinx-guides/source/admin/solr-search-index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx-guides/source/admin/solr-search-index.rst b/doc/sphinx-guides/source/admin/solr-search-index.rst index bcf55480625..0d3db3eeac6 100644 --- a/doc/sphinx-guides/source/admin/solr-search-index.rst +++ b/doc/sphinx-guides/source/admin/solr-search-index.rst @@ -36,7 +36,7 @@ Please note that the moment you issue this command, it will appear to end users Start Async Reindex ~~~~~~~~~~~~~~~~~~~ -Please note that this operation may take hours depending on the amount of data in your system. +Please note that this operation may take hours depending on the amount of data in your system and whether or not you installation is using full-text indexing. More information on this, as well as some reference times, can be found at https://github.com/IQSS/dataverse/issues/50. ``curl http://localhost:8080/api/admin/index`` From 3ba789d4caeae8b6c0f34c5780fc1e05abea3525 Mon Sep 17 00:00:00 2001 From: Henning Timm Date: Tue, 18 Oct 2022 21:27:40 +0200 Subject: [PATCH 69/93] Fixed minor typo --- doc/sphinx-guides/source/admin/solr-search-index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx-guides/source/admin/solr-search-index.rst b/doc/sphinx-guides/source/admin/solr-search-index.rst index 0d3db3eeac6..769c1ee5a0d 100644 --- a/doc/sphinx-guides/source/admin/solr-search-index.rst +++ b/doc/sphinx-guides/source/admin/solr-search-index.rst @@ -1,7 +1,7 @@ Solr Search Index ================= -A Dataverse installation requires Solr to be operational at all times. If you stop Solr, you should see a error about this on the root Dataverse installation page, which is powered by the search index Solr provides. You can set up Solr by following the steps in our Installation Guide's :doc:`/installation/prerequisites` and :doc:`/installation/config` sections explaining how to configure it. This section you're reading now is about the care and feeding of the search index. PostgreSQL is the "source of truth" and the Dataverse installation will copy data from PostgreSQL into Solr. For this reason, the search index can be rebuilt at any time. Depending on the amount of data you have, this can be a slow process. You are encouraged to experiment with production data to get a sense of how long a full reindexing will take. +A Dataverse installation requires Solr to be operational at all times. If you stop Solr, you should see an error about this on the root Dataverse installation page, which is powered by the search index Solr provides. You can set up Solr by following the steps in our Installation Guide's :doc:`/installation/prerequisites` and :doc:`/installation/config` sections explaining how to configure it. This section you're reading now is about the care and feeding of the search index. PostgreSQL is the "source of truth" and the Dataverse installation will copy data from PostgreSQL into Solr. For this reason, the search index can be rebuilt at any time. Depending on the amount of data you have, this can be a slow process. You are encouraged to experiment with production data to get a sense of how long a full reindexing will take. .. contents:: Contents: :local: From 912bd89732f7f101a21c522781b5cce30e41bfc8 Mon Sep 17 00:00:00 2001 From: Henning Timm Date: Tue, 18 Oct 2022 21:28:48 +0200 Subject: [PATCH 70/93] Extended description of full vs in-place index --- doc/sphinx-guides/source/admin/solr-search-index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx-guides/source/admin/solr-search-index.rst b/doc/sphinx-guides/source/admin/solr-search-index.rst index 769c1ee5a0d..e6f7b588ede 100644 --- a/doc/sphinx-guides/source/admin/solr-search-index.rst +++ b/doc/sphinx-guides/source/admin/solr-search-index.rst @@ -9,7 +9,7 @@ A Dataverse installation requires Solr to be operational at all times. If you st Full Reindex ------------- -There are two ways to perform a full reindex of the Dataverse installation search index. Starting with a "clear" ensures a completely clean index but involves downtime. Reindexing in place doesn't involve downtime but does not ensure a completely clean index. +There are two ways to perform a full reindex of the Dataverse installation search index. Starting with a "clear" ensures a completely clean index but involves downtime. Reindexing in place doesn't involve downtime but does not ensure a completely clean index (e.g. stale entries from destroyed datasets can remain in the index). Clear and Reindex +++++++++++++++++ From 3cdfd499eb6686260400276244e57f3b17fc464f Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Wed, 19 Oct 2022 10:12:57 -0400 Subject: [PATCH 71/93] file updates - use encodingFormat and always send contentUrl if allowed FWIW: There is still a dataverse.files.hide-schema-dot-org-download-urls that, if false, will stop any contentUrls from being sent --- .../java/edu/harvard/iq/dataverse/DatasetVersion.java | 8 +++----- .../iq/dataverse/export/SchemaDotOrgExporterTest.java | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetVersion.java b/src/main/java/edu/harvard/iq/dataverse/DatasetVersion.java index 30815c43381..314e06149ee 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetVersion.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetVersion.java @@ -2012,7 +2012,7 @@ public String getJsonLd() { } fileObject.add("@type", "DataDownload"); fileObject.add("name", fileMetadata.getLabel()); - fileObject.add("fileFormat", fileMetadata.getDataFile().getContentType()); + fileObject.add("encodingFormat", fileMetadata.getDataFile().getContentType()); fileObject.add("contentSize", fileMetadata.getDataFile().getFilesize()); fileObject.add("description", fileMetadata.getDescription()); fileObject.add("@id", filePidUrlAsString); @@ -2021,10 +2021,8 @@ public String getJsonLd() { if (hideFilesBoolean != null && hideFilesBoolean.equals("true")) { // no-op } else { - if (FileUtil.isPubliclyDownloadable(fileMetadata)) { - String nullDownloadType = null; - fileObject.add("contentUrl", dataverseSiteUrl + FileUtil.getFileDownloadUrlPath(nullDownloadType, fileMetadata.getDataFile().getId(), false, fileMetadata.getId())); - } + String nullDownloadType = null; + fileObject.add("contentUrl", dataverseSiteUrl + FileUtil.getFileDownloadUrlPath(nullDownloadType, fileMetadata.getDataFile().getId(), false, fileMetadata.getId())); } fileArray.add(fileObject); } diff --git a/src/test/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporterTest.java b/src/test/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporterTest.java index b5453e75fe5..f5bc5fd97d0 100644 --- a/src/test/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporterTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporterTest.java @@ -181,7 +181,7 @@ public void testExportDataset() throws Exception { assertEquals(2, json2.getJsonArray("spatialCoverage").size()); assertEquals("DataDownload", json2.getJsonArray("distribution").getJsonObject(0).getString("@type")); assertEquals("README.md", json2.getJsonArray("distribution").getJsonObject(0).getString("name")); - assertEquals("text/plain", json2.getJsonArray("distribution").getJsonObject(0).getString("fileFormat")); + assertEquals("text/plain", json2.getJsonArray("distribution").getJsonObject(0).getString("encodingFormat")); assertEquals(1234, json2.getJsonArray("distribution").getJsonObject(0).getInt("contentSize")); assertEquals("README file.", json2.getJsonArray("distribution").getJsonObject(0).getString("description")); assertEquals("https://doi.org/10.5072/FK2/7V5MPI", json2.getJsonArray("distribution").getJsonObject(0).getString("@id")); From cbc0e52907d23d1aaa0fbdfd270d7aa8fe6a6c00 Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Wed, 19 Oct 2022 13:05:36 -0400 Subject: [PATCH 72/93] Revert "file updates - use encodingFormat and always send contentUrl if allowed" This reverts commit 3cdfd499eb6686260400276244e57f3b17fc464f. --- .../java/edu/harvard/iq/dataverse/DatasetVersion.java | 8 +++++--- .../iq/dataverse/export/SchemaDotOrgExporterTest.java | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetVersion.java b/src/main/java/edu/harvard/iq/dataverse/DatasetVersion.java index 314e06149ee..30815c43381 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetVersion.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetVersion.java @@ -2012,7 +2012,7 @@ public String getJsonLd() { } fileObject.add("@type", "DataDownload"); fileObject.add("name", fileMetadata.getLabel()); - fileObject.add("encodingFormat", fileMetadata.getDataFile().getContentType()); + fileObject.add("fileFormat", fileMetadata.getDataFile().getContentType()); fileObject.add("contentSize", fileMetadata.getDataFile().getFilesize()); fileObject.add("description", fileMetadata.getDescription()); fileObject.add("@id", filePidUrlAsString); @@ -2021,8 +2021,10 @@ public String getJsonLd() { if (hideFilesBoolean != null && hideFilesBoolean.equals("true")) { // no-op } else { - String nullDownloadType = null; - fileObject.add("contentUrl", dataverseSiteUrl + FileUtil.getFileDownloadUrlPath(nullDownloadType, fileMetadata.getDataFile().getId(), false, fileMetadata.getId())); + if (FileUtil.isPubliclyDownloadable(fileMetadata)) { + String nullDownloadType = null; + fileObject.add("contentUrl", dataverseSiteUrl + FileUtil.getFileDownloadUrlPath(nullDownloadType, fileMetadata.getDataFile().getId(), false, fileMetadata.getId())); + } } fileArray.add(fileObject); } diff --git a/src/test/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporterTest.java b/src/test/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporterTest.java index f5bc5fd97d0..b5453e75fe5 100644 --- a/src/test/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporterTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporterTest.java @@ -181,7 +181,7 @@ public void testExportDataset() throws Exception { assertEquals(2, json2.getJsonArray("spatialCoverage").size()); assertEquals("DataDownload", json2.getJsonArray("distribution").getJsonObject(0).getString("@type")); assertEquals("README.md", json2.getJsonArray("distribution").getJsonObject(0).getString("name")); - assertEquals("text/plain", json2.getJsonArray("distribution").getJsonObject(0).getString("encodingFormat")); + assertEquals("text/plain", json2.getJsonArray("distribution").getJsonObject(0).getString("fileFormat")); assertEquals(1234, json2.getJsonArray("distribution").getJsonObject(0).getInt("contentSize")); assertEquals("README file.", json2.getJsonArray("distribution").getJsonObject(0).getString("description")); assertEquals("https://doi.org/10.5072/FK2/7V5MPI", json2.getJsonArray("distribution").getJsonObject(0).getString("@id")); From 08fea85853591ea616a7b0117d5390e012f217b9 Mon Sep 17 00:00:00 2001 From: Sherry Lake Date: Thu, 20 Oct 2022 08:00:57 -0400 Subject: [PATCH 73/93] Added period to end of bullet list --- doc/sphinx-guides/source/user/dataset-management.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx-guides/source/user/dataset-management.rst b/doc/sphinx-guides/source/user/dataset-management.rst index b80d580ce35..ec3bb392ce5 100755 --- a/doc/sphinx-guides/source/user/dataset-management.rst +++ b/doc/sphinx-guides/source/user/dataset-management.rst @@ -193,7 +193,7 @@ Additional download options available for tabular data (found in the same drop-d - The original file uploaded by the user; - Saved as R data (if the original file was not in R format); - Variable Metadata (as a `DDI Codebook `_ XML file); -- Data File Citation (currently in either RIS, EndNote XML, or BibTeX format) +- Data File Citation (currently in either RIS, EndNote XML, or BibTeX format). Differentially Private (DP) Metadata can also be accessed for restricted tabular files if the data depositor has created a DP Metadata Release. See :ref:`dp-release-create` for more information. From cb0075e555b1399835a809c5ef160d53c86c34bc Mon Sep 17 00:00:00 2001 From: Sherry Lake Date: Fri, 21 Oct 2022 14:26:35 -0400 Subject: [PATCH 74/93] corrected BagIT API Call --- doc/sphinx-guides/source/installation/config.rst | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/doc/sphinx-guides/source/installation/config.rst b/doc/sphinx-guides/source/installation/config.rst index f2de9d5702f..21ae85b8435 100644 --- a/doc/sphinx-guides/source/installation/config.rst +++ b/doc/sphinx-guides/source/installation/config.rst @@ -1240,14 +1240,19 @@ API Calls Once this configuration is complete, you, as a user with the *PublishDataset* permission, should be able to use the admin API call to manually submit a DatasetVersion for processing: -``curl -X POST -H "X-Dataverse-key: " http://localhost:8080/api/admin/submitDatasetVersionToArchive/{id}/{version}`` +``curl -X POST -H "X-Dataverse-key: " http://localhost:8080/api/admin/submitDatasetVersionToArchive/{version}/{id}`` where: -``{id}`` is the DatasetId (or ``:persistentId`` with the ``?persistentId=""`` parameter), and +``{id}`` is the DatasetId, and ``{version}`` is the friendly version number, e.g. "1.2". +or in place of the DatasetID, you can use ``:persistentId`` with the ``?persistentId=""``: + +``curl -X POST -H "X-Dataverse-key: " http://localhost:8080/api/admin/submitDatasetVersionToArchive/:persistentId/{version}?persistentId=""`` + + The submitDatasetVersionToArchive API (and the workflow discussed below) attempt to archive the dataset version via an archive specific method. For Chronopolis, a DuraCloud space named for the dataset (it's DOI with ':' and '.' replaced with '-') is created and two files are uploaded to it: a version-specific datacite.xml metadata file and a BagIt bag containing the data and an OAI-ORE map file. (The datacite.xml file, stored outside the Bag as well as inside is intended to aid in discovery while the ORE map file is 'complete', containing all user-entered metadata and is intended as an archival record.) In the Chronopolis case, since the transfer from the DuraCloud front-end to archival storage in Chronopolis can take significant time, it is currently up to the admin/curator to submit a 'snap-shot' of the space within DuraCloud and to monitor its successful transfer. Once transfer is complete the space should be deleted, at which point the Dataverse Software API call can be used to submit a Bag for other versions of the same Dataset. (The space is reused, so that archival copies of different Dataset versions correspond to different snapshots of the same DuraCloud space.). @@ -1256,9 +1261,10 @@ A batch version of this admin api call is also available: ``curl -X POST -H "X-Dataverse-key: " 'http://localhost:8080/api/admin/archiveAllUnarchivedDatasetVersions?listonly=true&limit=10&latestonly=true'`` -The archiveAllUnarchivedDatasetVersions call takes 3 optional configuration parameters. +The archiveAllUnarchivedDatasetVersions call takes 3 optional configuration parameters. + * listonly=true will cause the API to list dataset versions that would be archived but will not take any action. -* limit= will limit the number of dataset versions archived in one api call to <= . +* limit= will limit the number of dataset versions archived in one api call to ``<=`` . * latestonly=true will limit archiving to only the latest published versions of datasets instead of archiving all unarchived versions. Note that because archiving is done asynchronously, the calls above will return OK even if the user does not have the *PublishDataset* permission on the dataset(s) involved. Failures are indocated in the log and the archivalStatus calls in the native api can be used to check the status as well. From 3d621abf192e85333b7091f0d1a41273f0b7090e Mon Sep 17 00:00:00 2001 From: chenganj Date: Wed, 26 Oct 2022 14:39:29 -0400 Subject: [PATCH 75/93] handled class cast exception --- src/main/java/edu/harvard/iq/dataverse/util/MailUtil.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/util/MailUtil.java b/src/main/java/edu/harvard/iq/dataverse/util/MailUtil.java index ffb435feed2..d64a1f7cce1 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/MailUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/MailUtil.java @@ -33,9 +33,11 @@ public static InternetAddress parseSystemAddress(String systemEmail) { public static String getSubjectTextBasedOnNotification(UserNotification userNotification, Object objectOfNotification) { List rootDvNameAsList = Arrays.asList(BrandingUtil.getInstallationBrandName()); String datasetDisplayName = ""; - if (objectOfNotification != null) { + + if (objectOfNotification != null && (objectOfNotification instanceof Dataset) ) { datasetDisplayName = ((Dataset)objectOfNotification).getDisplayName(); } + switch (userNotification.getType()) { case ASSIGNROLE: return BundleUtil.getStringFromBundle("notification.email.assign.role.subject", rootDvNameAsList); From 648412e573726c4dc9f29c2bbbed472ec528c2f7 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Thu, 27 Oct 2022 10:39:14 -0400 Subject: [PATCH 76/93] revert swap of `id` and `version` in submitDatasetVersionToArchive #9093 --- doc/sphinx-guides/source/installation/config.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx-guides/source/installation/config.rst b/doc/sphinx-guides/source/installation/config.rst index 866013db7b0..47fd92d8366 100644 --- a/doc/sphinx-guides/source/installation/config.rst +++ b/doc/sphinx-guides/source/installation/config.rst @@ -1240,7 +1240,7 @@ API Calls Once this configuration is complete, you, as a user with the *PublishDataset* permission, should be able to use the admin API call to manually submit a DatasetVersion for processing: -``curl -X POST -H "X-Dataverse-key: " http://localhost:8080/api/admin/submitDatasetVersionToArchive/{version}/{id}`` +``curl -X POST -H "X-Dataverse-key: " http://localhost:8080/api/admin/submitDatasetVersionToArchive/{id}/{version}`` where: From 2475bd8d099c2626ec166d1fe6a1abb9b802e3ca Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Thu, 27 Oct 2022 10:55:07 -0400 Subject: [PATCH 77/93] make a few more tweaks and fixed typos #9090 --- .../source/installation/config.rst | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/doc/sphinx-guides/source/installation/config.rst b/doc/sphinx-guides/source/installation/config.rst index 47fd92d8366..bfcbd3d6325 100644 --- a/doc/sphinx-guides/source/installation/config.rst +++ b/doc/sphinx-guides/source/installation/config.rst @@ -1235,8 +1235,8 @@ The :S3ArchiverConfig setting is a JSON object that must include an "s3_bucket_n .. _Archiving API Call: -API Calls -+++++++++ +BagIt Export API Calls +++++++++++++++++++++++ Once this configuration is complete, you, as a user with the *PublishDataset* permission, should be able to use the admin API call to manually submit a DatasetVersion for processing: @@ -1244,31 +1244,29 @@ Once this configuration is complete, you, as a user with the *PublishDataset* pe where: -``{id}`` is the DatasetId, and +``{id}`` is the DatasetId (the database id of the dataset) and ``{version}`` is the friendly version number, e.g. "1.2". -or in place of the DatasetID, you can use ``:persistentId`` with the ``?persistentId=""``: +or in place of the DatasetID, you can use the string ``:persistentId`` as the ``{id}`` and add the DOI/PID as a query parameter like this: ``?persistentId=""``. Here is how the full command would look: ``curl -X POST -H "X-Dataverse-key: " http://localhost:8080/api/admin/submitDatasetVersionToArchive/:persistentId/{version}?persistentId=""`` +The submitDatasetVersionToArchive API (and the workflow discussed below) attempt to archive the dataset version via an archive specific method. For Chronopolis, a DuraCloud space named for the dataset (its DOI with ":" and "." replaced with "-", e.g. ``doi-10-5072-fk2-tgbhlb``) is created and two files are uploaded to it: a version-specific datacite.xml metadata file and a BagIt bag containing the data and an OAI-ORE map file. (The datacite.xml file, stored outside the Bag as well as inside, is intended to aid in discovery while the ORE map file is "complete", containing all user-entered metadata and is intended as an archival record.) -The submitDatasetVersionToArchive API (and the workflow discussed below) attempt to archive the dataset version via an archive specific method. For Chronopolis, a DuraCloud space named for the dataset (it's DOI with ':' and '.' replaced with '-') is created and two files are uploaded to it: a version-specific datacite.xml metadata file and a BagIt bag containing the data and an OAI-ORE map file. (The datacite.xml file, stored outside the Bag as well as inside is intended to aid in discovery while the ORE map file is 'complete', containing all user-entered metadata and is intended as an archival record.) +In the Chronopolis case, since the transfer from the DuraCloud front-end to archival storage in Chronopolis can take significant time, it is currently up to the admin/curator to submit a 'snap-shot' of the space within DuraCloud and to monitor its successful transfer. Once transfer is complete the space should be deleted, at which point the Dataverse Software API call can be used to submit a Bag for other versions of the same dataset. (The space is reused, so that archival copies of different dataset versions correspond to different snapshots of the same DuraCloud space.). -In the Chronopolis case, since the transfer from the DuraCloud front-end to archival storage in Chronopolis can take significant time, it is currently up to the admin/curator to submit a 'snap-shot' of the space within DuraCloud and to monitor its successful transfer. Once transfer is complete the space should be deleted, at which point the Dataverse Software API call can be used to submit a Bag for other versions of the same Dataset. (The space is reused, so that archival copies of different Dataset versions correspond to different snapshots of the same DuraCloud space.). - -A batch version of this admin api call is also available: +A batch version of this admin API call is also available: ``curl -X POST -H "X-Dataverse-key: " 'http://localhost:8080/api/admin/archiveAllUnarchivedDatasetVersions?listonly=true&limit=10&latestonly=true'`` The archiveAllUnarchivedDatasetVersions call takes 3 optional configuration parameters. * listonly=true will cause the API to list dataset versions that would be archived but will not take any action. -* limit= will limit the number of dataset versions archived in one api call to ``<=`` . +* limit= will limit the number of dataset versions archived in one API call to ``<=`` . * latestonly=true will limit archiving to only the latest published versions of datasets instead of archiving all unarchived versions. -Note that because archiving is done asynchronously, the calls above will return OK even if the user does not have the *PublishDataset* permission on the dataset(s) involved. Failures are indocated in the log and the archivalStatus calls in the native api can be used to check the status as well. - +Note that because archiving is done asynchronously, the calls above will return OK even if the user does not have the *PublishDataset* permission on the dataset(s) involved. Failures are indicated in the log and the archivalStatus calls in the native API can be used to check the status as well. PostPublication Workflow ++++++++++++++++++++++++ From 48239b81e8ca3538a74ccc0d9efcdf550340f13c Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Thu, 27 Oct 2022 16:37:59 -0400 Subject: [PATCH 78/93] reorder client libraries, other tweaks #9070 --- .../source/api/client-libraries.rst | 44 ++++++++++--------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/doc/sphinx-guides/source/api/client-libraries.rst b/doc/sphinx-guides/source/api/client-libraries.rst index 9d653c549a6..bf9f658808b 100755 --- a/doc/sphinx-guides/source/api/client-libraries.rst +++ b/doc/sphinx-guides/source/api/client-libraries.rst @@ -1,48 +1,59 @@ Client Libraries ================ -Currently there are client libraries for Python, Javascript, R, Java, and Julia that can be used to develop against Dataverse Software APIs. We use the term "client library" on this page but "Dataverse Software SDK" (software development kit) is another way of describing these resources. They are designed to help developers express Dataverse Software concepts more easily in the languages listed below. For support on any of these client libraries, please consult each project's README. +Listed below are a variety of clienty libraries to help you interact with Dataverse APIs from Python, R, Javascript, etc. -Because a Dataverse installation is a SWORD server, additional client libraries exist for Java, Ruby, and PHP per the :doc:`/api/sword` page. +To get support for any of these client libraries, please consult each project's README. .. contents:: |toctitle| :local: -C / C++ -------- -A C / C++ library to expedite deployment when connecting to a Dataverse API can be found here: -[https://github.com/aeonSolutions/OpenScience-Dataverse-API-C-library](https://github.com/aeonSolutions/OpenScience-Dataverse-API-C-library) +C/C++ +----- -This C/C++ library was initialy coded and is currently maintained by [Miguel T.](https://www.linkedin.com/in/migueltomas/). A features common HTTPS GET and POST requests made to the API in a dataverse. To leanr how to install it and use it, goto the wiki page [here](https://github.com/aeonSolutions/OpenScience-Dataverse-API-C-library/wiki). +https://github.com/aeonSolutions/OpenScience-Dataverse-API-C-library is the official C/C++ library for Dataverse APIs. +This C/C++ library was created and is currently maintained by `Miguel T. `_ To learn how to install and use it, see the project's `wiki page `_. Java ---- -https://github.com/IQSS/dataverse-client-java is the official Java library for Dataverse Software APIs. +https://github.com/IQSS/dataverse-client-java is the official Java library for Dataverse APIs. `Richard Adams `_ from `ResearchSpace `_ created and maintains this library. Javascript ---------- -https://github.com/IQSS/dataverse-client-javascript is the official Javascript package for Dataverse Software APIs. It can be found on npm at https://www.npmjs.com/package/js-dataverse +https://github.com/IQSS/dataverse-client-javascript is the official Javascript package for Dataverse APIs. It can be found on npm at https://www.npmjs.com/package/js-dataverse It was created and is maintained by `The Agile Monkeys `_. +Julia +----- + +https://github.com/gaelforget/Dataverse.jl is the official Julia package for Dataverse APIs. It can be found on JuliaHub (https://juliahub.com/ui/Packages/Dataverse/xWAqY/) and leverages pyDataverse to provide an interface to Dataverse's data access API and native API. Dataverse.jl provides a few additional functionalities with documentation (https://gaelforget.github.io/Dataverse.jl/dev/) and a demo notebook (https://gaelforget.github.io/Dataverse.jl/dev/notebook.html). + +It was created and is maintained by `Gael Forget `_. + +PHP +--- + +There is no official PHP library for Dataverse APIs (please :ref:`get in touch ` if you'd like to create one!) but there is a SWORD library written in PHP listed under :ref:`client-libraries` in the :doc:`/api/sword` documentation. + Python ------ -There are two Python modules for interacting with Dataverse Software APIs. +There are two Python modules for interacting with Dataverse APIs. `pyDataverse `_ primarily allows developers to manage Dataverse collections, datasets and datafiles. Its intention is to help with data migrations and DevOps activities such as testing and configuration management. The module is developed by `Stefan Kasberger `_ from `AUSSDA - The Austrian Social Science Data Archive `_. -`dataverse-client-python `_ had its initial release in 2015. `Robert Liebowitz `_ created this library while at the `Center for Open Science (COS) `_ and the COS uses it to integrate the `Open Science Framework (OSF) `_ with a Dataverse installation via an add-on which itself is open source and listed on the :doc:`/api/apps` page. +`dataverse-client-python `_ had its initial release in 2015. `Robert Liebowitz `_ created this library while at the `Center for Open Science (COS) `_ and the COS uses it to integrate the `Open Science Framework (OSF) `_ with Dataverse installations via an add-on which itself is open source and listed on the :doc:`/api/apps` page. R - -https://github.com/IQSS/dataverse-client-r is the official R package for Dataverse Software APIs. The latest release can be installed from `CRAN `_. +https://github.com/IQSS/dataverse-client-r is the official R package for Dataverse APIs. The latest release can be installed from `CRAN `_. The R client can search and download datasets. It is useful when automatically (instead of manually) downloading data files as part of a script. For bulk edit and upload operations, we currently recommend pyDataverse. The package is currently maintained by `Shiro Kuriwaki `_. It was originally created by `Thomas Leeper `_ and then formerly maintained by `Will Beasley `_. @@ -51,13 +62,6 @@ The package is currently maintained by `Shiro Kuriwaki `_. From 83f7f82138b0fd570a5af2e65266b96a3335f20d Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Thu, 27 Oct 2022 17:24:01 -0400 Subject: [PATCH 79/93] clean up and explain more about siteUrl and fqdn #6071 --- .../source/installation/config.rst | 24 ++++++++++++------- .../source/installation/installation-main.rst | 6 +++-- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/doc/sphinx-guides/source/installation/config.rst b/doc/sphinx-guides/source/installation/config.rst index 1c4891fa820..ba60bb28108 100644 --- a/doc/sphinx-guides/source/installation/config.rst +++ b/doc/sphinx-guides/source/installation/config.rst @@ -1385,26 +1385,32 @@ It's also possible to change these values by stopping Payara, editing ``payara5/ dataverse.fqdn ++++++++++++++ -If the Dataverse installation has multiple DNS names, this option specifies the one to be used as the "official" host name. For example, you may want to have dataverse.example.edu, and not the less appealing server-123.socsci.example.edu to appear exclusively in all the registered global identifiers, Data Deposit API records, etc. +If the Dataverse installation has multiple DNS names, this option specifies the one to be used as the "official" hostname. For example, you may want to have ``dataverse.example.edu``, and not the less appealing ``server-123.example.edu`` to appear exclusively in all the registered global identifiers, etc. The password reset feature requires ``dataverse.fqdn`` to be configured. -.. note:: - - Do note that whenever the system needs to form a service URL, by default, it will be formed with ``https://`` and port 443. I.e., - ``https://{dataverse.fqdn}/`` - If that does not suit your setup, you can define an additional option, ``dataverse.siteUrl``, explained below. +Configuring ``dataverse.fqdn`` is not enough. Read on for the importance of also setting ``dataverse.siteUrl``. .. _dataverse.siteUrl: dataverse.siteUrl +++++++++++++++++ -To configure the ``siteUrl`` JVM option, follow the procedure stated in :ref:`jvm-options` and specify the protocol, host and port number you would prefer to be used to advertise the URL for your Dataverse installation. +``dataverse.siteUrl`` is used to configure the URL for your Dataverse installation that you plan to advertise to your users. As explained in the :ref:`installation ` docs, this setting is critical for the correct operation of your installation. + +For example, your site URL could be https://dataverse.example.edu + +That is, even though the server might also be available at uglier URLs such as https://server-123.example.edu the site URL is the "official" URL. + +The ``dataverse.siteUrl`` JVM option can be configured by following the procedure under :ref:`jvm-options` or by editing ``domain.xml`` directly. You can specify the protocol, host, and port number. Your ``domain.xml`` file could look like this, for example: + +``-Ddataverse.siteUrl=https://dataverse.example.edu`` + +Note that it's also possible to use the ``dataverse.fqdn`` as a variable, if you wish. Here's an example of this as well as a custom port (which is usually not necessary): -For example, if editing domain.xml: +``-Ddataverse.siteUrl=https://${dataverse.fqdn}:444`` -``-Ddataverse.siteUrl=http://${dataverse.fqdn}:8080`` +We are absolutely aware that it's confusing to have both ``dataverse.fqdn`` and ``dataverse.siteUrl``. https://github.com/IQSS/dataverse/issues/6636 is about resolving this confusion. dataverse.files.directory +++++++++++++++++++++++++ diff --git a/doc/sphinx-guides/source/installation/installation-main.rst b/doc/sphinx-guides/source/installation/installation-main.rst index c82ebf31cca..8559d6ce194 100755 --- a/doc/sphinx-guides/source/installation/installation-main.rst +++ b/doc/sphinx-guides/source/installation/installation-main.rst @@ -82,6 +82,8 @@ While Postgres can accomodate usernames and database names containing hyphens, i For more information, please see https://docs.payara.fish/documentation/payara-server/password-aliases/password-alias-asadmin-commands.html +.. _importance-of-siteUrl: + **IMPORTANT:** The installer will also ask for an external site URL for the Dataverse installation. It is *imperative* that this value be supplied accurately, or a long list of functions will be inoperable, including: - email confirmation links @@ -134,10 +136,10 @@ Dataset Cannot Be Published Check to make sure you used a fully qualified domain name when installing the Dataverse Software. You can change the ``dataverse.fqdn`` JVM option after the fact per the :doc:`config` section. -Got ERR_ADDRESS_UNREACHABLE while navigating on interface or API calls +Got ERR_ADDRESS_UNREACHABLE While Navigating on Interface or API Calls ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -If You are receiving an ``ERR_ADDRESS_UNREACHABLE`` while navigating the GUI or making an API call, make sure the ``siteUrl`` JVM option is defined. For details on how to set ``siteUrl``, please refer to :ref:`dataverse.siteUrl` from the :doc:`config` section. For context on why setting this option is necessary, refer to :ref:`dataverse.fqdn` from the :doc:`config` section. +If you are receiving an ``ERR_ADDRESS_UNREACHABLE`` while navigating the GUI or making an API call, make sure the ``siteUrl`` JVM option is defined. For details on how to set ``siteUrl``, please refer to :ref:`dataverse.siteUrl` from the :doc:`config` section. For context on why setting this option is necessary, refer to :ref:`dataverse.fqdn` from the :doc:`config` section. Problems Sending Email ^^^^^^^^^^^^^^^^^^^^^^ From b3d16837c436094f171af36ae5b78a6298b6af35 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Mon, 31 Oct 2022 15:57:58 -0400 Subject: [PATCH 80/93] revert to calling it just "R" not "R Project" #8873 --- doc/sphinx-guides/source/installation/prerequisites.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/sphinx-guides/source/installation/prerequisites.rst b/doc/sphinx-guides/source/installation/prerequisites.rst index 9f0a2b3063e..59de507a264 100644 --- a/doc/sphinx-guides/source/installation/prerequisites.rst +++ b/doc/sphinx-guides/source/installation/prerequisites.rst @@ -288,10 +288,10 @@ If the installed location of the convert executable is different from ``/usr/bin (see the :doc:`config` section for more information on the JVM options) -The R Project for Statistical Computing +R - -The Dataverse Software uses `R Project `_ to handle +The Dataverse Software uses `R `_ to handle tabular data files. The instructions below describe a **minimal** R Project installation. It will allow you to ingest R (.RData) files as tabular data and to export tabular data as .RData files. R can be considered an optional component, meaning @@ -300,7 +300,7 @@ use the Dataverse Software - but the functionality specific to tabular data mentioned above will not be available to your users. -Installing R Project +Installing R ============ For RHEL/derivative, the EPEL distribution is strongly recommended: From 25521d8459605ba12f7a3bf036d1e4957ef2f658 Mon Sep 17 00:00:00 2001 From: Leonid Andreev Date: Mon, 31 Oct 2022 16:37:31 -0400 Subject: [PATCH 81/93] A quick implementation of a mechanism for disabling new account signups for remote auth. of specific type (without blocking all the existing accounts of the type). #9111 --- .../oauth2/OAuth2LoginBackingBean.java | 52 +++++++++++++++++-- .../settings/SettingsServiceBean.java | 38 +++++++++++++- .../iq/dataverse/util/SystemConfig.java | 11 ++++ src/main/webapp/oauth2/callback.xhtml | 2 +- 4 files changed, 98 insertions(+), 5 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/authorization/providers/oauth2/OAuth2LoginBackingBean.java b/src/main/java/edu/harvard/iq/dataverse/authorization/providers/oauth2/OAuth2LoginBackingBean.java index 225352dec43..58412d6d51f 100644 --- a/src/main/java/edu/harvard/iq/dataverse/authorization/providers/oauth2/OAuth2LoginBackingBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/authorization/providers/oauth2/OAuth2LoginBackingBean.java @@ -1,6 +1,7 @@ package edu.harvard.iq.dataverse.authorization.providers.oauth2; import edu.harvard.iq.dataverse.DataverseSession; +import edu.harvard.iq.dataverse.authorization.AuthenticationProvider; import edu.harvard.iq.dataverse.authorization.AuthenticationServiceBean; import edu.harvard.iq.dataverse.authorization.UserRecordIdentifier; import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser; @@ -27,6 +28,8 @@ import static edu.harvard.iq.dataverse.util.StringUtil.toOption; import edu.harvard.iq.dataverse.util.SystemConfig; +import java.util.ArrayList; +import java.util.Collections; import org.omnifaces.util.Faces; /** @@ -45,6 +48,8 @@ public class OAuth2LoginBackingBean implements Serializable { private String responseBody; Optional redirectPage = Optional.empty(); private OAuth2Exception error; + private boolean disabled = false; + private boolean signUpDisabled = false; /** * TODO: Only used in exchangeCodeForToken(). Make local var in method. */ @@ -96,13 +101,26 @@ public void exchangeCodeForToken() throws IOException { AbstractOAuth2AuthenticationProvider idp = oIdp.get(); oauthUser = idp.getUserRecord(code.get(), systemConfig.getOAuth2CallbackUrl()); + // Throw an error if this authentication method is disabled: + if (isProviderDisabled(idp.getId())) { + disabled = true; + throw new OAuth2Exception(-1, "", "This authentication method ("+idp.getId()+") is currently disabled. Please log in using one of the supported methods."); + } + UserRecordIdentifier idtf = oauthUser.getUserRecordIdentifier(); AuthenticatedUser dvUser = authenticationSvc.lookupUser(idtf); if (dvUser == null) { - // need to create the user - newAccountPage.setNewUser(oauthUser); - Faces.redirect("/oauth2/firstLogin.xhtml"); + // need to create the user - unless signups are disabled + // for this authentication method; in which case, throw + // an error: + if (systemConfig.isSignupDisabledForRemoteAuthProvider(idp.getId())) { + signUpDisabled = true; + throw new OAuth2Exception(-1, "", "Sorry, signup for new accounts using "+idp.getId()+" authentication is currently disabled."); + } else { + newAccountPage.setNewUser(oauthUser); + Faces.redirect("/oauth2/firstLogin.xhtml"); + } } else { // login the user and redirect to HOME of intended page (if any). @@ -271,4 +289,32 @@ public List getProviders() { public boolean isOAuth2ProvidersDefined() { return !authenticationSvc.getOAuth2Providers().isEmpty(); } + + public boolean isDisabled() { + return disabled; + } + + public boolean isSignUpDisabled() { + return signUpDisabled; + } + + private boolean isProviderDisabled(String providerId) { + // Compare this provider id against the list of *enabled* auth providers + // returned by the Authentication Service: + List idps = new ArrayList<>(authenticationSvc.getAuthenticationProviders()); + + // for the tests to work: + if (idps.isEmpty()) { + return false; + } + + for (AuthenticationProvider idp : idps) { + if (idp != null) { + if (providerId.equals(idp.getId())) { + return false; + } + } + } + return true; + } } diff --git a/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java index 50e29d2a333..46b4ae5cbc5 100644 --- a/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java @@ -563,7 +563,11 @@ Whether Harvesting (OAI) service is enabled /* * Allow a custom JavaScript to control values of specific fields. */ - ControlledVocabularyCustomJavaScript + ControlledVocabularyCustomJavaScript, + /** + * A compound setting for disabling signup for remote Auth providers: + */ + AllowRemoteAuthSignUp ; @Override @@ -668,7 +672,39 @@ public Long getValueForCompoundKeyAsLong(Key key, String param){ } } + + /** + * Same, but with Booleans + * (returns null if not set; the calling method will decide what that shouldall + * default to) + * Example: + * :AllowRemoteAuthSignUp {"default":"true","google":"false"} + */ + public Boolean getValueForCompoundKeyAsBoolean(Key key, String param) { + + String val = this.getValueForKey(key); + + if (val == null) { + return null; + } + + try (StringReader rdr = new StringReader(val)) { + JsonObject settings = Json.createReader(rdr).readObject(); + if (settings.containsKey(param)) { + return Boolean.parseBoolean(settings.getString(param)); + } else if (settings.containsKey("default")) { + return Boolean.parseBoolean(settings.getString("default")); + } else { + return null; + } + + } catch (Exception e) { + logger.log(Level.WARNING, "Incorrect setting. Could not convert \"{0}\" from setting {1} to boolean: {2}", new Object[]{val, key.toString(), e.getMessage()}); + return null; + } + + } /** * Return the value stored, or the default value, in case no setting by that * name exists. The main difference between this method and the other {@code get()}s diff --git a/src/main/java/edu/harvard/iq/dataverse/util/SystemConfig.java b/src/main/java/edu/harvard/iq/dataverse/util/SystemConfig.java index 7abd0d02065..3010ce208a3 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/SystemConfig.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/SystemConfig.java @@ -1228,4 +1228,15 @@ public Map getCurationLabels() { } return labelMap; } + + public boolean isSignupDisabledForRemoteAuthProvider(String providerId) { + Boolean ret = settingsService.getValueForCompoundKeyAsBoolean(SettingsServiceBean.Key.AllowRemoteAuthSignUp, providerId); + + // we default to false if it's null, i.e. if not present: + if (ret == null) { + return false; + } + + return !ret; + } } diff --git a/src/main/webapp/oauth2/callback.xhtml b/src/main/webapp/oauth2/callback.xhtml index f0d66b2fa74..76a17b6e113 100644 --- a/src/main/webapp/oauth2/callback.xhtml +++ b/src/main/webapp/oauth2/callback.xhtml @@ -21,7 +21,7 @@

Copyright © {{ copyright }}.