Java tutorial
/* * 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<>(); } }