/** * Returns an Objectify Query object for the specified filters. * * @return an Objectify Query. */ @ApiResourceProperty(ignored = AnnotationBoolean.TRUE) public Query<Conference> getQuery() { // First check the feasibility of inequality filters. checkFilters(); Query<Conference> query = ofy().load().type(Conference.class); if (inequalityFilter == null) { // Order by name. query = query.order("name"); } else { // If we have any inequality filters, order by the field first. query = query.order(inequalityFilter.field.getFieldName()); query = query.order("name"); } for (Filter filter : this.filters) { // Applies filters in order. if (filter.field.fieldType == FieldType.STRING) { query = query.filter( String.format( "%s %s", filter.field.getFieldName(), filter.operator.getQueryOperator()), filter.value); } else if (filter.field.fieldType == FieldType.INTEGER) { query = query.filter( String.format( "%s %s", filter.field.getFieldName(), filter.operator.getQueryOperator()), Integer.parseInt(filter.value)); } } LOG.info(query.toString()); return query; }