Example usage for com.mongodb DBCollection findOne

List of usage examples for com.mongodb DBCollection findOne

Introduction

In this page you can find the example usage for com.mongodb DBCollection findOne.

Prototype

@Nullable
public DBObject findOne(final Object id) 

Source Link

Document

Get a single document from collection by '_id'.

Usage

From source file:it.sayservice.platform.smartplanner.utils.LegGenerator.java

License:Apache License

public static Object getObjectByField(DB db, String key, String value, DBCollection collection,
        Class destinationClass) {
    Object result = null;//from   w  w  w . j a v a2 s . com

    QueryBuilder qb = QueryBuilder.start(key).is(value);

    BasicDBObject dbObject = (BasicDBObject) collection.findOne(qb.get());

    if (dbObject != null) {
        dbObject.remove("_id");

        ObjectMapper mapper = new ObjectMapper();
        result = mapper.convertValue(dbObject, destinationClass);
    }

    return result;
}

From source file:lab2sdindexservice.HiloIndexService.java

@Override
public void run() {
    try {//from www  . j  av a2  s  .co m
        //Recibe consultas del Front Service.
        outToClient = new DataOutputStream(socket.getOutputStream());
        inFromClient = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        //dis = new DataInputStream(socket.getInputStream());
        fromClient = inFromClient.readLine();
        request = fromClient;

        //System.out.println("Servidor "+ idSession);
        //Los mensajes recibidos tienen el formato REST
        System.out.println(request);
        String[] tokens = request.toLowerCase().split(" ");
        String parametros = tokens[1];
        int espacios = tokens.length;
        String http_method = tokens[0];

        String[] tokens_parametros = parametros.split("/");
        String resource = tokens_parametros.length > 1 ? tokens_parametros[1] : "";
        String id = tokens_parametros.length > 2 ? tokens_parametros[2] : "";
        int cantidadQuerys = 0;
        System.out.println("Partes restantes del query: " + (tokens.length - 2));
        if (tokens.length - 2 > 0) {
            for (int i = 0; i < tokens.length - 2; i++) {
                id += " " + tokens[i + 2];
            }
        }
        System.out.println("El query completo es " + id);
        //            for (int i = 0; i < tokens.length; i++) {
        //                System.out.println(tokens[i]);
        //            }
        //            for (int i = 0; i < tokens_parametros.length; i++) {
        //                System.out.println(tokens_parametros[i]);
        //            }
        String meta_data = tokens.length > 2 ? tokens[2] : "";

        System.out.println("\nConsulta: " + request);
        System.out.println("HTTP METHOD: " + http_method);
        System.out.println("Resource: " + resource);
        System.out.println("ID:       " + id);
        System.out.println("META DATA:    " + meta_data);

        //System.out.println("La consulta se deberia encontrar en la posicion "+posicion_consulta);

        //Palabras de la consulta separadas
        String[] palabras = id.split(" ");
        //Cantidad de querys igual a la cantidad de palabras a buscar en el indice invertido
        DBObject querys[] = new DBObject[palabras.length];
        //System.out.println(palabras.length);
        Palabra Indice[] = new Palabra[palabras.length];
        //System.out.println(Indice.length);
        ArrayList Articulos;
        for (int i = 0; i < Indice.length; i++) {
            String palabraAux = palabras[i];
            ArrayList arreglo = new ArrayList();
            //Se crea la palabra junto al arreglo vacio de articulos correspondiente a dicha palabra
            Indice[i] = new Palabra(palabraAux, arreglo);
        }

        String title = "";
        String frecuencia = "";
        //Para cada query
        for (int i = 0; i < querys.length; i++) {
            BasicDBObject query = new BasicDBObject();
            //System.out.println(palabras[i]);
            //Se crea el query para buscar la palabra
            query.put("key", palabras[i]);
            //Particion de la palabra en el indice invertido
            int posicion = funcion_hash(palabras[i], particiones);
            //System.out.println("posicion " + posicion);
            String coleccionIndice = "IndiceInvertido" + posicion;
            DBCollection IndiceInvertido = db.getCollection(coleccionIndice);
            querys[i] = IndiceInvertido.findOne(query);
            int auxTitle = 0;
            int auxFrecuencia = 0;
            //Si el query existe en la bd
            if (querys[i] != null) {
                Articulos = new ArrayList();
                String delimitadores = "[,\"{}\\[\\]]+";
                //Se eliminan los caracteres inservibles de los articulos que contienen la palabra
                String[] palabrasSeparadas = querys[i].get("articulos").toString().split(delimitadores);
                for (int j = 0; j < palabrasSeparadas.length - 1; j++) {
                    if (palabrasSeparadas[j].length() != 0 && !palabrasSeparadas[j].equals(" ")) {
                        //System.out.println(palabrasSeparadas[j]);
                        //System.out.println(palabrasSeparadas[j]);
                        //Si antes la palabra era title, ahora se lee y guarda el titulo
                        if (auxTitle == 2) {
                            title = palabrasSeparadas[j];
                            //System.out.println(title);
                            auxTitle = 0;
                        } else if (auxTitle == 1) {
                            auxTitle += 1;
                        }
                        //Si antes la palabra era frecuencia, ahora se lee y guarda la frecuencia
                        if (auxFrecuencia == 1) {
                            frecuencia = palabrasSeparadas[j];
                            //Se crea el articulo con los datos correspondientes
                            Articulo articulo = new Articulo(title, frecuencia);
                            //Se agrega el articulo al arreglo de articulos correspondiente a la palabra
                            Indice[i].Articulos.add(articulo);
                            auxFrecuencia = 0;
                        }
                        //Si se lee la palabra title, despues vendra : y despues el titulo
                        if (palabrasSeparadas[j].equals("title")) {
                            auxTitle += 1;
                        }
                        //Si se lee la palabra frecuencia, despues se lee la frecuencia
                        if (palabrasSeparadas[j].equals("frecuencia")) {
                            auxFrecuencia += 1;
                        }
                    }
                }
                //Se ordena el arreglo de articulo por la cantidad de frecuencia
                Collections.sort(Indice[i].Articulos, new FrecuenciaComparator());
            }
        }

        //Se calculan los mejores resultados
        ArrayList resultado = calculaMejores(Indice, db, particiones, cantResultados);
        ArrayList<String> resultado2 = new ArrayList<String>();
        //Se ordenan los resultados segun el score acumulado
        Collections.sort(resultado, new ScoreComparator());
        //Se eliminan los articulos repetidos
        for (int i = 0; i < resultado.size(); i++) {
            Articulo articulo = (Articulo) resultado.get(i);
            //System.out.println(articulo.title);
            if (resultado2.size() == 0) {
                resultado2.add(articulo.title);
            } else {
                if (resultado2.contains(articulo.title)) {
                    //
                } else {
                    resultado2.add(articulo.title);
                }
            }
            //System.out.println(articulo.score);
        }

        //Si la cantidad de resultados obtenidos es menor a la cantidad solicitada en el txt de configuracion
        if (resultado2.size() < cantResultados) {
            //Se cambia la cantidad de resultados a mostrar por la menor cantidad
            cantResultados = resultado2.size();
        }
        //Se guarda el primero para mandarlo al cache
        //System.out.println(resultado2.get(i));
        int posicion = funcion_hash(resultado2.get(0), particiones);
        String coleccionIndicePr = "Wikipedia" + posicion;
        BasicDBObject queryPrimero = new BasicDBObject();
        queryPrimero.put("title", resultado2.get(0));
        DBCollection WikipediaPr = db.getCollection(coleccionIndicePr);
        //Se busca el articulo
        DBObject resultPr = WikipediaPr.findOne(queryPrimero);
        String titlePrimero = resultado2.get(0);
        String textPrimero = resultPr.get("text").toString();
        //Se agregan los mejores resultados al JSON de respuesta
        System.out.println("===========");
        System.out.println(cantResultados + " Mejores");
        System.out.println("===========");
        JSONArray objResultados = new JSONArray();
        //Para la cantidad de respuestas correspondientes, se busca el articulo en la bd
        for (int i = 0; i < cantResultados; i++) {
            JSONObject objResultado = new JSONObject();
            //Posicion en la particion de la bd segun el titulo del articulo
            posicion = funcion_hash(resultado2.get(i), particiones);
            //System.out.println(posicion);
            String coleccionIndice = "Wikipedia" + posicion;
            DBCollection Wikipedia = db.getCollection(coleccionIndice);
            BasicDBObject query = new BasicDBObject();
            //System.out.println(palabras[i]);
            query.put("title", resultado2.get(i));
            //System.out.println(resultado2.get(i));
            //Se busca el articulo
            DBObject result = Wikipedia.findOne(query);
            if (result != null) {
                //Se obtiene el texto para poder sacar un breve resumen
                String text = result.get("text").toString();
                //Se separa el texto por palabras
                String split[] = text.split(" ");
                String resumen = "";
                //Se muestran 100 palabras del texto del articulo
                //Si el articulo tiene menos palabras, se muestran todas
                int cantPalabras = split.length;
                if (cantPalabras > 100) {
                    cantPalabras = 100;
                }
                //Se crea el resumen para el articulo
                for (int j = 0; j < cantPalabras; j++) {
                    if (split[j].length() != 0 && !split[j].equals(" ")) {
                        //System.out.println(split[j]);
                        resumen = resumen + split[j];
                        resumen = resumen + " ";
                    } else {
                        cantPalabras += 1;
                    }
                }
                //Se crea y agrega el articulo al JSON que se enviar al Front Service
                objResultado.put("resumen", resumen);
                objResultado.put("title", result.get("title"));
                System.out.println((i + 1) + ". " + result.get("title"));
                objResultado.put("_id", result.get("_id"));
                //System.out.println(objResultado);
                objResultados.add(objResultado);
            }
        }
        if (cantResultados == 0) {
            Socket socketCaching = new Socket(InetAddress.getByName(ipCaching), 8090);
            salidaCaching = new DataOutputStream(socketCaching.getOutputStream());
            salidaCaching.writeBytes("No Hay Resultados");
            outToClient.writeBytes("No hay resultados");
            socketCaching.close();
        } else {
            //Se envia el JSON con el mejor resultado al cache
            //System.out.println(titlePrimero);
            //System.out.println(textPrimero);

            String rest = "POST /respuestas/" + id + " body=" + objResultados.toString();
            System.out.println(rest);
            Socket socketCaching = new Socket(InetAddress.getByName(ipCaching),
                    Integer.parseInt(puertoCaching));
            salidaCaching = new DataOutputStream(socketCaching.getOutputStream());
            salidaCaching.writeBytes(rest);
            //salidaCaching.writeBytes("POST /respuestas/hola body=<p>hola mundo</>");
            outToClient.writeBytes(objResultados.toJSONString());
            socketCaching.close();
        }
    } catch (IOException ex) {
        Logger.getLogger(HiloIndexService.class.getName()).log(Level.SEVERE, null, ex);
    }
    desconnectar();
}

From source file:lab2sdindexservice.HiloIndexService.java

private static int buscaEnArticulo(String palabra, String title, DB db, int particiones) {
    //Se crea el query para buscar la palabra en el indice invertido
    BasicDBObject palabraIndice = new BasicDBObject();
    palabraIndice.put("key", palabra);
    //Particion a la que deberia pertener la palabra en caso de existir
    int posicion = funcion_hash(palabra, particiones);
    String coleccionIndice = "IndiceInvertido" + posicion;
    DBCollection IndiceInvertido = db.getCollection(coleccionIndice);
    DBObject palabraEnIndice = IndiceInvertido.findOne(palabraIndice);
    //Si la palabra existe en la bd
    if (palabraEnIndice != null) {
        ///System.out.println(palabraEnIndice.get("articulos"));
        String split[] = palabraEnIndice.get("articulos").toString()
                .split("\"" + title + "\" , \"frecuencia\" : ");
        //System.out.println(split.length);

        if (split.length == 2) {
            //System.out.println(split[1]);
            String split2[] = split[1].split("}");
            //Se saca la frecuencia del string
            int frecuencia = Integer.parseInt(split2[0]);
            //System.out.println(frecuencia + " para "+ palabra + " en "+title);
            return frecuencia;
        } else {//  w w  w .ja  v  a2s  .c o  m
            return 0;
        }
    } else {
        return 0;
    }
}

From source file:MDBInt.DBMongo.java

License:Apache License

/**
 * //ww w.j  a  v a2s.co  m
 * @param tenantName
 * @param faSite
 * @param faIP
 * @param faPort
 * @return 
 * @author gtricomi
 */
public String getFAInfo(String tenantName, String faSite) {
    DB database = this.getDB(tenantName);
    DBCollection collection = database.getCollection("faInfo");
    BasicDBObject first = new BasicDBObject();
    first.put("SiteName", faSite);
    DBObject obj = null;
    obj = collection.findOne(first);
    if (obj == null)
        return null;
    return obj.toString();
}

From source file:MDBInt.DBMongo.java

License:Apache License

public String getRunTimeInfo(String dbName, String uuid) {

    BasicDBObject first = new BasicDBObject();
    first.put("phisicalResourceId", uuid);

    DB database = this.getDB(dbName);
    DBCollection collection = database.getCollection("runTimeInfo");
    DBObject obj = null;/*from  w  ww.ja  v  a2 s.  c  o m*/

    obj = collection.findOne(first);

    return obj.toString();

}

From source file:MDBInt.DBMongo.java

License:Apache License

/**
 *
 * @param dbName//  w  w w.ja va  2s . c  o  m
 * @param userName
 * @param password
 * @param cloudID
 * @return jsonObject that contains credential for a specified cloud or null
 */
public String getFederatedCredential(String dbName, String userName, String password, String cloudID) {

    DB dataBase = this.getDB(dbName);
    DBCollection collezione = this.getCollection(dataBase, "credentials");
    DBObject federationUser = null;
    BasicDBObject query = new BasicDBObject("federationUser", userName);
    BasicDBList credList;
    Iterator it;
    BasicDBObject obj;
    query.append("federationPassword", this.toMd5(password));
    // System.out.println("password: "+this.toMd5(password));

    federationUser = collezione.findOne(query);

    if (federationUser == null) {
        return null;
    }
    credList = (BasicDBList) federationUser.get("crediantialList");

    it = credList.iterator();
    while (it.hasNext()) {
        obj = (BasicDBObject) it.next();
        if (obj.containsValue(cloudID)) {
            return obj.toString();
        }
    }
    return null;
}

From source file:MDBInt.DBMongo.java

License:Apache License

/**
 * This use only token. It will be/*  w w w  . j  a v  a  2s.  c  o m*/
 *
 * @param dbName
 * @param, this is an UUID generated from simple_IDM when a new
 * Federation user is added.
 * @param cloudID
 * @return
 * @author gtricomi
 */
public String getFederatedCredential(String dbName, String token, String cloudID) {
    DB dataBase = this.getDB(dbName);
    DBCollection collezione = this.getCollection(dataBase, "credentials");
    DBObject federationUser = null;
    BasicDBObject query = new BasicDBObject("token", token);
    BasicDBList credList;
    Iterator it;
    BasicDBObject obj;

    federationUser = collezione.findOne(query);

    if (federationUser == null) {
        return null;
    }
    credList = (BasicDBList) federationUser.get("crediantialList");

    it = credList.iterator();
    while (it.hasNext()) {
        obj = (BasicDBObject) it.next();
        if (obj.containsValue(cloudID)) {
            return obj.toString();
        }
    }
    return null;
}

From source file:MDBInt.DBMongo.java

License:Apache License

/**
 * Returns generic federation infoes./*  w w w. j a  v  a  2s  .c  o  m*/
 *
 * @param dbName
 * @param token, this is an internal token?
 * @return
 * @author gtricomi
 */
public String getFederationCredential(String dbName, String token) {
    DB dataBase = this.getDB(dbName);
    DBCollection collezione = this.getCollection(dataBase, "credentials");
    DBObject federationUser = null;
    BasicDBObject query = new BasicDBObject("token", token);
    federationUser = collezione.findOne(query);

    if (federationUser == null) {
        return null;
    }
    BasicDBObject bo = new BasicDBObject();
    bo.append("federationUser", (String) federationUser.get("federationUser"));
    bo.append("federationPassword", (String) federationUser.get("federationPassword"));
    return bo.toString();
}

From source file:MDBInt.DBMongo.java

License:Apache License

public String getUser(String dbName, String collectionName, String userName, String password) {

    DB dataBase = this.getDB(dbName);
    DBCollection collezione = this.getCollection(dataBase, collectionName);
    DBObject federationUser = null;//www .  ja v  a2  s .  c  o m
    BasicDBObject query = new BasicDBObject("federationUser", userName);

    query.append("federationPassword", password);
    federationUser = collezione.findOne(query);

    if (federationUser != null) {
        return federationUser.toString();
    }

    return null;
}

From source file:MDBInt.DBMongo.java

License:Apache License

public String getFederateCloud(String dbName, String collectionName, String cloudId) {

    DB dataBase = this.getDB(dbName);
    DBCollection collezione = this.getCollection(dataBase, collectionName);
    DBObject federationUser = null;/*from   ww w.  j a v a  2s. c  o  m*/
    BasicDBObject query = new BasicDBObject("cloudId", cloudId);

    federationUser = collezione.findOne(query);

    if (federationUser != null) {
        return federationUser.toString();
    }

    return null;
}