package org.genedb.querying.tmpquery;
import org.genedb.querying.core.QueryClass;
import org.genedb.querying.core.QueryParam;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.WildcardQuery;
import org.apache.lucene.search.BooleanClause.Occur;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@QueryClass(
title="Coding and pseudogenes by protein length",
shortDesc="Get a list of transcripts ",
longDesc=""
)
public class AdvancedQuery extends OrganismLuceneQuery {
@QueryParam(
order=1,
title="Minimum length of protein in bases"
)
private String category;
@QueryParam(
order=2,
title="Minimum length of protein in bases"
)
private String search = "";
@Override
protected String getluceneIndexName() {
return "org.gmod.schema.mapped.Feature";
}
@Override
public String getQueryName() {
return "Advanced";
}
@Override
protected void getQueryTermsWithoutOrganisms(List<Query> queries) {
BooleanQuery advQuery = new BooleanQuery();
if (search.contains("*")) {
advQuery.add(new WildcardQuery(new Term(category, search.toLowerCase())),Occur.SHOULD);
} else {
advQuery.add(new TermQuery(new Term(category, search.toLowerCase())), Occur.SHOULD);
}
BooleanQuery booleanQuery = new BooleanQuery();
booleanQuery.add(new BooleanClause(geneOrPseudogeneQuery, Occur.MUST));
booleanQuery.add(new BooleanClause(advQuery, Occur.MUST));
// Organism stuff
queries.add(booleanQuery);
}
@Override
public Map<String, Object> prepareModelData() {
Map<String, String> typeMap = new HashMap<String, String>();
typeMap.put("allNames", "All Names");
typeMap.put("product", "Products");
typeMap.put("curatedAnnotation", "Curation/Notes");
typeMap.put("goTermId", "GO Terms");
typeMap.put("ecNumber", "EC Number");
typeMap.put("pfamId", "Pfam");
Map<String, Object> ret = new HashMap<String, Object>();
ret.put("typeMap", typeMap);
return ret;
}
// ------ Autogenerated code below here
public void setSearch(String search) {
this.search = search;
}
public String getSearch() {
return search;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
@Override
protected String[] getParamNames() {
return new String[] {"search"};
}
}