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 org.apache.log4j.Logger;
8
import org.apache.solr.client.solrj.impl.CloudSolrClient;
9

    
10
import java.util.Arrays;
11
import java.util.HashMap;
12
import java.util.Map;
13

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

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

    
22
    @Override
23
    public ResultSet<String> createResultSet(EPR epr) {
24
        try {
25

    
26
            String[] zkservers= epr.getAddress().split(",");
27

    
28
            CloudSolrClient solrClient;
29

    
30
            synchronized (clients) {
31
                solrClient =  clients.get(epr.getAddress());
32
            }
33
            if (solrClient == null) {
34
                solrClient = new CloudSolrClient.Builder().withZkHost(Arrays.asList(zkservers)).build();
35

    
36
                clients.put(epr.getAddress(), solrClient);
37
            }
38

    
39
            ResultSet<String> solrResultSets = new SolrResultSet(epr, solrClient);
40

    
41
            return solrResultSets;
42

    
43
        } catch (Exception e) {
44
            logger.error("Error creating solr client", e);
45
        }
46

    
47
        logger.debug("NOT HERE!");
48
        return null;
49
    }
50

    
51
    @Override
52
    public <D> ResultSet<D> createResultSet(EPR epr, Class<D> resourceClass) {
53
        return (ResultSet<D>) createResultSet(epr);
54
    }
55

    
56
    @Override
57
    public <D> ResultSet<D> createResultSet(ResultSet<?> rs, Class<D> resourceClass) {
58
        throw new UnsupportedOperationException();
59
    }
60

    
61
    @Override
62
    public <D extends SecureDriverResource> ResultSet<D> createSecurityAwareRS(EPR epr, Class<D> resourceClass) {
63
        throw new UnsupportedOperationException();
64
    }
65
}
(5-5/5)