Java 类com.google.appengine.api.datastore.QueryResultIterator 实例源码

项目:generator-thundr-gae-react    文件:BaseRepository.java   
/**
 * Delete all entities in batches of {@value BATCH_SIZE}.
 *
 * @return number of entities deleted
 */
public long deleteAll() {
    Query<E> query = ofy().load().type(entityType).limit(BATCH_SIZE);
    QueryResultIterator<Key<E>> iterator = query.keys().iterator();
    List<Key<E>> keysToDelete = new ArrayList<>();
    long numDeleted = 0;
    while (iterator.hasNext()) {
        Key<E> key = iterator.next();
        keysToDelete.add(key);
        if (!iterator.hasNext()) {
            deleteByKey(fromKeys.from(keysToDelete));
            numDeleted += keysToDelete.size();
            keysToDelete.clear();
            iterator = query.startAt(iterator.getCursor()).keys().iterator();
        }
    }
    return numDeleted;
}
项目:android-training-2017    文件:UserEndpoint.java   
/**
 * List all entities.
 *
 * @param cursor used for pagination to determine which page to return
 * @param limit  the maximum number of entries to return
 * @return a response that encapsulates the result list and the next page token/cursor
 */
@ApiMethod(
        name = "list",
        path = "user",
        httpMethod = ApiMethod.HttpMethod.GET)
public CollectionResponse<User> list(@Nullable @Named("cursor") String cursor, @Nullable @Named("limit") Integer limit) {
    limit = limit == null ? DEFAULT_LIST_LIMIT : limit;
    Query<User> query = ofy().load().type(User.class).limit(limit);
    if (cursor != null) {
        query = query.startAt(Cursor.fromWebSafeString(cursor));
    }
    QueryResultIterator<User> queryIterator = query.iterator();
    List<User> userList = new ArrayList<User>(limit);
    while (queryIterator.hasNext()) {
        userList.add(queryIterator.next());
    }
    return CollectionResponse.<User>builder().setItems(userList).setNextPageToken(queryIterator.getCursor().toWebSafeString()).build();
}
项目:Build-it-Bigger    文件:JokeEndpoint.java   
/**
 * List all entities.
 *
 * @param cursor used for pagination to determine which page to return
 * @param limit  the maximum number of entries to return
 * @return a response that encapsulates the result list and the next page token/cursor
 */
@ApiMethod(
        name = "list",
        path = "joke",
        httpMethod = ApiMethod.HttpMethod.GET)
public CollectionResponse<Joke> list(@Nullable @Named("cursor") String cursor, @Nullable @Named("limit") Integer limit) {
    Integer limitParam = limit == null ? DEFAULT_LIST_LIMIT : limit;
    Query<Joke> query = ofy().load().type(Joke.class).limit(limitParam);
    if (cursor != null) {
        query = query.startAt(Cursor.fromWebSafeString(cursor));
    }
    QueryResultIterator<Joke> queryIterator = query.iterator();
    List<Joke> jokeList = new ArrayList<>(limitParam);
    while (queryIterator.hasNext()) {
        jokeList.add(queryIterator.next());
    }
    return CollectionResponse.<Joke>builder().setItems(jokeList).setNextPageToken(queryIterator.getCursor().toWebSafeString()).build();
}
项目:Capstoneproject1    文件:OrdersEndpoint.java   
/**
 * List all entities.
 *
 * @param cursor used for pagination to determine which page to return
 * @param limit  the maximum number of entries to return
 * @return a response that encapsulates the result list and the next page token/cursor
 */
@ApiMethod(
        name = "list",
        path = "orders",
        httpMethod = ApiMethod.HttpMethod.GET)
public CollectionResponse<Orders> list(@Nullable @Named("cursor") String cursor, @Nullable @Named("limit") Integer limit) {
    limit = limit == null ? DEFAULT_LIST_LIMIT : limit;
    Query<Orders> query = ofy().load().type(Orders.class).limit(limit);
    if (cursor != null) {
        query = query.startAt(Cursor.fromWebSafeString(cursor));
    }
    QueryResultIterator<Orders> queryIterator = query.iterator();
    List<Orders> ordersList = new ArrayList<Orders>(limit);
    while (queryIterator.hasNext()) {
        ordersList.add(queryIterator.next());
    }
    return CollectionResponse.<Orders>builder().setItems(ordersList).setNextPageToken(queryIterator.getCursor().toWebSafeString()).build();
}
项目:Capstoneproject1    文件:UsersEndpoint.java   
/**
 * List all entities.
 *
 * @param cursor used for pagination to determine which page to return
 * @param limit  the maximum number of entries to return
 * @return a response that encapsulates the result list and the next page token/cursor
 */
@ApiMethod(
        name = "list",
        path = "users",
        httpMethod = ApiMethod.HttpMethod.GET)
public CollectionResponse<Users> list(@Nullable @Named("cursor") String cursor, @Nullable @Named("limit") Integer limit) {
    limit = limit == null ? DEFAULT_LIST_LIMIT : limit;
    Query<Users> query = ofy().load().type(Users.class).limit(limit);
    if (cursor != null) {
        query = query.startAt(Cursor.fromWebSafeString(cursor));
    }
    QueryResultIterator<Users> queryIterator = query.iterator();
    List<Users> usersList = new ArrayList<Users>(limit);
    while (queryIterator.hasNext()) {
        usersList.add(queryIterator.next());
    }
    return CollectionResponse.<Users>builder().setItems(usersList).setNextPageToken(queryIterator.getCursor().toWebSafeString()).build();
}
项目:getting-started-java    文件:DatastoreDao.java   
@Override
public Result<Book> listBooks(String startCursorString) {
  FetchOptions fetchOptions = FetchOptions.Builder.withLimit(10); // Only show 10 at a time
  if (startCursorString != null && !startCursorString.equals("")) {
    fetchOptions.startCursor(Cursor.fromWebSafeString(startCursorString)); // Where we left off
  }
  Query query = new Query(BOOK_KIND) // We only care about Books
      .addSort(Book.TITLE, SortDirection.ASCENDING); // Use default Index "title"
  PreparedQuery preparedQuery = datastore.prepare(query);
  QueryResultIterator<Entity> results = preparedQuery.asQueryResultIterator(fetchOptions);

  List<Book> resultBooks = entitiesToBooks(results);     // Retrieve and convert Entities
  Cursor cursor = results.getCursor();              // Where to start next time
  if (cursor != null && resultBooks.size() == 10) {         // Are we paging? Save Cursor
    String cursorString = cursor.toWebSafeString();               // Cursors are WebSafe
    return new Result<>(resultBooks, cursorString);
  } else {
    return new Result<>(resultBooks);
  }
}
项目:getting-started-java    文件:DatastoreDao.java   
@Override
public Result<Book> listBooksByUser(String userId, String startCursorString) {
  FetchOptions fetchOptions = FetchOptions.Builder.withLimit(10); // Only show 10 at a time
  if (startCursorString != null && !startCursorString.equals("")) {
    fetchOptions.startCursor(Cursor.fromWebSafeString(startCursorString)); // Where we left off
  }
  Query query = new Query(BOOK_KIND) // We only care about Books
      // Only for this user
      .setFilter(new Query.FilterPredicate(
          Book.CREATED_BY_ID, Query.FilterOperator.EQUAL, userId))
      // a custom datastore index is required since you are filtering by one property
      // but ordering by another
      .addSort(Book.TITLE, SortDirection.ASCENDING);
  PreparedQuery preparedQuery = datastore.prepare(query);
  QueryResultIterator<Entity> results = preparedQuery.asQueryResultIterator(fetchOptions);

  List<Book> resultBooks = entitiesToBooks(results);     // Retrieve and convert Entities
  Cursor cursor = results.getCursor();              // Where to start next time
  if (cursor != null && resultBooks.size() == 10) {         // Are we paging? Save Cursor
    String cursorString = cursor.toWebSafeString();               // Cursors are WebSafe
    return new Result<>(resultBooks, cursorString);
  } else {
    return new Result<>(resultBooks);
  }
}
项目:getting-started-java    文件:DatastoreDao.java   
@Override
public Result<Book> listBooks(String startCursorString) {
  FetchOptions fetchOptions = FetchOptions.Builder.withLimit(10); // Only show 10 at a time
  if (startCursorString != null && !startCursorString.equals("")) {
    fetchOptions.startCursor(Cursor.fromWebSafeString(startCursorString)); // Where we left off
  }
  Query query = new Query(BOOK_KIND) // We only care about Books
      .addSort(Book.TITLE, SortDirection.ASCENDING); // Use default Index "title"
  PreparedQuery preparedQuery = datastore.prepare(query);
  QueryResultIterator<Entity> results = preparedQuery.asQueryResultIterator(fetchOptions);

  List<Book> resultBooks = entitiesToBooks(results);     // Retrieve and convert Entities
  Cursor cursor = results.getCursor();              // Where to start next time
  if (cursor != null && resultBooks.size() == 10) {         // Are we paging? Save Cursor
    String cursorString = cursor.toWebSafeString();               // Cursors are WebSafe
    return new Result<>(resultBooks, cursorString);
  } else {
    return new Result<>(resultBooks);
  }
}
项目:getting-started-java    文件:DatastoreDao.java   
@Override
public Result<Book> listBooks(String startCursorString) {
  FetchOptions fetchOptions = FetchOptions.Builder.withLimit(10); // Only show 10 at a time
  if (startCursorString != null && !startCursorString.equals("")) {
    fetchOptions.startCursor(Cursor.fromWebSafeString(startCursorString)); // Where we left off
  }
  Query query = new Query(BOOK_KIND) // We only care about Books
      .addSort(Book.TITLE, SortDirection.ASCENDING); // Use default Index "title"
  PreparedQuery preparedQuery = datastore.prepare(query);
  QueryResultIterator<Entity> results = preparedQuery.asQueryResultIterator(fetchOptions);

  List<Book> resultBooks = entitiesToBooks(results);     // Retrieve and convert Entities
  Cursor cursor = results.getCursor();              // Where to start next time
  if (cursor != null && resultBooks.size() == 10) {         // Are we paging? Save Cursor
    String cursorString = cursor.toWebSafeString();               // Cursors are WebSafe
    return new Result<>(resultBooks, cursorString);
  } else {
    return new Result<>(resultBooks);
  }
}
项目:getting-started-java    文件:DatastoreDao.java   
@Override
public Result<Book> listBooks(String startCursorString) {
  FetchOptions fetchOptions = FetchOptions.Builder.withLimit(10); // Only show 10 at a time
  if (startCursorString != null && !startCursorString.equals("")) {
    fetchOptions.startCursor(Cursor.fromWebSafeString(startCursorString)); // Where we left off
  }
  Query query = new Query(BOOK_KIND) // We only care about Books
      .addSort(Book.TITLE, SortDirection.ASCENDING); // Use default Index "title"
  PreparedQuery preparedQuery = datastore.prepare(query);
  QueryResultIterator<Entity> results = preparedQuery.asQueryResultIterator(fetchOptions);

  List<Book> resultBooks = entitiesToBooks(results);     // Retrieve and convert Entities
  Cursor cursor = results.getCursor();              // Where to start next time
  if (cursor != null && resultBooks.size() == 10) {         // Are we paging? Save Cursor
    String cursorString = cursor.toWebSafeString();               // Cursors are WebSafe
    return new Result<>(resultBooks, cursorString);
  } else {
    return new Result<>(resultBooks);
  }
}
项目:getting-started-java    文件:DatastoreDao.java   
@Override
public Result<Book> listBooksByUser(String userId, String startCursorString) {
  FetchOptions fetchOptions = FetchOptions.Builder.withLimit(10); // Only show 10 at a time
  if (startCursorString != null && !startCursorString.equals("")) {
    fetchOptions.startCursor(Cursor.fromWebSafeString(startCursorString)); // Where we left off
  }
  Query query = new Query(BOOK_KIND) // We only care about Books
      // Only for this user
      .setFilter(new Query.FilterPredicate(
          Book.CREATED_BY_ID, Query.FilterOperator.EQUAL, userId))
      // a custom datastore index is required since you are filtering by one property
      // but ordering by another
      .addSort(Book.TITLE, SortDirection.ASCENDING);
  PreparedQuery preparedQuery = datastore.prepare(query);
  QueryResultIterator<Entity> results = preparedQuery.asQueryResultIterator(fetchOptions);

  List<Book> resultBooks = entitiesToBooks(results);     // Retrieve and convert Entities
  Cursor cursor = results.getCursor();              // Where to start next time
  if (cursor != null && resultBooks.size() == 10) {         // Are we paging? Save Cursor
    String cursorString = cursor.toWebSafeString();               // Cursors are WebSafe
    return new Result<>(resultBooks, cursorString);
  } else {
    return new Result<>(resultBooks);
  }
}
项目:listmaker    文件:ObjectifyDao.java   
/**
 * Convenience method to get all objects matching a single property
 * 
 * @param propName
 * @param propValue
 * @return T matching Object
 * @throws TooManyResultsException
 */
public T getByProperty(String propName, Object propValue)
        throws TooManyResultsException
{
       QueryResultIterator<T> fetch = ofy().load().type(clazz)
               .filter(propName, propValue)
               .limit(2).iterator();
       if (!fetch.hasNext())
    {
        return null;
    }
    T obj = fetch.next();
    if (fetch.hasNext())
    {
        throw new TooManyResultsException(fetch.toString()
                + " returned too many results");
    }
    return obj;
}
项目:fullmetalgalaxy    文件:FmgDataStore.java   
public static String getPseudoFromJid(String p_jid)
{
  if( p_jid == null )
  {
    return "???";
  }
  String jid = p_jid.split("/")[0];
  Query<EbAccount> query = dao().query( EbAccount.class ).filter( "m_jabberId", jid );
  QueryResultIterator<EbAccount> it = query.iterator();
  if( !it.hasNext() )
  {
    // we could remove the end of jid @...
    // but in this case someone can use a jid in the form of <existingPseudo>@anydomain
    // to fool players !
    return jid;
  }
  return it.next().getPseudo();
}
项目:appengine-tck    文件:QueryResultTest.java   
@Test
public void testCursor() throws Exception {
    Entity parent = createTestEntityWithUniqueMethodNameKey("Person", "testKeysOnly");
    Key key = parent.getKey();

    Entity john = createEntity("Person", key)
        .withProperty("name", "John")
        .withProperty("surname", "Doe")
        .store();

    Query query = new Query("Person")
        .setAncestor(key)
        .setKeysOnly();

    PreparedQuery preparedQuery = service.prepare(query);
    QueryResultIterator<Entity> iter = preparedQuery.asQueryResultIterator();
    Assert.assertNotNull(iter.next());
    Cursor cursor = iter.getCursor();

    iter = service.prepare(query).asQueryResultIterator(FetchOptions.Builder.withStartCursor(cursor));
    Assert.assertFalse(iter.hasNext());
}
项目:appengine-tck    文件:QueryResultTest.java   
@Test
public void testIndexListFromIterator() throws Exception {
    Entity parent = createTestEntityWithUniqueMethodNameKey("Person", "testKeysOnly");
    Key key = parent.getKey();

    Entity tom = createEntity("Person", key)
        .withProperty("name", "Tom")
        .withProperty("surname", "Foe")
        .store();

    Query query = new Query("Person")
        .setAncestor(key)
        .setKeysOnly();

    PreparedQuery preparedQuery = service.prepare(query);
    QueryResultIterator<Entity> iter = preparedQuery.asQueryResultIterator();
    List<Index> indexes = iter.getIndexList();
    if (indexes != null) {
        // TODO -- something useful
        System.out.println("indexes = " + indexes);
    }
}
项目:mashmesh    文件:VolunteerScheduleScrubber.java   
public void run(long cutOffTimeMillis) {
    int updatedProfileCount = 0;
    QueryResultIterator<VolunteerProfile> profileIterator = VolunteerProfile.withExpiredAppointments(
            cutOffTimeMillis, CHUNK_SIZE);
    List<VolunteerProfile> updatedProfiles = new ArrayList<VolunteerProfile>(CHUNK_SIZE);

    while (profileIterator.hasNext() && hasTimeRemaining()) {
        for (int i = 0; i < CHUNK_SIZE && profileIterator.hasNext(); i++) {
            VolunteerProfile nextProfile = profileIterator.next();
            nextProfile.removeExpiredAppointments(cutOffTimeMillis);

            updatedProfiles.add(nextProfile);
            updatedProfileCount++;
        }

        OfyService.ofy().put(updatedProfiles);
        updatedProfiles.clear();
    }

    logger.info(String.format("Updated schedules for %d profiles", updatedProfileCount));

    if (profileIterator.hasNext()) {
        isTerminatedEarly = true;
        logger.warning("Terminating early due to request timeout");
    }
}
项目:mashmesh    文件:VolunteerProfileOccupiedTest.java   
@Test
public void testFindingVolunteerWithOldAppointment() {
    localServiceTestHelper.setUp();

    VolunteerProfile volunteerProfile = new VolunteerProfile();
    volunteerProfile.setUserId("1");

    DateTime startTime = dateTime("2013-06-01T20:00:00-03:00");
    DateTime endTime = dateTime("2013-06-01T20:30:00-03:00");
    DateTime cutoffTime = dateTime("2013-06-02T00:00:00-03:00");

    volunteerProfile.addAppointmentTime(getRideRequest(), startTime, endTime);
    Objectify ofy = OfyService.ofy();
    ofy.put(volunteerProfile);

    QueryResultIterator<VolunteerProfile> volunteerProfileIterator = VolunteerProfile
            .withExpiredAppointments(cutoffTime.getMillis(), 100);
    List<VolunteerProfile> volunteerProfiles = CollectionUtils.listOfIterator(volunteerProfileIterator);

    assertEquals(Arrays.asList(volunteerProfile), volunteerProfiles);

    localServiceTestHelper.tearDown();
}
项目:mashmesh    文件:VolunteerProfileOccupiedTest.java   
@Test
public void testFindingVolunteerWithoutOldAppointments() {
    localServiceTestHelper.setUp();

    VolunteerProfile volunteerProfile = new VolunteerProfile();
    volunteerProfile.setUserId("1");

    DateTime startTime = dateTime("2013-06-01T20:00:00-03:00");
    DateTime endTime = dateTime("2013-06-01T20:30:00-03:00");
    DateTime cutoffTime = dateTime("2013-05-30T00:00:00-03:00");

    volunteerProfile.addAppointmentTime(getRideRequest(), startTime, endTime);
    Objectify ofy = OfyService.ofy();
    ofy.put(volunteerProfile);

    QueryResultIterator<VolunteerProfile> volunteerProfileIterator = VolunteerProfile
            .withExpiredAppointments(cutoffTime.getMillis(), 100);
    List<VolunteerProfile> volunteerProfiles = CollectionUtils.listOfIterator(volunteerProfileIterator);

    assertTrue(volunteerProfiles.isEmpty());

    localServiceTestHelper.tearDown();
}
项目:generator-thundr-gae-react    文件:BaseRepository.java   
public List<E> listAllForQuery(Query<E> query) {
    QueryResultIterator<E> iterator = query.iterator();
    List<E> entities = new ArrayList<>();
    while (iterator.hasNext()) {
        entities.add(iterator.next());
        if (!iterator.hasNext()) {
            iterator = query.startAt(iterator.getCursor()).iterator();
        }
    }
    return entities;
}
项目:Build-it-Bigger    文件:JokeEndpoint.java   
/**
 * @return A randomly chosen {@link Joke} object
 */
@ApiMethod(
        name = "getRandomJoke",
        path = "joke/random",
        httpMethod = ApiMethod.HttpMethod.GET)
public Joke getRandomJoke() {
    logger.info("Getting random joke");
    QueryKeys<Joke> keys = ofy().load().type(Joke.class).keys();
    QueryResultIterator<Key<Joke>> iterator = keys.iterator();
    List<Key> keyList = new ArrayList<>();
    while (iterator.hasNext())
        keyList.add(iterator.next());
    Key key = keyList.get(random.nextInt(keyList.size() - 1));
    return (Joke) ofy().load().key(key).now();
}
项目:Capstoneproject1    文件:MyEndpoint.java   
@ApiMethod(name = "listUsers")
public CollectionResponse<Users> listQuote(@Nullable @com.google.api.server.spi.config.Named("cursor") String cursorString,
                                           @Nullable @com.google.api.server.spi.config.Named("count") Integer count) {

    Query<Users> query = ofy().load().type(Users.class);
    if (count != null) query.limit(count);
    if (cursorString != null && cursorString != "") {
        query = query.startAt(Cursor.fromWebSafeString(cursorString));
    }
    List<Users> records = new ArrayList<Users>();
    QueryResultIterator<Users> iterator = query.iterator();
    int num = 0;
    while (iterator.hasNext()) {
        records.add(iterator.next());
        if (count != null) {
            num++;
            if (num == count) break;
        }
    }
    //Find the next cursor
    if (cursorString != null && cursorString != "") {
        Cursor cursor = iterator.getCursor();
        if (cursor != null) {
            cursorString = cursor.toWebSafeString();
        }
    }
    return CollectionResponse.<Users>builder().setItems(records).setNextPageToken(cursorString).build();
}
项目:Capstoneproject1    文件:MyEndpoint.java   
@ApiMethod(
        name = "orderlist",
        httpMethod = ApiMethod.HttpMethod.GET)
public List<Orders> orderlist(@javax.annotation.Nullable @Named("cursor") String cursor){
    Query<Orders> query = ofy().load().type(Orders.class).limit(1000);
    if (cursor != null)
        query = query.startAt(Cursor.fromWebSafeString(cursor));
    QueryResultIterator<Orders> queryIterator = query.iterator();
    List<Orders> ordersList = new ArrayList<Orders>(1000);
    while (queryIterator.hasNext()) {
        ordersList.add(queryIterator.next());
    }
    return ordersList;
}
项目:appengine-pipelines    文件:AppEngineBackEnd.java   
@Override
public Pair<? extends Iterable<JobRecord>, String> queryRootPipelines(String classFilter,
    String cursor, final int limit) {
  Query query = new Query(JobRecord.DATA_STORE_KIND);
  Filter filter = classFilter == null || classFilter.isEmpty() ? new FilterPredicate(
      ROOT_JOB_DISPLAY_NAME, GREATER_THAN, null)
      : new FilterPredicate(ROOT_JOB_DISPLAY_NAME, EQUAL, classFilter);
  query.setFilter(filter);
  final PreparedQuery preparedQuery = dataStore.prepare(query);
  final FetchOptions fetchOptions = FetchOptions.Builder.withDefaults();
  if (limit > 0) {
    fetchOptions.limit(limit + 1);
  }
  if (cursor != null) {
    fetchOptions.startCursor(Cursor.fromWebSafeString(cursor));
  }
  return tryFiveTimes(
      new Operation<Pair<? extends Iterable<JobRecord>, String>>("queryRootPipelines") {
        @Override
        public Pair<? extends Iterable<JobRecord>, String> call() {
          QueryResultIterator<Entity> entities =
              preparedQuery.asQueryResultIterable(fetchOptions).iterator();
          Cursor dsCursor = null;
          List<JobRecord> roots = new LinkedList<>();
          while (entities.hasNext()) {
            if (limit > 0 && roots.size() >= limit) {
              dsCursor = entities.getCursor();
              break;
            }
            JobRecord jobRecord = new JobRecord(entities.next());
            roots.add(jobRecord);
          }
          return Pair.of(roots, dsCursor == null ? null : dsCursor.toWebSafeString());
        }
      });
}
项目:mturk-surveys    文件:MergeAnswersServlet.java   
private String merge(String cursorString) {
    Query<UserAnswer> query = ofy().load().type(UserAnswer.class).limit(1000);
    List<UserAnswer> toSaveList = new ArrayList<UserAnswer>(); 

    if (cursorString != null) {
        query = query.startAt(Cursor.fromWebSafeString(cursorString));
    }

    boolean cont = false;
    QueryResultIterator<UserAnswer> iterator = query.iterator();

    while (iterator.hasNext()) {
        UserAnswer userAnswer = iterator.next();
        Map<String, String> answers = userAnswer.getAnswers();
        if(answers != null) {
            String answer = answers.get("householdIncome");
            if("$100,000-$149,999".equals(answer) || "$150,000-$199,999".equals(answer) ||
                    "$200,000-$249,999".equals(answer) || "$300,000 or more".equals(answer)) {
                answers.put("householdIncome", "$100,000 or more");
                toSaveList.add(userAnswer);
            }
        }
        cont = true;
    }

    if(toSaveList.size() > 0) {
        ofy().save().entities(toSaveList).now();
        logger.info(String.format("Merged %d answers", toSaveList.size()));
    }

    if(cont) {
        Cursor cursor = iterator.getCursor();
        return cursor.toWebSafeString();
    } else {
        return null;
    }
}
项目:mturk-surveys    文件:ApproveAssignmentsServlet.java   
private String approve(String cursorString) {
    Query<UserAnswer> query = ofy().load().type(UserAnswer.class).limit(30);

    if (cursorString != null) {
        query = query.startAt(Cursor.fromWebSafeString(cursorString));
    }

    boolean cont = false;
    QueryResultIterator<UserAnswer> iterator = query.iterator();

    while (iterator.hasNext()) {
        UserAnswer userAnswer = iterator.next();
        try {
            List<Assignment> assignments = getAssignmentsForHITService.getAssignments(true, userAnswer.getHitId());
            for(Assignment assignment: assignments) {
                approveAssignmentService.approveAssignment(true, assignment.getAssignmentId());
            }
        } catch (MturkException e) {
            logger.log(Level.WARNING, e.getMessage());
        }
        cont = true;
    }

    if(cont) {
        Cursor cursor = iterator.getCursor();
        return cursor.toWebSafeString();
    } else {
        return null;
    }
}
项目:mturk-surveys    文件:DisposeHITsServlet.java   
private String dispose(String cursorString) {
    Calendar endCal = Calendar.getInstance();
    endCal.setTime(new Date());
    endCal.set(Calendar.HOUR_OF_DAY, 0);
    endCal.set(Calendar.MINUTE, 0);
    endCal.set(Calendar.SECOND, 0);

    Calendar startCal = Calendar.getInstance();
    startCal.setTime(endCal.getTime());
    startCal.add(Calendar.DAY_OF_MONTH, -1);

    Query<UserAnswer> query = ofy().load().type(UserAnswer.class)
            .filter("date >=", startCal.getTime()).filter("date <", endCal.getTime()).limit(30);

    if (cursorString != null) {
        query = query.startAt(Cursor.fromWebSafeString(cursorString));
    }

    boolean cont = false;
    QueryResultIterator<UserAnswer> iterator = query.iterator();

    while (iterator.hasNext()) {
        UserAnswer userAnswer = iterator.next();
        try {
            disposeHITService.disposeHIT(true, userAnswer.getHitId());
            logger.log(Level.INFO, String.format("Disposed HIT %s", userAnswer.getHitId()));
        } catch (MturkException e) {
            logger.log(Level.WARNING, e.getMessage());
        }
        cont = true;
    }

    if(cont) {
        Cursor cursor = iterator.getCursor();
        return cursor.toWebSafeString();
    } else {
        return null;
    }
}
项目:mturk-surveys    文件:UserAnswerService.java   
public CollectionResponse<UserAnswer> list(String cursorString, Integer limit) throws NoSuchAlgorithmException {
    List<UserAnswer> result = new ArrayList<UserAnswer>();
    Query<UserAnswer> query = ofy().load().type(UserAnswer.class)
            .filter("surveyId", DEMOGRAPHICS_SURVEY_ID).order("-date");

    if(cursorString != null) {
        query = query.startAt(Cursor.fromWebSafeString(cursorString));
    }

    if(limit != null) {
        query = query.limit(limit);
    }

    boolean cont = false;
    QueryResultIterator<UserAnswer> iterator = query.iterator();

    while (iterator.hasNext()) {
        UserAnswer userAnswer = iterator.next();
        String workerId = userAnswer.getWorkerId();
        if(workerId != null) {
            userAnswer.setWorkerId(MD5.crypt(workerId));
        }
        userAnswer.setIp(null);
        result.add(userAnswer);
        cont = true;
    }

    if(cont) {
        Cursor cursor = iterator.getCursor();
        return CollectionResponse.<UserAnswer> builder().setItems(result).setNextPageToken(cursor.toWebSafeString()).build();
    } else {
        return CollectionResponse.<UserAnswer> builder().setItems(result).build();
    }
}
项目:appengine-tck    文件:PreparedQueryTest.java   
@Test
public void testAsQueryResultIterator() throws Exception {
    QueryResultIterator<Entity> iterator = preparedQuery.asQueryResultIterator();
    assertNotNull(iterator);
    assertTrue(iterator.hasNext());
    assertEquals(john, iterator.next());
}
项目:appengine-tck    文件:PreparedQueryTest.java   
@Test
public void testAsQueryResultIteratorWithOptions() throws Exception {
    QueryResultIterator<Entity> iterator = preparedQuery.asQueryResultIterator(withDefaults());
    assertNotNull(iterator);
    assertTrue(iterator.hasNext());
    assertEquals(john, iterator.next());
}
项目:appengine-tck    文件:CursorTest.java   
@Test
public void testReverse() {
    Query query = new Query(kindName, rootKey);
    query.addSort(Entity.KEY_RESERVED_PROPERTY);
    QueryResultIterator<Entity> iter = service.prepare(query).asQueryResultIterator();
    Entity e1 = iter.next();
    Entity e2 = iter.next();
    Cursor cursor = iter.getCursor();
    //reverse
    query = query.reverse();
    cursor = cursor.reverse();
    iter = service.prepare(query).asQueryResultIterator(FetchOptions.Builder.withStartCursor(cursor));
    Assert.assertEquals(e2, iter.next());
    Assert.assertEquals(e1, iter.next());
}
项目:mashmesh    文件:VolunteerProfile.java   
public static QueryResultIterator<VolunteerProfile> withExpiredAppointments(long cutOffTimeMillis, int chunkSize) {
    return OfyService.ofy()
            .query(VolunteerProfile.class)
            .filter("appointmentTimes.endTimeMillis <", cutOffTimeMillis)
            .chunkSize(chunkSize)
            .iterator();
}
项目:wickapp2    文件:PersonProvider.java   
@Override
public final Iterator<? extends Person> iterator(long start, long end) {
    // TODO: use start + end
    QueryResultIterable<Person> personIterable = getLoadType().iterable();
    QueryResultIterator<Person> personIt = personIterable.iterator();
    return personIt;
}
项目:karma-exchange    文件:PaginatedQuery.java   
public Result<T> execute() {
  QueryResultIterator<T> queryIter = getOfyQuery().iterator();
  List<T> searchResults = Lists.newArrayList(Iterators.limit(queryIter, limit));
  Cursor nextCursor = queryIter.getCursor();
  PagingInfo pagingInfo =
      (uriInfo == null) ?
          null :
          PagingInfo.create(nextCursor, limit, queryIter.hasNext(), uriInfo);
  return new Result<T>(searchResults, nextCursor, pagingInfo, this);
}
项目:walkaround    文件:CheckedDatastore.java   
CheckedIteratorImpl(QueryResultIterator<Entity> iterator) {
  Preconditions.checkNotNull(iterator, "Null iterator");
  this.iterator = iterator;
}
项目:triethocduongpho    文件:Article2Endpoint.java   
/**
 * List all entities.
 *
 * @param cursor used for pagination to determine which page to return
 * @param limit  the maximum number of entries to return
 * @return a response that encapsulates the result list and the next page token/cursor
 */
@ApiMethod(
        name = "list",
        path = "article",
        httpMethod = ApiMethod.HttpMethod.GET)
public CollectionResponse<Article> list(@Named("cat") String category,
                                        @Nullable @Named("cursor") String cursor, @Nullable @Named("limit") Integer limit,
                                        @Nullable @Named("from") Long from, @Nullable @Named("to") Long to,
                                        @Nullable @Named("timehash") Long timehash, @Nullable @Named("cert") String cert)
        throws ForbiddenException {
    validateRequest(timehash, cert);

    limit = (limit == null || limit <= 0) ? DEFAULT_LIST_LIMIT : limit;
    //test();
    Query<Article> query = ObjectifyService.ofy().load().type(Article.class).order("-created").limit(limit);
    if (category != null && !"".equals(category)) {
        query = query.filter("category", category);
    }
    if (from != null && to != null && 0 < from && from <= to) {
        query = query.filter("created >", new Date(from)).filter("created <", new Date(to));
    }
    if (cursor != null) {
        query = query.startAt(Cursor.fromWebSafeString(cursor));
    }
    QueryResultIterator<Article> queryIter = query.iterator();
    List<Article> articleList = new ArrayList<Article>(limit);

    // TODO Use random to choose big style
    Random random = new Random();
    boolean isFirst = true;

    while (queryIter.hasNext()) {
        Article article = queryIter.next();
        // To save data transfer
        article.setFullContent(null);
        if (isFirst || random.nextInt(8) == 0) {
            article.setStyle(1);
            isFirst = false;
        }
        articleList.add(article);
    }
    return CollectionResponse.<Article>builder().setItems(articleList).setNextPageToken(queryIter.getCursor().toWebSafeString()).build();
}
项目:npackd-gae-web    文件:ForEachPackageVersionAction.java   
@Override
public Page perform(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {
    String cursor = req.getParameter("cursor");

    Objectify ob = DefaultServlet.getObjectify();
    Query<PackageVersion> q = ob.query(PackageVersion.class);
    if (cursor != null)
        q.startCursor(Cursor.fromWebSafeString(cursor));
    q.limit(100);

    QueryResultIterator<PackageVersion> iterator = q.iterator();

    int n = 0;
    List<PackageVersion> list = new ArrayList<PackageVersion>();
    while (iterator.hasNext()) {
        PackageVersion data = iterator.next();
        list.add(data);
        n++;
    }

    ob.put(list);

    if (n == 100) {
        cursor = iterator.getCursor().toWebSafeString();
    } else {
        cursor = null;
        NWUtils.sendMailToAdmin("cursor == nul for /tasks/resave-package-version");
    }

    Queue queue = QueueFactory.getQueue("resave");
    try {
        TaskOptions to = withUrl("/tasks/resave-package-versions");
        if (cursor != null)
            to.param("cursor", cursor);

        queue.add(to);
    } catch (TaskAlreadyExistsException e) {
        NWUtils.LOG
                .warning("task /tasks/resave-package-version already exists");
    }

    resp.setStatus(200);
    return null;
}
项目:npackd-gae-web    文件:ResavePackageVersionsAction.java   
@Override
public Page perform(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {
    String cursor = req.getParameter("cursor");

    Objectify ob = DefaultServlet.getObjectify();
    Query<PackageVersion> q = ob.query(PackageVersion.class);
    if (cursor != null)
        q.startCursor(Cursor.fromWebSafeString(cursor));
    q.limit(100);

    QueryResultIterator<PackageVersion> iterator = q.iterator();

    int n = 0;
    List<PackageVersion> list = new ArrayList<PackageVersion>();
    while (iterator.hasNext()) {
        PackageVersion data = iterator.next();
        list.add(data);
        n++;
    }

    ob.put(list);

    if (n == 100) {
        cursor = iterator.getCursor().toWebSafeString();
    } else {
        cursor = null;
        NWUtils.sendMailToAdmin("cursor == nul for /tasks/resave-package-version");
    }

    Queue queue = QueueFactory.getQueue("resave");
    try {
        TaskOptions to = withUrl("/tasks/resave-package-versions");
        if (cursor != null)
            to.param("cursor", cursor);

        queue.add(to);
    } catch (TaskAlreadyExistsException e) {
        NWUtils.LOG
                .warning("task /tasks/resave-package-version already exists");
    }

    resp.setStatus(200);
    return null;
}