RegistrazioneServiceImpl.java
package it.unisa.c07.biblionet.registrazione.service;
import it.unisa.c07.biblionet.autenticazione.service.AutenticazioneService;
import it.unisa.c07.biblionet.model.dao.GenereDAO;
import it.unisa.c07.biblionet.model.dao.utente.BibliotecaDAO;
import it.unisa.c07.biblionet.model.dao.utente.EspertoDAO;
import it.unisa.c07.biblionet.model.dao.utente.LettoreDAO;
import it.unisa.c07.biblionet.model.entity.Genere;
import it.unisa.c07.biblionet.model.entity.utente.Biblioteca;
import it.unisa.c07.biblionet.model.entity.utente.Esperto;
import it.unisa.c07.biblionet.model.entity.utente.Lettore;
import it.unisa.c07.biblionet.model.entity.utente.UtenteRegistrato;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* @author Alessio Casolaro
* @author Antonio Della Porta.
*/
@Service
@RequiredArgsConstructor
public class RegistrazioneServiceImpl implements RegistrazioneService {
/**
* Si occupa di gestire le operazioni CRUD dell'Esperto.
*/
private final EspertoDAO espertoDAO;
/**
* Si occupa di gestire le operazioni CRUD della Biblioteca.
*/
private final BibliotecaDAO bibliotecaDAO;
/**
* Si occupa di gestire le operazioni CRUD del Genere.
*/
private final GenereDAO genereDAO;
/**
* Si occupa delle operazioni CRUD.
*/
private final LettoreDAO lettoreDAO;
/**
* Inject del service per simulare
* le operazioni.
*/
private final AutenticazioneService autenticazioneService;
/**
* Implementa la funzionalità di registrazione un Esperto.
* @param esperto L'Esperto da registrare
* @return L'utente registrato
*/
@Override
public final UtenteRegistrato registraEsperto(final Esperto esperto) {
return espertoDAO.save(esperto);
}
/**
* Implementa la funzionalità di registrazione una Biblioteca.
* @param biblioteca La Biblioteca da registrare
* @return L'utente registrato
*/
@Override
public UtenteRegistrato registraBiblioteca(final Biblioteca biblioteca) {
return bibliotecaDAO.save(biblioteca);
}
/**
* Implementa la funzionalità di registrare un Lettore.
* @param lettore Il lettore da registrare
* @return Il lettore registrato
*/
@Override
public final UtenteRegistrato registraLettore(final Lettore lettore) {
return lettoreDAO.save(lettore);
}
/**
* Implementa la funzionalità di controllare se una mail è
* presente già associata ad un altro utente nel database.
* @param email la mail da controllare
* @return true se la mail è già associata, false altrimenti
*/
@Override
public boolean isEmailRegistrata(final String email) {
/*
* Utilizzo il LettoreDAO, ma potrei usare qualsiasi altro DAO
* degli utenti, poiché data la generalizzazione, la findAll
* restituisce tutti gli utenti del sistema
*/
for (UtenteRegistrato u: lettoreDAO.findAll()) {
if (u.getEmail().equals(email)) {
return true;
}
}
return false;
}
/**
* Implementa la funzionalità di trovare dei generi.
* @param generi Un'array di nomi di generi da trovare
* @return Una lista contenente i generi trovati
*/
@Override
public final List<Genere> findGeneriByName(final String[] generi) {
List<Genere> toReturn = new ArrayList<>();
for (String g: generi) {
Genere gen = genereDAO.findByName(g);
if (gen != null) {
toReturn.add(gen);
}
}
return toReturn;
}
/**
* Implementa la funzionalità di trovare una biblioteca.
* @param email La mail della biblioteca
* @return La biblioteca se c'è, altrimenti null
*/
@Override
public final Biblioteca getBibliotecaByEmail(final String email) {
return autenticazioneService.findBibliotecaByEmail(email);
}
}