* DRYD-1818: added denormRelatedObjects in DefaultESDocumentWriter to add objectCsid field holding media related objects.
* DRYD-1818: mapped identificationNumber, title as sortable keywords; mapped updatedAt as sortable date field; mapped objectCsid as filterable keyword;
* DRYD-1818: mapped media_common:altText;
* DRYD-1818: fixed trailing comma; updated tenant bindings;
List<Map<String, Object>> prodDateGroupList = (List<Map<String, Object>>) doc.getProperty("collectionobjects_common", "objectProductionDateGroupList");
denormValues.putArray("prodYears").addAll(structDatesToYearNodes(prodDateGroupList));
+ } else if ("Media".equals(docType) && isMediaPublished(doc)) {
+ CoreSession session = doc.getCoreSession();
+ String csid = doc.getName();
+ String tenantId = (String) doc.getProperty("collectionspace_core", "tenantId");
+
+ // Add media-specific denormalized fields
+ denormRelatedObjects(session, csid, tenantId, denormValues);
}
return denormValues;
denormValues.put("hasMedia", mediaCsids.size() > 0);
}
+ private void denormRelatedObjects(CoreSession session, String csid, String tenantId, ObjectNode denormValues) {
+ // Store the objectCsid of objects that are related to this media.
+
+ String relatedRecordQuery = String.format(
+ "SELECT * FROM Relation WHERE relations_common:objectCsid = '%s' AND relations_common:subjectDocumentType = 'CollectionObject' AND ecm:currentLifeCycleState = 'project' AND collectionspace_core:tenantId = '%s'",
+ csid, tenantId);
+ DocumentModelList relationDocs = session.query(relatedRecordQuery);
+ List<JsonNode> objectCsids = new ArrayList<JsonNode>();
+
+ if (relationDocs.size() > 0) {
+ Iterator<DocumentModel> iterator = relationDocs.iterator();
+
+ while (iterator.hasNext()) {
+ DocumentModel relationDoc = iterator.next();
+ String objectCsid = (String) relationDoc.getProperty("relations_common", "subjectCsid");
+
+ if (objectCsid != null) {
+ objectCsids.add(new TextNode(objectCsid));
+ }
+ }
+ }
+
+ denormValues.putArray("objectCsid").addAll(objectCsids);
+ }
+
private void denormAcquisitionRecords(CoreSession session, String csid, String tenantId, ObjectNode denormValues) {
// Store the credit lines of acquisition records that are related to this object.
"ecm:currentLifeCycleState",
"ecm:name",
"ecm:primaryType",
- "media_common:blobCsid"
+ "media_common:blobCsid",
+ "media_common:identificationNumber",
+ "media_common:title",
+ "media_common:altText"
]
},
"properties" : {
"type": "date",
"format": "date_time"
},
+ "collectionspace_core:updatedAt": {
+ "type": "date",
+ "format": "date_time"
+ },
"collectionobjects_common:publishToList": {
"type": "keyword",
"fields": {
}
}
},
+ "collectionspace_denorm:objectCsid": {
+ "type": "keyword"
+ },
"collectionobjects_common:objectNumber": {
"type": "keyword",
"media_common:blobCsid": {
"type": "keyword"
},
+ "media_common:identificationNumber": {
+ "type": "keyword",
+ "normalizer": "sorting_normalizer"
+ },
+ "media_common:altText": {
+ "type": "text"
+ },
+ "media_common:title": {
+ "type": "keyword",
+ "normalizer": "sorting_normalizer"
+ },
"media_common:publishToList": {
"type": "keyword",
"fields": {
"ecm:currentLifeCycleState",
"ecm:name",
"ecm:primaryType",
- "media_common:blobCsid"
+ "media_common:blobCsid",
+ "media_common:identificationNumber",
+ "media_common:title",
+ "media_common:altText"
]
},
"properties" : {
"type": "date",
"format": "date_time"
},
+ "collectionspace_core:updatedAt": {
+ "type": "date",
+ "format": "date_time"
+ },
"collectionobjects_common:publishToList": {
"type": "keyword",
"fields": {
}
}
},
+ "collectionspace_denorm:objectCsid": {
+ "type": "keyword"
+ },
"collectionobjects_common:objectNumber": {
"type": "keyword",
"media_common:blobCsid": {
"type": "keyword"
},
+ "media_common:identificationNumber": {
+ "type": "keyword",
+ "normalizer": "sorting_normalizer"
+ },
+ "media_common:altText": {
+ "type": "text"
+ },
+ "media_common:title": {
+ "type": "keyword",
+ "normalizer": "sorting_normalizer"
+ },
"media_common:publishToList": {
"type": "keyword",
"fields": {
"ecm:currentLifeCycleState",
"ecm:name",
"ecm:primaryType",
- "media_common:blobCsid"
+ "media_common:blobCsid",
+ "media_common:identificationNumber",
+ "media_common:title",
+ "media_common:altText"
]
},
"properties" : {
"type": "date",
"format": "date_time"
},
+ "collectionspace_core:updatedAt": {
+ "type": "date",
+ "format": "date_time"
+ },
"collectionobjects_common:publishToList": {
"type": "keyword",
"fields": {
}
}
},
-
+ "collectionspace_denorm:objectCsid": {
+ "type": "keyword"
+ },
"collectionobjects_common:objectNumber": {
"type": "keyword",
"copy_to": "all_field"
"media_common:blobCsid": {
"type": "keyword"
},
+ "media_common:identificationNumber": {
+ "type": "keyword",
+ "normalizer": "sorting_normalizer"
+ },
+ "media_common:altText": {
+ "type": "text"
+ },
+ "media_common:title": {
+ "type": "keyword",
+ "normalizer": "sorting_normalizer"
+ },
"media_common:publishToList": {
"type": "keyword",
"fields": {
"ecm:currentLifeCycleState",
"ecm:name",
"ecm:primaryType",
- "media_common:blobCsid"
+ "media_common:blobCsid",
+ "media_common:identificationNumber",
+ "media_common:title",
+ "media_common:altText"
]
},
"properties" : {
"type": "date",
"format": "date_time"
},
+ "collectionspace_core:updatedAt": {
+ "type": "date",
+ "format": "date_time"
+ },
"collectionobjects_common:publishToList": {
"type": "keyword",
"fields": {
}
}
},
-
+ "collectionspace_denorm:objectCsid": {
+ "type": "keyword"
+ },
"collectionobjects_common:objectNumber": {
"type": "keyword",
"copy_to": "all_field"
"media_common:blobCsid": {
"type": "keyword"
},
+ "media_common:identificationNumber": {
+ "type": "keyword",
+ "normalizer": "sorting_normalizer"
+ },
+ "media_common:altText": {
+ "type": "text"
+ },
+ "media_common:title": {
+ "type": "keyword",
+ "normalizer": "sorting_normalizer"
+ },
"media_common:publishToList": {
"type": "keyword",
"fields": {
"collectionobjects_common:rightsGroupList.standardizedRightStatement",
"collectionobjects_common:rightsInGroupList.rightReproductionStatement",
"media_common:blobCsid",
+ "media_common:identificationNumber",
+ "media_common:title",
+ "media_common:altText",
"media_materials:publishToList"
]
},
}
}
},
+ "collectionspace_denorm:objectCsid": {
+ "type": "keyword"
+ },
"collectionspace_core:createdAt": {
"type": "date",
// From imported data??
"format" : "date_time||yyyy-MM-dd'T'HH:mm:ss.SSZZ"
},
+ "collectionspace_core:updatedAt": {
+ "type": "date",
+ // Sometimes the timestamp only has a two digit fractional second, instead of three.
+ // From imported data??
+ "format" : "date_time||yyyy-MM-dd'T'HH:mm:ss.SSZZ"
+ },
"materials_common:shortIdentifier": {
"type": "keyword",
"type": "text",
"copy_to": "all_field"
},
-
+ "media_common:identificationNumber": {
+ "type": "keyword",
+ "normalizer": "sorting_normalizer"
+ },
+ "media_common:altText": {
+ "type": "text"
+ },
+ "media_common:title": {
+ "type": "keyword",
+ "normalizer": "sorting_normalizer"
+ },
"media_materials:publishToList": {
"type": "keyword",
"fields": {
"ecm:currentLifeCycleState",
"ecm:name",
"ecm:primaryType",
- "media_common:blobCsid"
+ "media_common:blobCsid",
+ "media_common:identificationNumber",
+ "media_common:title",
+ "media_common:altText"
]
},
"properties" : {
"type": "date",
"format": "date_time"
},
+ "collectionspace_core:updatedAt": {
+ "type": "date",
+ "format": "date_time"
+ },
"collectionobjects_common:publishToList": {
"type": "keyword",
"fields": {
}
}
},
-
+ "collectionspace_denorm:objectCsid": {
+ "type": "keyword"
+ },
"collectionobjects_common:objectNumber": {
"type": "keyword",
"copy_to": "all_field"
"media_common:blobCsid": {
"type": "keyword"
},
+ "media_common:identificationNumber": {
+ "type": "keyword",
+ "normalizer": "sorting_normalizer"
+ },
+ "media_common:altText": {
+ "type": "text"
+ },
+ "media_common:title": {
+ "type": "keyword",
+ "normalizer": "sorting_normalizer"
+ },
"media_common:publishToList": {
"type": "keyword",
"fields": {