Project

General

Profile

1 25725 antonis.le
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 45684 katerina.i
    //private static int Rsets = 0;
23
24 25725 antonis.le
    @Override
25
    public ResultSet<String> createResultSet(EPR epr) {
26
        try {
27
28 33670 katerina.i
            CloudSolrServer solrClient = null;
29 25725 antonis.le
30 33670 katerina.i
            synchronized (clients) {
31
                solrClient =  clients.get(epr.getAddress());
32
            }
33 25725 antonis.le
            if (solrClient == null) {
34
                solrClient = new CloudSolrServer(epr.getAddress());
35
36
                clients.put(epr.getAddress(), solrClient);
37
            }
38
39 45684 katerina.i
            logger.debug("Address " + epr.getAddress());
40
            //Rsets++;
41
            //System.out.println("Created Results sets " + Rsets);
42 25725 antonis.le
            return new SolrResultSet(epr, solrClient);
43 47316 katerina.i
44 25725 antonis.le
        } 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
}