Project

General

Profile

1
package eu.dnetlib.data.search.solr;
2

    
3
import eu.dnetlib.domain.EPR;
4
import eu.dnetlib.domain.SecureDriverResource;
5
import gr.uoa.di.driver.enabling.resultset.ResultSet;
6
import gr.uoa.di.driver.enabling.resultset.ResultSetFactory;
7
import io.micrometer.prometheus.PrometheusMeterRegistry;
8
import org.apache.log4j.Logger;
9
import org.apache.solr.client.solrj.impl.CloudSolrClient;
10
import org.springframework.beans.factory.annotation.Autowired;
11

    
12
import java.util.Arrays;
13
import java.util.HashMap;
14
import java.util.Map;
15

    
16
/**
17
 * Created by antleb on 2/4/14.
18
 */
19
public class SolrResultSetFactory implements ResultSetFactory {
20

    
21
    private Logger logger = Logger.getLogger(getClass());
22
    private Map<String, CloudSolrClient> clients = new HashMap<String, CloudSolrClient>();
23

    
24
    @Autowired
25
    private PrometheusMeterRegistry prometheusMeterRegistry;
26

    
27

    
28
    @Override
29
    public ResultSet<String> createResultSet(EPR epr) {
30
        try {
31

    
32
            String[] zkservers= epr.getAddress().split(",");
33

    
34
            CloudSolrClient solrClient;
35

    
36
            synchronized (clients) {
37
                solrClient =  clients.get(epr.getAddress());
38
            }
39
            if (solrClient == null) {
40
                solrClient = new CloudSolrClient.Builder().withZkHost(Arrays.asList(zkservers)).build();
41

    
42
                clients.put(epr.getAddress(), solrClient);
43
            }
44

    
45
            ResultSet<String> solrResultSets = new SolrResultSet(epr, solrClient, prometheusMeterRegistry);
46

    
47
            return solrResultSets;
48

    
49
        } catch (Exception e) {
50
            logger.warn("Error creating solr client", e);
51
        }
52

    
53
        logger.debug("NOT HERE!");
54
        return null;
55
    }
56

    
57
    @Override
58
    public <D> ResultSet<D> createResultSet(EPR epr, Class<D> resourceClass) {
59
        return (ResultSet<D>) createResultSet(epr);
60
    }
61

    
62
    @Override
63
    public <D> ResultSet<D> createResultSet(ResultSet<?> rs, Class<D> resourceClass) {
64
        throw new UnsupportedOperationException();
65
    }
66

    
67
    @Override
68
    public <D extends SecureDriverResource> ResultSet<D> createSecurityAwareRS(EPR epr, Class<D> resourceClass) {
69
        throw new UnsupportedOperationException();
70
    }
71
}
(5-5/5)