package org.ariadne_eu.utils.solr;
import java.io.IOException;
import org.apache.log4j.Logger;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
import org.apache.solr.core.SolrCore;
import org.apache.solr.servlet.DirectSolrConnection;
import org.ariadne.config.PropertiesManager;
import org.ariadne_eu.utils.config.RepositoryConstants;
public class SolrServerManagement {
private static SolrServerManagement instance = null;
private static Logger log = Logger.getLogger(SolrServerManagement.class);
private DirectSolrConnection conn;
private SolrCore core;
private SolrServer server;
private static String instanceDir;
private static String dataDir;
private static String loggingPath;
private SolrServerManagement(){
instanceDir = (PropertiesManager.getInstance().getPropFile()).replaceAll("install/ariadne.properties", "solr/");
dataDir = PropertiesManager.getInstance().getProperty(RepositoryConstants.getInstance().SR_SOLR_DATADIR);
loggingPath = PropertiesManager.getInstance().getProperty(RepositoryConstants.getInstance().REPO_LOG4J_DIR);
if (instanceDir == null) {
log.error("Could get Solr instance dir!");
} else if (dataDir == null) {
log.warn("initialize:property \"" + RepositoryConstants.getInstance().SR_SOLR_DATADIR + "\" not defined");
} else if (loggingPath == null) {
log.warn("initialize:property \"" + RepositoryConstants.getInstance().REPO_LOG4J_DIR + "\" not defined");
}
conn = new DirectSolrConnection(instanceDir, dataDir, loggingPath);
core = SolrCore.getSolrCore();
server = new EmbeddedSolrServer(core);
}
public static SolrServerManagement getInstance(){
if ( instance == null ){
synchronized( SolrServerManagement.class ){
if ( instance == null ){
instance = new SolrServerManagement();
}
}
}
return instance;
}
public SolrServer getServer() throws IOException {
core.closeSearcher();
core.getSearcher(true, false, null);
// core.close();
// core.newSearcher("", true);
return server;
}
// public SolrCore getCore() {
// return core;
// }
}