001/**
002 * 
003 */
004package org.biopax.paxtools.util;
005
006import org.apache.lucene.document.Document;
007import org.biopax.paxtools.model.level3.Provenance;
008import org.hibernate.search.bridge.FieldBridge;
009import org.hibernate.search.bridge.LuceneOptions;
010
011import java.util.Set;
012
013/**
014 * 
015 * A FieldBridge implementation 
016 * for including dataSource (Provenance) names and URIs
017 * to the BioPAX element's Lucene index.
018 * 
019 * @author rodche
020 * @deprecated Hibernate ORM/Search will be removed in v5
021 */
022public final class DataSourceFieldBridge implements FieldBridge {
023
024        @Override
025        public void set(String searchFieldName, Object value, Document document, LuceneOptions luceneOptions) 
026        {
027                if (value instanceof Set) {
028                        for (Provenance p : (Set<Provenance>) value) {
029                                if(p == null) continue;
030                                // do not do .toLowerCase() for the URI!
031                                FieldBridgeUtils.addFieldToDocumentAsIs(luceneOptions, searchFieldName, p.getRDFId(), document);
032                                // index names as well
033                                for (String s : p.getName())
034                                        FieldBridgeUtils.addFieldToDocument(luceneOptions, searchFieldName, s, document);
035                        }
036                } else {
037                        throw new AssertionError("bug!");
038                }
039        }       
040}