package org.collectionspace.services.nuxeo.elasticsearch.anthro;
+import java.util.List;
import java.util.Map;
+import org.apache.commons.lang3.StringUtils;
import org.codehaus.jackson.node.ObjectNode;
-
+import org.collectionspace.services.common.api.RefNameUtils;
import org.collectionspace.services.nuxeo.elasticsearch.DefaultESDocumentWriter;
import org.nuxeo.ecm.core.api.DocumentModel;
return denormValues;
}
+
+ @Override
+ protected String computeTitle(DocumentModel doc) {
+ List<Map<String, Object>> objectNameGroups = (List<Map<String, Object>>) doc.getProperty("collectionobjects_common", "objectNameList");
+ String primaryObjectName = null;
+
+ if (objectNameGroups.size() > 0) {
+ Map<String, Object> primaryObjectNameGroup = objectNameGroups.get(0);
+ primaryObjectName = (String) primaryObjectNameGroup.get("objectName");
+ }
+
+ if (StringUtils.isNotEmpty(primaryObjectName)) {
+ return primaryObjectName;
+ }
+
+ List<Map<String, Object>> titleGroups = (List<Map<String, Object>>) doc.getProperty("collectionobjects_common", "titleGroupList");
+ String primaryTitle = null;
+
+ if (titleGroups.size() > 0) {
+ Map<String, Object> primaryTitleGroup = titleGroups.get(0);
+ primaryTitle = (String) primaryTitleGroup.get("title");
+ }
+
+ if (StringUtils.isNotEmpty(primaryTitle)) {
+ return primaryTitle;
+ }
+
+ List<Map<String, Object>> taxonomicIdentGroups = (List<Map<String, Object>>) doc.getProperty("collectionobjects_naturalhistory_extension", "taxonomicIdentGroupList");
+ String primaryTaxon = null;
+
+ if (taxonomicIdentGroups.size() > 0) {
+ Map<String, Object> primaryTaxonomicIdentGroup = taxonomicIdentGroups.get(0);
+ primaryTaxon = (String) primaryTaxonomicIdentGroup.get("taxon");
+ }
+
+ if (StringUtils.isNotEmpty(primaryTaxon)) {
+ primaryTaxon = RefNameUtils.getDisplayName(primaryTaxon);
+ }
+
+ return primaryTaxon;
+ }
}
denormValues.putArray("mediaAltText").addAll(mediaAltTexts);
}
-
- /**
- * Compute a title for the public browser. This needs to be indexed in ES so that it can
- * be used for sorting. (Even if it's just extracting the primary value.)
- */
- private String computeTitle(DocumentModel doc) {
+ @Override
+ protected String computeTitle(DocumentModel doc) {
List<Map<String, Object>> termGroups = (List<Map<String, Object>>) doc.getProperty("materials_common", "materialTermGroupList");
String primaryDisplayName = null;