com.app.inventario.dao.UsuarioDAOImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.app.inventario.dao.UsuarioDAOImpl.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 com.app.inventario.dao;

import com.app.inventario.daointerface.IDAO;
import com.app.inventario.entidades.seguridad.Usuario;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Transaction;
import org.hibernate.classic.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.security.core.userdetails.UserDetails;

/**
 *
 * @author Erick
 */

public class UsuarioDAOImpl extends HibernateDaoSupport implements IDAO<Usuario> {

    private Session session;
    private Transaction tx;

    @Override
    public void guardar(Usuario usuario) {
        try {
            this.iniciaOperacion();
            //String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities
            session.save(usuario);
            tx.commit();
        } catch (HibernateException he) {
            this.manejaExcepcion(he);
        } finally {
            // Cerrar la session
        }
    }

    @Override
    public void actualizar(Usuario usuario) {
        try {
            this.iniciaOperacion();
            session.update(usuario);
            tx.commit();
        } catch (HibernateException he) {
            this.manejaExcepcion(he);
        } finally {
            // Cerrar la session
        }
    }

    @Override
    public void eliminar(Usuario usuario) {
        try {
            this.iniciaOperacion();
            session.delete(usuario);
            tx.commit();
        } catch (HibernateException he) {
            this.manejaExcepcion(he);
        } finally {
            // Cerrar la session
        }
    }

    @Override
    public Usuario obtener(int id) {
        Usuario result = null;
        try {
            this.iniciaOperacion();
            result = (Usuario) session.get(Usuario.class, id);
        } catch (HibernateException he) {
            this.manejaExcepcion(he);
        } finally {
            // Cerrar la session
        }
        return result;
    }

    @Override
    public List<Usuario> obtenerTodos() {
        List<Usuario> result = null;
        try {
            this.iniciaOperacion();
            result = session.createQuery("FROM Usuario").list();
        } catch (HibernateException he) {
            this.manejaExcepcion(he);
        } finally {
            // Cerrar la session
        }
        return result;
    }

    public List<Usuario> obtenerNombresUsuarios() throws HibernateException {
        List<Usuario> lista = null;
        try {
            this.iniciaOperacion();
            Query consulta = session.createQuery("SELECT u.id, u.username FROM Usuario u");
            lista = consulta.list();
        } catch (HibernateException he) {
            this.manejaExcepcion(he);
        } finally {
            // Cerrar la session
        }
        return lista;
    }

    public List<Usuario> obtenerTodosAGrid(String ordenarPor, String ordenarAsc) {
        List<Usuario> result = null;
        try {
            this.iniciaOperacion();
            Criteria criteria = session.createCriteria(Usuario.class);
            if (ordenarAsc.equalsIgnoreCase("asc")) {
                criteria.addOrder(Order.asc(ordenarPor));
            } else if (ordenarAsc.equalsIgnoreCase("desc")) {
                criteria.addOrder(Order.desc(ordenarPor));
            }
            result = criteria.list();
        } catch (HibernateException he) {
            this.manejaExcepcion(he);
        } finally {
            // Cerrar la session
        }
        return result;
    }

    /*public List<Proveedor> obtenerTodosAGrid(String ordenarPor, String ordenarAsc) {
    try {
        this.iniciaOperacion();
        Criteria criteria = session.createCriteria(Proveedor.class);
        if (ordenarAsc.equalsIgnoreCase("asc")) {
            criteria.addOrder(Order.asc(ordenarPor));
        } else if (ordenarAsc.equalsIgnoreCase("desc")) {
            criteria.addOrder(Order.desc(ordenarPor));
        }
        return criteria.list();
    } catch (HibernateException he) {
        this.manejaExcepcion(he);
    } finally {
        try {
            session.close();
        } catch (HibernateException he) {
            Logger.getLogger(ProveedorDAOImpl.class.getName()).log(Level.SEVERE, null, he);
            throw he;
        }
    }
    }*/

    public boolean validarUsername(String username) {
        Usuario result = null;
        try {
            this.iniciaOperacion();
            Criteria criteria = session.createCriteria(Usuario.class).add(Restrictions.eq("username", username));
            result = (Usuario) criteria.uniqueResult();
        } catch (HibernateException he) {
            this.manejaExcepcion(he);
        } finally {
            // Cerrar la session
        }
        return result == null;
    }

    public Usuario obtenerUsuarioUsername(String username) {
        Usuario usuario = null;
        try {
            this.iniciaOperacion();
            Criteria criteria = session.createCriteria(Usuario.class).add(Restrictions.eq("username", username));
            usuario = (Usuario) criteria.uniqueResult();
        } catch (HibernateException he) {
            this.manejaExcepcion(he);
        } finally {
            // Cerrar la session
        }
        usuario.setPassword("");
        usuario.setConfirmarContrasena("");
        usuario.setFacturas(null);
        return usuario;
    }

    public UserDetails loadUserByUsername(String username) {
        Usuario usuario = null;
        try {
            this.iniciaOperacion();
            Criteria criteria = session.createCriteria(Usuario.class).add(Restrictions.eq("username", username));
            usuario = (Usuario) criteria.uniqueResult();
        } catch (HibernateException he) {
            this.manejaExcepcion(he);
        } finally {
        }
        return usuario;
    }

    // Inicia una transaccion contra la base de datos.
    private void iniciaOperacion() throws HibernateException {
        session = this.getHibernateTemplate().getSessionFactory().openSession();
        tx = session.beginTransaction();
    }

    // Encargado de manejar las excepciones si ocurre algo cuando se conecta a la base de datos
    private void manejaExcepcion(HibernateException he) throws HibernateException {
        tx.rollback();
        Logger.getLogger(UsuarioDAOImpl.class.getName()).log(Level.SEVERE, null, he);
        throw new HibernateException(he);
    }

}