daoImp.OrdemDaoImp.java Source code

Java tutorial

Introduction

Here is the source code for daoImp.OrdemDaoImp.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 daoImp;

import dao.OrdemDao;
import dto.OrdemPorMes;
import dto.OrdemStatus;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import messages.menGeral;
import modelo.ComComentario;
import modelo.DepDepartamento;
import modelo.DirDirecao;
import modelo.MimMinisterio;
import modelo.OrdEmpresa;
import modelo.OrdMinisterio;
import modelo.OrdOrdem;
import modelo.OrdUtente;
import modelo.UsuUsuario;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import org.primefaces.context.RequestContext;
import util.HibernateUtil;

/**
 *
 * @author Chris Allen
 */
public class OrdemDaoImp implements OrdemDao {

    private String msg;
    UsuUsuario usuario;
    HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext()
            .getRequest();
    HttpServletRequest request = (HttpServletRequest) req;
    HttpSession session = (HttpSession) request.getSession();
    menGeral ms = new menGeral();

    @Override
    public void guardarPessoal(OrdOrdem ordem, OrdUtente ordPessoal, ComComentario comentario) {
        Session sess = HibernateUtil.getSessionFactory().openSession();
        try {
            sess.getTransaction().begin();
            sess.save(ordem);
            sess.save(ordPessoal);
            sess.save(comentario);

            sess.getTransaction().commit();
            msg = "Ordem guardada com sucesso!";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
            RequestContext.getCurrentInstance().execute("PF('dlgnovo').hide()");

        } catch (Exception e) {
            msg = "Erro ao guardar ordem!";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
            System.out.println("Erro ao Incluir o Item: " + e.getMessage());
            sess.getTransaction().rollback();
            RequestContext.getCurrentInstance().execute("PF('dlgnovo').show()");

        } finally {
            try {
                sess.isOpen();
                sess.close();
                System.out.println("Sesso fechada");
            } catch (Exception e) {
                System.out.println("Erro: " + e.getMessage());

            }
        }
    }

    @Override
    public void guardarEmpresa(OrdOrdem ordem, OrdEmpresa ordEmpresa, ComComentario comentario) {
        Session sess = HibernateUtil.getSessionFactory().openSession();
        try {
            sess.getTransaction().begin();
            sess.save(ordem);
            sess.save(ordEmpresa);
            sess.save(comentario);

            sess.getTransaction().commit();
            msg = "Ordem guardada com sucesso!";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
            RequestContext.getCurrentInstance().execute("PF('dlgnovo').hide()");

        } catch (Exception e) {
            msg = "Erro ao guardar ordem!";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
            System.out.println("Erro ao Incluir o Item: " + e.getMessage());
            sess.getTransaction().rollback();
            RequestContext.getCurrentInstance().execute("PF('dlgnovo').show()");

        } finally {
            try {
                sess.isOpen();
                sess.close();
                System.out.println("Sesso fechada");
            } catch (Exception e) {
                System.out.println("Erro: " + e.getMessage());

            }
        }
    }

    @Override
    public void guardarMinisterio(OrdOrdem ordem, OrdMinisterio ordMinisterio, ComComentario comentario) {
        Session sess = HibernateUtil.getSessionFactory().openSession();
        try {
            Transaction tx = sess.beginTransaction();
            sess.save(ordem);
            sess.save(ordMinisterio);
            sess.save(comentario);
            tx.commit();
            RequestContext.getCurrentInstance().execute("PF('dlgnovo').hide()");

            msg = "Ordem guardada com sucesso!";

        } catch (Exception e) {
            msg = "Erro ao guardar ordem!";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
            System.out.println("Erro ao Incluir o Item: " + e.getMessage());
            sess.getTransaction().rollback();
            RequestContext.getCurrentInstance().execute("PF('dlgnovo').show()");

        } finally {
            try {
                sess.isOpen();
                sess.close();
                System.out.println("Sesso fechada");
            } catch (Exception e) {
                System.out.println("Erro: " + e.getMessage());

            }
        }
    }

    @Override
    public void apagar(OrdOrdem ordem) {
        Session sess = HibernateUtil.getSessionFactory().openSession();
        try {
            sess.getTransaction().begin();
            sess.delete(ordem);
            sess.getTransaction().commit();
            msg = "Ordem apagada com sucesso!";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);

        } catch (Exception e) {
            msg = "Erro ao apagar ordem!";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
            System.out.println("Erro ao Incluir o Item: " + e.getMessage());
            sess.getTransaction().rollback();

        } finally {
            try {
                sess.isOpen();
                sess.close();
                System.out.println("Sesso fechada");
            } catch (Exception e) {
                System.out.println("Erro: " + e.getMessage());

            }
        }
    }

    @Override
    public void alterar(OrdOrdem ordem) {
        Session sess = HibernateUtil.getSessionFactory().getCurrentSession();
        try {
            Transaction tx = sess.beginTransaction();

            sess.merge(ordem);
            tx.commit();
            msg = "ordem alterada com sucesso!";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);

        } catch (Exception e) {
            msg = "Erro ao alterar ordem!";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
            System.out.println("Erro ao Incluir o Item: " + e.getMessage());
            sess.beginTransaction().rollback();

        } finally {
            try {
                sess.isOpen();
                sess.close();
                System.out.println("Sesso fechada");
            } catch (Exception e) {
                System.out.println("Erro: " + e.getMessage());

            }
        }
    }

    @Override
    public void alterarActualizar(OrdOrdem ordem) {
        Session sess = HibernateUtil.getSessionFactory().getCurrentSession();
        try {
            Transaction tx = sess.beginTransaction();
            sess.merge(ordem);
            tx.commit();

        } catch (Exception e) {

            System.out.println("Erro ao Incluir o Item: " + e.getMessage());
            sess.beginTransaction().rollback();

        } finally {
            try {
                sess.isOpen();
                sess.close();
                System.out.println("Sesso fechada");
            } catch (Exception e) {
                System.out.println("Erro: " + e.getMessage());

            }
        }
    }

    @Override
    public OrdOrdem buscaPorId(int id) {
        Session sess = HibernateUtil.getSessionFactory().openSession();
        try {
            return (OrdOrdem) sess.load(OrdOrdem.class, id);
        } catch (Exception e) {

            System.out.println("Erro: " + e.getMessage());
            sess.beginTransaction().rollback();
        } finally {
            try {
                sess.isOpen();
                sess.close();
                System.out.println("Sesso fechada");
            } catch (Exception e) {
                System.out.println("Erro: " + e.getMessage());
            }
        }
        return null;
    }

    @Override
    public List<OrdOrdem> buscarTodos() {
        usuario = (UsuUsuario) session.getAttribute("usuario");

        Session sess = HibernateUtil.getSessionFactory().openSession();
        try {
            //            return sess.createQuery("from OrdOrdem ORDER BY ord_dt_criacao DESC").list();
            return sess.createQuery("from OrdOrdem o where o.dirDirecaoByDirIdDestino = '"
                    + usuario.getDirDirecao().getDirId() + "' ORDER BY ord_dt_criacao DESC").list();

        } catch (Exception e) {

            System.out.println("Erro: " + e.getMessage());
            sess.beginTransaction().rollback();
        } finally {
            try {
                sess.isOpen();
                sess.close();
                System.out.println("Sesso fechada");
            } catch (Exception e) {
                System.out.println("Erro: " + e.getMessage());
            }
        }
        return null;
    }

    @Override
    public List<OrdOrdem> buscarArquivos() {
        usuario = (UsuUsuario) session.getAttribute("usuario");

        Session sess = HibernateUtil.getSessionFactory().openSession();
        try {
            return sess.createQuery(
                    "from OrdOrdem or, StaStatus st INNER JOIN or On or.sta_id==st.sta_id WHERE or.sta_descricao = 'Finalizado' ORDER BY or.ord_dt_criacao DESC")
                    .list();
            //            return sess.createQuery("from OrdOrdem o where o.dirDirecaoByDirIdDestino = '" + usuario.getDirDirecao().getDirId() + "' ORDER BY ord_dt_criacao DESC").list();

        } catch (Exception e) {

            System.out.println("Erro: " + e.getMessage());
            sess.beginTransaction().rollback();
        } finally {
            try {
                sess.isOpen();
                sess.close();
                System.out.println("Sesso fechada");
            } catch (Exception e) {
                System.out.println("Erro: " + e.getMessage());
            }
        }
        return null;
    }

    @Override
    public List<OrdOrdem> selectItems() {
        Session sess = HibernateUtil.getSessionFactory().openSession();
        return sess.createQuery("from OrdOrdem").list();
    }

    @Override
    public List<MimMinisterio> findMim() {
        Session sess = HibernateUtil.getSessionFactory().openSession();
        //sess.beginTransaction();
        Criteria criteria = sess.createCriteria(MimMinisterio.class);
        ArrayList<MimMinisterio> lis = (ArrayList<MimMinisterio>) criteria.list();
        return lis;
    }

    @Override
    public List<DirDirecao> listaDirecoes(int min) {
        Session sess = HibernateUtil.getSessionFactory().openSession();
        //sess.beginTransaction();
        Criteria criteria = sess.createCriteria(DirDirecao.class);
        criteria.add(Restrictions.eq("mimMinisterio.mimId", min));
        return criteria.list();
    }

    @Override
    public List<DepDepartamento> listDepartamento(int min, int dir) {
        Session sess = HibernateUtil.getSessionFactory().openSession();
        //sess.beginTransaction();
        Criteria criteria = sess.createCriteria(DepDepartamento.class);
        criteria.add(Restrictions.eq("mimMinisterio.mimId", min));
        criteria.add(Restrictions.eq("dirDirecao.dirId", dir));
        return criteria.list();
    }

    @Override
    public OrdOrdem alterarCom(OrdOrdem ordem, ComComentario comentario) {
        Session sess = HibernateUtil.getSessionFactory().getCurrentSession();
        sess.close();
        sess = HibernateUtil.getSessionFactory().getCurrentSession();
        try {
            Transaction tx = sess.beginTransaction();
            try {
                //TESTE PARA OBSERVAR OS PARAMETROS
                //                System.out.println(ordem.getOrdId());
                //                System.out.println(ordem.getDepDepartamentoByDepIdCriacao());
                //                System.out.println(ordem.getDepDepartamentoByDepIdDestino());
                //                System.out.println(ordem.getMimMinisterioByMimIdCriacao());
                //                System.out.println(ordem.getMimMinisterioByMimIdDestino());
                //                System.out.println(ordem.getUsuUsuarioByUsuAcompanha());
                //                System.out.println(ordem.getUsuUsuarioByUsuAlteracao());
                //                System.out.println(ordem.getUsuUsuarioByUsuCriacao());
                //                //
                //                System.out.println(comentario.getComId());
                //                System.out.println(comentario.getUsuUsuarioByUsuAlteracao());
                //                System.out.println(comentario.getUsuUsuarioByUsuCriacao());

            } catch (Exception e) {

            }
            sess.merge(comentario);
            ordem = (OrdOrdem) sess.merge(ordem);

            tx.commit();
            msg = "Ordem encaminhada com sucesso!";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
            return ordem;
        } catch (Exception e) {
            e.printStackTrace();
            msg = "Erro ao encaminhar a ordem!";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
            System.out.println("Erro ao Incluir o Item: " + e.getMessage());
            sess.beginTransaction().rollback();

        } finally {
            try {
                sess.isOpen();
                sess.close();
                System.out.println("Sesso fechada");
            } catch (Exception e) {
                System.out.println("Erro: " + e.getMessage());

            }
        }
        return null;
    }

    public List<OrdemStatus> listarOrdemPorStatus() {
        Session sess = HibernateUtil.getSessionFactory().getCurrentSession();
        StringBuilder sql = new StringBuilder("");
        sql.append(" SELECT count(ord_id), sta_descricao ");
        sql.append(" from ord_ordem, sta_status ");
        sql.append(" where sta_status.sta_id = ord_ordem.sta_id ");
        sql.append(" group by sta_descricao ");
        sql.append(" order by 1  ");
        try {
            if (!sess.getTransaction().isActive()) {
                sess.beginTransaction();
            }
            List<Object[]> result = sess.createSQLQuery(sql.toString()).list();
            List<OrdemStatus> retorno = new ArrayList<>();
            for (Object[] b : result) {
                BigInteger qtde = (BigInteger) b[0];
                String status = (String) b[1];
                OrdemStatus st = new OrdemStatus(status, qtde.intValue());
                retorno.add(st);
            }
            return retorno;
        } catch (Exception e) {
            e.printStackTrace();
            try {
                sess.isOpen();
                sess.close();
                System.out.println("Sesso fechada");
            } catch (Exception ee) {
                System.out.println("Erro: " + ee.getMessage());

            }
        }
        return new ArrayList<>();
    }

    public Iterable<OrdemPorMes> listarOrdemPorMes() {
        Session sess = HibernateUtil.getSessionFactory().getCurrentSession();
        StringBuilder sql = new StringBuilder("");
        sql.append("  select usu_descricao, ( ");
        sql.append(" SELECT count(ord_id)  ");
        sql.append(" from ord_ordem ");
        sql.append(" where usu_criacao = usu_id ");
        sql.append(" and month(ord_dt_criacao) = month(CURRENT_DATE()) ");
        sql.append(" ) as 'Mes Atual', ");
        sql.append("  ");
        sql.append(" ( ");
        sql.append(" SELECT count(ord_id) ");
        sql.append(" from ord_ordem ");
        sql.append(" where usu_criacao = usu_id ");
        sql.append(" and month(ord_dt_criacao) = month(CURRENT_DATE())-1 ");
        sql.append(" ) as 'Mes Anterior' ");
        sql.append("  from usu_usuario   ");

        try {
            if (!sess.getTransaction().isActive()) {
                sess.beginTransaction();
            }
            List<Object[]> result = sess.createSQLQuery(sql.toString()).list();
            List<OrdemPorMes> retorno = new ArrayList<>();
            for (Object[] b : result) {
                String nome = (String) b[0];
                BigInteger mesAtual = (BigInteger) b[1];
                BigInteger mesAnterior = (BigInteger) b[2];
                OrdemPorMes st = new OrdemPorMes(nome, mesAtual.intValue(), mesAnterior.intValue());
                retorno.add(st);
            }
            return retorno;
        } catch (Exception e) {
            e.printStackTrace();
            try {
                sess.isOpen();
                sess.close();
                System.out.println("Sesso fechada");
            } catch (Exception ee) {
                System.out.println("Erro: " + ee.getMessage());

            }
        }
        return new ArrayList<>();
    }

}