From 5ad88fcd33ad0f0a1fb95cc239191216e2fcd60f Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Wed, 1 Nov 2017 13:15:00 -0400 Subject: [PATCH] better author name parsing (could be an org!) #3793 #2243 --- .../iq/dataverse/dataset/DatasetUtil.java | 34 +++++++++++-------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/dataset/DatasetUtil.java b/src/main/java/edu/harvard/iq/dataverse/dataset/DatasetUtil.java index 156774172a7..e2773b13c93 100644 --- a/src/main/java/edu/harvard/iq/dataverse/dataset/DatasetUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/dataset/DatasetUtil.java @@ -6,9 +6,6 @@ import edu.harvard.iq.dataverse.DatasetField; import edu.harvard.iq.dataverse.DatasetVersion; import edu.harvard.iq.dataverse.FileMetadata; -import edu.harvard.iq.dataverse.authorization.AuthenticatedUserDisplayInfo; -import edu.harvard.iq.dataverse.authorization.providers.shib.ShibUserNameFields; -import edu.harvard.iq.dataverse.authorization.providers.shib.ShibUtil; import edu.harvard.iq.dataverse.dataaccess.DataAccess; import static edu.harvard.iq.dataverse.dataaccess.DataAccess.getStorageIO; import edu.harvard.iq.dataverse.dataaccess.StorageIO; @@ -474,18 +471,25 @@ public static String getJsonLd(DatasetVersion workingVersion) { JsonArrayBuilder authors = Json.createArrayBuilder(); for (DatasetAuthor datasetAuthor : workingVersion.getDatasetAuthors()) { JsonObjectBuilder author = Json.createObjectBuilder(); - author.add("@type", "Person"); - ShibUserNameFields shibUserNameFields = ShibUtil.findBestFirstAndLastName(null, null, datasetAuthor.getName().getValue().replaceAll(",", "")); - AuthenticatedUserDisplayInfo displayInfo = new AuthenticatedUserDisplayInfo( - shibUserNameFields.getFirstName(), - shibUserNameFields.getLastName(), - "", - "", - "" - ); - author.add("name", displayInfo.getFirstName() + " " + displayInfo.getLastName()); - author.add("givenName", displayInfo.getFirstName()); - author.add("familyName", displayInfo.getLastName()); + // "We expect dataset depositors to put personal names and organizational names in the author field." For example, "Gallup Organization". + String personOrOrganization = datasetAuthor.getName().getValue(); + // TODO: Make this more robust. What if people or orgs have more than one comma in the name? For example, + // "Digital Archive of Massachusetts Anti-Slavery and Anti-Segregation Petitions, Massachusetts Archives, Boston MA" + String[] parts = personOrOrganization.split(","); + String name = ""; + String firstName = null; + String lastName = null; + if (parts.length == 1) { + name = personOrOrganization; + } else { + author.add("@type", "Person"); + lastName = parts[0]; + firstName = parts[1]; + author.add("givenName", firstName); + author.add("familyName", lastName); + name = firstName + " " + lastName; + } + author.add("name", name); authors.add(author); } job.add("author", authors);