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
11 changes: 11 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,17 @@
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.10.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.weld.se</groupId>
<artifactId>weld-se-core</artifactId>
<version>5.1.6.Final</version>
</dependency>
</dependencies>

<build>
Expand Down
14 changes: 14 additions & 0 deletions src/main/java/org/biblioteca/config/ConfigProducer.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
17 changes: 11 additions & 6 deletions src/main/java/org/biblioteca/interfaz/MenuPrincipal.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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() {
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);
}

53 changes: 53 additions & 0 deletions src/main/java/org/biblioteca/negocio/GestionLibrosImpl.java
Original file line number Diff line number Diff line change
@@ -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<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);
}

90 changes: 90 additions & 0 deletions src/main/java/org/biblioteca/negocio/GestionPrestamosImpl.java
Original file line number Diff line number Diff line change
@@ -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<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;
}
}

Loading