Example usage for com.mongodb DBCursor hasNext

List of usage examples for com.mongodb DBCursor hasNext

Introduction

In this page you can find the example usage for com.mongodb DBCursor hasNext.

Prototype

@Override
public boolean hasNext() 

Source Link

Document

Checks if there is another object available.

Usage

From source file:com.andreig.jetty.QueryServlet.java

License:GNU General Public License

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

    log.fine("doGet()");

    if (!can_read(req)) {
        res.sendError(SC_UNAUTHORIZED);// w ww. j av a  2 s . c o m
        return;
    }

    String db_name = req.getParameter("dbname");
    String col_name = req.getParameter("colname");
    if (db_name == null || col_name == null) {
        String names[] = req2mongonames(req);
        if (names != null) {
            db_name = names[0];
            col_name = names[1];
        }
        if (db_name == null || col_name == null) {
            error(res, SC_BAD_REQUEST, Status.get("param name missing"));
            return;
        }
    }
    String skip = req.getParameter("skip");
    String limit = req.getParameter("limit");

    DB db = mongo.getDB(db_name);

    // mongo auth
    String user = req.getParameter("user");
    String passwd = req.getParameter("passwd");
    if (user != null && passwd != null && (!db.isAuthenticated())) {
        boolean auth = db.authenticate(user, passwd.toCharArray());
        if (!auth) {
            res.sendError(SC_UNAUTHORIZED);
            return;
        }
    }

    DBCollection col = db.getCollection(col_name);

    DBCursor c = col.find();
    if (c == null || c.count() == 0) {
        error(res, SC_NOT_FOUND, Status.get("no documents found"));
        return;
    }

    res.setIntHeader("X-Documents-Count", c.count());

    if (limit != null) {
        try {
            c.limit(Math.min(Integer.parseInt(limit), MAX_FIELDS_TO_RETURN));
        } catch (NumberFormatException e) {
            error(res, SC_BAD_REQUEST, Status.get("can not parse limit"));
            c.close();
            return;
        }
    } else
        c.limit(MAX_FIELDS_TO_RETURN);

    if (skip != null) {
        try {
            c.skip(Integer.parseInt(skip));
        } catch (NumberFormatException e) {
            error(res, SC_BAD_REQUEST, Status.get("can not parse skip"));
            c.close();
            return;
        }
    }

    StringBuilder buf = tl.get();
    buf.setLength(0);

    int no = 0;
    buf.append("[");
    while (c.hasNext()) {

        DBObject o = c.next();
        if (rm_id)
            o.removeField("_id");
        JSON.serialize(o, buf);
        buf.append(",");
        no++;

    }
    c.close();

    if (no > 0)
        buf.setCharAt(buf.length() - 1, ']');
    else
        buf.append(']');

    res.setIntHeader("X-Documents-Returned", no);

    out_str(req, buf.toString(), "application/json");

}

From source file:com.andreig.jetty.SearchServlet.java

License:GNU General Public License

private String search2mongo(Document hits[], DBCollection col) {

    List<ObjectId> values = new ArrayList<ObjectId>();
    for (Document hit : hits) {
        String _id = hit.get("_id");
        ObjectId oid = ObjectId.massageToObjectId(_id);
        values.add(oid);/*from   w w w.  ja v a  2 s  .c  o m*/
    }

    BasicDBObject q = new BasicDBObject();
    q.put("_id", new BasicDBObject("$in", values));

    DBCursor c = col.find(q);
    if (c == null || c.count() == 0) {
        return null;
    }

    StringBuilder buf = tl.get();
    // reset buf
    buf.setLength(0);

    int no = 0;
    buf.append("[");
    while (c.hasNext()) {

        DBObject o = c.next();
        if (rm_id)
            o.removeField("_id");
        JSON.serialize(o, buf);
        buf.append(",");
        no++;

    }
    c.close();

    if (no > 0)
        buf.setCharAt(buf.length() - 1, ']');
    else
        buf.append(']');

    return buf.toString();

}

From source file:com.andreig.jetty.WriteServlet.java

License:GNU General Public License

@Override
protected void doDelete(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

    log.fine("doDelete()");

    if (!can_write(req)) {
        res.sendError(SC_UNAUTHORIZED);//from  w w w  .  j a  v  a2  s  . c  o  m
        return;
    }

    InputStream is = req.getInputStream();
    String db_name = req.getParameter("dbname");
    String col_name = req.getParameter("colname");
    if (db_name == null || col_name == null) {
        String names[] = req2mongonames(req);
        if (names != null) {
            db_name = names[0];
            col_name = names[1];
        }
        if (db_name == null || col_name == null) {
            error(res, SC_BAD_REQUEST, Status.get("param name missing"));
            return;
        }
    }

    DB db = mongo.getDB(db_name);

    // mongo auth
    String user = req.getParameter("user");
    String passwd = req.getParameter("passwd");
    if (user != null && passwd != null && (!db.isAuthenticated())) {
        boolean auth = db.authenticate(user, passwd.toCharArray());
        if (!auth) {
            res.sendError(SC_UNAUTHORIZED);
            return;
        }
    }

    DBCollection col = db.getCollection(col_name);

    BufferedReader r = null;
    DBObject q = null;
    try {

        r = new BufferedReader(new InputStreamReader(is));
        String data = r.readLine();
        if (data == null) {
            error(res, SC_BAD_REQUEST, Status.get("no data"));
            return;
        }
        try {
            q = (DBObject) JSON.parse(data);
        } catch (JSONParseException e) {
            error(res, SC_BAD_REQUEST, Status.get("can not parse data"));
            return;
        }

    } finally {
        if (r != null)
            r.close();
    }

    // search
    if (do_search) {

        DBCursor c = col.find(q);
        long l = c.count();
        String todelete[] = new String[(int) l];
        int n = 0;

        while (c.hasNext()) {

            DBObject o = c.next();
            ObjectId oid = (ObjectId) o.get("_id");
            String id = oid.toStringMongod();
            todelete[n++] = id;

        }
        c.close();
        search.get_writer().delete(todelete);

    }

    WriteResult wr = col.remove(q, write_concern);

    // return operation status
    if (do_return) {
        out_str(req, wr.toString());
        if (wr.getError() == null) {
            res.setStatus(SC_BAD_REQUEST);
            return;
        }
    }

    res.setStatus(SC_OK);

}

From source file:com.andreig.jetty.WriteServlet.java

License:GNU General Public License

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

    log.fine("doPost()");

    if (!can_write(req)) {
        res.sendError(SC_UNAUTHORIZED);/*from   w w  w.j  av  a  2s .c  o  m*/
        return;
    }

    InputStream is = req.getInputStream();
    String db_name = req.getParameter("dbname");
    String col_name = req.getParameter("colname");
    if (db_name == null || col_name == null) {
        String names[] = req2mongonames(req);
        if (names != null) {
            db_name = names[0];
            col_name = names[1];
        }
        if (db_name == null || col_name == null) {
            error(res, SC_BAD_REQUEST, Status.get("param name missing"));
            return;
        }
    }

    boolean upsert = Boolean.parseBoolean(req.getParameter("upsert"));
    boolean multi = Boolean.parseBoolean(req.getParameter("multi"));

    DB db = mongo.getDB(db_name);

    // mongo auth
    String user = req.getParameter("user");
    String passwd = req.getParameter("passwd");
    if (user != null && passwd != null && (!db.isAuthenticated())) {
        boolean auth = db.authenticate(user, passwd.toCharArray());
        if (!auth) {
            res.sendError(SC_UNAUTHORIZED);
            return;
        }
    }

    DBCollection col = db.getCollection(col_name);

    BufferedReader r = null;
    DBObject q = null, o = null;
    try {

        r = new BufferedReader(new InputStreamReader(is));
        String q_s = r.readLine();
        if (q_s == null) {
            error(res, SC_BAD_REQUEST, Status.get("no data"));
            return;
        }
        String o_s = r.readLine();
        if (o_s == null) {
            error(res, SC_BAD_REQUEST, Status.get("obj to update missing"));
            return;
        }
        try {
            q = (DBObject) JSON.parse(q_s);
            o = (DBObject) JSON.parse(o_s);
        } catch (JSONParseException e) {
            error(res, SC_BAD_REQUEST, Status.get("can not parse data"));
            return;
        }

    } finally {
        if (r != null)
            r.close();
    }
    //
    // search
    if (do_search) {

        String fn = col.getFullName();
        DBCursor c = col.find(q);
        int cnt = c.count();
        if (!multi)
            c.limit(1);
        long l = multi ? cnt : 1;
        String toupdate[] = new String[(int) l];
        int n = 0;
        boolean insert = false;

        if (upsert && !multi && cnt == 0)
            insert = true;

        while (c.hasNext()) {

            DBObject _o = c.next();
            ObjectId oid = (ObjectId) _o.get("_id");
            String id = oid.toStringMongod();
            toupdate[n++] = id;

        }
        c.close();

        List<String> flds = Config.search_index_fields.get(fn);
        boolean commit = false;
        Document doc = null;
        Search _writer = search.get_writer();
        if (flds != null && flds.size() > 0) {
            doc = new Document();
            try {
                for (String fld : flds) {
                    String val = (String) o.get(fld);
                    if (val == null)
                        continue;
                    Search.add_searchable_s(doc, fld, val);
                    commit = true;
                }
                if (commit)
                    _writer.commit(doc);
            } catch (ClassCastException e) {
                error(res, SC_BAD_REQUEST, Status.get("searchable fields must be type String"));
                return;
            } catch (CorruptIndexException e) {
                error(res, SC_BAD_REQUEST, Status.get("Search corrupt index" + e));
                return;
            }
        }
        if (commit && insert)
            log.warning("upsert with search not implemented yet");
        else
            _writer.update(toupdate, doc);

    }

    WriteResult wr = col.update(q, o, upsert, multi, write_concern);

    // return operation status
    if (do_return) {
        out_str(req, wr.toString());
        if (wr.getError() == null) {
            res.setStatus(SC_BAD_REQUEST);
            return;
        }
    }

    res.setStatus(SC_CREATED);

}

From source file:com.aperigeek.dropvault.web.dao.MongoFileService.java

License:Open Source License

public List<Resource> getChildren(Resource resource) {
    DBCollection col = mongo.getDataBase().getCollection("files");

    DBObject filter = new BasicDBObject();
    filter.put("parent", resource.getId());

    List<Resource> children = new ArrayList<Resource>();

    DBCursor cursor = col.find(filter);
    while (cursor.hasNext()) {
        children.add(buildResource(cursor.next()));
    }/*from w w w.ja v  a  2s.c o  m*/

    return children;
}

From source file:com.apifest.oauth20.MongoDBManager.java

License:Apache License

@SuppressWarnings("unchecked")
@Override/*from   w w  w  .j av a2 s.com*/
public AuthCode findAuthCode(String authCode, String redirectUri) {
    BasicDBObject keys = new BasicDBObject();
    keys.put(AUTH_CODE_ID_NAME, authCode);
    keys.put(REDIRECT_URI_NAME, redirectUri);
    keys.put(VALID_NAME, true);
    DBCursor list = db.getCollection(AUTH_CODE_COLLECTION_NAME).find(new BasicDBObject(keys));
    while (list.hasNext()) {
        DBObject result = list.next();
        Map<String, Object> mapLoaded = result.toMap();
        AuthCode loadedAuthCode = AuthCode.loadFromMap(mapLoaded);
        log.debug(loadedAuthCode.getClientId());
        list.close();
        return loadedAuthCode;
    }
    list.close();
    return null;
}

From source file:com.apifest.oauth20.MongoDBManager.java

License:Apache License

protected Object getObject(DBCollection coll, BasicDBObject query) {
    DBCursor cursor = coll.find(query);
    Object result = null;/*from   w w  w  .  ja  v  a 2 s . c o  m*/
    try {
        // TODO: if more than once throw exception
        while (cursor.hasNext()) {
            result = cursor.next();
            log.debug("found: " + result);
        }
    } finally {
        if (cursor != null) {
            cursor.close();
        }
    }
    return result;
}

From source file:com.apifest.oauth20.persistence.mongodb.MongoDBManager.java

License:Apache License

@SuppressWarnings("unchecked")
@Override// w w w .  j  a va 2s . co m
public AuthCode findAuthCode(String authCode, String redirectUri) {
    BasicDBObject keys = new BasicDBObject();
    keys.put(AUTH_CODE, authCode);
    keys.put(ACCESS_TOKEN_REDIRECT_URI, redirectUri);
    keys.put(ACCESS_TOKEN_VALID, true);
    DBCursor list = db.getCollection(AUTH_CODE_COLLECTION_NAME).find(new BasicDBObject(keys));
    if (list.hasNext()) {
        DBObject result = list.next();
        Map<String, Object> mapLoaded = result.toMap();
        AuthCode loadedAuthCode = AuthCode.loadFromMap(mapLoaded);
        log.debug(loadedAuthCode.getClientId());
        list.close();
        return loadedAuthCode;
    }
    list.close();
    return null;
}

From source file:com.app.mongoDao.MongoBookDao.java

@Override
public List<Book> listBook() {
    ArrayList<Book> booklist = new ArrayList<>();
    try {//  w w w  .ja  va  2  s. c om
        DBCollection data = DatabaseConfig.configure();
        BasicDBObject orderBy = new BasicDBObject("id", 1);
        DBCursor docs = data.find().sort(orderBy);

        while (docs.hasNext()) {
            DBObject doc = docs.next();
            Book librarybook = new Book(doc.get("bookname").toString(), doc.get("author").toString());
            booklist.add(librarybook);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    return booklist;
}

From source file:com.appleframework.monitor.action.LogsAction.java

License:Open Source License

@RequestMapping(value = "/projects/{projectName}/logs/download", method = RequestMethod.GET)
public void download(final HttpServletResponse response, ModelMap map, @PathVariable String projectName,
        LogQuery logQuery) throws IOException, ParseException {
    Project project = projectService.findProject(projectName);
    final MongoConverter converter = project.fetchMongoTemplate().getConverter();
    final DBCursor cursor = logsService.findLogs(projectName, logQuery, 100000);
    response.setContentType("file/txt;charset=utf-8");
    response.addHeader("content-disposition",
            String.format("attachment; filename=%s.txt", java.net.URLEncoder.encode("logs", "UTF-8")));
    response.setStatus(HttpServletResponse.SC_OK);
    while (cursor.hasNext()) {
        Log log = converter.read(Log.class, cursor.next());
        response.getWriter().println(log.toString());
    }/* www.  j  a  v a2s.c o m*/
}