From a158ebf3f1c1ee55b8118b015404f7a3793817f3 Mon Sep 17 00:00:00 2001 From: Pete Meyer Date: Thu, 11 May 2017 15:29:01 -0400 Subject: [PATCH 001/135] DC identifier (persistent ID) to dataset landing page --- src/main/webapp/dataset.xhtml | 6 +++++- src/main/webapp/dataverse_template.xhtml | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/webapp/dataset.xhtml b/src/main/webapp/dataset.xhtml index a44b260ca57..5091d76bf9c 100755 --- a/src/main/webapp/dataset.xhtml +++ b/src/main/webapp/dataset.xhtml @@ -19,7 +19,11 @@ - + + + + + diff --git a/src/main/webapp/dataverse_template.xhtml b/src/main/webapp/dataverse_template.xhtml index 6da6b363146..916651f5231 100644 --- a/src/main/webapp/dataverse_template.xhtml +++ b/src/main/webapp/dataverse_template.xhtml @@ -11,7 +11,8 @@ <h:outputText value="#{pageTitle}"/> - + + From 331832affaba96d8179f6b0c13f1630285d0aa89 Mon Sep 17 00:00:00 2001 From: Pete Meyer Date: Thu, 11 May 2017 16:28:18 -0400 Subject: [PATCH 002/135] a few more DC terms --- .../edu/harvard/iq/dataverse/DatasetPage.java | 22 +++++++++++++++++++ src/main/webapp/dataset.xhtml | 6 +++++ 2 files changed, 28 insertions(+) diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java index cdb555d24e6..c6b29fc1ba0 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java @@ -3556,6 +3556,28 @@ public TwoRavensHelper getTwoRavensHelper() { public void setTwoRavensHelper(TwoRavensHelper twoRavensHelper) { this.twoRavensHelper = twoRavensHelper; } + + /** + * dataset title + */ + public String getTitle() + { //workingVersion + assert( null != workingVersion ); + return workingVersion.getTitle(); + } + + /** + * dataset publication date (dd MMM yyyy). + * + */ + public String getPublicationDate() + { + assert( null != workingVersion ); + Date rel_date = workingVersion.getReleaseTime(); + SimpleDateFormat fmt = new SimpleDateFormat("dd MMM yyyy"); + String r = fmt.format( rel_date.getTime() ); + return r; + } /* public String getThumbnail() { diff --git a/src/main/webapp/dataset.xhtml b/src/main/webapp/dataset.xhtml index 5091d76bf9c..73b08a237c3 100755 --- a/src/main/webapp/dataset.xhtml +++ b/src/main/webapp/dataset.xhtml @@ -23,6 +23,12 @@ + + + + + + From e925b3fd591da1cedeff374f9d721631e28e33ff Mon Sep 17 00:00:00 2001 From: Pete Meyer Date: Thu, 11 May 2017 17:24:24 -0400 Subject: [PATCH 003/135] now with dataset authors --- .../edu/harvard/iq/dataverse/DatasetPage.java | 18 ++++++++++++++++++ src/main/webapp/dataset.xhtml | 4 +++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java index c6b29fc1ba0..05cfc93da5e 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java @@ -40,6 +40,7 @@ import static edu.harvard.iq.dataverse.util.JsfHelper.JH; import edu.harvard.iq.dataverse.util.StringUtil; import edu.harvard.iq.dataverse.util.SystemConfig; +import edu.harvard.iq.dataverse.DatasetAuthor; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -3578,6 +3579,23 @@ public String getPublicationDate() String r = fmt.format( rel_date.getTime() ); return r; } + /** + * dataset authors + */ + public String[] getDatasetAuthors() + { + assert( null != workingVersion ); + List authors = workingVersion.getDatasetAuthors(); + int n_authors = authors.size(); + String[] rs = new String[ n_authors ]; + int pos = 0; + for( DatasetAuthor author : authors ) + { + rs[pos] = author.getName().getValue(); + ++pos; + } + return rs; + } /* public String getThumbnail() { diff --git a/src/main/webapp/dataset.xhtml b/src/main/webapp/dataset.xhtml index 73b08a237c3..f06fb7abfed 100755 --- a/src/main/webapp/dataset.xhtml +++ b/src/main/webapp/dataset.xhtml @@ -28,7 +28,9 @@ - + + + From 0b69048e97c5d33be262a245f5814875978e0e11 Mon Sep 17 00:00:00 2001 From: Pete Meyer Date: Thu, 11 May 2017 17:32:22 -0400 Subject: [PATCH 004/135] use root dataverse name as DC.publisher --- src/main/java/edu/harvard/iq/dataverse/DatasetPage.java | 8 ++++++++ src/main/webapp/dataset.xhtml | 3 +-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java index 05cfc93da5e..57b60f20c20 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java @@ -3596,6 +3596,14 @@ public String[] getDatasetAuthors() } return rs; } + /** + * publisher (aka - name of root dataverse) + */ + public String getPublisher() + { + assert( null != workingVersion ); + return workingVersion.getRootDataverseNameforCitation(); + } /* public String getThumbnail() { diff --git a/src/main/webapp/dataset.xhtml b/src/main/webapp/dataset.xhtml index f06fb7abfed..52967bbe986 100755 --- a/src/main/webapp/dataset.xhtml +++ b/src/main/webapp/dataset.xhtml @@ -26,8 +26,7 @@ - - + From 66438cf4738d66e90f79938925275d0018189dfd Mon Sep 17 00:00:00 2001 From: Pete Meyer Date: Thu, 11 May 2017 17:34:43 -0400 Subject: [PATCH 005/135] remove 'work-in-progress' comment --- src/main/webapp/dataset.xhtml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/webapp/dataset.xhtml b/src/main/webapp/dataset.xhtml index 52967bbe986..df59f1f2c8a 100755 --- a/src/main/webapp/dataset.xhtml +++ b/src/main/webapp/dataset.xhtml @@ -21,7 +21,6 @@ - From 5b1073267abf9c25c10681dca70e375b7d8d05e0 Mon Sep 17 00:00:00 2001 From: Pete Meyer Date: Wed, 17 May 2017 17:17:37 -0400 Subject: [PATCH 006/135] return empty string for DC publication date in meta tags for DRAFT datasets --- src/main/java/edu/harvard/iq/dataverse/DatasetPage.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java index 57b60f20c20..c4388d61caf 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java @@ -3569,11 +3569,16 @@ public String getTitle() /** * dataset publication date (dd MMM yyyy). + * unpublished datasets will return an empty string. * */ public String getPublicationDate() { assert( null != workingVersion ); + if ( DatasetVersion.VersionState.DRAFT == workingVersion.getVersionState() ) + { + return ""; + } Date rel_date = workingVersion.getReleaseTime(); SimpleDateFormat fmt = new SimpleDateFormat("dd MMM yyyy"); String r = fmt.format( rel_date.getTime() ); From ba0b730f8c5a32c29de0aed9a174574afa9e9606 Mon Sep 17 00:00:00 2001 From: Stephen Kraffmiller Date: Mon, 22 May 2017 11:40:00 -0400 Subject: [PATCH 007/135] #3639 Add customization hooks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit new branch because previous name didn’t work. --- .../dataverse/CustomizationFilesServlet.java | 146 ++++++++++++++++++ .../settings/SettingsServiceBean.java | 18 ++- src/main/webapp/dataverse.xhtml | 5 + src/main/webapp/dataverse_footer.xhtml | 1 + src/main/webapp/dataverse_header.xhtml | 1 + 5 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 src/main/java/edu/harvard/iq/dataverse/CustomizationFilesServlet.java diff --git a/src/main/java/edu/harvard/iq/dataverse/CustomizationFilesServlet.java b/src/main/java/edu/harvard/iq/dataverse/CustomizationFilesServlet.java new file mode 100644 index 00000000000..77268ef7dcc --- /dev/null +++ b/src/main/java/edu/harvard/iq/dataverse/CustomizationFilesServlet.java @@ -0,0 +1,146 @@ +/* + * 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; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.nio.file.Path; +import java.nio.file.Paths; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import edu.harvard.iq.dataverse.settings.SettingsServiceBean; +import javax.ejb.EJB; + +/** + * + * @author skraffmi + */ +@WebServlet(name = "CustomizationFilesServlet", urlPatterns = {"/CustomizationFilesServlet"}) +public class CustomizationFilesServlet extends HttpServlet { + + @EJB + SettingsServiceBean settingsService; + + /** + * Processes requests for both HTTP GET and POST + * methods. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + protected void processRequest(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + response.setContentType("text/html;charset=UTF-8"); + + String customFileType = request.getParameter("customFileType"); + String filePath = getFilePath(customFileType); + + Path physicalPath = Paths.get(filePath); + try { + File fileIn = physicalPath.toFile(); + if (fileIn != null) { + FileInputStream inputStream = new FileInputStream(fileIn); + + BufferedReader in = new BufferedReader(new InputStreamReader(inputStream)); + String line; + + StringBuilder responseData = new StringBuilder(); + try (PrintWriter out = response.getWriter()) { + + while ((line = in.readLine()) != null) { + responseData.append(line); + out.println(line); + } + } + + inputStream.close(); + + + } else { + /* + If the file doesn't exist or it is unreadable we don't care + */ + } + + } catch (Exception e) { + /* + If the file doesn't exist or it is unreadable we don't care + */ + } + + } + + private String getFilePath(String fileTypeParam){ + + if (fileTypeParam.equals("homePage")) { + String nonNullDefaultIfKeyNotFound = ""; + return settingsService.getValueForKey(SettingsServiceBean.Key.HomePageCustomizationFile, nonNullDefaultIfKeyNotFound); + } + if (fileTypeParam.equals("header")) { + String nonNullDefaultIfKeyNotFound = ""; + return settingsService.getValueForKey(SettingsServiceBean.Key.HeaderCustomizationFile, nonNullDefaultIfKeyNotFound); + } + if (fileTypeParam.equals("footer")) { + String nonNullDefaultIfKeyNotFound = ""; + return settingsService.getValueForKey(SettingsServiceBean.Key.FooterCustomizationFile, nonNullDefaultIfKeyNotFound); + } + if (fileTypeParam.equals("style")) { + String nonNullDefaultIfKeyNotFound = ""; + return settingsService.getValueForKey(SettingsServiceBean.Key.FooterCustomizationFile, nonNullDefaultIfKeyNotFound); + } + + return ""; + } + + // + /** + * Handles the HTTP GET method. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + /** + * Handles the HTTP POST method. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + /** + * Returns a short description of the servlet. + * + * @return a String containing servlet description + */ + @Override + public String getServletInfo() { + return "Short description"; + }// + +} \ No newline at end of file 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 0b3ba700bb9..f10b81c4725 100644 --- a/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java @@ -243,7 +243,23 @@ Whether Harvesting (OAI) service is enabled /** * Whether Export should exclude FieldType.EMAIL */ - ExcludeEmailFromExport; + ExcludeEmailFromExport, + /* + Location and name of HomePage customization file + */ + HomePageCustomizationFile, + /* + Location and name of Header customization file + */ + HeaderCustomizationFile, + /* + Location and name of Footer customization file + */ + FooterCustomizationFile, + /* + Location and name of CSS customization file + */ + StyleCustomizationFile; @Override public String toString() { diff --git a/src/main/webapp/dataverse.xhtml b/src/main/webapp/dataverse.xhtml index 82f7f4c8de2..4b5875a4ec9 100644 --- a/src/main/webapp/dataverse.xhtml +++ b/src/main/webapp/dataverse.xhtml @@ -43,6 +43,11 @@ + + + diff --git a/src/main/webapp/dataverse_footer.xhtml b/src/main/webapp/dataverse_footer.xhtml index 285c4408f19..4456c9a7ffa 100644 --- a/src/main/webapp/dataverse_footer.xhtml +++ b/src/main/webapp/dataverse_footer.xhtml @@ -10,6 +10,7 @@ xmlns:iqbs="http://xmlns.jcp.org/jsf/composite/iqbs">