package es.uniovi.asw.trivial.db; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.net.UnknownHostException; import java.util.Arrays; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; import com.mongodb.util.JSON; public class MongoDB { /** * Éste metodo se conecta con la base de datos MongoDB, y va insertando uno * a uno los objetos JSON del archivo que se le pase por parametro. El * formato del archivo debe ser de un objeto JSON por cada linea del fichero * * @param filePath * Archivo con los objetos JSON */ public static void insert(String filePath) { // Conectar con mongodb MongoClient mongoClient = null; BufferedReader br = null; try { br = new BufferedReader(new FileReader(new File("user.mongouser"))); String user = ""; String pass = ""; while (br.ready()) { String linea = br.readLine(); if (linea.contains("user=")) user = linea.split("=")[1]; else if (linea.contains("pass=")) pass = linea.split("=")[1]; } br.close(); MongoCredential mongoCredential = MongoCredential .createMongoCRCredential(user, "trivial", pass.toCharArray()); mongoClient = new MongoClient(new ServerAddress( "ds062797.mongolab.com", 62797), Arrays.asList(mongoCredential)); // Conectar con nuestra base de datos DB db = mongoClient.getDB("trivial"); System.out.println("Conexion creada con la base de datos"); br = new BufferedReader(new FileReader(new File(filePath))); while (br.ready()) { boolean yaInsertado = false; String json = br.readLine(); DBObject jsonObjectFichero = (DBObject) JSON.parse(json); DBCollection collection = db.getCollection("preguntas"); if (collection.getCount() > 0) { DBCursor cursorDoc = collection.find(); while (cursorDoc.hasNext()) { DBObject jsonObject = cursorDoc.next(); String enunciadoFichero = (String) jsonObjectFichero .get("enunciado"); String enunciado = (String) jsonObject.get("enunciado"); if (enunciadoFichero.equalsIgnoreCase(enunciado)) { // Ya hay una pregunta igual insertada en la base de // datos yaInsertado = true; break; } } if (!yaInsertado) { // Si no está insertada, se inserta jsonObjectFichero.put("_id", collection.getCount() + 1); collection.insert(jsonObjectFichero); } } else { // Si la base de datos está vacia, se inserta jsonObjectFichero.put("_id", collection.getCount() + 1); collection.insert(jsonObjectFichero); } } br.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { mongoClient.close(); } } }