package org.genedb.querying.tmpquery; import org.genedb.querying.core.QueryClass; import org.genedb.querying.core.QueryParam; //import org.hibernate.validator.NotEmpty; import org.apache.lucene.index.Term; import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.TermQuery; import org.apache.lucene.search.WildcardQuery; import org.apache.lucene.search.BooleanClause.Occur; import org.springframework.util.StringUtils; import java.util.List; @QueryClass( title="Coding and pseudogenes by protein length", shortDesc="Get a list of transcripts ", longDesc="" ) public class NameProductQuery extends OrganismLuceneQuery { @QueryParam( order=1, title="Minimum length of protein in bases" ) //@NotEmpty(message="{name.or.product.query.empty}") private String search = ""; @Override protected String getluceneIndexName() { return "org.gmod.schema.mapped.Feature"; } @Override public String getQueryDescription() { return "Searches for polypeptides of a certain function, that have a certain name."; } @Override public String getQueryName() { return "Named Product"; } @Override protected void getQueryTermsWithoutOrganisms(List<org.apache.lucene.search.Query> queries) { BooleanQuery bq = new BooleanQuery(); if(StringUtils.containsWhitespace(search)) { for(String term : search.split(" ")) { bq.add(new TermQuery(new Term("expandedProduct",term.toLowerCase() )), Occur.SHOULD); } } else { if (search.indexOf('*') == -1) { bq.add(new TermQuery(new Term("allNames",search.toLowerCase())), Occur.SHOULD); bq.add(new TermQuery(new Term("expandedProduct",search.toLowerCase())), Occur.SHOULD); } else { bq.add(new WildcardQuery(new Term("allNames", search.toLowerCase())), Occur.SHOULD); bq.add(new WildcardQuery(new Term("expandedProduct", search.toLowerCase())), Occur.SHOULD); } } queries.add(bq); queries.add(productiveTranscriptQuery); // BooleanQuery organismQuery = makeQueryForOrganisms(orgNames); // queries.add(organismQuery); } // ------ Autogenerated code below here public void setSearch(String search) { this.search = search; } public String getSearch() { return search; } @Override protected String[] getParamNames() { return new String[] {"search"}; } }