@@ -2950,11 +2950,12 @@ public Response cleanStorage(@Context ContainerRequestContext crc, @PathParam("i
29502950 public Response getCompareVersions (@ Context ContainerRequestContext crc , @ PathParam ("id" ) String id ,
29512951 @ PathParam ("versionId1" ) String versionId1 ,
29522952 @ PathParam ("versionId2" ) String versionId2 ,
2953+ @ QueryParam ("includeDeaccessioned" ) boolean includeDeaccessioned ,
29532954 @ Context UriInfo uriInfo , @ Context HttpHeaders headers ) {
29542955 try {
29552956 DataverseRequest req = createDataverseRequest (getRequestUser (crc ));
2956- DatasetVersion dsv1 = getDatasetVersionOrDie (req , versionId1 , findDatasetOrDie (id ), uriInfo , headers );
2957- DatasetVersion dsv2 = getDatasetVersionOrDie (req , versionId2 , findDatasetOrDie (id ), uriInfo , headers );
2957+ DatasetVersion dsv1 = getDatasetVersionOrDie (req , versionId1 , findDatasetOrDie (id ), uriInfo , headers , includeDeaccessioned );
2958+ DatasetVersion dsv2 = getDatasetVersionOrDie (req , versionId2 , findDatasetOrDie (id ), uriInfo , headers , includeDeaccessioned );
29582959 if (dsv1 .getCreateTime ().getTime () > dsv2 .getCreateTime ().getTime ()) {
29592960 return error (BAD_REQUEST , BundleUtil .getStringFromBundle ("dataset.version.compare.incorrect.order" ));
29602961 }
@@ -2977,7 +2978,7 @@ public Response getCompareVersionsSummary(@Context ContainerRequestContext crc,
29772978 for (DatasetVersion dv : dataset .getVersions ()) {
29782979 //only get summaries of draft is user may view unpublished
29792980
2980- if (dv .isPublished () || permissionService .hasPermissionsFor (user , dv .getDataset (),
2981+ if (dv .isPublished () ||dv . isDeaccessioned () || permissionService .hasPermissionsFor (user , dv .getDataset (),
29812982 EnumSet .of (Permission .ViewUnpublishedDataset ))) {
29822983
29832984 JsonObjectBuilder versionBuilder = new NullSafeJsonBuilder ();
@@ -3002,7 +3003,7 @@ public Response getCompareVersionsSummary(@Context ContainerRequestContext crc,
30023003 }
30033004 }
30043005 if (dv .isDeaccessioned ()) {
3005- versionBuilder .add ("summary" , "versionDeaccessioned" );
3006+ versionBuilder .add ("summary" , getDeaccessionJson ( dv ) );
30063007 }
30073008
30083009 } else {
@@ -3019,6 +3020,25 @@ public Response getCompareVersionsSummary(@Context ContainerRequestContext crc,
30193020 return wr .getResponse ();
30203021 }
30213022 }
3023+
3024+ private JsonObject getDeaccessionJson (DatasetVersion dv ) {
3025+
3026+ JsonObjectBuilder compositionBuilder = Json .createObjectBuilder ();
3027+
3028+ if (dv .getDeaccessionNote () != null && !dv .getDeaccessionNote ().isEmpty ()) {
3029+ compositionBuilder .add ("reason" , dv .getDeaccessionNote ());
3030+ }
3031+
3032+ if (dv .getDeaccessionLink () != null && !dv .getDeaccessionLink ().isEmpty ()) {
3033+ compositionBuilder .add ("url" , dv .getDeaccessionLink ());
3034+ }
3035+
3036+ JsonObject json = Json .createObjectBuilder ()
3037+ .add ("deaccessioned" , compositionBuilder )
3038+ .build ();
3039+
3040+ return json ;
3041+ }
30223042
30233043 private static Set <String > getDatasetFilenames (Dataset dataset ) {
30243044 Set <String > files = new HashSet <>();
0 commit comments