diff --git a/src/main/java/edu/harvard/iq/dataverse/FilePage.java b/src/main/java/edu/harvard/iq/dataverse/FilePage.java index 4a7b3ff68b5..1fa2b986e31 100644 --- a/src/main/java/edu/harvard/iq/dataverse/FilePage.java +++ b/src/main/java/edu/harvard/iq/dataverse/FilePage.java @@ -837,7 +837,7 @@ public String getPublicDownloadUrl() { e.printStackTrace(); } - return FileUtil.getPublicDownloadUrl(systemConfig.getDataverseSiteUrl(), persistentId); + return FileUtil.getPublicDownloadUrl(systemConfig.getDataverseSiteUrl(), persistentId, fileId); } public List getConfigureTools() { diff --git a/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java b/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java index 18523f80eea..64d959773d9 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java @@ -1347,11 +1347,18 @@ public static boolean isPubliclyDownloadable(FileMetadata fileMetadata) { * This is what the UI displays for "Download URL" on the file landing page * (DOIs rather than file IDs. */ - public static String getPublicDownloadUrl(String dataverseSiteUrl, String persistentId) { - String path = "/api/access/datafile/:persistentId?persistentId=" + persistentId; - return dataverseSiteUrl + path; + public static String getPublicDownloadUrl(String dataverseSiteUrl, String persistentId, Long fileId) { + String path = null; + if(persistentId != null) { + path = dataverseSiteUrl + "/api/access/datafile/:persistentId?persistentId=" + persistentId; + } else if( fileId != null) { + path = dataverseSiteUrl + "/api/access/datafile/" + fileId; + } else { + logger.info("In getPublicDownloadUrl but persistentId & fileId are both null!"); + } + return path; } - + /** * The FileDownloadServiceBean operates on file IDs, not DOIs. */ diff --git a/src/main/webapp/file.xhtml b/src/main/webapp/file.xhtml index 64d109570bc..d1939a0431d 100644 --- a/src/main/webapp/file.xhtml +++ b/src/main/webapp/file.xhtml @@ -428,7 +428,7 @@ -
+
diff --git a/src/test/java/edu/harvard/iq/dataverse/util/FileUtilTest.java b/src/test/java/edu/harvard/iq/dataverse/util/FileUtilTest.java index fcfded0dd2b..f3db16082b5 100644 --- a/src/test/java/edu/harvard/iq/dataverse/util/FileUtilTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/util/FileUtilTest.java @@ -159,8 +159,10 @@ public void testgetFileDownloadUrl() { @Test public void testGetPublicDownloadUrl() { - assertEquals("null/api/access/datafile/:persistentId?persistentId=null", FileUtil.getPublicDownloadUrl(null, null)); - assertEquals("https://demo.dataverse.org/api/access/datafile/:persistentId?persistentId=doi:10.5072/FK2/TLU3EP", FileUtil.getPublicDownloadUrl("https://demo.dataverse.org", "doi:10.5072/FK2/TLU3EP")); + assertEquals(null, FileUtil.getPublicDownloadUrl(null, null, null)); + assertEquals("https://demo.dataverse.org/api/access/datafile/:persistentId?persistentId=doi:10.5072/FK2/TLU3EP", FileUtil.getPublicDownloadUrl("https://demo.dataverse.org", "doi:10.5072/FK2/TLU3EP", 33L)); //pid before fileId + assertEquals("https://demo.dataverse.org/api/access/datafile/:persistentId?persistentId=doi:10.5072/FK2/TLU3EP", FileUtil.getPublicDownloadUrl("https://demo.dataverse.org", "doi:10.5072/FK2/TLU3EP", null)); + assertEquals("https://demo.dataverse.org/api/access/datafile/33", FileUtil.getPublicDownloadUrl("https://demo.dataverse.org", null, 33L)); //pid before fileId } @Test