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;

       }