diff --git a/pom.xml b/pom.xml
index 1d9a8cf..b02af09 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,6 +20,17 @@
gson
2.10.1
+
+ org.junit.jupiter
+ junit-jupiter
+ 5.10.0
+ test
+
+
+ org.jboss.weld.se
+ weld-se-core
+ 5.1.6.Final
+
diff --git a/src/main/java/org/biblioteca/config/ConfigProducer.java b/src/main/java/org/biblioteca/config/ConfigProducer.java
new file mode 100644
index 0000000..ed57b52
--- /dev/null
+++ b/src/main/java/org/biblioteca/config/ConfigProducer.java
@@ -0,0 +1,14 @@
+package org.biblioteca.config;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.inject.Produces;
+
+import java.util.Scanner;
+
+@ApplicationScoped
+public class ConfigProducer {
+ @Produces
+ public Scanner produceScanner(){
+ return new Scanner(System.in);
+ }
+}
diff --git a/src/main/java/org/biblioteca/interfaz/MenuPrincipal.java b/src/main/java/org/biblioteca/interfaz/MenuPrincipal.java
index c5fa648..6a4a29f 100644
--- a/src/main/java/org/biblioteca/interfaz/MenuPrincipal.java
+++ b/src/main/java/org/biblioteca/interfaz/MenuPrincipal.java
@@ -3,9 +3,10 @@
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 org.biblioteca.repositorio.*;
+import org.jboss.weld.environment.se.Weld;
+import org.jboss.weld.environment.se.WeldContainer;
import java.time.LocalDate;
import java.util.List;
@@ -17,12 +18,16 @@ public class MenuPrincipal {
private final GestionLibros gestionLibros;
private final GestionSocios gestionSocios;
private final GestionPrestamos gestionPrestamos;
+ private final AlmacenLibros almacenLibros = new AlmacenLibrosImpl();
+ private final AlmacenPrestamos almacenPrestamos = new AlmacenPrestamosImpl();
+ private final AlmacenSocios almacenSocios = new AlmacenSociosImpl();
+ WeldContainer container = new Weld().initialize();
public MenuPrincipal(Scanner lector) {
this.lector = lector;
- this.gestionLibros = new GestionLibros();
- this.gestionSocios = new GestionSocios();
- this.gestionPrestamos = new GestionPrestamos();
+ this.gestionLibros = new GestionLibrosImpl(almacenLibros);
+ this.gestionSocios = new GestionSociosImpl(almacenSocios);
+ this.gestionPrestamos = new GestionPrestamosImpl(almacenPrestamos, almacenLibros, almacenSocios);
}
public void mostrarMenuLibros() {
diff --git a/src/main/java/org/biblioteca/negocio/GestionLibros.java b/src/main/java/org/biblioteca/negocio/GestionLibros.java
index a45419f..823be30 100644
--- a/src/main/java/org/biblioteca/negocio/GestionLibros.java
+++ b/src/main/java/org/biblioteca/negocio/GestionLibros.java
@@ -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 listarLibros();
- public GestionLibros() {
- this.almacen = new AlmacenLibros();
- }
+ Optional buscarLibro(String isbn);
- public List listarLibros() {
- return almacen.consultarTodos();
- }
+ boolean añadirLibro(Libro libro);
- public Optional 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);
}
-
diff --git a/src/main/java/org/biblioteca/negocio/GestionLibrosImpl.java b/src/main/java/org/biblioteca/negocio/GestionLibrosImpl.java
new file mode 100644
index 0000000..84f0bd1
--- /dev/null
+++ b/src/main/java/org/biblioteca/negocio/GestionLibrosImpl.java
@@ -0,0 +1,53 @@
+package org.biblioteca.negocio;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import org.biblioteca.entidades.Libro;
+import org.biblioteca.repositorio.AlmacenLibros;
+import org.biblioteca.repositorio.AlmacenLibrosImpl;
+
+import java.util.List;
+import java.util.Optional;
+@ApplicationScoped
+public class GestionLibrosImpl implements GestionLibros {
+ private final AlmacenLibros almacen;
+ @Inject
+ public GestionLibrosImpl(AlmacenLibros almacen) {
+ this.almacen = almacen;
+ }
+
+ @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;
+ }
+ 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);
+ }
+}
+
diff --git a/src/main/java/org/biblioteca/negocio/GestionPrestamos.java b/src/main/java/org/biblioteca/negocio/GestionPrestamos.java
index 45dd943..8259c12 100644
--- a/src/main/java/org/biblioteca/negocio/GestionPrestamos.java
+++ b/src/main/java/org/biblioteca/negocio/GestionPrestamos.java
@@ -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 listarPrestamos();
- public GestionPrestamos() {
- this.almacenPrestamos = new AlmacenPrestamos();
- this.almacenLibros = new AlmacenLibros();
- this.almacenSocios = new AlmacenSocios();
- }
+ Optional buscarPrestamo(String identificador);
- public List listarPrestamos() {
- return almacenPrestamos.consultarTodos();
- }
+ boolean realizarPrestamo(Prestamo prestamo);
- public Optional buscarPrestamo(String identificador) {
- return almacenPrestamos.consultarPorId(identificador);
- }
-
- public boolean realizarPrestamo(Prestamo prestamo) {
- if (prestamo.getIdentificador() == null || prestamo.getIdentificador().isBlank()) {
- return false;
- }
-
- Optional socioOpt = almacenSocios.consultarPorNumero(prestamo.getNumeroSocio());
- if (socioOpt.isEmpty()) {
- return false;
- }
-
- Optional 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 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 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);
}
-
diff --git a/src/main/java/org/biblioteca/negocio/GestionPrestamosImpl.java b/src/main/java/org/biblioteca/negocio/GestionPrestamosImpl.java
new file mode 100644
index 0000000..f951d9e
--- /dev/null
+++ b/src/main/java/org/biblioteca/negocio/GestionPrestamosImpl.java
@@ -0,0 +1,90 @@
+package org.biblioteca.negocio;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+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;
+@ApplicationScoped
+public class GestionPrestamosImpl implements GestionPrestamos {
+ private final AlmacenPrestamos almacenPrestamos;
+ private final AlmacenLibros almacenLibros;
+ private final AlmacenSocios almacenSocios;
+ @Inject
+ public GestionPrestamosImpl(AlmacenPrestamos almacenPrestamos, AlmacenLibros almacenLibros, AlmacenSocios almacenSocios) {
+ this.almacenPrestamos = almacenPrestamos;
+ this.almacenLibros = almacenLibros;
+ this.almacenSocios = 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;
+ }
+
+ Optional socioOpt = almacenSocios.consultarPorNumero(prestamo.getNumeroSocio());
+ if (socioOpt.isEmpty()) {
+ return false;
+ }
+
+ Optional 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 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 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;
+ }
+}
+
diff --git a/src/main/java/org/biblioteca/negocio/GestionSocios.java b/src/main/java/org/biblioteca/negocio/GestionSocios.java
index ec9431e..e3cad99 100644
--- a/src/main/java/org/biblioteca/negocio/GestionSocios.java
+++ b/src/main/java/org/biblioteca/negocio/GestionSocios.java
@@ -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 listarSocios();
- public GestionSocios() {
- this.almacen = new AlmacenSocios();
- }
+ Optional buscarSocio(String numeroSocio);
- public List listarSocios() {
- return almacen.consultarTodos();
- }
+ boolean registrarSocio(Socio socio);
- public Optional 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);
}
-
diff --git a/src/main/java/org/biblioteca/negocio/GestionSociosImpl.java b/src/main/java/org/biblioteca/negocio/GestionSociosImpl.java
new file mode 100644
index 0000000..1de71e4
--- /dev/null
+++ b/src/main/java/org/biblioteca/negocio/GestionSociosImpl.java
@@ -0,0 +1,48 @@
+package org.biblioteca.negocio;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import org.biblioteca.entidades.Socio;
+import org.biblioteca.repositorio.AlmacenSocios;
+import org.biblioteca.repositorio.AlmacenSociosImpl;
+
+import java.util.List;
+import java.util.Optional;
+@ApplicationScoped
+public class GestionSociosImpl implements GestionSocios {
+ private final AlmacenSocios almacen;
+
+ public GestionSociosImpl(AlmacenSocios almacen) {
+ this.almacen = almacen;
+ }
+ @Inject
+ @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;
+ }
+ if (socio.getApellidos() == null || socio.getApellidos().isBlank()) {
+ return false;
+ }
+ if (socio.getNombre() == null || socio.getNombre().isBlank()) {
+ return false;
+ }
+ return almacen.guardar(socio);
+ }
+
+ @Override
+ public boolean darDeBajaSocio(String numeroSocio) {
+ return almacen.borrar(numeroSocio);
+ }
+}
+
diff --git a/src/main/java/org/biblioteca/repositorio/AlmacenLibros.java b/src/main/java/org/biblioteca/repositorio/AlmacenLibros.java
index 2097951..267d855 100644
--- a/src/main/java/org/biblioteca/repositorio/AlmacenLibros.java
+++ b/src/main/java/org/biblioteca/repositorio/AlmacenLibros.java
@@ -1,109 +1,22 @@
package org.biblioteca.repositorio;
-import com.google.gson.reflect.TypeToken;
import org.biblioteca.entidades.Libro;
-import org.biblioteca.herramientas.JsonUtil;
-import java.io.IOException;
-import java.lang.reflect.Type;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
-public class AlmacenLibros {
- private final Path rutaArchivo;
- private final Type tipoListaLibros = new TypeToken>(){}.getType();
- private List listaLibros = new ArrayList<>();
+public interface AlmacenLibros {
+ void leerDesdeArchivo();
- public AlmacenLibros() {
- this.rutaArchivo = Path.of("datos", "libros.json");
- leerDesdeArchivo();
- }
+ void escribirEnArchivo();
- 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, tipoListaLibros);
- if (temporal != null) {
- listaLibros = temporal;
- }
- } catch (IOException excepcion) {
- System.err.println("Error al leer libros: " + excepcion.getMessage());
- }
- }
+ List consultarTodos();
- 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());
- }
- }
+ Optional consultarPorIsbn(String isbn);
- public List consultarTodos() {
- leerDesdeArchivo();
- List copia = new ArrayList<>();
- for (Libro l : listaLibros) {
- copia.add(l);
- }
- return copia;
- }
+ boolean guardar(Libro libro);
- public Optional consultarPorIsbn(String isbn) {
- leerDesdeArchivo();
- for (Libro l : listaLibros) {
- if (l.getIsbn().equals(isbn)) {
- return Optional.of(l);
- }
- }
- return Optional.empty();
- }
+ boolean borrar(String isbn);
- public boolean guardar(Libro libro) {
- leerDesdeArchivo();
- Optional existente = consultarPorIsbn(libro.getIsbn());
- if (existente.isPresent()) {
- return false;
- }
- listaLibros.add(libro);
- escribirEnArchivo();
- return true;
- }
-
- public boolean borrar(String isbn) {
- leerDesdeArchivo();
- boolean eliminado = false;
- for (int i = 0; i < listaLibros.size(); i++) {
- if (listaLibros.get(i).getIsbn().equals(isbn)) {
- listaLibros.remove(i);
- eliminado = true;
- break;
- }
- }
- if (eliminado) {
- escribirEnArchivo();
- }
- return eliminado;
- }
-
- public void actualizar(Libro libro) {
- leerDesdeArchivo();
- for (int indice = 0; indice < listaLibros.size(); indice++) {
- if (listaLibros.get(indice).getIsbn().equals(libro.getIsbn())) {
- listaLibros.set(indice, libro);
- escribirEnArchivo();
- break;
- }
- }
- }
+ void actualizar(Libro libro);
}
-
diff --git a/src/main/java/org/biblioteca/repositorio/AlmacenLibrosImpl.java b/src/main/java/org/biblioteca/repositorio/AlmacenLibrosImpl.java
new file mode 100644
index 0000000..dfba8d6
--- /dev/null
+++ b/src/main/java/org/biblioteca/repositorio/AlmacenLibrosImpl.java
@@ -0,0 +1,118 @@
+package org.biblioteca.repositorio;
+
+import com.google.gson.reflect.TypeToken;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import org.biblioteca.entidades.Libro;
+import org.biblioteca.herramientas.JsonUtil;
+
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+@ApplicationScoped
+public class AlmacenLibrosImpl implements AlmacenLibros {
+ private final Path rutaArchivo;
+ private final Type tipoListaLibros = new TypeToken>(){}.getType();
+ private List listaLibros = new ArrayList<>();
+
+ public AlmacenLibrosImpl() {
+ this.rutaArchivo = Path.of("datos", "libros.json");
+ leerDesdeArchivo();
+ }
+ @Inject
+ @Override
+ public 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, tipoListaLibros);
+ if (temporal != null) {
+ listaLibros = temporal;
+ }
+ } catch (IOException excepcion) {
+ System.err.println("Error al leer libros: " + excepcion.getMessage());
+ }
+ }
+
+ @Override
+ public 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<>();
+ for (Libro l : listaLibros) {
+ copia.add(l);
+ }
+ return copia;
+ }
+
+ @Override
+ public Optional consultarPorIsbn(String isbn) {
+ leerDesdeArchivo();
+ for (Libro l : listaLibros) {
+ if (l.getIsbn().equals(isbn)) {
+ return Optional.of(l);
+ }
+ }
+ return Optional.empty();
+ }
+
+ @Override
+ public boolean guardar(Libro libro) {
+ leerDesdeArchivo();
+ Optional existente = consultarPorIsbn(libro.getIsbn());
+ if (existente.isPresent()) {
+ return false;
+ }
+ listaLibros.add(libro);
+ escribirEnArchivo();
+ return true;
+ }
+
+ @Override
+ public boolean borrar(String isbn) {
+ leerDesdeArchivo();
+ boolean eliminado = false;
+ for (int i = 0; i < listaLibros.size(); i++) {
+ if (listaLibros.get(i).getIsbn().equals(isbn)) {
+ listaLibros.remove(i);
+ eliminado = true;
+ break;
+ }
+ }
+ if (eliminado) {
+ escribirEnArchivo();
+ }
+ return eliminado;
+ }
+
+ @Override
+ public void actualizar(Libro libro) {
+ leerDesdeArchivo();
+ for (int indice = 0; indice < listaLibros.size(); indice++) {
+ if (listaLibros.get(indice).getIsbn().equals(libro.getIsbn())) {
+ listaLibros.set(indice, libro);
+ escribirEnArchivo();
+ break;
+ }
+ }
+ }
+}
+
diff --git a/src/main/java/org/biblioteca/repositorio/AlmacenPrestamos.java b/src/main/java/org/biblioteca/repositorio/AlmacenPrestamos.java
index 05efd77..c604e22 100644
--- a/src/main/java/org/biblioteca/repositorio/AlmacenPrestamos.java
+++ b/src/main/java/org/biblioteca/repositorio/AlmacenPrestamos.java
@@ -1,109 +1,22 @@
package org.biblioteca.repositorio;
-import com.google.gson.reflect.TypeToken;
import org.biblioteca.entidades.Prestamo;
-import org.biblioteca.herramientas.JsonUtil;
-import java.io.IOException;
-import java.lang.reflect.Type;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
-public class AlmacenPrestamos {
- private final Path rutaArchivo;
- private final Type tipoListaPrestamos = new TypeToken>(){}.getType();
- private List listaPrestamos = new ArrayList<>();
+public interface AlmacenPrestamos {
+ void leerDesdeArchivo();
- public AlmacenPrestamos() {
- this.rutaArchivo = Path.of("datos", "prestamos.json");
- leerDesdeArchivo();
- }
+ void escribirEnArchivo();
- 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());
- }
- }
+ List consultarTodos();
- 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());
- }
- }
+ Optional consultarPorId(String identificador);
- public List consultarTodos() {
- leerDesdeArchivo();
- List copia = new ArrayList<>();
- for (Prestamo p : listaPrestamos) {
- copia.add(p);
- }
- return copia;
- }
+ boolean guardar(Prestamo prestamo);
- public Optional consultarPorId(String identificador) {
- leerDesdeArchivo();
- for (Prestamo p : listaPrestamos) {
- if (p.getIdentificador().equals(identificador)) {
- return Optional.of(p);
- }
- }
- return Optional.empty();
- }
+ boolean borrar(String identificador);
- public boolean guardar(Prestamo prestamo) {
- leerDesdeArchivo();
- Optional existente = consultarPorId(prestamo.getIdentificador());
- if (existente.isPresent()) {
- return false;
- }
- listaPrestamos.add(prestamo);
- escribirEnArchivo();
- return true;
- }
-
- public boolean borrar(String identificador) {
- leerDesdeArchivo();
- boolean eliminado = false;
- for (int i = 0; i < listaPrestamos.size(); i++) {
- if (listaPrestamos.get(i).getIdentificador().equals(identificador)) {
- listaPrestamos.remove(i);
- eliminado = true;
- break;
- }
- }
- if (eliminado) {
- escribirEnArchivo();
- }
- return eliminado;
- }
-
- public void actualizar(Prestamo prestamo) {
- leerDesdeArchivo();
- for (int indice = 0; indice < listaPrestamos.size(); indice++) {
- if (listaPrestamos.get(indice).getIdentificador().equals(prestamo.getIdentificador())) {
- listaPrestamos.set(indice, prestamo);
- escribirEnArchivo();
- break;
- }
- }
- }
+ void actualizar(Prestamo prestamo);
}
-
diff --git a/src/main/java/org/biblioteca/repositorio/AlmacenPrestamosImpl.java b/src/main/java/org/biblioteca/repositorio/AlmacenPrestamosImpl.java
new file mode 100644
index 0000000..6347909
--- /dev/null
+++ b/src/main/java/org/biblioteca/repositorio/AlmacenPrestamosImpl.java
@@ -0,0 +1,118 @@
+package org.biblioteca.repositorio;
+
+import com.google.gson.reflect.TypeToken;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import org.biblioteca.entidades.Prestamo;
+import org.biblioteca.herramientas.JsonUtil;
+
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+@ApplicationScoped
+public class AlmacenPrestamosImpl implements AlmacenPrestamos {
+ private final Path rutaArchivo;
+ private final Type tipoListaPrestamos = new TypeToken>(){}.getType();
+ private List listaPrestamos = new ArrayList<>();
+
+ public AlmacenPrestamosImpl() {
+ this.rutaArchivo = Path.of("datos", "prestamos.json");
+ leerDesdeArchivo();
+ }
+ @Inject
+ @Override
+ public 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());
+ }
+ }
+
+ @Override
+ public 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<>();
+ for (Prestamo p : listaPrestamos) {
+ copia.add(p);
+ }
+ return copia;
+ }
+
+ @Override
+ public Optional consultarPorId(String identificador) {
+ leerDesdeArchivo();
+ for (Prestamo p : listaPrestamos) {
+ if (p.getIdentificador().equals(identificador)) {
+ return Optional.of(p);
+ }
+ }
+ return Optional.empty();
+ }
+
+ @Override
+ public boolean guardar(Prestamo prestamo) {
+ leerDesdeArchivo();
+ Optional existente = consultarPorId(prestamo.getIdentificador());
+ if (existente.isPresent()) {
+ return false;
+ }
+ listaPrestamos.add(prestamo);
+ escribirEnArchivo();
+ return true;
+ }
+
+ @Override
+ public boolean borrar(String identificador) {
+ leerDesdeArchivo();
+ boolean eliminado = false;
+ for (int i = 0; i < listaPrestamos.size(); i++) {
+ if (listaPrestamos.get(i).getIdentificador().equals(identificador)) {
+ listaPrestamos.remove(i);
+ eliminado = true;
+ break;
+ }
+ }
+ if (eliminado) {
+ escribirEnArchivo();
+ }
+ return eliminado;
+ }
+
+ @Override
+ public void actualizar(Prestamo prestamo) {
+ leerDesdeArchivo();
+ for (int indice = 0; indice < listaPrestamos.size(); indice++) {
+ if (listaPrestamos.get(indice).getIdentificador().equals(prestamo.getIdentificador())) {
+ listaPrestamos.set(indice, prestamo);
+ escribirEnArchivo();
+ break;
+ }
+ }
+ }
+}
+
diff --git a/src/main/java/org/biblioteca/repositorio/AlmacenSocios.java b/src/main/java/org/biblioteca/repositorio/AlmacenSocios.java
index 0ebeaca..66ceed9 100644
--- a/src/main/java/org/biblioteca/repositorio/AlmacenSocios.java
+++ b/src/main/java/org/biblioteca/repositorio/AlmacenSocios.java
@@ -1,98 +1,20 @@
package org.biblioteca.repositorio;
-import com.google.gson.reflect.TypeToken;
import org.biblioteca.entidades.Socio;
-import org.biblioteca.herramientas.JsonUtil;
-import java.io.IOException;
-import java.lang.reflect.Type;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
-public class AlmacenSocios {
- private final Path rutaArchivo;
- private final Type tipoListaSocios = new TypeToken>(){}.getType();
- private List listaSocios = new ArrayList<>();
+public interface AlmacenSocios {
+ void leerDesdeArchivo();
- public AlmacenSocios() {
- this.rutaArchivo = Path.of("datos", "socios.json");
- leerDesdeArchivo();
- }
+ void escribirEnArchivo();
- 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());
- }
- }
+ List consultarTodos();
- 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());
- }
- }
+ Optional consultarPorNumero(String numeroSocio);
- public List consultarTodos() {
- leerDesdeArchivo();
- List copia = new ArrayList<>();
- for (Socio s : listaSocios) {
- copia.add(s);
- }
- return copia;
- }
+ boolean guardar(Socio socio);
- public Optional consultarPorNumero(String numeroSocio) {
- leerDesdeArchivo();
- for (Socio s : listaSocios) {
- if (s.getNumeroSocio().equals(numeroSocio)) {
- return Optional.of(s);
- }
- }
- return Optional.empty();
- }
-
- public boolean guardar(Socio socio) {
- leerDesdeArchivo();
- Optional existente = consultarPorNumero(socio.getNumeroSocio());
- if (existente.isPresent()) {
- return false;
- }
- listaSocios.add(socio);
- escribirEnArchivo();
- return true;
- }
-
- public boolean borrar(String numeroSocio) {
- leerDesdeArchivo();
- boolean eliminado = false;
- for (int i = 0; i < listaSocios.size(); i++) {
- if (listaSocios.get(i).getNumeroSocio().equals(numeroSocio)) {
- listaSocios.remove(i);
- eliminado = true;
- break;
- }
- }
- if (eliminado) {
- escribirEnArchivo();
- }
- return eliminado;
- }
+ boolean borrar(String numeroSocio);
}
-
diff --git a/src/main/java/org/biblioteca/repositorio/AlmacenSociosImpl.java b/src/main/java/org/biblioteca/repositorio/AlmacenSociosImpl.java
new file mode 100644
index 0000000..5f4e673
--- /dev/null
+++ b/src/main/java/org/biblioteca/repositorio/AlmacenSociosImpl.java
@@ -0,0 +1,106 @@
+package org.biblioteca.repositorio;
+
+import com.google.gson.reflect.TypeToken;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import org.biblioteca.entidades.Socio;
+import org.biblioteca.herramientas.JsonUtil;
+
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+@ApplicationScoped
+public class AlmacenSociosImpl implements AlmacenSocios {
+ private final Path rutaArchivo;
+ private final Type tipoListaSocios = new TypeToken>(){}.getType();
+ private List listaSocios = new ArrayList<>();
+
+ public AlmacenSociosImpl() {
+ this.rutaArchivo = Path.of("datos", "socios.json");
+ leerDesdeArchivo();
+ }
+ @Inject
+ @Override
+ public 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());
+ }
+ }
+
+ @Override
+ public 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<>();
+ for (Socio s : listaSocios) {
+ copia.add(s);
+ }
+ return copia;
+ }
+
+ @Override
+ public Optional consultarPorNumero(String numeroSocio) {
+ leerDesdeArchivo();
+ for (Socio s : listaSocios) {
+ if (s.getNumeroSocio().equals(numeroSocio)) {
+ return Optional.of(s);
+ }
+ }
+ return Optional.empty();
+ }
+
+ @Override
+ public boolean guardar(Socio socio) {
+ leerDesdeArchivo();
+ Optional existente = consultarPorNumero(socio.getNumeroSocio());
+ if (existente.isPresent()) {
+ return false;
+ }
+ listaSocios.add(socio);
+ escribirEnArchivo();
+ return true;
+ }
+
+ @Override
+ public boolean borrar(String numeroSocio) {
+ leerDesdeArchivo();
+ boolean eliminado = false;
+ for (int i = 0; i < listaSocios.size(); i++) {
+ if (listaSocios.get(i).getNumeroSocio().equals(numeroSocio)) {
+ listaSocios.remove(i);
+ eliminado = true;
+ break;
+ }
+ }
+ if (eliminado) {
+ escribirEnArchivo();
+ }
+ return eliminado;
+ }
+}
+
diff --git a/src/main/resources/META-INF/beans.xml b/src/main/resources/META-INF/beans.xml
new file mode 100644
index 0000000..3e8774e
--- /dev/null
+++ b/src/main/resources/META-INF/beans.xml
@@ -0,0 +1,7 @@
+
+
+
diff --git a/target/classes/org/biblioteca/interfaz/MenuPrincipal.class b/target/classes/org/biblioteca/interfaz/MenuPrincipal.class
index d802964..53163d8 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/negocio/GestionLibros.class b/target/classes/org/biblioteca/negocio/GestionLibros.class
index 5749777..d63bad8 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/GestionPrestamos.class b/target/classes/org/biblioteca/negocio/GestionPrestamos.class
index 39a7724..a22282a 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/GestionSocios.class b/target/classes/org/biblioteca/negocio/GestionSocios.class
index ee17e34..f40629f 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/repositorio/AlmacenLibros$1.class b/target/classes/org/biblioteca/repositorio/AlmacenLibros$1.class
deleted file mode 100644
index 6de083a..0000000
Binary files a/target/classes/org/biblioteca/repositorio/AlmacenLibros$1.class and /dev/null differ
diff --git a/target/classes/org/biblioteca/repositorio/AlmacenLibros.class b/target/classes/org/biblioteca/repositorio/AlmacenLibros.class
index 6c2b472..7058913 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/AlmacenPrestamos$1.class b/target/classes/org/biblioteca/repositorio/AlmacenPrestamos$1.class
deleted file mode 100644
index 1adbb21..0000000
Binary files a/target/classes/org/biblioteca/repositorio/AlmacenPrestamos$1.class and /dev/null differ
diff --git a/target/classes/org/biblioteca/repositorio/AlmacenPrestamos.class b/target/classes/org/biblioteca/repositorio/AlmacenPrestamos.class
index 87f8483..6fcd257 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/AlmacenSocios$1.class b/target/classes/org/biblioteca/repositorio/AlmacenSocios$1.class
deleted file mode 100644
index fbb9c8c..0000000
Binary files a/target/classes/org/biblioteca/repositorio/AlmacenSocios$1.class and /dev/null differ
diff --git a/target/classes/org/biblioteca/repositorio/AlmacenSocios.class b/target/classes/org/biblioteca/repositorio/AlmacenSocios.class
index 51da4fa..f738945 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/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
index 21a2905..815d7ea 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -1,6 +1,5 @@
org\biblioteca\entidades\Libro.class
org\biblioteca\entidades\Prestamo.class
-org\biblioteca\repositorio\AlmacenLibros$1.class
org\biblioteca\entidades\Socio.class
org\biblioteca\repositorio\AlmacenPrestamos.class
org\biblioteca\herramientas\JsonUtil$1.class
@@ -12,6 +11,4 @@ org\biblioteca\interfaz\MenuPrincipal.class
org\biblioteca\repositorio\AlmacenLibros.class
org\biblioteca\repositorio\AlmacenSocios.class
org\biblioteca\negocio\GestionSocios.class
-org\biblioteca\repositorio\AlmacenSocios$1.class
org\biblioteca\herramientas\JsonUtil.class
-org\biblioteca\repositorio\AlmacenPrestamos$1.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index a4614bd..2b7d220 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -1,12 +1,18 @@
-I:\JAVA\Proyectos\Examen2EVAEXT\src\main\java\org\biblioteca\Aplicacion.java
-I:\JAVA\Proyectos\Examen2EVAEXT\src\main\java\org\biblioteca\entidades\Libro.java
-I:\JAVA\Proyectos\Examen2EVAEXT\src\main\java\org\biblioteca\entidades\Prestamo.java
-I:\JAVA\Proyectos\Examen2EVAEXT\src\main\java\org\biblioteca\entidades\Socio.java
-I:\JAVA\Proyectos\Examen2EVAEXT\src\main\java\org\biblioteca\herramientas\JsonUtil.java
-I:\JAVA\Proyectos\Examen2EVAEXT\src\main\java\org\biblioteca\interfaz\MenuPrincipal.java
-I:\JAVA\Proyectos\Examen2EVAEXT\src\main\java\org\biblioteca\negocio\GestionLibros.java
-I:\JAVA\Proyectos\Examen2EVAEXT\src\main\java\org\biblioteca\negocio\GestionPrestamos.java
-I:\JAVA\Proyectos\Examen2EVAEXT\src\main\java\org\biblioteca\negocio\GestionSocios.java
-I:\JAVA\Proyectos\Examen2EVAEXT\src\main\java\org\biblioteca\repositorio\AlmacenLibros.java
-I:\JAVA\Proyectos\Examen2EVAEXT\src\main\java\org\biblioteca\repositorio\AlmacenPrestamos.java
-I:\JAVA\Proyectos\Examen2EVAEXT\src\main\java\org\biblioteca\repositorio\AlmacenSocios.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\Aplicacion.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\entidades\Libro.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\entidades\Prestamo.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\entidades\Socio.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\herramientas\JsonUtil.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\interfaz\MenuPrincipal.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\negocio\GestionLibros.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\negocio\GestionLibrosImpl.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\negocio\GestionPrestamos.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\negocio\GestionPrestamosImpl.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\negocio\GestionSocios.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\negocio\GestionSociosImpl.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\repositorio\AlmacenLibros.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\repositorio\AlmacenLibrosImpl.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\repositorio\AlmacenPrestamos.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\repositorio\AlmacenPrestamosImpl.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\repositorio\AlmacenSocios.java
+C:\Users\1dam\IdeaProjects\Examen2EVAEXTSamuel\src\main\java\org\biblioteca\repositorio\AlmacenSociosImpl.java