package org.nextprot.api.tasks.solr;
import java.util.Set;
import org.nextprot.api.commons.exception.NPreconditions;
import org.nextprot.api.commons.service.MasterIdentifierService;
import org.nextprot.api.core.domain.Entry;
import org.nextprot.api.core.service.DbXrefService;
import org.nextprot.api.core.service.EntryBuilderService;
import org.nextprot.api.core.service.TerminologyService;
import org.nextprot.api.tasks.solr.indexer.EntryGoldSolrIndexer;
public class GenerateSolrAnnotationIndexGold extends GenerateSolrIndex {
public static void main(String[] args) {
GenerateSolrAnnotationIndexGold i = new GenerateSolrAnnotationIndexGold();
i.launch(args);
}
@Override
public void start(String[] args) {
MasterIdentifierService MasterEntryService = getBean(MasterIdentifierService.class);
EntryBuilderService entryBuilderService = getBean(EntryBuilderService.class);
int ecnt = 0;
String solrServer = System.getProperty("solr.server");
NPreconditions.checkNotNull(solrServer, "Please set solr.server variable. For example: java -Dsolr.server=\"http://localhost:8983/solr/npentries1gold\"");
logger.info("Solr server: " + solrServer);
EntryGoldSolrIndexer indexer = new EntryGoldSolrIndexer(solrServer);
// Get an access to some needed services
indexer.setTerminologyservice(getBean(TerminologyService.class));
indexer.setEntryBuilderService(getBean(EntryBuilderService.class));
indexer.setDbxrefservice(getBean(DbXrefService.class));
// Remove previous indexes
logger.info("removing all solr entries records");
indexer.clearDatabase("");
Set<String> allentryids;
System.err.println("getting all entries from API");
logger.info("getting all entries from API");
long start = System.currentTimeMillis();
allentryids = MasterEntryService.findUniqueNames();
System.err.println("indexing " + allentryids.size() + " entries...");
logger.info("indexing " + allentryids.size() + " entries...");
for (String id : allentryids) {
ecnt++;
Entry currentry = entryBuilderService.buildWithEverything(id);
indexer.add(currentry);
if((ecnt % 1000) == 0)
logger.info(ecnt + " entries GOLD-indexed...");
}
indexer.addRemaing();
logger.info("comitting");
indexer.commit();
logger.info(ecnt + " entries GOLD-indexed in " + (System.currentTimeMillis()-start)/1000 + " seconds...END");
}
}