package org.mongodb.morphia.query;

import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import org.mongodb.morphia.Datastore;
import org.mongodb.morphia.Key;
import org.mongodb.morphia.mapping.Mapper;

Defines an Iterator across the Key values for a given type.
Author:Scott Hernandez
Type parameters:
  • <T> – the entity type
/** * Defines an Iterator across the Key values for a given type. * * @param <T> the entity type * @author Scott Hernandez */
public class MorphiaKeyIterator<T> extends MorphiaIterator<T, Key<T>> {
Create
Params:
  • datastore – the Datastore to use when fetching this reference
  • cursor – the cursor to use
  • mapper – the Mapper to use
  • clazz – the original type being iterated
  • collection – the mongodb collection
/** * Create * @param datastore the Datastore to use when fetching this reference * @param cursor the cursor to use * @param mapper the Mapper to use * @param clazz the original type being iterated * @param collection the mongodb collection */
public MorphiaKeyIterator(final Datastore datastore, final DBCursor cursor, final Mapper mapper, final Class<T> clazz, final String collection) { super(datastore, cursor, mapper, clazz, collection, null); } @Override @SuppressWarnings("unchecked") protected Key<T> convertItem(final DBObject dbObj) { Object id = dbObj.get(Mapper.ID_KEY); if (id instanceof DBObject) { Class type = getMapper().getMappedClass(getClazz()).getMappedIdField().getType(); id = getMapper().fromDBObject(getDatastore(), type, (DBObject) id, getMapper().createEntityCache()); } return new Key<T>(getClazz(), getCollection(), id); } }