]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-6130: Always emit non-preferred terms in authority item list results in a...
authorAron Roberts <aron@socrates.berkeley.edu>
Thu, 22 Aug 2013 00:16:58 +0000 (17:16 -0700)
committerAron Roberts <aron@socrates.berkeley.edu>
Thu, 22 Aug 2013 00:16:58 +0000 (17:16 -0700)
services/authority/service/src/main/java/org/collectionspace/services/common/vocabulary/nuxeo/AuthorityItemDocumentModelHandler.java

index 3090b6b6f39887ae55b59286cd605eb598778046..bca58a84c7bc73f9c6a804e739930e1e014ecdb4 100644 (file)
@@ -258,14 +258,14 @@ public abstract class AuthorityItemDocumentModelHandler<AICommon>
                        // Ensure that each item in a list of Authority items includes
                        // a set of common fields, so we do not depend upon configuration
                        // for general logic.
-                       boolean hasDisplayName = false;
-                       boolean hasShortId = false;
+                       int termDisplayNamePosInList = 0;
+                               boolean hasShortId = false;
                        boolean hasTermStatus = false;
                        for (int i = 0; i < nFields; i++) {
                            ListResultField field = list.get(i);
                            String elName = field.getElement();
                            if (isTermDisplayName(elName) == true) {
-                               hasDisplayName = true;
+                               termDisplayNamePosInList = i;
                            } else if (AuthorityItemJAXBSchema.SHORT_IDENTIFIER.equals(elName)) {
                                hasShortId = true;
                            } else if (AuthorityItemJAXBSchema.TERM_STATUS.equals(elName)) {
@@ -274,10 +274,16 @@ public abstract class AuthorityItemDocumentModelHandler<AICommon>
                        }
                                
                        ListResultField field;
-                       if (!hasDisplayName) {
-                               field = getListResultsDisplayNameField();
-                           list.add(field);
-                       }
+                        // Ignore (throw out) any supplied configuration of how
+                        // the termDisplayName will be emitted in list results
+                        if (termDisplayNamePosInList > 0) {
+                            list.remove(termDisplayNamePosInList);
+                        }
+                        // Specially handle termDisplayName values in authority
+                        // item lists, by invoking code that emits display names
+                        // for both preferred and non-preferred terms
+                       field = getListResultsDisplayNameField();
+                       list.add(field);
                        if (!hasShortId) {
                            field = new ListResultField();
                            field.setElement(AuthorityItemJAXBSchema.SHORT_IDENTIFIER);