package org.genedb.querying.tmpquery; import org.genedb.querying.core.LuceneQuery; import org.genedb.querying.core.QueryException; import org.genedb.querying.core.LuceneQuery.Pager; import org.apache.lucene.document.Document; import org.apache.lucene.index.CorruptIndexException; import org.apache.lucene.index.Term; import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TermQuery; import org.apache.lucene.search.TopDocs; import org.apache.lucene.search.BooleanClause.Occur; import org.springframework.validation.Errors; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class IdsToGeneSummaryQuery extends LuceneQuery { private List<String> ids; // protected GeneSummary getGeneSummary(Document document) { // String displayId = getGeneUniqueNameOrUniqueName(document); // GeneSummary ret = new GeneSummary( // displayId, // document.get("uniqueName"), // systematic // document.get("organism.commonName"), // taxon-name, // document.get("product"), // product // document.get("chr"), // toplevename // Integer.parseInt(document.get("start")) // leftpos // ); // return ret; // } @Override public String getQueryDescription() { return "Generates a summary of from a feature id."; } @Override public String getQueryName() { return "Ids2Genes"; } @Override protected void extraValidation(Errors errors) { // Deliberately empty } @Override protected String[] getParamNames() { return new String[] {"ids"}; } @Override protected void getQueryTerms(List<org.apache.lucene.search.Query> queries) { BooleanQuery bq = new BooleanQuery(); for(String id : ids) { bq.add(new TermQuery(new Term("uniqueName",id)), Occur.SHOULD); } queries.add(bq); //queries.add(geneQuery); } @Override protected String getluceneIndexName() { return "org.gmod.schema.mapped.Feature"; } public List<String> getIds() { return ids; } public void setIds(List<String> ids) { this.ids = ids; } protected GeneSummary docToGeneSummary(Document doc) { String displayId = getGeneUniqueNameOrUniqueName(doc); return new GeneSummary( displayId, doc.get("uniqueName"), // systematic doc.get("organism.commonName"), // taxon-name, doc.get("product"), // product doc.get("chr"), // toplevename Integer.parseInt(doc.get("start")) // leftpos ); } protected Pager<GeneSummary> geneSummaryPager = new Pager<GeneSummary>() { @Override public GeneSummary convert(Document doc) { return docToGeneSummary(doc); } }; public List<GeneSummary> getResultsSummaries(int page, int length) throws QueryException { return geneSummaryPager.getResults(page, length); } public List<GeneSummary> getResultsSummaries() throws QueryException { List<GeneSummary> summaries= new ArrayList<GeneSummary>(); TopDocs topDocs = lookupInLucene(); for (ScoreDoc scoreDoc : topDocs.scoreDocs) { try { summaries.add( docToGeneSummary( fetchDocument(scoreDoc.doc))); } catch (CorruptIndexException e) { throw new QueryException(e); } catch (IOException e) { throw new QueryException(e); } } return summaries; } }