List of usage examples for com.mongodb DBCollection findOne
@Nullable public DBObject findOne(final Object id)
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; }