Index: main/plugin-web/src/org/ametys/web/frontoffice/AbstractSearchGenerator.java =================================================================== --- main/plugin-web/src/org/ametys/web/frontoffice/AbstractSearchGenerator.java (revision 37352) +++ main/plugin-web/src/org/ametys/web/frontoffice/AbstractSearchGenerator.java (working copy) @@ -1425,11 +1425,11 @@ } else if (enumerator != null) { - _saxEnumeratedStringMetadata(document, metadataName, path, enumerator); + _saxEnumeratedStringMetadata(document, metadataName, childMetadataDefinition.isMultiple(), path, enumerator); } else { - _saxNotNullMetadata(document, metadataName, path); + _saxNotNullMetadata(document, metadataName, childMetadataDefinition.isMultiple(), path); } } else @@ -1484,13 +1484,14 @@ * SAX a metadata value if not value * @param document the lucene document * @param metadataName the name of the metadata + * @param isMultiple TRUE if the metadata is defined as multiple * @param path the path of the metadata in document * @throws SAXException if an exception occurs */ - protected void _saxNotNullMetadata(Document document, String metadataName, String path) throws SAXException + protected void _saxNotNullMetadata(Document document, String metadataName, boolean isMultiple, String path) throws SAXException { - String value = document.get(path); - if (value != null) + String[] values = isMultiple ? document.getValues(path) : new String[] { document.get(path) }; + for (String value : values) { XMLUtils.createElement(contentHandler, metadataName, value); } @@ -1500,59 +1501,55 @@ * SAX a metadata as a enumerated String. * @param document the lucene document * @param metadataName the metadata name. + * @param isMultiple TRUE if the metadata is defined as multiple * @param path the lucene index * @param enumerator the enumerator * @throws AmetysRepositoryException if an error occurs. * @throws SAXException if an error occurs. */ - protected void _saxEnumeratedStringMetadata (Document document, String metadataName, String path, Enumerator enumerator) throws SAXException + protected void _saxEnumeratedStringMetadata (Document document, String metadataName, boolean isMultiple, String path, Enumerator enumerator) throws SAXException { - String luceneValue = document.get(path); + String[] values = isMultiple ? document.getValues(path) : new String[] { document.get(path) }; - if (luceneValue != null) + for (String value : values) { - String[] values = StringUtils.split(luceneValue, ','); - - for (String value : values) + if (StringUtils.isEmpty(value)) { - if (StringUtils.isEmpty(value)) - { - XMLUtils.createElement(contentHandler, metadataName); - } - else + XMLUtils.createElement(contentHandler, metadataName); + } + else + { + try { - try + I18nizableText i18n = enumerator.getEntry(value); + if (i18n != null) { - I18nizableText i18n = enumerator.getEntry(value); - if (i18n != null) - { - AttributesImpl attrs = new AttributesImpl(); - attrs.addCDATAAttribute("value", value); - - XMLUtils.startElement(contentHandler, metadataName, attrs); - - i18n.toSAX(contentHandler); - - XMLUtils.endElement(contentHandler, metadataName); - } - else - { - AttributesImpl attrs = new AttributesImpl(); - attrs.addCDATAAttribute("value", value); - - XMLUtils.createElement(contentHandler, metadataName, attrs, value); - } + AttributesImpl attrs = new AttributesImpl(); + attrs.addCDATAAttribute("value", value); + + XMLUtils.startElement(contentHandler, metadataName, attrs); + + i18n.toSAX(contentHandler); + + XMLUtils.endElement(contentHandler, metadataName); } - catch (Exception e) + else { - getLogger().warn("An error occurred while saxing the enumerated metadata '" + metadataName + "'.", e); - AttributesImpl attrs = new AttributesImpl(); attrs.addCDATAAttribute("value", value); XMLUtils.createElement(contentHandler, metadataName, attrs, value); } } + catch (Exception e) + { + getLogger().warn("An error occurred while saxing the enumerated metadata '" + metadataName + "'.", e); + + AttributesImpl attrs = new AttributesImpl(); + attrs.addCDATAAttribute("value", value); + + XMLUtils.createElement(contentHandler, metadataName, attrs, value); + } } } }