From 2eaecebc332358b4b43b26ebc6687fcbfffb9776 Mon Sep 17 00:00:00 2001 From: spiros dimopulos Date: Wed, 1 Jul 2026 18:15:54 +0300 Subject: [PATCH 1/4] DRYD-2117: added denormPriorityImageList --- .../DefaultESDocumentWriter.java | 51 +++++++++++++++++++ .../tenants/tenant-bindings-proto-unified.xml | 30 +++++++++++ 2 files changed, 81 insertions(+) diff --git a/3rdparty/nuxeo/nuxeo-platform-elasticsearch/src/main/java/org/collectionspace/services/nuxeo/elasticsearch/DefaultESDocumentWriter.java b/3rdparty/nuxeo/nuxeo-platform-elasticsearch/src/main/java/org/collectionspace/services/nuxeo/elasticsearch/DefaultESDocumentWriter.java index c8c3f01382..149e39cf74 100644 --- a/3rdparty/nuxeo/nuxeo-platform-elasticsearch/src/main/java/org/collectionspace/services/nuxeo/elasticsearch/DefaultESDocumentWriter.java +++ b/3rdparty/nuxeo/nuxeo-platform-elasticsearch/src/main/java/org/collectionspace/services/nuxeo/elasticsearch/DefaultESDocumentWriter.java @@ -59,6 +59,7 @@ public ObjectNode getDenormValues(DocumentModel doc) { denormConceptFields(doc, denormValues); denormMaterialFields(doc, denormValues); denormObjectNameFields(doc, denormValues); + denormPriorityImageList(doc, session, tenantId, denormValues); // Compute the title of the record for the public browser, and store it so that it can // be used for sorting ES query results. @@ -209,6 +210,56 @@ private void denormExhibitionRecords(CoreSession session, String csid, String te denormValues.putArray("exhibition").addAll(exhibitions); } + /** + * Denormalize the csid, blob csid, title, and alt text of each media record referenced by + * the priorityImageList field of a collectionobject, so that the priority/sort + * order set by the user can be displayed and searched. + * + * @param doc the collectionobject document + * @param session the current session + * @param tenantId the tenant id + * @param denormValues the json node for denormalized fields + */ + private void denormPriorityImageList(DocumentModel doc, CoreSession session, String tenantId, ObjectNode denormValues) { + List priorityImageList = (List) doc.getProperty("collectionobjects_common", "priorityImageList"); + List priorityImages = new ArrayList<>(); + + if (priorityImageList != null) { + for (String priorityImage : priorityImageList) { + if (StringUtils.isNotEmpty(priorityImage)) { + String mediaCsid = null; + + try { + mediaCsid = RefNameUtils.parseAuthorityInfo(priorityImage).csid; + } catch (IllegalArgumentException e) { + // Not a parseable refName; nothing to denormalize for this entry. + } + + if (mediaCsid != null) { + DocumentModel mediaDoc = getRecordByCsid(session, tenantId, "Media", mediaCsid); + + if (mediaDoc != null && isMediaPublished(mediaDoc)) { + String blobCsid = (String) mediaDoc.getProperty("media_common", "blobCsid"); + String title = (String) mediaDoc.getProperty("media_common", "title"); + String altText = (String) mediaDoc.getProperty("media_common", "altText"); + + ObjectNode priorityImageNode = objectMapper.createObjectNode(); + + priorityImageNode.put("csid", mediaCsid); + priorityImageNode.put("blobCsid", blobCsid); + priorityImageNode.put("title", title); + priorityImageNode.put("altText", altText); + + priorityImages.add(priorityImageNode); + } + } + } + } + } + + denormValues.putArray("priorityImageList").addAll(priorityImages); + } + /** * Denormalize the material group list for a collectionobject in order to index the controlled or uncontrolled term * diff --git a/services/common/src/main/cspace/config/services/tenants/tenant-bindings-proto-unified.xml b/services/common/src/main/cspace/config/services/tenants/tenant-bindings-proto-unified.xml index 42834cb08d..5e3011030c 100644 --- a/services/common/src/main/cspace/config/services/tenants/tenant-bindings-proto-unified.xml +++ b/services/common/src/main/cspace/config/services/tenants/tenant-bindings-proto-unified.xml @@ -1201,6 +1201,7 @@ "collectionobjects_common:objectStatusList", "collectionobjects_common:otherNumberList", "collectionobjects_common:ownersContributionNote", + "collectionobjects_common:priorityImageList", "collectionobjects_common:publishedRelatedLinkGroupList", "collectionobjects_common:publishToList", "collectionobjects_common:responsibleDepartments", @@ -1417,6 +1418,35 @@ "type": "keyword", "copy_to": "all_field" }, + "collectionobjects_common:priorityImageList": { + "type": "keyword", + "copy_to": "all_field", + "fields": { + "displayName": { + "type": "keyword", + "normalizer": "refname_displayname_normalizer" + } + } + }, + "collectionspace_denorm:priorityImageList": { + "type": "object", + "properties": { + "csid": { + "type": "keyword" + }, + "blobCsid": { + "type": "keyword" + }, + "title": { + "type": "text", + "copy_to": "all_field" + }, + "altText": { + "type": "text", + "copy_to": "all_field" + } + } + }, "collectionobjects_common:contentConcepts": { "type": "keyword", "copy_to": "all_field", From a67bde8b0b76317644388ca5353d8e7a046c7042 Mon Sep 17 00:00:00 2001 From: spiros dimopulos Date: Wed, 1 Jul 2026 18:29:41 +0300 Subject: [PATCH 2/4] DRYD-2117: updated changelog; --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c9e4f676d..6b13ba1ad3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## 9.0.0 * Add home location to collectionobject schema and advanced search +* Denormalize priority image list ## 8.3.0 From 52d1d2de7b16d0ff6b03130123dc20c8650d1832 Mon Sep 17 00:00:00 2001 From: spiros dimopulos Date: Tue, 14 Jul 2026 19:01:35 +0300 Subject: [PATCH 3/4] DRYD-2117: renamed priority image to media priority; --- .../DefaultESDocumentWriter.java | 32 +++++++++---------- CHANGELOG.md | 2 +- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/3rdparty/nuxeo/nuxeo-platform-elasticsearch/src/main/java/org/collectionspace/services/nuxeo/elasticsearch/DefaultESDocumentWriter.java b/3rdparty/nuxeo/nuxeo-platform-elasticsearch/src/main/java/org/collectionspace/services/nuxeo/elasticsearch/DefaultESDocumentWriter.java index 149e39cf74..0440304854 100644 --- a/3rdparty/nuxeo/nuxeo-platform-elasticsearch/src/main/java/org/collectionspace/services/nuxeo/elasticsearch/DefaultESDocumentWriter.java +++ b/3rdparty/nuxeo/nuxeo-platform-elasticsearch/src/main/java/org/collectionspace/services/nuxeo/elasticsearch/DefaultESDocumentWriter.java @@ -59,7 +59,7 @@ public ObjectNode getDenormValues(DocumentModel doc) { denormConceptFields(doc, denormValues); denormMaterialFields(doc, denormValues); denormObjectNameFields(doc, denormValues); - denormPriorityImageList(doc, session, tenantId, denormValues); + denormMediaPriorityList(doc, session, tenantId, denormValues); // Compute the title of the record for the public browser, and store it so that it can // be used for sorting ES query results. @@ -212,7 +212,7 @@ private void denormExhibitionRecords(CoreSession session, String csid, String te /** * Denormalize the csid, blob csid, title, and alt text of each media record referenced by - * the priorityImageList field of a collectionobject, so that the priority/sort + * the mediaPriorityList field of a collectionobject, so that the priority/sort * order set by the user can be displayed and searched. * * @param doc the collectionobject document @@ -220,17 +220,17 @@ private void denormExhibitionRecords(CoreSession session, String csid, String te * @param tenantId the tenant id * @param denormValues the json node for denormalized fields */ - private void denormPriorityImageList(DocumentModel doc, CoreSession session, String tenantId, ObjectNode denormValues) { - List priorityImageList = (List) doc.getProperty("collectionobjects_common", "priorityImageList"); - List priorityImages = new ArrayList<>(); + private void denormMediaPriorityList(DocumentModel doc, CoreSession session, String tenantId, ObjectNode denormValues) { + List mediaPriorityList = (List) doc.getProperty("collectionobjects_common", "mediaPriorityList"); + List mediaPriorityNodes = new ArrayList<>(); - if (priorityImageList != null) { - for (String priorityImage : priorityImageList) { - if (StringUtils.isNotEmpty(priorityImage)) { + if (mediaPriorityList != null) { + for (String mediaPriority : mediaPriorityList) { + if (StringUtils.isNotEmpty(mediaPriority)) { String mediaCsid = null; try { - mediaCsid = RefNameUtils.parseAuthorityInfo(priorityImage).csid; + mediaCsid = RefNameUtils.parseAuthorityInfo(mediaPriority).csid; } catch (IllegalArgumentException e) { // Not a parseable refName; nothing to denormalize for this entry. } @@ -243,21 +243,21 @@ private void denormPriorityImageList(DocumentModel doc, CoreSession session, Str String title = (String) mediaDoc.getProperty("media_common", "title"); String altText = (String) mediaDoc.getProperty("media_common", "altText"); - ObjectNode priorityImageNode = objectMapper.createObjectNode(); + ObjectNode mediaPriorityNode = objectMapper.createObjectNode(); - priorityImageNode.put("csid", mediaCsid); - priorityImageNode.put("blobCsid", blobCsid); - priorityImageNode.put("title", title); - priorityImageNode.put("altText", altText); + mediaPriorityNode.put("csid", mediaCsid); + mediaPriorityNode.put("blobCsid", blobCsid); + mediaPriorityNode.put("title", title); + mediaPriorityNode.put("altText", altText); - priorityImages.add(priorityImageNode); + mediaPriorityNodes.add(mediaPriorityNode); } } } } } - denormValues.putArray("priorityImageList").addAll(priorityImages); + denormValues.putArray("mediaPriorityList").addAll(mediaPriorityNodes); } /** diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b13ba1ad3..d8d372e293 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## 9.0.0 * Add home location to collectionobject schema and advanced search -* Denormalize priority image list +* Denormalize media priority list ## 8.3.0 From b4d1d323e5ff46b3dd067abb7828e0509d3229b2 Mon Sep 17 00:00:00 2001 From: spiros dimopulos Date: Tue, 14 Jul 2026 19:01:35 +0300 Subject: [PATCH 4/4] DRYD-2117: renamed priority image to media priority; --- .../DefaultESDocumentWriter.java | 32 +++++++++---------- CHANGELOG.md | 2 +- .../tenants/tenant-bindings-proto-unified.xml | 6 ++-- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/3rdparty/nuxeo/nuxeo-platform-elasticsearch/src/main/java/org/collectionspace/services/nuxeo/elasticsearch/DefaultESDocumentWriter.java b/3rdparty/nuxeo/nuxeo-platform-elasticsearch/src/main/java/org/collectionspace/services/nuxeo/elasticsearch/DefaultESDocumentWriter.java index 149e39cf74..0440304854 100644 --- a/3rdparty/nuxeo/nuxeo-platform-elasticsearch/src/main/java/org/collectionspace/services/nuxeo/elasticsearch/DefaultESDocumentWriter.java +++ b/3rdparty/nuxeo/nuxeo-platform-elasticsearch/src/main/java/org/collectionspace/services/nuxeo/elasticsearch/DefaultESDocumentWriter.java @@ -59,7 +59,7 @@ public ObjectNode getDenormValues(DocumentModel doc) { denormConceptFields(doc, denormValues); denormMaterialFields(doc, denormValues); denormObjectNameFields(doc, denormValues); - denormPriorityImageList(doc, session, tenantId, denormValues); + denormMediaPriorityList(doc, session, tenantId, denormValues); // Compute the title of the record for the public browser, and store it so that it can // be used for sorting ES query results. @@ -212,7 +212,7 @@ private void denormExhibitionRecords(CoreSession session, String csid, String te /** * Denormalize the csid, blob csid, title, and alt text of each media record referenced by - * the priorityImageList field of a collectionobject, so that the priority/sort + * the mediaPriorityList field of a collectionobject, so that the priority/sort * order set by the user can be displayed and searched. * * @param doc the collectionobject document @@ -220,17 +220,17 @@ private void denormExhibitionRecords(CoreSession session, String csid, String te * @param tenantId the tenant id * @param denormValues the json node for denormalized fields */ - private void denormPriorityImageList(DocumentModel doc, CoreSession session, String tenantId, ObjectNode denormValues) { - List priorityImageList = (List) doc.getProperty("collectionobjects_common", "priorityImageList"); - List priorityImages = new ArrayList<>(); + private void denormMediaPriorityList(DocumentModel doc, CoreSession session, String tenantId, ObjectNode denormValues) { + List mediaPriorityList = (List) doc.getProperty("collectionobjects_common", "mediaPriorityList"); + List mediaPriorityNodes = new ArrayList<>(); - if (priorityImageList != null) { - for (String priorityImage : priorityImageList) { - if (StringUtils.isNotEmpty(priorityImage)) { + if (mediaPriorityList != null) { + for (String mediaPriority : mediaPriorityList) { + if (StringUtils.isNotEmpty(mediaPriority)) { String mediaCsid = null; try { - mediaCsid = RefNameUtils.parseAuthorityInfo(priorityImage).csid; + mediaCsid = RefNameUtils.parseAuthorityInfo(mediaPriority).csid; } catch (IllegalArgumentException e) { // Not a parseable refName; nothing to denormalize for this entry. } @@ -243,21 +243,21 @@ private void denormPriorityImageList(DocumentModel doc, CoreSession session, Str String title = (String) mediaDoc.getProperty("media_common", "title"); String altText = (String) mediaDoc.getProperty("media_common", "altText"); - ObjectNode priorityImageNode = objectMapper.createObjectNode(); + ObjectNode mediaPriorityNode = objectMapper.createObjectNode(); - priorityImageNode.put("csid", mediaCsid); - priorityImageNode.put("blobCsid", blobCsid); - priorityImageNode.put("title", title); - priorityImageNode.put("altText", altText); + mediaPriorityNode.put("csid", mediaCsid); + mediaPriorityNode.put("blobCsid", blobCsid); + mediaPriorityNode.put("title", title); + mediaPriorityNode.put("altText", altText); - priorityImages.add(priorityImageNode); + mediaPriorityNodes.add(mediaPriorityNode); } } } } } - denormValues.putArray("priorityImageList").addAll(priorityImages); + denormValues.putArray("mediaPriorityList").addAll(mediaPriorityNodes); } /** diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b13ba1ad3..d8d372e293 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## 9.0.0 * Add home location to collectionobject schema and advanced search -* Denormalize priority image list +* Denormalize media priority list ## 8.3.0 diff --git a/services/common/src/main/cspace/config/services/tenants/tenant-bindings-proto-unified.xml b/services/common/src/main/cspace/config/services/tenants/tenant-bindings-proto-unified.xml index 5e3011030c..307cae9477 100644 --- a/services/common/src/main/cspace/config/services/tenants/tenant-bindings-proto-unified.xml +++ b/services/common/src/main/cspace/config/services/tenants/tenant-bindings-proto-unified.xml @@ -1201,7 +1201,7 @@ "collectionobjects_common:objectStatusList", "collectionobjects_common:otherNumberList", "collectionobjects_common:ownersContributionNote", - "collectionobjects_common:priorityImageList", + "collectionobjects_common:mediaPriorityList", "collectionobjects_common:publishedRelatedLinkGroupList", "collectionobjects_common:publishToList", "collectionobjects_common:responsibleDepartments", @@ -1418,7 +1418,7 @@ "type": "keyword", "copy_to": "all_field" }, - "collectionobjects_common:priorityImageList": { + "collectionobjects_common:mediaPriorityList": { "type": "keyword", "copy_to": "all_field", "fields": { @@ -1428,7 +1428,7 @@ } } }, - "collectionspace_denorm:priorityImageList": { + "collectionspace_denorm:mediaPriorityList": { "type": "object", "properties": { "csid": {