Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion src/main/java/org/biblioteca/Aplicacion.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
package org.biblioteca;

import org.biblioteca.interfaz.MenuPrincipal;
import org.biblioteca.negocio.*;
import org.biblioteca.repositorio.*;

import java.util.Scanner;

public class Aplicacion {
private static final AlmacenLibros almacenLibros = new AlmacenLibrosImpl();
private static final AlmacenPrestamos almacenPrestamos = new AlmacenPrestamosImpl();
private static final AlmacenSocios almacenSocios = new AlmacenSociosImpl();
private static final GestionLibros gestionLibros = new GestionLibrosImpl(almacenLibros);
private static final GestionPrestamos gestionPestamos = new GestionPrestamosImpl(almacenPrestamos, almacenLibros, almacenSocios);
private static final GestionSocios gestionSocios = new GestionSociosImpl(almacenSocios);
private static final Scanner lector = new Scanner(System.in);
private static final MenuPrincipal menu = new MenuPrincipal(lector);
private static final MenuPrincipal menu = new MenuPrincipal(lector, gestionLibros, gestionPestamos, gestionSocios);

public static void main(String[] args) {
boolean continuar = true;
Expand Down
12 changes: 5 additions & 7 deletions src/main/java/org/biblioteca/interfaz/MenuPrincipal.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@
import org.biblioteca.entidades.Libro;
import org.biblioteca.entidades.Prestamo;
import org.biblioteca.entidades.Socio;
import org.biblioteca.negocio.GestionLibros;
import org.biblioteca.negocio.GestionPrestamos;
import org.biblioteca.negocio.GestionSocios;
import org.biblioteca.negocio.*;

import java.time.LocalDate;
import java.util.List;
Expand All @@ -18,11 +16,11 @@ public class MenuPrincipal {
private final GestionSocios gestionSocios;
private final GestionPrestamos gestionPrestamos;

public MenuPrincipal(Scanner lector) {
public MenuPrincipal(Scanner lector, GestionLibros gestionLibros, GestionPrestamos gestionPrestamos, GestionSocios gestionSocios) {
this.lector = lector;
this.gestionLibros = new GestionLibros();
this.gestionSocios = new GestionSocios();
this.gestionPrestamos = new GestionPrestamos();
this.gestionLibros = gestionLibros;
this.gestionSocios = gestionSocios;
this.gestionPrestamos = gestionPrestamos;
}

public void mostrarMenuLibros() {
Expand Down
39 changes: 6 additions & 33 deletions src/main/java/org/biblioteca/negocio/GestionLibros.java
Original file line number Diff line number Diff line change
@@ -1,45 +1,18 @@
package org.biblioteca.negocio;

import org.biblioteca.entidades.Libro;
import org.biblioteca.repositorio.AlmacenLibros;

import java.util.List;
import java.util.Optional;

public class GestionLibros {
private final AlmacenLibros almacen;
public interface GestionLibros {
List<Libro> listarLibros();

public GestionLibros() {
this.almacen = new AlmacenLibros();
}
Optional<Libro> buscarLibro(String isbn);

public List<Libro> listarLibros() {
return almacen.consultarTodos();
}
boolean añadirLibro(Libro libro);

public Optional<Libro> buscarLibro(String isbn) {
return almacen.consultarPorIsbn(isbn);
}
boolean eliminarLibro(String isbn);

public boolean añadirLibro(Libro libro) {
if (libro.getIsbn() == null || libro.getIsbn().isBlank()) {
return false;
}
if (libro.getTitulo() == null || libro.getTitulo().isBlank()) {
return false;
}
if (libro.getEjemplaresTotales() <= 0) {
return false;
}
return almacen.guardar(libro);
}

public boolean eliminarLibro(String isbn) {
return almacen.borrar(isbn);
}

public void modificarLibro(Libro libro) {
almacen.actualizar(libro);
}
void modificarLibro(Libro libro);
}

51 changes: 51 additions & 0 deletions src/main/java/org/biblioteca/negocio/GestionLibrosImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package org.biblioteca.negocio;

import org.biblioteca.entidades.Libro;
import org.biblioteca.repositorio.AlmacenLibros;
import org.biblioteca.repositorio.AlmacenLibrosImpl;

import java.util.List;
import java.util.Optional;

public class GestionLibrosImpl implements GestionLibros {
private final AlmacenLibros almacen;

public GestionLibrosImpl(AlmacenLibros almacenLibros) {
this.almacen = almacenLibros;
}

@Override
public List<Libro> listarLibros() {
return almacen.consultarTodos();
}

@Override
public Optional<Libro> buscarLibro(String isbn) {
return almacen.consultarPorIsbn(isbn);
}

@Override
public boolean añadirLibro(Libro libro) {
if (libro.getIsbn() == null || libro.getIsbn().isBlank()) {
return false;
}
if (libro.getTitulo() == null || libro.getTitulo().isBlank()) {
return false;
}
if (libro.getEjemplaresTotales() <= 0) {
return false;
}
return almacen.guardar(libro);
}

@Override
public boolean eliminarLibro(String isbn) {
return almacen.borrar(isbn);
}

@Override
public void modificarLibro(Libro libro) {
almacen.actualizar(libro);
}
}

80 changes: 5 additions & 75 deletions src/main/java/org/biblioteca/negocio/GestionPrestamos.java
Original file line number Diff line number Diff line change
@@ -1,86 +1,16 @@
package org.biblioteca.negocio;

import org.biblioteca.entidades.Libro;
import org.biblioteca.entidades.Prestamo;
import org.biblioteca.entidades.Socio;
import org.biblioteca.repositorio.AlmacenLibros;
import org.biblioteca.repositorio.AlmacenPrestamos;
import org.biblioteca.repositorio.AlmacenSocios;

import java.time.LocalDate;
import java.util.List;
import java.util.Optional;

public class GestionPrestamos {
private final AlmacenPrestamos almacenPrestamos;
private final AlmacenLibros almacenLibros;
private final AlmacenSocios almacenSocios;
public interface GestionPrestamos {
List<Prestamo> listarPrestamos();

public GestionPrestamos() {
this.almacenPrestamos = new AlmacenPrestamos();
this.almacenLibros = new AlmacenLibros();
this.almacenSocios = new AlmacenSocios();
}
Optional<Prestamo> buscarPrestamo(String identificador);

public List<Prestamo> listarPrestamos() {
return almacenPrestamos.consultarTodos();
}
boolean realizarPrestamo(Prestamo prestamo);

public Optional<Prestamo> buscarPrestamo(String identificador) {
return almacenPrestamos.consultarPorId(identificador);
}

public boolean realizarPrestamo(Prestamo prestamo) {
if (prestamo.getIdentificador() == null || prestamo.getIdentificador().isBlank()) {
return false;
}

Optional<Socio> socioOpt = almacenSocios.consultarPorNumero(prestamo.getNumeroSocio());
if (socioOpt.isEmpty()) {
return false;
}

Optional<Libro> libroOpt = almacenLibros.consultarPorIsbn(prestamo.getIsbnLibro());
if (libroOpt.isEmpty()) {
return false;
}

Libro libro = libroOpt.get();
if (!libro.hayDisponibilidad()) {
return false;
}

int disponibles = libro.getEjemplaresDisponibles() - 1;
libro.setEjemplaresDisponibles(disponibles);
almacenLibros.actualizar(libro);

return almacenPrestamos.guardar(prestamo);
}

public boolean devolverLibro(String identificador) {
Optional<Prestamo> prestamoOpt = almacenPrestamos.consultarPorId(identificador);
if (prestamoOpt.isEmpty()) {
return false;
}

Prestamo prestamo = prestamoOpt.get();
if (!prestamo.isActivo()) {
return false;
}

prestamo.setActivo(false);
prestamo.setFechaDevolucionReal(LocalDate.now());
almacenPrestamos.actualizar(prestamo);

Optional<Libro> libroOpt = almacenLibros.consultarPorIsbn(prestamo.getIsbnLibro());
if (libroOpt.isPresent()) {
Libro libro = libroOpt.get();
int disponibles = libro.getEjemplaresDisponibles() + 1;
libro.setEjemplaresDisponibles(disponibles);
almacenLibros.actualizar(libro);
}

return true;
}
boolean devolverLibro(String identificador);
}

88 changes: 88 additions & 0 deletions src/main/java/org/biblioteca/negocio/GestionPrestamosImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package org.biblioteca.negocio;

import org.biblioteca.entidades.Libro;
import org.biblioteca.entidades.Prestamo;
import org.biblioteca.entidades.Socio;
import org.biblioteca.repositorio.*;

import java.time.LocalDate;
import java.util.List;
import java.util.Optional;

public class GestionPrestamosImpl implements GestionPrestamos {
private final AlmacenPrestamos almacenPrestamos;
private final AlmacenLibros almacenLibros;
private final AlmacenSocios almacenSocios;

public GestionPrestamosImpl(AlmacenPrestamos almacenPrestamos, AlmacenLibros almacenLibros, AlmacenSocios almacenSocios) {
this.almacenPrestamos = almacenPrestamos;
this.almacenLibros = almacenLibros;
this.almacenSocios = almacenSocios;
}

@Override
public List<Prestamo> listarPrestamos() {
return almacenPrestamos.consultarTodos();
}

@Override
public Optional<Prestamo> buscarPrestamo(String identificador) {
return almacenPrestamos.consultarPorId(identificador);
}

@Override
public boolean realizarPrestamo(Prestamo prestamo) {
if (prestamo.getIdentificador() == null || prestamo.getIdentificador().isBlank()) {
return false;
}

Optional<Socio> socioOpt = almacenSocios.consultarPorNumero(prestamo.getNumeroSocio());
if (socioOpt.isEmpty()) {
return false;
}

Optional<Libro> libroOpt = almacenLibros.consultarPorIsbn(prestamo.getIsbnLibro());
if (libroOpt.isEmpty()) {
return false;
}

Libro libro = libroOpt.get();
if (!libro.hayDisponibilidad()) {
return false;
}

int disponibles = libro.getEjemplaresDisponibles() - 1;
libro.setEjemplaresDisponibles(disponibles);
almacenLibros.actualizar(libro);

return almacenPrestamos.guardar(prestamo);
}

@Override
public boolean devolverLibro(String identificador) {
Optional<Prestamo> prestamoOpt = almacenPrestamos.consultarPorId(identificador);
if (prestamoOpt.isEmpty()) {
return false;
}

Prestamo prestamo = prestamoOpt.get();
if (!prestamo.isActivo()) {
return false;
}

prestamo.setActivo(false);
prestamo.setFechaDevolucionReal(LocalDate.now());
almacenPrestamos.actualizar(prestamo);

Optional<Libro> libroOpt = almacenLibros.consultarPorIsbn(prestamo.getIsbnLibro());
if (libroOpt.isPresent()) {
Libro libro = libroOpt.get();
int disponibles = libro.getEjemplaresDisponibles() + 1;
libro.setEjemplaresDisponibles(disponibles);
almacenLibros.actualizar(libro);
}

return true;
}
}

35 changes: 5 additions & 30 deletions src/main/java/org/biblioteca/negocio/GestionSocios.java
Original file line number Diff line number Diff line change
@@ -1,41 +1,16 @@
package org.biblioteca.negocio;

import org.biblioteca.entidades.Socio;
import org.biblioteca.repositorio.AlmacenSocios;

import java.util.List;
import java.util.Optional;

public class GestionSocios {
private final AlmacenSocios almacen;
public interface GestionSocios {
List<Socio> listarSocios();

public GestionSocios() {
this.almacen = new AlmacenSocios();
}
Optional<Socio> buscarSocio(String numeroSocio);

public List<Socio> listarSocios() {
return almacen.consultarTodos();
}
boolean registrarSocio(Socio socio);

public Optional<Socio> buscarSocio(String numeroSocio) {
return almacen.consultarPorNumero(numeroSocio);
}

public boolean registrarSocio(Socio socio) {
if (socio.getNumeroSocio() == null || socio.getNumeroSocio().isBlank()) {
return false;
}
if (socio.getApellidos() == null || socio.getApellidos().isBlank()) {
return false;
}
if (socio.getNombre() == null || socio.getNombre().isBlank()) {
return false;
}
return almacen.guardar(socio);
}

public boolean darDeBajaSocio(String numeroSocio) {
return almacen.borrar(numeroSocio);
}
boolean darDeBajaSocio(String numeroSocio);
}

Loading