public List<Invoice> getEntriesByParam(Invoice param, String pagesize,
String nextId,Condition condition) {
DatastoreService
datastore = DatastoreServiceFactory.getDatastoreService();
Query
query = new Query(Invoice.class.getSimpleName());
// 検索項目(Indexがあるもの) を指定してnewする
QueryUtils
queryUtils = new QueryUtils(new String[]{"invoiceNo","companyName","job","issuedDate"});
// paramの検索項目がnullでなければaddFiler(FilterOperator.EQUAL)される
queryUtils.setParam(param, query);
if (nextId != null) {
query.addFilter("id", Query.FilterOperator.GREATER_THAN , Long.parseLong(nextId));
}
query.addSort("id");
int limit = DEFAULT_PAGESIZE;
if (pagesize != null) {
limit = Integer.parseInt(pagesize);
}
// Fetch Option
FetchOptions
fetchOptions = FetchOptions.Builder.withLimit(limit);
Iterable<Entity>
resultIterable = datastore.prepare(query).asIterable(fetchOptions);
EntityConverter
entityConverter = new EntityConverter();
List<Invoice>
result = entityConverter.convert(Invoice.class, resultIterable,null,condition);
return result;
}