Está en la página 1de 2

package DAO;

import java.util.ArrayList;
import java.util.List;

import org.bson.Document;
import org.bson.types.ObjectId;

import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Sorts;

import clases.Autor;
import clases.Cliente;
import clases.Libro;

public class LibroDAO {

public static List<Libro> Carga(ObjectId idAutor)


{
MongoCollection<Document> col =
Conexion.AbreColeccion("Tema4","Libro");
//cargo los libros de este autor
MongoCursor<Document> cursor =
col.find(Filters.eq("idAutor",idAutor)).sort(Sorts.ascending("titulo")).iterator();
List<Libro> lista = new ArrayList<Libro>();
while(cursor.hasNext())
{
lista.add(new Libro(cursor.next()));
}
cursor.close();
Conexion.Cierra();
return lista;
}

public static void Nuevo(Libro l)


{
MongoCollection<Document> col =
Conexion.AbreColeccion("Tema4","Libro");
col.insertOne(l.Convierte());
Conexion.Cierra();
}

public static void Borra(String IdLibro)


{
MongoCollection<Document> col =
Conexion.AbreColeccion("Tema4","Libro");
col.deleteOne(Filters.eq("_id", new ObjectId(IdLibro)));
Conexion.Cierra();
}

public static void Alquilar(String IdLibro, ObjectId IdCliente)


{
MongoCollection<Document> col =
Conexion.AbreColeccion("Tema4","Libro");

//obtengo los clientes que ya tenga


Document libro = col.find(Filters.eq("_id", new
ObjectId(IdLibro))).first();
Libro l = new Libro(libro);
List<ObjectId> lista=l.getClientes();
//añado el nuevo cliente
lista.add(IdCliente);
//actualizo
Document docact = new Document()
.append("clientes", lista)
.append("prestado", true);
col.updateOne(Filters.eq("_id", new ObjectId(IdLibro)), new
Document("$set", docact));
Conexion.Cierra();
}

public static void Devolver(String IdLibro)


{
MongoCollection<Document> col =
Conexion.AbreColeccion("Tema4","Libro");
col.updateOne(Filters.eq("_id", new ObjectId(IdLibro)), new
Document("$set", new Document("prestado", false)));
Conexion.Cierra();
}

public static StringBuilder CargaClientes(String IdLibro)


{
//saco los clientes de ese libro
StringBuilder sb = new StringBuilder();
//cargo el libro
MongoCollection<Document> col =
Conexion.AbreColeccion("Tema4","Libro");
MongoCollection<Document> col2 =
Conexion.AbreColeccion("Tema4","Cliente");
Document libro = col.find(Filters.eq("_id", new
ObjectId(IdLibro))).first();
Libro l = new Libro(libro);
List<ObjectId> lista = l.getClientes();
for(ObjectId id: lista)
{
//busco el nombre del cliente a partir de su id
Document cliente = col2.find(Filters.eq("_id", id)).first();
Cliente c = new Cliente(cliente);
sb.append(c.getNombre() + "\n");
}
//cierro
Conexion.Cierra();
return sb;
}

También podría gustarte