org.dspace.discovery.SolrServiceFileInfoPlugin Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dspace-api Show documentation
Show all versions of dspace-api Show documentation
DSpace core data model and service APIs.
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.discovery;
import java.util.List;
import org.apache.solr.common.SolrInputDocument;
import org.dspace.content.Bitstream;
import org.dspace.content.Bundle;
import org.dspace.content.Item;
import org.dspace.core.Context;
import org.dspace.discovery.indexobject.IndexableItem;
/**
*
* Adds filenames and file descriptions of all files in the ORIGINAL bundle
* to the Solr search index.
*
*
* To activate the plugin, add the following line to discovery.xml
*
* {@code }
*
*
*
* After activating the plugin, rebuild the discovery index by executing:
*
* [dspace]/bin/dspace index-discovery -b
*
*
* @author Martin Walk
*/
public class SolrServiceFileInfoPlugin implements SolrServiceIndexPlugin {
private static final String BUNDLE_NAME = "ORIGINAL";
private static final String SOLR_FIELD_NAME_FOR_FILENAMES = "original_bundle_filenames";
private static final String SOLR_FIELD_NAME_FOR_DESCRIPTIONS = "original_bundle_descriptions";
@Override
public void additionalIndex(Context context, IndexableObject indexableObject, SolrInputDocument document) {
if (indexableObject instanceof IndexableItem) {
Item item = ((IndexableItem) indexableObject).getIndexedObject();
List bundles = item.getBundles();
if (bundles != null) {
for (Bundle bundle : bundles) {
String bundleName = bundle.getName();
if ((bundleName != null) && bundleName.equals(BUNDLE_NAME)) {
List bitstreams = bundle.getBitstreams();
if (bitstreams != null) {
for (Bitstream bitstream : bitstreams) {
document.addField(SOLR_FIELD_NAME_FOR_FILENAMES, bitstream.getName());
String description = bitstream.getDescription();
if ((description != null) && !description.isEmpty()) {
document.addField(SOLR_FIELD_NAME_FOR_DESCRIPTIONS, description);
}
}
}
}
}
}
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy