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.CloudSolrServer;
9

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

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

    
18
    private Logger logger = Logger.getLogger(getClass());
19

    
20
    private Map<String, CloudSolrServer> clients = new HashMap<String, CloudSolrServer>();
21

    
22
    //private static int Rsets = 0;
23

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

    
28
            CloudSolrServer solrClient = null;
29

    
30
            synchronized (clients) {
31
                solrClient =  clients.get(epr.getAddress());
32
            }
33
            if (solrClient == null) {
34
                solrClient = new CloudSolrServer(epr.getAddress());
35

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

    
39
            logger.debug("Address " + epr.getAddress());
40
            //Rsets++;
41
            //System.out.println("Created Results sets " + Rsets);
42
            return new SolrResultSet(epr, solrClient);
43

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

    
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)