com.br.uepb.dao.MedicaoOximetroDAO.java Source code

Java tutorial

Introduction

Here is the source code for com.br.uepb.dao.MedicaoOximetroDAO.java

Source

/*
The MIT License (MIT)
Copyright (c) 2016 Ncleo de Tecnologias Estratgicas em Sade (NUTES)
    
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
documentation files (the "Software"), to deal in the Software without restriction, including without limitation 
the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, 
and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
    
The above copyright notice and this permission notice shall be included in all copies or substantial portions 
of the Software.
    
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
DEALINGS IN THE SOFTWARE. 
*/
package com.br.uepb.dao;

import java.util.List;

import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.br.uepb.model.MedicaoOximetroDomain;

import conexaoBD.HibernateUtil;

/**
 * Classe DAO para o objeto MedicaoOximetroDomain
 * Esta classe  responsavel por pesquisar, inserir, excluir e atualizar informaes 
 * na tabela mapeada com o objeto MedicaoOximetroDomain
 */
public class MedicaoOximetroDAO {

    /** Idenfiticao da sesso atual */
    private Session sessaoAtual;

    /**
     * Mtodo para salvar ou atualizar a medio do oximetro
     * Se o parametro medio ja existir, as informaes sero atualizadas,
     * caso contrrio, ser armazenada uma nova medio
     * @param medicao Objeto de representao da medio do Oxmetro(MedicaoOximetroDomain)
     */
    public void salvaMedicaoOximetro(MedicaoOximetroDomain medicao) {
        SessaoAtual().beginTransaction();
        if (ehNovaMedicao(medicao)) {
            SessaoAtual().save(medicao);
        } else {
            SessaoAtual().update(medicao);
        }
        SessaoAtual().getTransaction().commit();
        SessaoAtual().close();
    }

    /**
     * Mtodo para exlcuir a medio do oximetro
     * @param medicao Objeto de representao da medio do Oxmetro(MedicaoOximetroDomain)    
     * @return Boolean - Retorna true se conseguir excluir a medio e false caso contrrio
     */
    public Boolean excluiMedicaoOximetro(MedicaoOximetroDomain medicao) {
        try {
            Session novaSessao = SessaoAtual();
            Transaction tx = SessaoAtual().beginTransaction();
            novaSessao.delete(medicao);
            novaSessao.flush();
            tx.commit();
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    /**
     * para excluir a medio do oximetro de acordo com o id do paciente
     * @param idPaciente Id do Paciente
     * @return Retorna true se conseguir excluir a medicao e false caso contrrio
     */
    public Boolean excuiMedicaoOximetroPorPaciente(int idPaciente) {
        try {
            Session novaSessao = SessaoAtual();
            Transaction tx = SessaoAtual().beginTransaction();
            novaSessao.createQuery("delete from MedicaoOximetroDomain where paciente.id = :id")
                    .setParameter("id", idPaciente).executeUpdate();
            novaSessao.flush();
            tx.commit();
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    /**
     * Mtodo para obter a medio do oxmetro de acordo com o id da medio
     * @param idOximetro Id do Oxmetro
     * @return MedicaoOximetroDomain
     */
    public MedicaoOximetroDomain obtemMedicaoOximetro(int idOximetro) {
        MedicaoOximetroDomain medicao = (MedicaoOximetroDomain) SessaoAtual().get(MedicaoOximetroDomain.class,
                idOximetro);
        SessaoAtual().close();
        return medicao;
    }

    /**
     * Mtodo para obter a ultima medio cadastrada de acordo com o id do paciente
     * @param idPaciente Id do paciente
     * @return MedicaoOximetroDomain
     */
    public MedicaoOximetroDomain obtemUltimaMedicao(int idPaciente) {
        String comando = "select mo.* from Medicao_oximetro mo " + "where mo.paciente_id = :idPaciente "
                + "order by data_hora desc " + "limit 1";
        SQLQuery query = SessaoAtual().createSQLQuery(comando);
        query.setParameter("idPaciente", idPaciente);
        query.addEntity(MedicaoOximetroDomain.class);

        MedicaoOximetroDomain medicao = (MedicaoOximetroDomain) query.uniqueResult();
        return medicao;
    }

    /**
     * Mtodo para listar todas as medies cadastradas
     * @return List
     */
    @SuppressWarnings("unchecked")
    public List<MedicaoOximetroDomain> listaMedicoes() {

        List<MedicaoOximetroDomain> medicao = (List<MedicaoOximetroDomain>) SessaoAtual()
                .createQuery("from MedicaoOximetroDomain").list();

        SessaoAtual().close();
        return medicao;
    }

    /**
     * Mtodo para listar todas as medies cadastradas de acordo com o id do paciente
     * @param idPaciente Id do paciente
     * @return List
     */
    @SuppressWarnings("unchecked")
    public List<MedicaoOximetroDomain> listaMedicoesDoPaciente(int idPaciente) {
        List<MedicaoOximetroDomain> medicao = (List<MedicaoOximetroDomain>) SessaoAtual()
                .createQuery("from MedicaoOximetroDomain where  paciente.id =" + idPaciente).list();

        SessaoAtual().close();
        return medicao;
    }

    /**
     * Mtodo para listar a ultima medio do paciente cadastrada de acordo com o id do paciente
     * @param idPaciente Id do paciente
     * @return MedicaoOximetroDomain
     */
    @SuppressWarnings("unchecked")
    public MedicaoOximetroDomain listaUltimaMedicaoDoPaciente(int idPaciente) {
        List<MedicaoOximetroDomain> listamedicoes = (List<MedicaoOximetroDomain>) SessaoAtual()
                .createQuery("from MedicaoOximetroDomain where  paciente.id = " + idPaciente + "order by dataHora")
                .list();

        SessaoAtual().close();
        return listamedicoes.get(0);
    }

    /**
     * Mtodo para verificar se a medio j foi cadastrada
     * Se o id da medio j existir ser retornado false,
     * caso contrrio ser retornado true
     * @param medicao Objeto de representao da medio do Oxmetro(MedicaoOximetroDomain)
     * @return boolean
     */
    private boolean ehNovaMedicao(MedicaoOximetroDomain medicao) {
        if (medicao.getId() > 0) {
            return false;
        } else {
            return true;
        }
    }

    /**
     * Mtodo para retornar a sesso atual.
     * Se no existir, ser criada uma nova sesso
     * @return Session
     */
    private Session SessaoAtual() {
        if (sessaoAtual == null || !sessaoAtual.isOpen()) {
            sessaoAtual = HibernateUtil.getSessionFactory().openSession();
        }
        return sessaoAtual;
    }
}