package org.genedb.querying.tmpquery;
import org.genedb.querying.core.QueryClass;
import org.genedb.querying.core.QueryParam;
import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@QueryClass(
title="Get features by date",
shortDesc="Get a list of features that have changed since a certain date",
longDesc=""
)
public class DateQuery extends OrganismHqlQuery {
@QueryParam(
order=1,
title="Date of modification"
)
protected Date date;
@QueryParam(
order=2,
title="After this date"
)
protected boolean after;
@QueryParam(
order=3,
title="Just look at creation date"
)
protected boolean created;
@Override
public String getQueryDescription() {
return "Searches for features who have been changed before or after a certain date.";
}
@Override
public String getQueryName() {
return "Date";
}
@Override
protected String getHql() {
System.err.println("date in hql is '"+date+"'");
String operator = after ? ">" : "<";
String typeOfDate = created ? "timeAccessioned" : "timeLastModified";
StringBuilder sb = new StringBuilder();
sb.append(String.format("select @SELECTOR@ from Feature f where f.%s %s :date @ORGANISM@ ", typeOfDate, operator));
sb.append(RESTRICT_TO_TRANSCRIPTS_AND_PSEUDOGENES);
return sb.toString();
}
// ------ Autogenerated code below here
public Date getDate() {
return date;
}
public void setDate(Date date) {
System.err.println("date in setter is '"+date+"'");
this.date = date;
}
public boolean isCreated() {
return created;
}
public void setCreated(boolean created) {
this.created = created;
}
public boolean isAfter() {
return after;
}
public void setAfter(boolean after) {
this.after = after;
}
@Override
protected String[] getParamNames() {
return new String[] {"taxons", "date", "created", "after"};
}
@Override
protected void populateQueryWithParams(org.hibernate.Query query) {
// GV1 added super call
super.populateQueryWithParams(query);
query.setDate("date", date);
}
@Override
public Map<String, Object> prepareModelData() {
Map<String, Object> map = new HashMap<String, Object>();
String dateString = "";
if (date != null) {
SimpleDateFormat dateFormat = new SimpleDateFormat( "dd/MM/yyyy" );
dateString = dateFormat.format(date);
}
map.put("date", dateString);
return map;
}
@Override
protected String getOrderBy() {
return " order by f.organism ";
}
}