diff --git a/.idea/material_theme_project_new.xml b/.idea/material_theme_project_new.xml
new file mode 100644
index 0000000..b81c6a4
--- /dev/null
+++ b/.idea/material_theme_project_new.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/org/biblioteca/Aplicacion.java b/src/main/java/org/biblioteca/Aplicacion.java
index 3e3821a..2a56ad0 100644
--- a/src/main/java/org/biblioteca/Aplicacion.java
+++ b/src/main/java/org/biblioteca/Aplicacion.java
@@ -30,5 +30,4 @@ public static void main(String[] args) {
}
System.out.println("\n¡Gracias por usar el sistema!");
}
-}
-
+}
\ No newline at end of file
diff --git a/src/main/java/org/biblioteca/entidades/Libro.java b/src/main/java/org/biblioteca/entidades/Libro.java
index 8a43163..f7cbf0c 100644
--- a/src/main/java/org/biblioteca/entidades/Libro.java
+++ b/src/main/java/org/biblioteca/entidades/Libro.java
@@ -2,7 +2,7 @@
import java.util.Objects;
-public class Libro {
+public class Libro implements LibroInterface {
private String isbn;
private String titulo;
private String autor;
@@ -22,54 +22,67 @@ public Libro(String isbn, String titulo, String autor, String editorial, int eje
this.ejemplaresDisponibles = ejemplaresDisponibles;
}
+ @Override
public String getIsbn() {
return isbn;
}
+ @Override
public void setIsbn(String isbn) {
this.isbn = isbn;
}
+ @Override
public String getTitulo() {
return titulo;
}
+ @Override
public void setTitulo(String titulo) {
this.titulo = titulo;
}
+ @Override
public String getAutor() {
return autor;
}
+ @Override
public void setAutor(String autor) {
this.autor = autor;
}
+ @Override
public String getEditorial() {
return editorial;
}
+ @Override
public void setEditorial(String editorial) {
this.editorial = editorial;
}
+ @Override
public int getEjemplaresDisponibles() {
return ejemplaresDisponibles;
}
+ @Override
public void setEjemplaresDisponibles(int ejemplaresDisponibles) {
this.ejemplaresDisponibles = ejemplaresDisponibles;
}
+ @Override
public int getEjemplaresTotales() {
return ejemplaresTotales;
}
+ @Override
public void setEjemplaresTotales(int ejemplaresTotales) {
this.ejemplaresTotales = ejemplaresTotales;
}
+ @Override
public boolean hayDisponibilidad() {
return ejemplaresDisponibles > 0;
}
diff --git a/src/main/java/org/biblioteca/entidades/LibroInterface.java b/src/main/java/org/biblioteca/entidades/LibroInterface.java
new file mode 100644
index 0000000..87c72f5
--- /dev/null
+++ b/src/main/java/org/biblioteca/entidades/LibroInterface.java
@@ -0,0 +1,38 @@
+package org.biblioteca.entidades;
+
+public interface LibroInterface {
+ String getIsbn();
+
+ void setIsbn(String isbn);
+
+ String getTitulo();
+
+ void setTitulo(String titulo);
+
+ String getAutor();
+
+ void setAutor(String autor);
+
+ String getEditorial();
+
+ void setEditorial(String editorial);
+
+ int getEjemplaresDisponibles();
+
+ void setEjemplaresDisponibles(int ejemplaresDisponibles);
+
+ int getEjemplaresTotales();
+
+ void setEjemplaresTotales(int ejemplaresTotales);
+
+ boolean hayDisponibilidad();
+
+ @Override
+ boolean equals(Object otro);
+
+ @Override
+ int hashCode();
+
+ @Override
+ String toString();
+}
diff --git a/src/main/java/org/biblioteca/entidades/Prestamo.java b/src/main/java/org/biblioteca/entidades/Prestamo.java
index d93b60b..f6f2443 100644
--- a/src/main/java/org/biblioteca/entidades/Prestamo.java
+++ b/src/main/java/org/biblioteca/entidades/Prestamo.java
@@ -3,7 +3,7 @@
import java.time.LocalDate;
import java.util.Objects;
-public class Prestamo {
+public class Prestamo implements PrestamoInterface {
private String identificador;
private String isbnLibro;
private String numeroSocio;
@@ -25,62 +25,77 @@ public Prestamo(String identificador, String isbnLibro, String numeroSocio,
this.activo = true;
}
+ @Override
public String getIdentificador() {
return identificador;
}
+ @Override
public void setIdentificador(String identificador) {
this.identificador = identificador;
}
+ @Override
public String getIsbnLibro() {
return isbnLibro;
}
+ @Override
public void setIsbnLibro(String isbnLibro) {
this.isbnLibro = isbnLibro;
}
+ @Override
public String getNumeroSocio() {
return numeroSocio;
}
+ @Override
public void setNumeroSocio(String numeroSocio) {
this.numeroSocio = numeroSocio;
}
+ @Override
public LocalDate getFechaPrestamo() {
return fechaPrestamo;
}
+ @Override
public void setFechaPrestamo(LocalDate fechaPrestamo) {
this.fechaPrestamo = fechaPrestamo;
}
+ @Override
public LocalDate getFechaDevolucionPrevista() {
return fechaDevolucionPrevista;
}
+ @Override
public void setFechaDevolucionPrevista(LocalDate fechaDevolucionPrevista) {
this.fechaDevolucionPrevista = fechaDevolucionPrevista;
}
+ @Override
public LocalDate getFechaDevolucionReal() {
return fechaDevolucionReal;
}
+ @Override
public void setFechaDevolucionReal(LocalDate fechaDevolucionReal) {
this.fechaDevolucionReal = fechaDevolucionReal;
}
+ @Override
public boolean isActivo() {
return activo;
}
+ @Override
public void setActivo(boolean activo) {
this.activo = activo;
}
+ @Override
public boolean estaRetrasado() {
if (!activo) return false;
return LocalDate.now().isAfter(fechaDevolucionPrevista);
diff --git a/src/main/java/org/biblioteca/entidades/PrestamoInterface.java b/src/main/java/org/biblioteca/entidades/PrestamoInterface.java
new file mode 100644
index 0000000..445a4cd
--- /dev/null
+++ b/src/main/java/org/biblioteca/entidades/PrestamoInterface.java
@@ -0,0 +1,44 @@
+package org.biblioteca.entidades;
+
+import java.time.LocalDate;
+
+public interface PrestamoInterface {
+ String getIdentificador();
+
+ void setIdentificador(String identificador);
+
+ String getIsbnLibro();
+
+ void setIsbnLibro(String isbnLibro);
+
+ String getNumeroSocio();
+
+ void setNumeroSocio(String numeroSocio);
+
+ LocalDate getFechaPrestamo();
+
+ void setFechaPrestamo(LocalDate fechaPrestamo);
+
+ LocalDate getFechaDevolucionPrevista();
+
+ void setFechaDevolucionPrevista(LocalDate fechaDevolucionPrevista);
+
+ LocalDate getFechaDevolucionReal();
+
+ void setFechaDevolucionReal(LocalDate fechaDevolucionReal);
+
+ boolean isActivo();
+
+ void setActivo(boolean activo);
+
+ boolean estaRetrasado();
+
+ @Override
+ boolean equals(Object otro);
+
+ @Override
+ int hashCode();
+
+ @Override
+ String toString();
+}
diff --git a/src/main/java/org/biblioteca/entidades/Socio.java b/src/main/java/org/biblioteca/entidades/Socio.java
index 6e80c6b..5a82b05 100644
--- a/src/main/java/org/biblioteca/entidades/Socio.java
+++ b/src/main/java/org/biblioteca/entidades/Socio.java
@@ -2,7 +2,7 @@
import java.util.Objects;
-public class Socio {
+public class Socio implements SocioInterface {
private String numeroSocio;
private String apellidos;
private String nombre;
@@ -20,46 +20,57 @@ public Socio(String numeroSocio, String apellidos, String nombre, String direcci
this.telefono = telefono;
}
+ @Override
public String getNumeroSocio() {
return numeroSocio;
}
+ @Override
public void setNumeroSocio(String numeroSocio) {
this.numeroSocio = numeroSocio;
}
+ @Override
public String getApellidos() {
return apellidos;
}
+ @Override
public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}
+ @Override
public String getNombre() {
return nombre;
}
+ @Override
public void setNombre(String nombre) {
this.nombre = nombre;
}
+ @Override
public String getDireccion() {
return direccion;
}
+ @Override
public void setDireccion(String direccion) {
this.direccion = direccion;
}
+ @Override
public String getTelefono() {
return telefono;
}
+ @Override
public void setTelefono(String telefono) {
this.telefono = telefono;
}
+ @Override
public String getNombreCompleto() {
return nombre + " " + apellidos;
}
diff --git a/src/main/java/org/biblioteca/entidades/SocioInterface.java b/src/main/java/org/biblioteca/entidades/SocioInterface.java
new file mode 100644
index 0000000..3086af9
--- /dev/null
+++ b/src/main/java/org/biblioteca/entidades/SocioInterface.java
@@ -0,0 +1,34 @@
+package org.biblioteca.entidades;
+
+public interface SocioInterface {
+ String getNumeroSocio();
+
+ void setNumeroSocio(String numeroSocio);
+
+ String getApellidos();
+
+ void setApellidos(String apellidos);
+
+ String getNombre();
+
+ void setNombre(String nombre);
+
+ String getDireccion();
+
+ void setDireccion(String direccion);
+
+ String getTelefono();
+
+ void setTelefono(String telefono);
+
+ String getNombreCompleto();
+
+ @Override
+ boolean equals(Object otro);
+
+ @Override
+ int hashCode();
+
+ @Override
+ String toString();
+}
diff --git a/src/main/java/org/biblioteca/herramientas/JsonUtil.java b/src/main/java/org/biblioteca/herramientas/JsonUtil.java
index f340039..a40beee 100644
--- a/src/main/java/org/biblioteca/herramientas/JsonUtil.java
+++ b/src/main/java/org/biblioteca/herramientas/JsonUtil.java
@@ -6,8 +6,8 @@
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
-public class JsonUtil {
- private static Gson instancia = null;
+public class JsonUtil implements JsonUtilInterface {
+ public static Gson instancia = null;
private JsonUtil() {
}
@@ -22,23 +22,23 @@ public static Gson obtenerInstancia() {
private static Gson crearGson() {
GsonBuilder constructor = new GsonBuilder();
constructor.setPrettyPrinting();
-
+
DateTimeFormatter formato = DateTimeFormatter.ISO_LOCAL_DATE;
-
+
constructor.registerTypeAdapter(LocalDate.class, new JsonSerializer() {
@Override
public JsonElement serialize(LocalDate fecha, Type tipo, JsonSerializationContext contexto) {
return new JsonPrimitive(fecha.format(formato));
}
});
-
+
constructor.registerTypeAdapter(LocalDate.class, new JsonDeserializer() {
@Override
public LocalDate deserialize(JsonElement elemento, Type tipo, JsonDeserializationContext contexto) throws JsonParseException {
return LocalDate.parse(elemento.getAsString(), formato);
}
});
-
+
return constructor.create();
}
}
diff --git a/src/main/java/org/biblioteca/herramientas/JsonUtilInterface.java b/src/main/java/org/biblioteca/herramientas/JsonUtilInterface.java
new file mode 100644
index 0000000..0df9d26
--- /dev/null
+++ b/src/main/java/org/biblioteca/herramientas/JsonUtilInterface.java
@@ -0,0 +1,39 @@
+package org.biblioteca.herramientas;
+
+import com.google.gson.*;
+
+import java.lang.reflect.Type;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+
+public interface JsonUtilInterface {
+ public static Gson obtenerInstancia() {
+ if (JsonUtil.instancia == null) {
+ JsonUtil.instancia = crearGson();
+ }
+ return JsonUtil.instancia;
+ }
+
+ static Gson crearGson() {
+ GsonBuilder constructor = new GsonBuilder();
+ constructor.setPrettyPrinting();
+
+ DateTimeFormatter formato = DateTimeFormatter.ISO_LOCAL_DATE;
+
+ constructor.registerTypeAdapter(LocalDate.class, new JsonSerializer() {
+ @Override
+ public JsonElement serialize(LocalDate fecha, Type tipo, JsonSerializationContext contexto) {
+ return new JsonPrimitive(fecha.format(formato));
+ }
+ });
+
+ constructor.registerTypeAdapter(LocalDate.class, new JsonDeserializer() {
+ @Override
+ public LocalDate deserialize(JsonElement elemento, Type tipo, JsonDeserializationContext contexto) throws JsonParseException {
+ return LocalDate.parse(elemento.getAsString(), formato);
+ }
+ });
+
+ return constructor.create();
+ }
+}
diff --git a/src/main/java/org/biblioteca/interfaz/MenuPrincipal.java b/src/main/java/org/biblioteca/interfaz/MenuPrincipal.java
index c5fa648..85e6696 100644
--- a/src/main/java/org/biblioteca/interfaz/MenuPrincipal.java
+++ b/src/main/java/org/biblioteca/interfaz/MenuPrincipal.java
@@ -12,7 +12,7 @@
import java.util.Scanner;
import java.util.UUID;
-public class MenuPrincipal {
+public class MenuPrincipal implements MenuPrincipalInterface {
private final Scanner lector;
private final GestionLibros gestionLibros;
private final GestionSocios gestionSocios;
@@ -25,6 +25,7 @@ public MenuPrincipal(Scanner lector) {
this.gestionPrestamos = new GestionPrestamos();
}
+ @Override
public void mostrarMenuLibros() {
System.out.println("\n--- Gestión de Libros ---");
System.out.println("1) Añadir libro al catálogo");
@@ -43,6 +44,7 @@ public void mostrarMenuLibros() {
}
}
+ @Override
public void añadirLibro() {
System.out.print("ISBN: ");
String isbn = lector.nextLine().trim();
@@ -68,6 +70,7 @@ public void mostrarMenuLibros() {
}
}
+ @Override
public void eliminarLibro() {
System.out.print("ISBN del libro a eliminar: ");
String isbn = lector.nextLine().trim();
@@ -78,6 +81,7 @@ public void eliminarLibro() {
}
}
+ @Override
public void verCatalogo() {
List catalogo = gestionLibros.listarLibros();
if (catalogo.isEmpty()) {
@@ -89,6 +93,7 @@ public void verCatalogo() {
}
}
+ @Override
public void mostrarMenuSocios() {
System.out.println("\n--- Gestión de Socios ---");
System.out.println("1) Registrar nuevo socio");
@@ -107,6 +112,7 @@ public void mostrarMenuSocios() {
}
}
+ @Override
public void registrarSocio() {
System.out.print("Nombre: ");
String nombre = lector.nextLine().trim();
@@ -126,6 +132,7 @@ public void registrarSocio() {
}
}
+ @Override
public void darDeBajaSocio() {
System.out.print("Número de socio a dar de baja: ");
String numeroSocio = lector.nextLine().trim();
@@ -136,6 +143,7 @@ public void darDeBajaSocio() {
}
}
+ @Override
public void verListaSocios() {
List socios = gestionSocios.listarSocios();
if (socios.isEmpty()) {
@@ -147,6 +155,7 @@ public void verListaSocios() {
}
}
+ @Override
public void mostrarMenuPrestamos() {
System.out.println("\n--- Gestión de Préstamos ---");
System.out.println("1) Realizar préstamo");
@@ -165,6 +174,7 @@ public void mostrarMenuPrestamos() {
}
}
+ @Override
public void realizarPrestamo() {
System.out.print("ISBN del libro: ");
String isbn = lector.nextLine().trim();
@@ -192,6 +202,7 @@ public void realizarPrestamo() {
}
}
+ @Override
public void devolverLibro() {
System.out.print("ID del préstamo: ");
String identificador = lector.nextLine().trim();
@@ -202,6 +213,7 @@ public void devolverLibro() {
}
}
+ @Override
public void verPrestamosActivos() {
List prestamos = gestionPrestamos.listarPrestamos();
boolean hayActivos = false;
diff --git a/src/main/java/org/biblioteca/interfaz/MenuPrincipalInterface.java b/src/main/java/org/biblioteca/interfaz/MenuPrincipalInterface.java
new file mode 100644
index 0000000..45f0025
--- /dev/null
+++ b/src/main/java/org/biblioteca/interfaz/MenuPrincipalInterface.java
@@ -0,0 +1,27 @@
+package org.biblioteca.interfaz;
+
+public interface MenuPrincipalInterface {
+ void mostrarMenuLibros();
+
+ void añadirLibro();
+
+ void eliminarLibro();
+
+ void verCatalogo();
+
+ void mostrarMenuSocios();
+
+ void registrarSocio();
+
+ void darDeBajaSocio();
+
+ void verListaSocios();
+
+ void mostrarMenuPrestamos();
+
+ void realizarPrestamo();
+
+ void devolverLibro();
+
+ void verPrestamosActivos();
+}
diff --git a/src/main/java/org/biblioteca/negocio/GestionLibros.java b/src/main/java/org/biblioteca/negocio/GestionLibros.java
index a45419f..f68c975 100644
--- a/src/main/java/org/biblioteca/negocio/GestionLibros.java
+++ b/src/main/java/org/biblioteca/negocio/GestionLibros.java
@@ -6,21 +6,24 @@
import java.util.List;
import java.util.Optional;
-public class GestionLibros {
+public class GestionLibros implements GestionLibrosInterface {
private final AlmacenLibros almacen;
public GestionLibros() {
this.almacen = new AlmacenLibros();
}
+ @Override
public List listarLibros() {
return almacen.consultarTodos();
}
+ @Override
public Optional buscarLibro(String isbn) {
return almacen.consultarPorIsbn(isbn);
}
+ @Override
public boolean añadirLibro(Libro libro) {
if (libro.getIsbn() == null || libro.getIsbn().isBlank()) {
return false;
@@ -34,10 +37,12 @@ public Optional buscarLibro(String isbn) {
return almacen.guardar(libro);
}
+ @Override
public boolean eliminarLibro(String isbn) {
return almacen.borrar(isbn);
}
+ @Override
public void modificarLibro(Libro libro) {
almacen.actualizar(libro);
}
diff --git a/src/main/java/org/biblioteca/negocio/GestionLibrosInterface.java b/src/main/java/org/biblioteca/negocio/GestionLibrosInterface.java
new file mode 100644
index 0000000..23de88c
--- /dev/null
+++ b/src/main/java/org/biblioteca/negocio/GestionLibrosInterface.java
@@ -0,0 +1,18 @@
+package org.biblioteca.negocio;
+
+import org.biblioteca.entidades.Libro;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface GestionLibrosInterface {
+ List listarLibros();
+
+ Optional buscarLibro(String isbn);
+
+ boolean añadirLibro(Libro libro);
+
+ boolean eliminarLibro(String isbn);
+
+ void modificarLibro(Libro libro);
+}
diff --git a/src/main/java/org/biblioteca/negocio/GestionPrestamos.java b/src/main/java/org/biblioteca/negocio/GestionPrestamos.java
index 45dd943..62027b0 100644
--- a/src/main/java/org/biblioteca/negocio/GestionPrestamos.java
+++ b/src/main/java/org/biblioteca/negocio/GestionPrestamos.java
@@ -11,7 +11,7 @@
import java.util.List;
import java.util.Optional;
-public class GestionPrestamos {
+public class GestionPrestamos implements GestionPrestamosInterface {
private final AlmacenPrestamos almacenPrestamos;
private final AlmacenLibros almacenLibros;
private final AlmacenSocios almacenSocios;
@@ -22,14 +22,17 @@ public GestionPrestamos() {
this.almacenSocios = new AlmacenSocios();
}
+ @Override
public List listarPrestamos() {
return almacenPrestamos.consultarTodos();
}
+ @Override
public Optional buscarPrestamo(String identificador) {
return almacenPrestamos.consultarPorId(identificador);
}
+ @Override
public boolean realizarPrestamo(Prestamo prestamo) {
if (prestamo.getIdentificador() == null || prestamo.getIdentificador().isBlank()) {
return false;
@@ -57,6 +60,7 @@ public boolean realizarPrestamo(Prestamo prestamo) {
return almacenPrestamos.guardar(prestamo);
}
+ @Override
public boolean devolverLibro(String identificador) {
Optional prestamoOpt = almacenPrestamos.consultarPorId(identificador);
if (prestamoOpt.isEmpty()) {
diff --git a/src/main/java/org/biblioteca/negocio/GestionPrestamosInterface.java b/src/main/java/org/biblioteca/negocio/GestionPrestamosInterface.java
new file mode 100644
index 0000000..ea6f4cf
--- /dev/null
+++ b/src/main/java/org/biblioteca/negocio/GestionPrestamosInterface.java
@@ -0,0 +1,16 @@
+package org.biblioteca.negocio;
+
+import org.biblioteca.entidades.Prestamo;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface GestionPrestamosInterface {
+ List listarPrestamos();
+
+ Optional buscarPrestamo(String identificador);
+
+ boolean realizarPrestamo(Prestamo prestamo);
+
+ boolean devolverLibro(String identificador);
+}
diff --git a/src/main/java/org/biblioteca/negocio/GestionSocios.java b/src/main/java/org/biblioteca/negocio/GestionSocios.java
index ec9431e..f5ceafd 100644
--- a/src/main/java/org/biblioteca/negocio/GestionSocios.java
+++ b/src/main/java/org/biblioteca/negocio/GestionSocios.java
@@ -6,21 +6,24 @@
import java.util.List;
import java.util.Optional;
-public class GestionSocios {
+public class GestionSocios implements GestionSociosInterface {
private final AlmacenSocios almacen;
public GestionSocios() {
this.almacen = new AlmacenSocios();
}
+ @Override
public List listarSocios() {
return almacen.consultarTodos();
}
+ @Override
public Optional buscarSocio(String numeroSocio) {
return almacen.consultarPorNumero(numeroSocio);
}
+ @Override
public boolean registrarSocio(Socio socio) {
if (socio.getNumeroSocio() == null || socio.getNumeroSocio().isBlank()) {
return false;
@@ -34,6 +37,7 @@ public boolean registrarSocio(Socio socio) {
return almacen.guardar(socio);
}
+ @Override
public boolean darDeBajaSocio(String numeroSocio) {
return almacen.borrar(numeroSocio);
}
diff --git a/src/main/java/org/biblioteca/negocio/GestionSociosInterface.java b/src/main/java/org/biblioteca/negocio/GestionSociosInterface.java
new file mode 100644
index 0000000..8dea606
--- /dev/null
+++ b/src/main/java/org/biblioteca/negocio/GestionSociosInterface.java
@@ -0,0 +1,16 @@
+package org.biblioteca.negocio;
+
+import org.biblioteca.entidades.Socio;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface GestionSociosInterface {
+ List listarSocios();
+
+ Optional buscarSocio(String numeroSocio);
+
+ boolean registrarSocio(Socio socio);
+
+ boolean darDeBajaSocio(String numeroSocio);
+}
diff --git a/src/main/java/org/biblioteca/repositorio/AlmacenLibros.java b/src/main/java/org/biblioteca/repositorio/AlmacenLibros.java
index 2097951..678f2b4 100644
--- a/src/main/java/org/biblioteca/repositorio/AlmacenLibros.java
+++ b/src/main/java/org/biblioteca/repositorio/AlmacenLibros.java
@@ -12,7 +12,7 @@
import java.util.List;
import java.util.Optional;
-public class AlmacenLibros {
+public class AlmacenLibros implements AlmacenLibrosInterface {
private final Path rutaArchivo;
private final Type tipoListaLibros = new TypeToken>(){}.getType();
private List listaLibros = new ArrayList<>();
@@ -40,15 +40,7 @@ private void leerDesdeArchivo() {
}
}
- private void escribirEnArchivo() {
- try {
- String json = JsonUtil.obtenerInstancia().toJson(listaLibros, tipoListaLibros);
- Files.writeString(rutaArchivo, json);
- } catch (IOException excepcion) {
- System.err.println("Error al escribir libros: " + excepcion.getMessage());
- }
- }
-
+ @Override
public List consultarTodos() {
leerDesdeArchivo();
List copia = new ArrayList<>();
@@ -58,6 +50,7 @@ public List consultarTodos() {
return copia;
}
+ @Override
public Optional consultarPorIsbn(String isbn) {
leerDesdeArchivo();
for (Libro l : listaLibros) {
@@ -68,6 +61,7 @@ public Optional consultarPorIsbn(String isbn) {
return Optional.empty();
}
+ @Override
public boolean guardar(Libro libro) {
leerDesdeArchivo();
Optional existente = consultarPorIsbn(libro.getIsbn());
@@ -79,6 +73,7 @@ public boolean guardar(Libro libro) {
return true;
}
+ @Override
public boolean borrar(String isbn) {
leerDesdeArchivo();
boolean eliminado = false;
@@ -95,6 +90,7 @@ public boolean borrar(String isbn) {
return eliminado;
}
+ @Override
public void actualizar(Libro libro) {
leerDesdeArchivo();
for (int indice = 0; indice < listaLibros.size(); indice++) {
diff --git a/src/main/java/org/biblioteca/repositorio/AlmacenLibrosInterface.java b/src/main/java/org/biblioteca/repositorio/AlmacenLibrosInterface.java
new file mode 100644
index 0000000..be5f2c5
--- /dev/null
+++ b/src/main/java/org/biblioteca/repositorio/AlmacenLibrosInterface.java
@@ -0,0 +1,27 @@
+package org.biblioteca.repositorio;
+
+import org.biblioteca.entidades.Libro;
+import org.biblioteca.herramientas.JsonUtil;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.util.List;
+import java.util.Optional;
+
+public interface AlmacenLibrosInterface {
+ private void leerDesdeArchivo() {
+ }
+
+ default void escribirEnArchivo() {
+ }
+
+ List consultarTodos();
+
+ Optional consultarPorIsbn(String isbn);
+
+ boolean guardar(Libro libro);
+
+ boolean borrar(String isbn);
+
+ void actualizar(Libro libro);
+}
diff --git a/src/main/java/org/biblioteca/repositorio/AlmacenPrestamos.java b/src/main/java/org/biblioteca/repositorio/AlmacenPrestamos.java
index 05efd77..e98592e 100644
--- a/src/main/java/org/biblioteca/repositorio/AlmacenPrestamos.java
+++ b/src/main/java/org/biblioteca/repositorio/AlmacenPrestamos.java
@@ -12,7 +12,7 @@
import java.util.List;
import java.util.Optional;
-public class AlmacenPrestamos {
+public class AlmacenPrestamos implements AlmacenPrestamosInterface {
private final Path rutaArchivo;
private final Type tipoListaPrestamos = new TypeToken>(){}.getType();
private List listaPrestamos = new ArrayList<>();
@@ -22,33 +22,7 @@ public AlmacenPrestamos() {
leerDesdeArchivo();
}
- private void leerDesdeArchivo() {
- try {
- if (Files.notExists(rutaArchivo.getParent())) {
- Files.createDirectories(rutaArchivo.getParent());
- }
- if (Files.notExists(rutaArchivo)) {
- Files.writeString(rutaArchivo, "[]");
- }
- String contenido = Files.readString(rutaArchivo);
- List temporal = JsonUtil.obtenerInstancia().fromJson(contenido, tipoListaPrestamos);
- if (temporal != null) {
- listaPrestamos = temporal;
- }
- } catch (IOException excepcion) {
- System.err.println("Error al leer préstamos: " + excepcion.getMessage());
- }
- }
-
- private void escribirEnArchivo() {
- try {
- String json = JsonUtil.obtenerInstancia().toJson(listaPrestamos, tipoListaPrestamos);
- Files.writeString(rutaArchivo, json);
- } catch (IOException excepcion) {
- System.err.println("Error al escribir préstamos: " + excepcion.getMessage());
- }
- }
-
+ @Override
public List consultarTodos() {
leerDesdeArchivo();
List copia = new ArrayList<>();
@@ -58,6 +32,7 @@ public List consultarTodos() {
return copia;
}
+ @Override
public Optional consultarPorId(String identificador) {
leerDesdeArchivo();
for (Prestamo p : listaPrestamos) {
@@ -68,6 +43,7 @@ public Optional consultarPorId(String identificador) {
return Optional.empty();
}
+ @Override
public boolean guardar(Prestamo prestamo) {
leerDesdeArchivo();
Optional existente = consultarPorId(prestamo.getIdentificador());
@@ -79,6 +55,7 @@ public boolean guardar(Prestamo prestamo) {
return true;
}
+ @Override
public boolean borrar(String identificador) {
leerDesdeArchivo();
boolean eliminado = false;
@@ -95,6 +72,7 @@ public boolean borrar(String identificador) {
return eliminado;
}
+ @Override
public void actualizar(Prestamo prestamo) {
leerDesdeArchivo();
for (int indice = 0; indice < listaPrestamos.size(); indice++) {
diff --git a/src/main/java/org/biblioteca/repositorio/AlmacenPrestamosInterface.java b/src/main/java/org/biblioteca/repositorio/AlmacenPrestamosInterface.java
new file mode 100644
index 0000000..4348ee4
--- /dev/null
+++ b/src/main/java/org/biblioteca/repositorio/AlmacenPrestamosInterface.java
@@ -0,0 +1,29 @@
+package org.biblioteca.repositorio;
+
+import org.biblioteca.entidades.Prestamo;
+import org.biblioteca.herramientas.JsonUtil;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.util.List;
+import java.util.Optional;
+
+public interface AlmacenPrestamosInterface {
+ default void leerDesdeArchivo() {
+
+ }
+
+ default void escribirEnArchivo() {
+
+ }
+
+ List consultarTodos();
+
+ Optional consultarPorId(String identificador);
+
+ boolean guardar(Prestamo prestamo);
+
+ boolean borrar(String identificador);
+
+ void actualizar(Prestamo prestamo);
+}
diff --git a/src/main/java/org/biblioteca/repositorio/AlmacenSocios.java b/src/main/java/org/biblioteca/repositorio/AlmacenSocios.java
index 0ebeaca..4429110 100644
--- a/src/main/java/org/biblioteca/repositorio/AlmacenSocios.java
+++ b/src/main/java/org/biblioteca/repositorio/AlmacenSocios.java
@@ -12,7 +12,7 @@
import java.util.List;
import java.util.Optional;
-public class AlmacenSocios {
+public class AlmacenSocios implements AlmacenSociosInterface {
private final Path rutaArchivo;
private final Type tipoListaSocios = new TypeToken>(){}.getType();
private List listaSocios = new ArrayList<>();
@@ -22,33 +22,7 @@ public AlmacenSocios() {
leerDesdeArchivo();
}
- private void leerDesdeArchivo() {
- try {
- if (Files.notExists(rutaArchivo.getParent())) {
- Files.createDirectories(rutaArchivo.getParent());
- }
- if (Files.notExists(rutaArchivo)) {
- Files.writeString(rutaArchivo, "[]");
- }
- String contenido = Files.readString(rutaArchivo);
- List temporal = JsonUtil.obtenerInstancia().fromJson(contenido, tipoListaSocios);
- if (temporal != null) {
- listaSocios = temporal;
- }
- } catch (IOException excepcion) {
- System.err.println("Error al leer socios: " + excepcion.getMessage());
- }
- }
-
- private void escribirEnArchivo() {
- try {
- String json = JsonUtil.obtenerInstancia().toJson(listaSocios, tipoListaSocios);
- Files.writeString(rutaArchivo, json);
- } catch (IOException excepcion) {
- System.err.println("Error al escribir socios: " + excepcion.getMessage());
- }
- }
-
+ @Override
public List consultarTodos() {
leerDesdeArchivo();
List copia = new ArrayList<>();
@@ -58,6 +32,7 @@ public List consultarTodos() {
return copia;
}
+ @Override
public Optional consultarPorNumero(String numeroSocio) {
leerDesdeArchivo();
for (Socio s : listaSocios) {
@@ -68,6 +43,7 @@ public Optional consultarPorNumero(String numeroSocio) {
return Optional.empty();
}
+ @Override
public boolean guardar(Socio socio) {
leerDesdeArchivo();
Optional existente = consultarPorNumero(socio.getNumeroSocio());
@@ -79,6 +55,7 @@ public boolean guardar(Socio socio) {
return true;
}
+ @Override
public boolean borrar(String numeroSocio) {
leerDesdeArchivo();
boolean eliminado = false;
diff --git a/src/main/java/org/biblioteca/repositorio/AlmacenSociosInterface.java b/src/main/java/org/biblioteca/repositorio/AlmacenSociosInterface.java
new file mode 100644
index 0000000..5dd99c4
--- /dev/null
+++ b/src/main/java/org/biblioteca/repositorio/AlmacenSociosInterface.java
@@ -0,0 +1,27 @@
+package org.biblioteca.repositorio;
+
+import org.biblioteca.entidades.Socio;
+import org.biblioteca.herramientas.JsonUtil;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.util.List;
+import java.util.Optional;
+
+public interface AlmacenSociosInterface {
+ default void leerDesdeArchivo() {
+
+ }
+
+ default void escribirEnArchivo() {
+
+ }
+
+ List consultarTodos();
+
+ Optional consultarPorNumero(String numeroSocio);
+
+ boolean guardar(Socio socio);
+
+ boolean borrar(String numeroSocio);
+}
diff --git a/target/classes/org/biblioteca/entidades/Libro.class b/target/classes/org/biblioteca/entidades/Libro.class
index bccae87..ee2ef8d 100644
Binary files a/target/classes/org/biblioteca/entidades/Libro.class and b/target/classes/org/biblioteca/entidades/Libro.class differ
diff --git a/target/classes/org/biblioteca/entidades/LibroInterface.class b/target/classes/org/biblioteca/entidades/LibroInterface.class
new file mode 100644
index 0000000..07b05a0
Binary files /dev/null and b/target/classes/org/biblioteca/entidades/LibroInterface.class differ
diff --git a/target/classes/org/biblioteca/entidades/Prestamo.class b/target/classes/org/biblioteca/entidades/Prestamo.class
index 1fbc542..9a46147 100644
Binary files a/target/classes/org/biblioteca/entidades/Prestamo.class and b/target/classes/org/biblioteca/entidades/Prestamo.class differ
diff --git a/target/classes/org/biblioteca/entidades/PrestamoInterface.class b/target/classes/org/biblioteca/entidades/PrestamoInterface.class
new file mode 100644
index 0000000..b85c93c
Binary files /dev/null and b/target/classes/org/biblioteca/entidades/PrestamoInterface.class differ
diff --git a/target/classes/org/biblioteca/entidades/Socio.class b/target/classes/org/biblioteca/entidades/Socio.class
index 697b6d8..8270855 100644
Binary files a/target/classes/org/biblioteca/entidades/Socio.class and b/target/classes/org/biblioteca/entidades/Socio.class differ
diff --git a/target/classes/org/biblioteca/entidades/SocioInterface.class b/target/classes/org/biblioteca/entidades/SocioInterface.class
new file mode 100644
index 0000000..65f5b97
Binary files /dev/null and b/target/classes/org/biblioteca/entidades/SocioInterface.class differ
diff --git a/target/classes/org/biblioteca/herramientas/JsonUtil.class b/target/classes/org/biblioteca/herramientas/JsonUtil.class
index f402af0..c2bdf1b 100644
Binary files a/target/classes/org/biblioteca/herramientas/JsonUtil.class and b/target/classes/org/biblioteca/herramientas/JsonUtil.class differ
diff --git a/target/classes/org/biblioteca/herramientas/JsonUtilInterface$1.class b/target/classes/org/biblioteca/herramientas/JsonUtilInterface$1.class
new file mode 100644
index 0000000..cbca081
Binary files /dev/null and b/target/classes/org/biblioteca/herramientas/JsonUtilInterface$1.class differ
diff --git a/target/classes/org/biblioteca/herramientas/JsonUtilInterface$2.class b/target/classes/org/biblioteca/herramientas/JsonUtilInterface$2.class
new file mode 100644
index 0000000..db3b249
Binary files /dev/null and b/target/classes/org/biblioteca/herramientas/JsonUtilInterface$2.class differ
diff --git a/target/classes/org/biblioteca/herramientas/JsonUtilInterface.class b/target/classes/org/biblioteca/herramientas/JsonUtilInterface.class
new file mode 100644
index 0000000..09af02c
Binary files /dev/null and b/target/classes/org/biblioteca/herramientas/JsonUtilInterface.class differ
diff --git a/target/classes/org/biblioteca/interfaz/MenuPrincipal.class b/target/classes/org/biblioteca/interfaz/MenuPrincipal.class
index d802964..0d96f8e 100644
Binary files a/target/classes/org/biblioteca/interfaz/MenuPrincipal.class and b/target/classes/org/biblioteca/interfaz/MenuPrincipal.class differ
diff --git a/target/classes/org/biblioteca/interfaz/MenuPrincipalInterface.class b/target/classes/org/biblioteca/interfaz/MenuPrincipalInterface.class
new file mode 100644
index 0000000..c833d63
Binary files /dev/null and b/target/classes/org/biblioteca/interfaz/MenuPrincipalInterface.class differ
diff --git a/target/classes/org/biblioteca/negocio/GestionLibros.class b/target/classes/org/biblioteca/negocio/GestionLibros.class
index 5749777..cd97df2 100644
Binary files a/target/classes/org/biblioteca/negocio/GestionLibros.class and b/target/classes/org/biblioteca/negocio/GestionLibros.class differ
diff --git a/target/classes/org/biblioteca/negocio/GestionLibrosInterface.class b/target/classes/org/biblioteca/negocio/GestionLibrosInterface.class
new file mode 100644
index 0000000..96c5837
Binary files /dev/null and b/target/classes/org/biblioteca/negocio/GestionLibrosInterface.class differ
diff --git a/target/classes/org/biblioteca/negocio/GestionPrestamos.class b/target/classes/org/biblioteca/negocio/GestionPrestamos.class
index 39a7724..0cc1ce2 100644
Binary files a/target/classes/org/biblioteca/negocio/GestionPrestamos.class and b/target/classes/org/biblioteca/negocio/GestionPrestamos.class differ
diff --git a/target/classes/org/biblioteca/negocio/GestionPrestamosInterface.class b/target/classes/org/biblioteca/negocio/GestionPrestamosInterface.class
new file mode 100644
index 0000000..4801f5a
Binary files /dev/null and b/target/classes/org/biblioteca/negocio/GestionPrestamosInterface.class differ
diff --git a/target/classes/org/biblioteca/negocio/GestionSocios.class b/target/classes/org/biblioteca/negocio/GestionSocios.class
index ee17e34..e2bf327 100644
Binary files a/target/classes/org/biblioteca/negocio/GestionSocios.class and b/target/classes/org/biblioteca/negocio/GestionSocios.class differ
diff --git a/target/classes/org/biblioteca/negocio/GestionSociosInterface.class b/target/classes/org/biblioteca/negocio/GestionSociosInterface.class
new file mode 100644
index 0000000..540c4f2
Binary files /dev/null and b/target/classes/org/biblioteca/negocio/GestionSociosInterface.class differ
diff --git a/target/classes/org/biblioteca/repositorio/AlmacenLibros.class b/target/classes/org/biblioteca/repositorio/AlmacenLibros.class
index 6c2b472..ddfb764 100644
Binary files a/target/classes/org/biblioteca/repositorio/AlmacenLibros.class and b/target/classes/org/biblioteca/repositorio/AlmacenLibros.class differ
diff --git a/target/classes/org/biblioteca/repositorio/AlmacenLibrosInterface.class b/target/classes/org/biblioteca/repositorio/AlmacenLibrosInterface.class
new file mode 100644
index 0000000..0836139
Binary files /dev/null and b/target/classes/org/biblioteca/repositorio/AlmacenLibrosInterface.class differ
diff --git a/target/classes/org/biblioteca/repositorio/AlmacenPrestamos.class b/target/classes/org/biblioteca/repositorio/AlmacenPrestamos.class
index 87f8483..dc129e7 100644
Binary files a/target/classes/org/biblioteca/repositorio/AlmacenPrestamos.class and b/target/classes/org/biblioteca/repositorio/AlmacenPrestamos.class differ
diff --git a/target/classes/org/biblioteca/repositorio/AlmacenPrestamosInterface.class b/target/classes/org/biblioteca/repositorio/AlmacenPrestamosInterface.class
new file mode 100644
index 0000000..544128d
Binary files /dev/null and b/target/classes/org/biblioteca/repositorio/AlmacenPrestamosInterface.class differ
diff --git a/target/classes/org/biblioteca/repositorio/AlmacenSocios.class b/target/classes/org/biblioteca/repositorio/AlmacenSocios.class
index 51da4fa..946d3af 100644
Binary files a/target/classes/org/biblioteca/repositorio/AlmacenSocios.class and b/target/classes/org/biblioteca/repositorio/AlmacenSocios.class differ
diff --git a/target/classes/org/biblioteca/repositorio/AlmacenSociosInterface.class b/target/classes/org/biblioteca/repositorio/AlmacenSociosInterface.class
new file mode 100644
index 0000000..87eb539
Binary files /dev/null and b/target/classes/org/biblioteca/repositorio/AlmacenSociosInterface.class differ