Blame view

src/main/java/org/legrog/entities/PublisherSearchRepositorySolrj.java 2.85 KB
1 2 3
package org.legrog.entities;

import org.apache.solr.client.solrj.SolrClient;
4
import org.apache.solr.client.solrj.SolrQuery;
5
import org.apache.solr.client.solrj.SolrServerException;
6
import org.apache.solr.client.solrj.response.QueryResponse;
7 8 9 10 11 12
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.inject.Inject;
import java.io.IOException;
13
import java.util.ArrayList;
14
import java.util.List;
15

16
/**
17
 * Implementation of PublisherSearchRepository using SolrJ
18
 */
19 20 21 22 23
public class PublisherSearchRepositorySolrj implements PublisherSearchRepository {
    Logger logger = LoggerFactory.getLogger(getClass());

    SolrClient solrClient;

24 25
    protected static String collectionName = "publishers";

26 27 28 29 30 31 32 33 34 35
    @Inject
    PublisherSearchRepositorySolrj(SolrClient solrClient) {
        this.solrClient = solrClient;
    }

    //no args constructor to make it proxyable
    PublisherSearchRepositorySolrj() {
    }

    @Override
36
    public IndexedPublisher save(IndexedPublisher indexedPublisher) throws IndexingException {
37
        try {
38
            UpdateResponse updateResponse = solrClient.addBean(collectionName, indexedPublisher, 1);
39 40
            logger.trace("validatePublisherVersion SolrJ UpdateResponse {}", updateResponse);
        } catch (IOException ioe) {
41
            throw new IndexingException(ioe);
42
        } catch (SolrServerException sse) {
43
            logger.error("SolrServerException {}", sse);
44
            throw new IndexingException(sse.getRootCause());
45 46 47 48
        }

        return indexedPublisher;
    }
49 50

    @Override
51 52 53 54
    public List<IndexedPublisher> search(String string) throws SearchingException {
        SolrQuery solrQuery = new SolrQuery(string);
        QueryResponse queryResponse;
        try {
55
            queryResponse = solrClient.query(collectionName, solrQuery);
56 57 58 59 60 61 62 63 64 65
        } catch (IOException ioe) {
            throw new SearchingException(ioe);
        } catch (SolrServerException sse) {
            logger.error("SolrServerException {}", sse);
            throw new SearchingException(sse.getRootCause());
        }

        if (queryResponse != null) {
            return queryResponse.getBeans(IndexedPublisher.class);
        } else {
66
            return new ArrayList<>();
67
        }
68
    }
69 70

    @Override
71 72 73 74 75 76 77 78 79 80 81
    public void reindex(List<IndexedPublisher> indexedPublishers) throws IndexingException {
        try {
            UpdateResponse updateResponse = solrClient.addBeans(collectionName, indexedPublishers);
            solrClient.commit(collectionName);
            logger.trace("reindex inxdexedPublishers SolrJ UpdateResponse {}", updateResponse);
        } catch (IOException ioe) {
            throw new IndexingException(ioe);
        } catch (SolrServerException sse) {
            logger.error("SolrServerException {}", sse);
            throw new IndexingException(sse.getRootCause());
        }
82
    }
83
}