From 5df4720277928789f14f94faa2ca4b108a23082d Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Wed, 3 Jul 2024 14:36:15 -0400 Subject: [PATCH 01/12] avoid making non-managed fields hidden --- .../iq/dataverse/DatasetFieldServiceBean.java | 13 +++++++++++++ .../edu/harvard/iq/dataverse/SettingsWrapper.java | 12 ++++++++++++ src/main/webapp/metadataFragment.xhtml | 7 +++++-- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java index 34595728fa7..317b6347c00 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java @@ -84,6 +84,9 @@ public class DatasetFieldServiceBean implements java.io.Serializable { //Note that for primitive fields, the prent and term-uri-field are the same and these maps have the same entry Map cvocMapByTermUri = null; + //Flat list of cvoc managed fields + Set managedFieldSet = null; + //The hash of the existing CVocConf setting. Used to determine when the setting has changed and it needs to be re-parsed to recreate the cvocMaps String oldHash = null; @@ -282,6 +285,10 @@ public Map getCVocConf(boolean byTermUriField){ String cvocSetting = settingsService.getValueForKey(SettingsServiceBean.Key.CVocConf); if (cvocSetting == null || cvocSetting.isEmpty()) { oldHash=null; + //Release old maps + cvocMap=null; + cvocMapByTermUri=null; + managedFieldSet = null; return new HashMap<>(); } String newHash = DigestUtils.md5Hex(cvocSetting); @@ -291,6 +298,7 @@ public Map getCVocConf(boolean byTermUriField){ oldHash=newHash; cvocMap=new HashMap<>(); cvocMapByTermUri=new HashMap<>(); + managedFieldSet = new HashSet<>(); try (JsonReader jsonReader = Json.createReader(new StringReader(settingsService.getValueForKey(SettingsServiceBean.Key.CVocConf)))) { JsonArray cvocConfJsonArray = jsonReader.readArray(); @@ -331,6 +339,7 @@ public Map getCVocConf(boolean byTermUriField){ + managedFields.getString(s)); } else { logger.fine("Found: " + dft.getName()); + managedFieldSet.add(dft.getName()); } } } @@ -342,6 +351,10 @@ public Map getCVocConf(boolean byTermUriField){ return byTermUriField ? cvocMapByTermUri : cvocMap; } + public Set getManagedFieldSet() { + return managedFieldSet; + } + /** * Adds information about the external vocabulary term being used in this DatasetField to the ExternalVocabularyValue table if it doesn't already exist. * @param df - the primitive/parent compound field containing a newly saved value diff --git a/src/main/java/edu/harvard/iq/dataverse/SettingsWrapper.java b/src/main/java/edu/harvard/iq/dataverse/SettingsWrapper.java index 48196591b19..6e187ae6cef 100644 --- a/src/main/java/edu/harvard/iq/dataverse/SettingsWrapper.java +++ b/src/main/java/edu/harvard/iq/dataverse/SettingsWrapper.java @@ -98,6 +98,7 @@ public class SettingsWrapper implements java.io.Serializable { //External Vocabulary support private Map cachedCvocMap = null; private Map cachedCvocByTermFieldMap = null; + private Set managedFieldSet; private Long zipDownloadLimit = null; @@ -806,6 +807,17 @@ public Map getCVocConf(boolean byTermField) { } } + public boolean isManagedField(String fieldName) { + + if(managedFieldSet == null) { + managedFieldSet = fieldService.getManagedFieldSet(); + } + if(managedFieldSet == null) { + return false; + } + return managedFieldSet.contains(fieldName); + } + public String getMetricsUrl() { if (metricsUrl == null) { metricsUrl = getValueForKey(SettingsServiceBean.Key.MetricsUrl); diff --git a/src/main/webapp/metadataFragment.xhtml b/src/main/webapp/metadataFragment.xhtml index 43d54f64c43..a2e67fb80c1 100755 --- a/src/main/webapp/metadataFragment.xhtml +++ b/src/main/webapp/metadataFragment.xhtml @@ -171,8 +171,11 @@ rendered="#{(cvocOnDsf or cvocOnCvPart) and not ( cvPart.key.datasetFieldType.name.equals(cvocConf.get(cvPart.key.datasetFieldType.id).getString('term-uri-field')) or cvPart.key.datasetFieldType.name.equals(cvocConf.get(dsf.datasetFieldType.id).getString('term-uri-field')))}" - styleClass="hidden"> - + > + + + + From c4f75cfbd537eee2e9c84d436014f0986b8e5b7b Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Wed, 3 Jul 2024 15:48:14 -0400 Subject: [PATCH 02/12] fix/refactor managedField display --- .../iq/dataverse/DatasetFieldServiceBean.java | 16 +++++++++------- .../harvard/iq/dataverse/SettingsWrapper.java | 12 ++++++------ src/main/webapp/metadataFragment.xhtml | 11 ++++------- 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java index 317b6347c00..0f9f9b39f1c 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java @@ -84,8 +84,8 @@ public class DatasetFieldServiceBean implements java.io.Serializable { //Note that for primitive fields, the prent and term-uri-field are the same and these maps have the same entry Map cvocMapByTermUri = null; - //Flat list of cvoc managed fields - Set managedFieldSet = null; + //Flat list of cvoc term-uri and managed fields by Id + Set cvocFieldSet = null; //The hash of the existing CVocConf setting. Used to determine when the setting has changed and it needs to be re-parsed to recreate the cvocMaps String oldHash = null; @@ -288,7 +288,7 @@ public Map getCVocConf(boolean byTermUriField){ //Release old maps cvocMap=null; cvocMapByTermUri=null; - managedFieldSet = null; + cvocFieldSet = null; return new HashMap<>(); } String newHash = DigestUtils.md5Hex(cvocSetting); @@ -298,7 +298,7 @@ public Map getCVocConf(boolean byTermUriField){ oldHash=newHash; cvocMap=new HashMap<>(); cvocMapByTermUri=new HashMap<>(); - managedFieldSet = new HashSet<>(); + cvocFieldSet = new HashSet<>(); try (JsonReader jsonReader = Json.createReader(new StringReader(settingsService.getValueForKey(SettingsServiceBean.Key.CVocConf)))) { JsonArray cvocConfJsonArray = jsonReader.readArray(); @@ -315,11 +315,13 @@ public Map getCVocConf(boolean byTermUriField){ if (termUriField.equals(dft.getName())) { logger.fine("Found primitive field for term uri : " + dft.getName() + ": " + dft.getId()); cvocMapByTermUri.put(dft.getId(), jo); + cvocFieldSet.add(dft.getId()); } } else { DatasetFieldType childdft = findByNameOpt(jo.getString("term-uri-field")); logger.fine("Found term child field: " + childdft.getName()+ ": " + childdft.getId()); cvocMapByTermUri.put(childdft.getId(), jo); + cvocFieldSet.add(childdft.getId()); if (childdft.getParentDatasetFieldType() != dft) { logger.warning("Term URI field (" + childdft.getDisplayName() + ") not a child of parent: " + dft.getDisplayName()); @@ -339,7 +341,7 @@ public Map getCVocConf(boolean byTermUriField){ + managedFields.getString(s)); } else { logger.fine("Found: " + dft.getName()); - managedFieldSet.add(dft.getName()); + cvocFieldSet.add(dft.getId()); } } } @@ -351,8 +353,8 @@ public Map getCVocConf(boolean byTermUriField){ return byTermUriField ? cvocMapByTermUri : cvocMap; } - public Set getManagedFieldSet() { - return managedFieldSet; + public Set getCvocFieldSet() { + return cvocFieldSet; } /** diff --git a/src/main/java/edu/harvard/iq/dataverse/SettingsWrapper.java b/src/main/java/edu/harvard/iq/dataverse/SettingsWrapper.java index 6e187ae6cef..222d2881cd2 100644 --- a/src/main/java/edu/harvard/iq/dataverse/SettingsWrapper.java +++ b/src/main/java/edu/harvard/iq/dataverse/SettingsWrapper.java @@ -98,7 +98,7 @@ public class SettingsWrapper implements java.io.Serializable { //External Vocabulary support private Map cachedCvocMap = null; private Map cachedCvocByTermFieldMap = null; - private Set managedFieldSet; + private Set cvocFieldSet; private Long zipDownloadLimit = null; @@ -807,15 +807,15 @@ public Map getCVocConf(boolean byTermField) { } } - public boolean isManagedField(String fieldName) { + public boolean isCvocField(Long fieldId) { - if(managedFieldSet == null) { - managedFieldSet = fieldService.getManagedFieldSet(); + if(cvocFieldSet == null) { + cvocFieldSet = fieldService.getCvocFieldSet(); } - if(managedFieldSet == null) { + if(cvocFieldSet == null) { return false; } - return managedFieldSet.contains(fieldName); + return cvocFieldSet.contains(fieldId); } public String getMetricsUrl() { diff --git a/src/main/webapp/metadataFragment.xhtml b/src/main/webapp/metadataFragment.xhtml index a2e67fb80c1..494940370e1 100755 --- a/src/main/webapp/metadataFragment.xhtml +++ b/src/main/webapp/metadataFragment.xhtml @@ -129,8 +129,8 @@ - - + + - - - - + styleClass="hidden"> + From 512da5cdbe762507d5ab486e89429e1c6c2020ca Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Mon, 8 Jul 2024 09:30:59 -0400 Subject: [PATCH 03/12] lower logging for plain text ext cvv case --- .../java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java index 0f9f9b39f1c..5fae2310fb9 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetFieldServiceBean.java @@ -487,7 +487,8 @@ public JsonObject getExternalVocabularyValue(String termUri) { logger.warning("Problem parsing external vocab value for uri: " + termUri + " : " + e.getMessage()); } } catch (NoResultException nre) { - logger.warning("No external vocab value for uri: " + termUri); + //Could just be a plain text value + logger.fine("No external vocab value for uri: " + termUri); } return null; } From 22b8ca7a43f8f681c7dc0a6a407e319d1e832710 Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Thu, 11 Jul 2024 15:18:21 -0400 Subject: [PATCH 04/12] add cvoc to managed internal cvv field --- src/main/webapp/metadataFragment.xhtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/webapp/metadataFragment.xhtml b/src/main/webapp/metadataFragment.xhtml index 494940370e1..a6d409268df 100755 --- a/src/main/webapp/metadataFragment.xhtml +++ b/src/main/webapp/metadataFragment.xhtml @@ -381,7 +381,7 @@ -
+
From e20463211bbca844611ed5d2745a3389ea9d7303 Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Thu, 11 Jul 2024 15:18:55 -0400 Subject: [PATCH 05/12] increase priority/specificity to avoid conflict --- src/main/webapp/resources/css/structure.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/webapp/resources/css/structure.css b/src/main/webapp/resources/css/structure.css index 64d07038f2f..17a0e69d85d 100644 --- a/src/main/webapp/resources/css/structure.css +++ b/src/main/webapp/resources/css/structure.css @@ -1069,7 +1069,7 @@ progress::-webkit-progress-value { .select2-selection__clear, .select2-selection__rendered { vertical-align: -webkit-baseline-middle; } -.select2-results li { +.select2-results ul > li { font-weight:400; font-size:14px; } From 920898472d799d17d1431415a6bc4bbc3b586f51 Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Thu, 11 Jul 2024 16:15:22 -0400 Subject: [PATCH 06/12] add/prioritize getting child field in cvocConf --- src/main/webapp/metadataFragment.xhtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/webapp/metadataFragment.xhtml b/src/main/webapp/metadataFragment.xhtml index a6d409268df..09704b4e2c7 100755 --- a/src/main/webapp/metadataFragment.xhtml +++ b/src/main/webapp/metadataFragment.xhtml @@ -377,7 +377,7 @@ - + From bb56118a51073ba7c11112c06f2293a40d088c2b Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Fri, 12 Jul 2024 15:59:52 -0400 Subject: [PATCH 07/12] only show hidden cvoc fields if term uri field exists --- .../harvard/iq/dataverse/DatasetFieldCompoundValue.java | 9 +++++++++ src/main/webapp/metadataFragment.xhtml | 6 +++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetFieldCompoundValue.java b/src/main/java/edu/harvard/iq/dataverse/DatasetFieldCompoundValue.java index c679cd7edad..c03baec73af 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetFieldCompoundValue.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetFieldCompoundValue.java @@ -225,6 +225,15 @@ public Pair getLinkComponents() { return linkComponents.get(parentDatasetField.getDatasetFieldType().getName()); } + public boolean hasChildOfType(String name) { + for (DatasetField child : childDatasetFields) { + if (child.getDatasetFieldType().getName().equals(name)) { + return true; + } + } + return false; + } + private Map removeLastComma(Map mapIn) { Iterator> itr = mapIn.entrySet().iterator(); diff --git a/src/main/webapp/metadataFragment.xhtml b/src/main/webapp/metadataFragment.xhtml index 09704b4e2c7..f6aad71f408 100755 --- a/src/main/webapp/metadataFragment.xhtml +++ b/src/main/webapp/metadataFragment.xhtml @@ -126,11 +126,11 @@ - + - + From 95250a2945e220655d9f0fe126699d57e9c19e54 Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Fri, 12 Jul 2024 16:04:36 -0400 Subject: [PATCH 08/12] typo --- src/main/webapp/metadataFragment.xhtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/webapp/metadataFragment.xhtml b/src/main/webapp/metadataFragment.xhtml index f6aad71f408..1d247c4ffd1 100755 --- a/src/main/webapp/metadataFragment.xhtml +++ b/src/main/webapp/metadataFragment.xhtml @@ -129,7 +129,7 @@ - + From 9063739fb2baaa874132f68f93a6bb49e898f00a Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Fri, 12 Jul 2024 17:55:48 -0400 Subject: [PATCH 09/12] use getString --- src/main/webapp/metadataFragment.xhtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/webapp/metadataFragment.xhtml b/src/main/webapp/metadataFragment.xhtml index 1d247c4ffd1..0da2953a0d0 100755 --- a/src/main/webapp/metadataFragment.xhtml +++ b/src/main/webapp/metadataFragment.xhtml @@ -126,7 +126,7 @@ - + From 4b904cfd503b852b9fa6c2933b0112aa37392c08 Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Thu, 18 Jul 2024 10:09:25 -0400 Subject: [PATCH 10/12] tweak ror styling --- src/main/webapp/resources/css/structure.css | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/webapp/resources/css/structure.css b/src/main/webapp/resources/css/structure.css index 17a0e69d85d..db1e85f7631 100644 --- a/src/main/webapp/resources/css/structure.css +++ b/src/main/webapp/resources/css/structure.css @@ -670,6 +670,16 @@ div.edit-field div.ui-message {margin:6px 0;} .metadata-container pre { white-space: pre-wrap !important; } + +#metadata_author img { + vertical-align: text-top; + margin-right:1px; + margin-left: 3px; +} + +#metadata_author img.ror { + vertical-align: middle; +} /* TRUNCATION */ div.more-block {text-align:center; padding-top:250px; width:100%; position:absolute; bottom:0; background:linear-gradient(180deg,hsla(0,0%,100%,0),#fff 80%);} button.desc-more-link {margin:0; padding:0;} From 1ccf834ebb52447e597b9b830265cb9cbc03ab56 Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Sun, 21 Jul 2024 12:28:13 -0400 Subject: [PATCH 11/12] release note --- doc/release-notes/10711-CVoc Updates.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/release-notes/10711-CVoc Updates.md diff --git a/doc/release-notes/10711-CVoc Updates.md b/doc/release-notes/10711-CVoc Updates.md new file mode 100644 index 00000000000..f747bedb049 --- /dev/null +++ b/doc/release-notes/10711-CVoc Updates.md @@ -0,0 +1 @@ +Changes in Dataverse and updates to the ORCID and ROR external vocabulary scripts support deploying these for the citation block author field (and others). From b8878b00f3ece6b9b595fa4367e559fe7db2e471 Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Fri, 6 Sep 2024 10:32:05 -0400 Subject: [PATCH 12/12] fix labels when cvoc is used --- src/main/webapp/metadataFragment.xhtml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/webapp/metadataFragment.xhtml b/src/main/webapp/metadataFragment.xhtml index 0da2953a0d0..723f95148cd 100755 --- a/src/main/webapp/metadataFragment.xhtml +++ b/src/main/webapp/metadataFragment.xhtml @@ -251,7 +251,7 @@
- + #{dsf.datasetFieldType.localeTitle}

-