package org.genedb.querying.tmpquery;
import org.genedb.querying.core.QueryClass;
import org.genedb.querying.core.QueryParam;
import org.springframework.validation.Errors;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.RangeQuery;
import java.util.List;
@QueryClass(
title="Coding and pseudogenes by protein length",
shortDesc="Get a list of transcripts ",
longDesc=""
)
public class ProteinNumTMQuery extends OrganismLuceneQuery {
@QueryParam(
order=1,
title="Minimum length of protein in bases"
)
private int min = 1;
@QueryParam(
order=2,
title="Minimum length of protein in bases"
)
private int max = 10;
@Override
protected String getluceneIndexName() {
return "org.gmod.schema.mapped.Feature";
}
@Override
public String getQueryDescription() {
return "Searches for proteins that have a given number of transmembrane helices.";
}
@Override
public String getQueryName() {
return "Transmembrane Helices";
}
@Override
protected void getQueryTermsWithoutOrganisms(List<org.apache.lucene.search.Query> queries) {
Term lowerTerm = new Term("numberTMDomains", String.format("%05d", min));
Term upperTerm = new Term("numberTMDomains", String.format("%05d", max));
RangeQuery rq = new RangeQuery(lowerTerm, upperTerm, true);
queries.add(rq);
//queries.add(geneOrPseudogeneQuery);
}
// ------ Autogenerated code below here
public int getMin() {
return min;
}
public void setMin(int min) {
this.min = min;
}
public int getMax() {
return max;
}
public void setMax(int max) {
this.max = max;
}
@Override
protected String[] getParamNames() {
return new String[] {"min", "max"};
}
@Override
protected void extraValidation(Errors errors) {
//validate dependent properties
if (!errors.hasErrors()) {
if (getMin() > getMax()) {
errors.reject("min.greater.than.max");
}
}
}
}