From 06adbe1d2ca4bcac13262cbb8f1c913bb23c9c82 Mon Sep 17 00:00:00 2001
From: "Stefan E. Funk" <funk@sub.uni-goettingen.de>
Date: Thu, 5 Jan 2023 16:34:01 +0100
Subject: [PATCH] fix: refactor some strings

---
 .../middleware/RecordDelivererDatacite.java   | 99 +++++++++++--------
 1 file changed, 58 insertions(+), 41 deletions(-)

diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDatacite.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDatacite.java
index a2cd6717..9c38f327 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDatacite.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDatacite.java
@@ -61,6 +61,24 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract {
   private static final String TG_PROJECT_CONTRIBUTOR_SCHEME = "textgrid";
   private static final String TG_PROJECT_CONTRIBUTOR_SCHEME_URI =
       "https://textgridrep.org/project/";
+  private static final String ERROR_NO_DATA_CAN_BE_RETRIEVED =
+      "No data could be retrieved from ElasticSearch for ID: ";
+  private static final String BYTES = "Bytes";
+  private static final String DOT_VALUE = ".value";
+  private static final String DOT_TYPE = ".type";
+  private static final String DOT_ID = ".id";
+  private static final String LICENSE_URI = ".licenseUri";
+  private static final String EU_OPEN_ACCESS = "info:eu-repo/semantics/openAccess";
+  private static final String ID_TYPE_HANDLE = "Handle";
+  private static final String ID_TYPE_DOI = "DOI";
+  private static final String ID_TYPE_OTHER = "Other";
+  private static final String PND = "PND";
+  private static final String GND = "GND";
+  private static final String GND_SCHEME = "https://d-nb.info/gnd/";
+  private static final String VIAF = "VIAF";
+  private static final String VIAF_SCHEME = "https://viaf.org/viaf/";
+  private static final String ORCID = "ORCID";
+  private static final String ORCID_SCHEME = "https://orcid.org/";
 
   // **
   // STATICS
@@ -123,8 +141,7 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract {
         replacedID, this.fields, Strings.EMPTY_ARRAY).getSource());
 
     if (this.jsonObj == null || this.jsonObj.isEmpty()) {
-      throw new IOException(
-          "No data could be retrieved from ElasticSearch for ID: " + idInElasticSearchIndex);
+      throw new IOException(ERROR_NO_DATA_CAN_BE_RETRIEVED + idInElasticSearchIndex);
     }
 
     // Set response header.
@@ -247,7 +264,7 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract {
     Sizes sizes = new Sizes();
 
     String size =
-        OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, this.oarSizeField) + " Bytes";
+        OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, this.oarSizeField) + " " + BYTES;
     sizes.getSize().add(size);
 
     return sizes;
@@ -270,17 +287,17 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract {
       if (this.textgrid) {
         Subject subject = new Subject();
         String value =
-            OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, subjectField + ".value");
+            OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, subjectField + DOT_VALUE);
         if (!value.isEmpty()) {
           subject.setValue(value);
         }
         String scheme =
-            OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, subjectField + ".id.value");
+            OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, subjectField + DOT_ID + DOT_VALUE);
         if (!scheme.isEmpty()) {
           subject.setSubjectScheme(scheme);
         }
         String schemeURI =
-            OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, subjectField + ".id.type");
+            OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, subjectField + DOT_ID + DOT_TYPE);
         if (schemeURI.isEmpty()) {
           subject.setSchemeURI(schemeURI);
         }
@@ -396,7 +413,7 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract {
     for (String geoLocationField : this.oarGeoLocationFields) {
       GeoLocation geoLocation = new GeoLocation();
       geoLocation.setGeoLocationPlace(
-          OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, geoLocationField + ".value"));
+          OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, geoLocationField + DOT_VALUE));
       geoLocations.getGeoLocation().add(geoLocation);
     }
 
@@ -556,15 +573,15 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract {
       if (this.textgrid) {
         Rights rights = new Rights();
         rights.setRightsURI(
-            OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, rightsField + ".licenseUri"));
-        rights
-            .setValue(OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, rightsField + ".value"));
+            OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, rightsField + LICENSE_URI));
+        rights.setValue(
+            OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, rightsField + DOT_VALUE));
         rightsResultList.getRights().add(rights);
       }
       // TODO Check open access right here!
       if (rightsResultList.getRights().get(0).getValue() != null) {
         Rights openAccesRight = new Rights();
-        openAccesRight.setRightsURI("info:eu-repo/semantics/openAccess");
+        openAccesRight.setRightsURI(EU_OPEN_ACCESS);
         rightsResultList.getRights().add(openAccesRight);
       }
 
@@ -638,13 +655,13 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract {
         for (String i : alternateIdentifierList) {
           AlternateIdentifier alternateID = new AlternateIdentifier();
           if (i.startsWith(RDFConstants.HDL_PREFIX)) {
-            alternateID.setAlternateIdentifierType("HANDLE");
+            alternateID.setAlternateIdentifierType(ID_TYPE_HANDLE);
             alternateID.setValue(LTPUtils.omitHdlPrefix(i));
           } else if (i.startsWith(RDFConstants.DOI_PREFIX)) {
-            alternateID.setAlternateIdentifierType("DOI");
+            alternateID.setAlternateIdentifierType(ID_TYPE_DOI);
             alternateID.setValue(LTPUtils.omitDoiPrefix(i));
           } else {
-            alternateID.setAlternateIdentifierType("OTHER");
+            alternateID.setAlternateIdentifierType(ID_TYPE_OTHER);
             alternateID.setValue(i);
           }
           alternateIdentifiers.getAlternateIdentifier().add(alternateID);
@@ -689,32 +706,32 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract {
       // **
 
       if (this.textgrid) {
-        Contributor contributorInOpenAireRecord = new Contributor();
+        Contributor contributor = new Contributor();
         if (contributorField.equals("project")) {
           String fieldContent =
-              OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, contributorField + ".value");
+              OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, contributorField + DOT_VALUE);
           if (fieldContent != null && !fieldContent.isEmpty()) {
-            contributorInOpenAireRecord.setContributorName(fieldContent);
-            contributorInOpenAireRecord.setContributorType(ContributorType.OTHER);
+            contributor.setContributorName(fieldContent);
+            contributor.setContributorType(ContributorType.OTHER);
             info.textgrid.middleware.oaipmh.Resource.Contributors.Contributor.NameIdentifier name =
                 new info.textgrid.middleware.oaipmh.Resource.Contributors.Contributor.NameIdentifier();
             name.setNameIdentifierScheme(TG_PROJECT_CONTRIBUTOR_SCHEME);
             name.setValue(
-                OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, contributorField + ".id"));
+                OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, contributorField + DOT_ID));
             name.setSchemeURI(TG_PROJECT_CONTRIBUTOR_SCHEME_URI);
             if (!name.getValue().isEmpty() && !name.getNameIdentifierScheme().isEmpty()
                 && !name.getSchemeURI().isEmpty()) {
-              contributorInOpenAireRecord.setNameIdentifier(name);
+              contributor.setNameIdentifier(name);
             }
-            contributors.getContributor().add(contributorInOpenAireRecord);
+            contributors.getContributor().add(contributor);
           }
         } else {
           String fieldContent =
               OaipmhUtilities.firstEnrtryFieldLoader(this.jsonObj, contributorField);
           if (fieldContent != null && !fieldContent.isEmpty()) {
-            contributorInOpenAireRecord.setContributorName(fieldContent);
-            contributorInOpenAireRecord.setContributorType(ContributorType.DATA_MANAGER);
-            contributors.getContributor().add(contributorInOpenAireRecord);
+            contributor.setContributorName(fieldContent);
+            contributor.setContributorType(ContributorType.DATA_MANAGER);
+            contributors.getContributor().add(contributor);
 
             // info.textgrid.middleware.oaipmh.Resource.Contributors.Contributor.NameIdentifier name
             // =
@@ -736,15 +753,15 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract {
         List<String> contributorsResultList =
             OaipmhUtilities.listFieldLoader(this.jsonObj, contributorField);
         for (String i : contributorsResultList) {
-          Contributor contributorInOpenAireRecord = new Contributor();
+          Contributor contributor = new Contributor();
           if (i != null && !i.isEmpty()) {
-            contributorInOpenAireRecord.setContributorName(i);
+            contributor.setContributorName(i);
             if (contributorField.equals("administrativeMetadata.dcterms:creator")) {
-              contributorInOpenAireRecord.setContributorType(ContributorType.DATA_MANAGER);
+              contributor.setContributorType(ContributorType.DATA_MANAGER);
             } else {
-              contributorInOpenAireRecord.setContributorType(ContributorType.OTHER);
+              contributor.setContributorType(ContributorType.OTHER);
             }
-            contributors.getContributor().add(contributorInOpenAireRecord);
+            contributors.getContributor().add(contributor);
           }
         }
       }
@@ -823,7 +840,7 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract {
       // We must set Handle here for TG, cause we do not have a DOI! So this is not valid due to
       // Datacite schema validation!
       if (idValue != null && !idValue.isEmpty()) {
-        identifier.setIdentifierType("Handle");
+        identifier.setIdentifierType(ID_TYPE_HANDLE);
         identifier.setValue(LTPUtils.omitHdlPrefix(idValue));
       }
     }
@@ -834,7 +851,7 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract {
 
     else if (this.dariah) {
       // We set DOI for DH, 'cause we HAVE it! :-D
-      identifier.setIdentifierType("DOI");
+      identifier.setIdentifierType(ID_TYPE_DOI);
       identifier.setValue(LTPUtils.omitDoiPrefix(idValue));
     }
 
@@ -866,20 +883,20 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract {
           nameIdentifier.setValue(creatorID.split(":")[1]);
           nameIdentifier.setNameIdentifierScheme(creatorID.split(":")[0].toUpperCase());
           // Check if the scheme URI can be set for GND (and PND).
-          if (nameIdentifier.getNameIdentifierScheme().equalsIgnoreCase("pnd")
-              || nameIdentifier.getNameIdentifierScheme().equalsIgnoreCase("gnd")) {
-            nameIdentifier.setNameIdentifierScheme("GND");
-            nameIdentifier.setSchemeURI("https://d-nb.info/gnd/");
+          if (nameIdentifier.getNameIdentifierScheme().equalsIgnoreCase(PND)
+              || nameIdentifier.getNameIdentifierScheme().equalsIgnoreCase(GND)) {
+            nameIdentifier.setNameIdentifierScheme(GND);
+            nameIdentifier.setSchemeURI(GND_SCHEME);
           }
           // Check if scheme can be set for VIAF.
-          else if (nameIdentifier.getNameIdentifierScheme().equalsIgnoreCase("viaf")) {
-            nameIdentifier.setNameIdentifierScheme("VIAF");
-            nameIdentifier.setSchemeURI("https://viaf.org/viaf/");
+          else if (nameIdentifier.getNameIdentifierScheme().equalsIgnoreCase(VIAF)) {
+            nameIdentifier.setNameIdentifierScheme(VIAF);
+            nameIdentifier.setSchemeURI(VIAF_SCHEME);
           }
           // Check if scheme can be set for ORCID.
-          else if (nameIdentifier.getNameIdentifierScheme().equalsIgnoreCase("orcid")) {
-            nameIdentifier.setNameIdentifierScheme("ORCID");
-            nameIdentifier.setSchemeURI("https://orcid.org/");
+          else if (nameIdentifier.getNameIdentifierScheme().equalsIgnoreCase(ORCID)) {
+            nameIdentifier.setNameIdentifierScheme(ORCID);
+            nameIdentifier.setSchemeURI(ORCID_SCHEME);
           }
           // TODO Implement more scheme URIs!
         } else {
-- 
GitLab