co.com.codesoftware.logica.admin.UsuarioLogica.java Source code

Java tutorial

Introduction

Here is the source code for co.com.codesoftware.logica.admin.UsuarioLogica.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.codesoftware.logica.admin;

import co.com.codesoftware.persistencia.HibernateUtil;
import co.com.codesoftware.persistencia.ReadFunction;
import co.com.codesoftware.persistencia.entidad.admin.PerfilEntity;
import co.com.codesoftware.persistencia.entidad.admin.UsuarioEntity;
import co.com.codesoftware.persistencia.utilities.DataType;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.FetchMode;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author nicolas
 */
public class UsuarioLogica implements AutoCloseable {

    private Session sesion;
    private Transaction tx;

    /**
     * Funcion encargada de realizar el llamado a la funcion de autenticacion y
     * mediante su resultado poder hacer las validaciones pertinentes
     *
     * @param name String Usuario que se desea autenticar
     * @param pass String Contrasea de acceso del usuario
     * @return
     */
    public List<String> login(String name, String pass) {
        List<String> response = new ArrayList<>();
        try (ReadFunction rf = new ReadFunction()) {
            rf.setNombreFuncion("US_FAUTENTICAR_USUA");
            rf.setNumParam(2);
            rf.addParametro(name, DataType.TEXT);
            rf.addParametro(pass, DataType.TEXT);
            rf.callFunctionJdbc();
            response = rf.getRespuestaPg();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return response;
    }

    /**
     * Funcion con la cual obtenemos un usuario por medio de su usuario
     *
     * @param user String usuario asignado para el sistema
     * @return
     */
    public UsuarioEntity obtieneUsuarioXUser(String user) {
        UsuarioEntity usuario = null;
        try {
            this.initOperation();
            Criteria crit = sesion.createCriteria(UsuarioEntity.class);
            crit.add(Restrictions.eq("usuario", user));
            crit.setFetchMode("persona", FetchMode.JOIN);
            crit.setFetchMode("perfil", FetchMode.JOIN);
            crit.setFetchMode("sede", FetchMode.JOIN);
            usuario = (UsuarioEntity) crit.uniqueResult();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return usuario;
    }

    @Override
    public void close() throws Exception {
        if (tx != null) {
            tx.commit();
        }
        if (sesion != null) {
            sesion.close();
        }
    }

    /**
     * Funcion con la cual inicia la transaccion hibernate
     */
    private void initOperation() {
        try {
            sesion = HibernateUtil.getSessionFactory().openSession();
            if (tx == null) {
                tx = sesion.beginTransaction();
            }
        } catch (Exception e) {
            e.printStackTrace();
            HibernateUtil.generaNuloSesion();
            try {
                sesion = HibernateUtil.getSessionFactory().openSession();
                if (tx == null) {
                    tx = sesion.beginTransaction();
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }

    /**
     * Funcion con la cual se puede cambiar la contrasea del usuario
     *
     * @param usuario
     * @return
     */
    public boolean cambioContrasenaObligatorio(UsuarioEntity usuario) {
        boolean rta = true;
        List<String> response = new ArrayList<>();
        try (ReadFunction rf = new ReadFunction()) {
            rf.setNombreFuncion("US_FCAMBIO_CLAVE");
            rf.setNumParam(2);
            rf.addParametro(usuario.getUsuario(), DataType.TEXT);
            rf.addParametro(usuario.getPassword(), DataType.TEXT);
            rf.callFunctionJdbc();
            response = rf.getRespuestaPg();
            if ("Ok".equalsIgnoreCase(response.get(0))) {
                rta = true;
            } else {
                rta = false;
            }
        } catch (Exception e) {
            rta = false;
            e.printStackTrace();
        }
        return rta;
    }

    /**
     * Funcion con la cual obtenemos el usuario por medio de su id
     *
     * @param tius_tius
     * @return
     */
    public UsuarioEntity obtieneUsuarioXId(Integer tius_tius) {
        UsuarioEntity usuario = null;
        try {
            this.initOperation();
            usuario = (UsuarioEntity) sesion.get(UsuarioEntity.class, tius_tius);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return usuario;
    }

    /**
     * Funcion con la cual obtengo todos los usuarios de la aplicacion
     *
     * @return
     */
    public List<UsuarioEntity> obtenerUsuarios() {
        List<UsuarioEntity> rta = null;
        try {
            this.initOperation();
            Criteria crit = this.sesion.createCriteria(UsuarioEntity.class);
            rta = crit.list();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rta;
    }

    /**
     * Funcion con el cual obtengo los perfiles del sistema
     *
     * @return
     */
    public List<PerfilEntity> obtenerPerfiles() {
        List<PerfilEntity> rta = null;
        try {
            this.initOperation();
            rta = this.sesion.createCriteria(PerfilEntity.class).list();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rta;
    }

    /**
     * Funcion con la cual actualizo el usuario
     *
     * @param usuario
     * @return
     */
    public String actualizaUsuarioEntity(UsuarioEntity usuario) {
        String rta = "";
        List<String> response = new ArrayList<>();
        try (ReadFunction rf = new ReadFunction()) {
            rf.setNombreFuncion("US_FACTUALIZA_USUARIO");
            rf.setNumParam(9);
            rf.addParametro(usuario.getPersona().getNombre(), DataType.TEXT);
            rf.addParametro(usuario.getPersona().getApellido(), DataType.TEXT);
            rf.addParametro(usuario.getPersona().getCedula(), DataType.TEXT);
            rf.addParametro(usuario.getPersona().getCorreo(), DataType.TEXT);
            rf.addParametro(usuario.getPersona().getFecha_nac().getTime() + "", DataType.DATE);
            rf.addParametro(usuario.getPerfil().getId().toString(), DataType.INT);
            rf.addParametro(usuario.getEstado(), DataType.TEXT);
            rf.addParametro(usuario.getUsuario(), DataType.TEXT);
            rf.addParametro(usuario.getSede().getId().toString(), DataType.INT);
            rf.callFunctionJdbc();
            response = rf.getRespuestaPg();
            rta = response.get(0);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rta;
    }

    /**
     * Funcion con la cual inserto el usuario
     *
     * @param usuario
     * @return
     */
    public String insertarUsuarioEntity(UsuarioEntity usuario) {
        String rta = "";
        List<String> response = new ArrayList<>();
        try (ReadFunction rf = new ReadFunction()) {
            rf.setNombreFuncion("US_FINSERTA_USUA");
            rf.setNumParam(9);
            rf.addParametro(usuario.getPersona().getNombre(), DataType.TEXT);
            rf.addParametro(usuario.getPersona().getApellido(), DataType.TEXT);
            rf.addParametro(usuario.getPersona().getCedula(), DataType.TEXT);
            rf.addParametro(usuario.getPersona().getCorreo(), DataType.TEXT);
            rf.addParametro(usuario.getPersona().getFecha_nac().getTime() + "", DataType.DATE);
            rf.addParametro(usuario.getUsuario(), DataType.TEXT);
            rf.addParametro("1234", DataType.TEXT);
            rf.addParametro(usuario.getPerfil().getId().toString(), DataType.INT);
            rf.addParametro(usuario.getSede().getId().toString(), DataType.INT);
            rf.callFunctionJdbc();
            response = rf.getRespuestaPg();
            rta = response.get(0);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rta;
    }

    /**
     * metodo que consulta los usuarios por permiso
     * @param permiso
     * @return 
     */
    public List<UsuarioEntity> consultaUsuariosXPermiso(String permiso) {
        List<UsuarioEntity> respuesta = new ArrayList<>();
        try {
            initOperation();
            respuesta = sesion.createCriteria(UsuarioEntity.class).createAlias("perfil", "pf")
                    .add(Restrictions.like("pf.permisos", permiso, MatchMode.ANYWHERE))
                    .add(Restrictions.eq("estado", "A")).list();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return respuesta;
    }

}