Skip to content
josejbocanegra edited this page Feb 12, 2020 · 34 revisions

Lógica

La lógica es la capa encargada de:

  • Realizar la conexión entre la API y la persistencia;
  • Analizar las reglas de negocio
  • Crear las asociaciones entre las clases.

Todas las clases encargadas de procesar la lógica serán EJB sin estado, por tanto se anotan con @Stateless.

@Stateless
public class CityLogic

Se incluye un Logger para registar los eventos.

private static final Logger LOGGER = Logger.getLogger(CityLogic.class.getName());

También debe crease una inyección de dependencias de la persistencia.

@Inject
private CityPersistence cityPersistence;

Para cada una de las operaciones en persistencia se debe crear un método en la lógica.

Crear ciudad

El método para crear ciudad recibe una entidad, y retorna una nueva entidad la cual contiene el id generado por la base de datos. En este método también se comprueba una regla de negocio en la que se garantiza que no se puedan crear dos ciudades con el mismo nombre. Si esto llega a suceder, se lanza una excepción.

/**
* Se encarga de crear una ciudad en la base de datos.
*
* @param cityEntity Objeto de CityEntity con los datos nuevos
* @return Objeto de CityEntity con los datos nuevos y su ID.
*/

public CityEntity createCity(CityEntity cityEntity) throws BusinessLogicException{
    LOGGER.log(Level.INFO, "Inicia proceso de creación de la ciudad");
    if(cityPersistence.findByName(cityEntity.getName()) != null){
        throw new BusinessLogicException ("Ya existe una ciudad con el nombre " + city.getName());
    }
    CityEntity newCityEntity = cityPersistence.create(cityEntity);
    LOGGER.log(Level.INFO, "Termina proceso de creación de la ciudad");
    return newCityEntity;
}

Obtener las cuidades

public List<CityEntity> getCities() {
    LOGGER.log(Level.INFO, "Inicia proceso de consultar todas las ciudades");
    List<CityEntity> lista = cityPersistence.findAll();
    LOGGER.log(Level.INFO, "Termina proceso de consultar todas las ciudades");
    return lista;
}

Obtener una ciudad en particular

public CityEntity getCity(Long cityId) {
    LOGGER.log(Level.INFO, "Inicia proceso de consultar la ciudad con id = {0}", cityId);
    CityEntity cityEntity = cityPersistence.find(cityId);
    if (cityEntity == null) {
        LOGGER.log(Level.SEVERE, "La ciudad con el id = {0} no existe", cityId);
    }
    LOGGER.log(Level.INFO, "Termina proceso de consultar la ciudad con id = {0}", cityId);
    return cityEntity;
}

Actualizar una ciudad

public CityEntity updateCity(Long cityId, CityEntity cityEntity) {
    LOGGER.log(Level.INFO, "Inicia proceso de actualizar la ciudad con id = {0}", cityId);
    CityEntity newCityEntity = cityPersistence.update(cityEntity);
    LOGGER.log(Level.INFO, "Termina proceso de actualizar la ciudad con id = {0}", cityId);
    return newCityEntity;
}

Borrar una ciudad

public void deleteCity(Long cityId) {
    LOGGER.log(Level.INFO, "Inicia proceso de borrar la ciudad con id = {0}", cityId);
    cityPersistence.delete(cityId);
    LOGGER.log(Level.INFO, "Termina proceso de borrar la ciudad con id = {0}", cityId);
}
Clone this wiki locally