RegistrazioneServiceImpl.java

  1. package it.unisa.c07.biblionet.registrazione.service;

  2. import it.unisa.c07.biblionet.autenticazione.service.AutenticazioneService;
  3. import it.unisa.c07.biblionet.model.dao.GenereDAO;
  4. import it.unisa.c07.biblionet.model.dao.utente.BibliotecaDAO;
  5. import it.unisa.c07.biblionet.model.dao.utente.EspertoDAO;
  6. import it.unisa.c07.biblionet.model.dao.utente.LettoreDAO;
  7. import it.unisa.c07.biblionet.model.entity.Genere;
  8. import it.unisa.c07.biblionet.model.entity.utente.Biblioteca;
  9. import it.unisa.c07.biblionet.model.entity.utente.Esperto;
  10. import it.unisa.c07.biblionet.model.entity.utente.Lettore;
  11. import it.unisa.c07.biblionet.model.entity.utente.UtenteRegistrato;
  12. import lombok.RequiredArgsConstructor;
  13. import org.springframework.stereotype.Service;
  14. import java.util.ArrayList;
  15. import java.util.List;

  16. /**
  17.  * @author Alessio Casolaro
  18.  * @author Antonio Della Porta.
  19.  */
  20. @Service
  21. @RequiredArgsConstructor
  22. public class RegistrazioneServiceImpl implements RegistrazioneService {

  23.     /**
  24.      * Si occupa di gestire le operazioni CRUD dell'Esperto.
  25.      */
  26.     private final EspertoDAO espertoDAO;

  27.     /**
  28.      * Si occupa di gestire le operazioni CRUD della Biblioteca.
  29.      */
  30.     private final BibliotecaDAO bibliotecaDAO;

  31.     /**
  32.      * Si occupa di gestire le operazioni CRUD del Genere.
  33.      */
  34.     private final GenereDAO genereDAO;

  35.     /**
  36.      * Si occupa delle operazioni CRUD.
  37.      */
  38.     private final LettoreDAO lettoreDAO;

  39.     /**
  40.      * Inject del service per simulare
  41.      * le operazioni.
  42.      */
  43.     private final AutenticazioneService autenticazioneService;

  44.     /**
  45.      * Implementa la funzionalità di registrazione un Esperto.
  46.      * @param esperto L'Esperto da registrare
  47.      * @return L'utente registrato
  48.      */
  49.     @Override
  50.     public final UtenteRegistrato registraEsperto(final Esperto esperto) {
  51.         return espertoDAO.save(esperto);
  52.     }

  53.     /**
  54.      * Implementa la funzionalità di registrazione una Biblioteca.
  55.      * @param biblioteca La Biblioteca da registrare
  56.      * @return L'utente registrato
  57.      */
  58.     @Override
  59.     public UtenteRegistrato registraBiblioteca(final Biblioteca biblioteca) {
  60.         return bibliotecaDAO.save(biblioteca);
  61.     }

  62.     /**
  63.      * Implementa la funzionalità di registrare un Lettore.
  64.      * @param lettore Il lettore da registrare
  65.      * @return Il lettore registrato
  66.      */
  67.     @Override
  68.     public final UtenteRegistrato registraLettore(final Lettore lettore) {
  69.         return lettoreDAO.save(lettore);
  70.     }

  71.     /**
  72.      * Implementa la funzionalità di controllare se una mail è
  73.      * presente già associata ad un altro utente nel database.
  74.      * @param email la mail da controllare
  75.      * @return true se la mail è già associata, false altrimenti
  76.      */
  77.     @Override
  78.     public boolean isEmailRegistrata(final String email) {

  79.        /*
  80.         * Utilizzo il LettoreDAO, ma potrei usare qualsiasi altro DAO
  81.         * degli utenti, poiché data la generalizzazione, la findAll
  82.         * restituisce tutti gli utenti del sistema
  83.         */
  84.         for (UtenteRegistrato u: lettoreDAO.findAll()) {
  85.             if (u.getEmail().equals(email)) {
  86.                 return true;
  87.             }
  88.         }

  89.         return false;
  90.     }

  91.     /**
  92.      * Implementa la funzionalità di trovare dei generi.
  93.      * @param generi Un'array di nomi di generi da trovare
  94.      * @return Una lista contenente i generi trovati
  95.      */
  96.     @Override
  97.     public final List<Genere> findGeneriByName(final String[] generi) {
  98.         List<Genere> toReturn = new ArrayList<>();
  99.         for (String g: generi) {
  100.             Genere gen = genereDAO.findByName(g);
  101.             if (gen != null) {
  102.                 toReturn.add(gen);
  103.             }

  104.         }
  105.         return toReturn;
  106.     }

  107.     /**
  108.      * Implementa la funzionalità di trovare una biblioteca.
  109.      * @param email La mail della biblioteca
  110.      * @return La biblioteca se c'è, altrimenti null
  111.      */
  112.     @Override
  113.     public final Biblioteca getBibliotecaByEmail(final String email) {

  114.         return autenticazioneService.findBibliotecaByEmail(email);
  115.     }


  116. }