package persistence; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import models.Pregunta; import models.Respuesta; import com.mongodb.BasicDBList; 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; public class RemoteMongoDB implements RemoteDB { /** * Este metodo se conecta con la base de datos remota y obtiene las * preguntas almacenadas, recogiendolas en una List de objetos Pregunta * * @return List<Pregunta> lista de preguntas cargadas desde la base de datos * remota */ public List<Pregunta> cargarPreguntas() { List<Pregunta> listaPreguntas = new ArrayList<Pregunta>(); MongoClient mongoClient = null; try { MongoCredential mongoCredential = MongoCredential .createMongoCRCredential("trivialuserReadOnly", "trivial", "trivialuserReadOnly".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"); DBCollection preguntas = db.getCollection("preguntas"); DBCursor cursor = preguntas.find(); while (cursor.hasNext()) { DBObject preguntaJSON = cursor.next(); Long id = (Long) preguntaJSON.get("_id"); String enunciado = (String) preguntaJSON.get("enunciado"); String categoria = (String) preguntaJSON.get("categoria"); BasicDBList respuestas = (BasicDBList) preguntaJSON .get("respuestas"); Pregunta pregunta = new Pregunta(id, enunciado, categoria); for (int i = 0; i < respuestas.size(); i++) { DBObject respuestaJSON = (DBObject) respuestas.get(i); Respuesta respuesta = new Respuesta( (String) respuestaJSON.get("respuesta"), (Boolean) respuestaJSON.get("isCorrecta")); // pregunta.getRespuestas().add(respuesta); pregunta.addRespuesta(respuesta); } listaPreguntas.add(pregunta); } cursor.close(); } catch (UnknownHostException e) { e.printStackTrace(); } finally { if (mongoClient != null) mongoClient.close(); } return listaPreguntas; } }