package org.qrone.mongo;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.qrone.database.DatabaseCursor;
import org.qrone.r7.script.Scriptables;
import org.qrone.r7.script.browser.Function;
import org.qrone.r7.script.ext.ScriptablePrototype;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCursor;
public class MongoCursor implements ScriptablePrototype<DBCursor>, DatabaseCursor {
private DBCursor c;
public MongoCursor( DBCursor c) {
this.c = c;
}
public void forEach(Function func) {
while(hasNext()){
func.call(next());
}
}
@Override
public boolean hasNext() {
return c.hasNext();
}
@Override
public Map next() {
if(c.hasNext())
return c.next().toMap();
return null;
}
public List toArray(){
List l = new ArrayList();
while(c.hasNext()){
l.add(c.next());
}
return l;
}
public MongoCursor limit(Number o) {
return new MongoCursor(c.limit(o.intValue()));
}
public MongoCursor skip(Number o) {
return new MongoCursor(c.skip(o.intValue()));
}
public MongoCursor sort(Map o) {
return new MongoCursor(c.sort(new BasicDBObject(o)));
}
public MongoCursor sort(Object o) {
return sort(Scriptables.asMap(o));
}
}