From 3b5d1bb67b3d5bb5f3736736da296a48687dd409 Mon Sep 17 00:00:00 2001 From: bmckinney Date: Tue, 15 Mar 2016 09:55:49 -0400 Subject: [PATCH 1/5] ignores intellij folders --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 37db4a9d156..c4818eff9b8 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ scripts/api/py_api_wrapper/local-data/* doc/sphinx-guides/build faces-config.NavData src/main/java/BuildNumber.properties +# VCS +.idea/ +/overlays/ From dc48119bd47aac77ac5b967c8d0d54240ace9ff9 Mon Sep 17 00:00:00 2001 From: bmckinney Date: Tue, 15 Mar 2016 15:44:16 -0400 Subject: [PATCH 2/5] adds bibtex citation export --- src/main/java/Bundle.properties | 1 + src/main/java/Bundle_zh_CN.properties | 1 + .../edu/harvard/iq/dataverse/DatasetPage.java | 39 ++++++++++++++++++- .../iq/dataverse/DatasetServiceBean.java | 32 ++++++++++++++- .../edu/harvard/iq/dataverse/api/Access.java | 3 +- .../dataverse/api/BundleDownloadInstance.java | 12 +++++- .../api/BundleDownloadInstanceWriter.java | 8 ++++ .../dataverse/ingest/IngestServiceBean.java | 2 +- src/main/webapp/dataset.xhtml | 5 +++ src/main/webapp/filesFragment.xhtml | 6 +++ 10 files changed, 103 insertions(+), 6 deletions(-) diff --git a/src/main/java/Bundle.properties b/src/main/java/Bundle.properties index 2767358f9ac..4bf24ca3957 100755 --- a/src/main/java/Bundle.properties +++ b/src/main/java/Bundle.properties @@ -802,6 +802,7 @@ dataset.cite.standards.tip=If you use these data, please add this citation to yo dataset.cite.downloadBtn=Download Citation dataset.cite.downloadBtn.xml=EndNote XML dataset.cite.downloadBtn.ris=RIS Format +dataset.cite.downloadBtn.bib=BibTeX Format dataset.create.authenticatedUsersOnly=Only authenticated users can create datasets. dataset.deaccession.reason=Deaccession Reason dataset.beAccessedAt=The dataset can now be accessed at: diff --git a/src/main/java/Bundle_zh_CN.properties b/src/main/java/Bundle_zh_CN.properties index 7ec37ba606f..d2a8589d2e7 100644 --- a/src/main/java/Bundle_zh_CN.properties +++ b/src/main/java/Bundle_zh_CN.properties @@ -328,6 +328,7 @@ dataset.cite.whyCite=\u4e3a\u4ec0\u4e48\u8981\u5f15\u7528\uff1f dataset.cite.downloadBtn=\u4e0b\u8f7d\u5f15\u7528 dataset.cite.downloadBtn.xml=EndNote XML dataset.cite.downloadBtn.ris=RIS\u683c\u5f0f +dataset.cite.downloadBtn.bib=BibTeX\u683c\u5f0f dataset.deaccession.reason=Deaccession\u539f\u56e0\uff1a dataset.beAccessedAt=\u8be5\u6570\u636e\u96c6\u73b0\u5728\u53ef\u4ee5\u5728{0}\u8bbf\u95ee dataset.noTemplate.label=\u6ca1\u6709\u6a21\u677f - \u6e05\u6670\u7684\u9ed8\u8ba4\u503c diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java index 26fc4080119..78af6c00139 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java @@ -3310,7 +3310,44 @@ public void downloadCitationRIS(FileMetadata fileMetadata) { } } - + + public void downloadDatasetCitationBibtex() { + + downloadCitationBibtex(null); + + } + + public void downloadDatafileCitationBibtex(FileMetadata fileMetadata) { + downloadCitationBibtex(fileMetadata); + } + + public void downloadCitationBibtex(FileMetadata fileMetadata) { + + String bibFormatDowload = datasetService.createCitationBibtex(workingVersion, fileMetadata); + FacesContext ctx = FacesContext.getCurrentInstance(); + HttpServletResponse response = (HttpServletResponse) ctx.getExternalContext().getResponse(); + response.setContentType("application/download"); + + String fileNameString = ""; + if (fileMetadata == null || fileMetadata.getLabel() == null) { + // Dataset-level citation: + fileNameString = "attachment;filename=" + getFileNameDOI() + ".bib"; + } else { + // Datafile-level citation: + fileNameString = "attachment;filename=" + getFileNameDOI() + "-" + fileMetadata.getLabel().replaceAll("\\.tab$", ".bib"); + } + response.setHeader("Content-Disposition", fileNameString); + + try { + ServletOutputStream out = response.getOutputStream(); + out.write(bibFormatDowload.getBytes()); + out.flush(); + ctx.responseComplete(); + } catch (Exception e) { + + } + } + public String getDatasetPublishCustomText(){ String datasetPublishCustomText = settingsService.getValueForKey(SettingsServiceBean.Key.DatasetPublishPopupCustomText); if( datasetPublishCustomText!= null && !datasetPublishCustomText.isEmpty()){ diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java index 8596ba9dcc8..bb3f2516a6a 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java @@ -106,7 +106,7 @@ public List findAll() { /** * For docs, see the equivalent method on the DataverseServiceBean. - * @see DataverseServiceBean#findAllOrSubset(long, long) + * @see DataverseServiceBean#findAllOrSubset(long, long, boolean) */ public List findAllOrSubset(long numPartitions, long partitionId, boolean skipIndexed) { if (numPartitions < 1) { @@ -265,6 +265,36 @@ public String createCitationRIS(DatasetVersion version, FileMetadata fileMetadat return retString; } + public String createCitationBibtex(DatasetVersion version) { + return createCitationBibtex(version, null); + } + + public String createCitationBibtex(DatasetVersion version, FileMetadata fileMetadata) { + String publisher = version.getRootDataverseNameforCitation(); + List authorList = version.getDatasetAuthors(); + List authorDisplayList = new ArrayList<>(); + + for (DatasetAuthor author : authorList) { + authorDisplayList.add(author.getName().getDisplayValue()); + } + + String retString = "@data{"; + retString += version.getDataset().getIdentifier() + "_" + version.getVersionYear() + "," + "\r\n"; + retString += "author = {"; + retString += String.join(" and ", authorDisplayList); + retString += "}," + "\r\n"; + retString += "publisher = {" + publisher + "}," + "\r\n"; + retString += "title = {" + version.getTitle() + "}," + "\r\n"; + retString += "year = {" + version.getVersionYear() + "}," + "\r\n"; + retString += "doi = {" + version.getDataset().getAuthority() + + version.getDataset().getDoiSeparator() + + version.getDataset().getIdentifier() + "}," + "\r\n"; + retString += "url = {" + version.getDataset().getPersistentURL() + "}" + "\r\n"; + retString += "}"; + + return retString; + } + private XMLOutputFactory xmlOutputFactory = null; public String createCitationXML(DatasetVersion datasetVersion, FileMetadata fileMetadata) { diff --git a/src/main/java/edu/harvard/iq/dataverse/api/Access.java b/src/main/java/edu/harvard/iq/dataverse/api/Access.java index 5e2d834272b..522a28362f7 100644 --- a/src/main/java/edu/harvard/iq/dataverse/api/Access.java +++ b/src/main/java/edu/harvard/iq/dataverse/api/Access.java @@ -143,7 +143,8 @@ public BundleDownloadInstance datafileBundle(@PathParam("fileId") Long fileId, @ downloadInstance.setFileCitationEndNote(datasetService.createCitationXML(datasetVersion, fileMetadata)); downloadInstance.setFileCitationRIS(datasetService.createCitationRIS(datasetVersion, fileMetadata)); - + downloadInstance.setFileCitationBibtex(datasetService.createCitationBibtex(datasetVersion, fileMetadata)); + ByteArrayOutputStream outStream = null; outStream = new ByteArrayOutputStream(); diff --git a/src/main/java/edu/harvard/iq/dataverse/api/BundleDownloadInstance.java b/src/main/java/edu/harvard/iq/dataverse/api/BundleDownloadInstance.java index 31c895f29fe..b44434107ca 100644 --- a/src/main/java/edu/harvard/iq/dataverse/api/BundleDownloadInstance.java +++ b/src/main/java/edu/harvard/iq/dataverse/api/BundleDownloadInstance.java @@ -6,8 +6,6 @@ package edu.harvard.iq.dataverse.api; -import java.util.List; - /** * * @author Leonid Andreev @@ -19,6 +17,7 @@ public class BundleDownloadInstance { private String fileCitationEndNote = ""; private String fileCitationRIS = ""; private String fileDDIXML = ""; + private String fileCitationBibtex = ""; public BundleDownloadInstance() { @@ -59,4 +58,13 @@ public String getFileDDIXML() { public void setFileDDIXML(String fileDDIXML) { this.fileDDIXML = fileDDIXML; } + + public String getFileCitationBibtex() { + return fileCitationBibtex; + } + + public void setFileCitationBibtex(String fileCitationBibtex) { + this.fileCitationBibtex = fileCitationBibtex; + } + } diff --git a/src/main/java/edu/harvard/iq/dataverse/api/BundleDownloadInstanceWriter.java b/src/main/java/edu/harvard/iq/dataverse/api/BundleDownloadInstanceWriter.java index 32967b58a1c..2c1ee91b687 100644 --- a/src/main/java/edu/harvard/iq/dataverse/api/BundleDownloadInstanceWriter.java +++ b/src/main/java/edu/harvard/iq/dataverse/api/BundleDownloadInstanceWriter.java @@ -186,6 +186,14 @@ public void writeTo(BundleDownloadInstance di, Class clazz, Type type, Annota zout.closeEntry(); } + if (di.getFileCitationBibtex() != null) { + e = new ZipEntry(fileName.replaceAll("\\.tab$","citation-bib.bib")); + + zout.putNextEntry(e); + zout.write(di.getFileCitationBibtex().getBytes()); + zout.closeEntry(); + } + zout.close(); return; } diff --git a/src/main/java/edu/harvard/iq/dataverse/ingest/IngestServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/ingest/IngestServiceBean.java index e0d221d9863..59d4693ee97 100644 --- a/src/main/java/edu/harvard/iq/dataverse/ingest/IngestServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/ingest/IngestServiceBean.java @@ -803,7 +803,7 @@ private DataFile createSingleDataFile(DatasetVersion version, InputStream inputS datafile.setPermissionModificationTime(new Timestamp(new Date().getTime())); FileMetadata fmd = new FileMetadata(); - fmd.setLabel(checkForDuplicateFileNames(version,fileName)); + //fmd.setLabel(checkForDuplicateFileNames(version,fileName)); if (addToDataset) { datafile.setOwner(version.getDataset()); diff --git a/src/main/webapp/dataset.xhtml b/src/main/webapp/dataset.xhtml index 3a2c478eb47..abc326fc97b 100755 --- a/src/main/webapp/dataset.xhtml +++ b/src/main/webapp/dataset.xhtml @@ -322,6 +322,11 @@ #{bundle['dataset.cite.downloadBtn.ris']} +
  • + + #{bundle['dataset.cite.downloadBtn.bib']} + +
  • diff --git a/src/main/webapp/filesFragment.xhtml b/src/main/webapp/filesFragment.xhtml index 680a8713659..4603d57a863 100644 --- a/src/main/webapp/filesFragment.xhtml +++ b/src/main/webapp/filesFragment.xhtml @@ -491,6 +491,12 @@ +
  • + + + +
  • + From 7c5f77098da72e7df9c9469563748ff9a77f3342 Mon Sep 17 00:00:00 2001 From: bmckinney Date: Wed, 16 Mar 2016 08:44:22 -0400 Subject: [PATCH 3/5] !minor: reverts debugging --- .../java/edu/harvard/iq/dataverse/ingest/IngestServiceBean.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/ingest/IngestServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/ingest/IngestServiceBean.java index 59d4693ee97..e0d221d9863 100644 --- a/src/main/java/edu/harvard/iq/dataverse/ingest/IngestServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/ingest/IngestServiceBean.java @@ -803,7 +803,7 @@ private DataFile createSingleDataFile(DatasetVersion version, InputStream inputS datafile.setPermissionModificationTime(new Timestamp(new Date().getTime())); FileMetadata fmd = new FileMetadata(); - //fmd.setLabel(checkForDuplicateFileNames(version,fileName)); + fmd.setLabel(checkForDuplicateFileNames(version,fileName)); if (addToDataset) { datafile.setOwner(version.getDataset()); From e976d2fc924063c5d65c71cf9f101b9dc319db39 Mon Sep 17 00:00:00 2001 From: bmckinney Date: Wed, 16 Mar 2016 09:48:34 -0400 Subject: [PATCH 4/5] !minor: changes multi-author delimiter from "and" to semicolon --- src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java index bb3f2516a6a..6fb072f2903 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java @@ -281,7 +281,7 @@ public String createCitationBibtex(DatasetVersion version, FileMetadata fileMeta String retString = "@data{"; retString += version.getDataset().getIdentifier() + "_" + version.getVersionYear() + "," + "\r\n"; retString += "author = {"; - retString += String.join(" and ", authorDisplayList); + retString += String.join("; ", authorDisplayList); retString += "}," + "\r\n"; retString += "publisher = {" + publisher + "}," + "\r\n"; retString += "title = {" + version.getTitle() + "}," + "\r\n"; From a5787863d60bb1b62184c97b59467d70de048be0 Mon Sep 17 00:00:00 2001 From: bmckinney Date: Wed, 16 Mar 2016 10:38:36 -0400 Subject: [PATCH 5/5] Revert "ignores intellij folders" This reverts commit 3b5d1bb67b3d5bb5f3736736da296a48687dd409. --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index c4818eff9b8..37db4a9d156 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,3 @@ scripts/api/py_api_wrapper/local-data/* doc/sphinx-guides/build faces-config.NavData src/main/java/BuildNumber.properties -# VCS -.idea/ -/overlays/