br.ufg.inf.es.fs.contpatri.mobile.tombamento.TombamentoDAO.java Source code

Java tutorial

Introduction

Here is the source code for br.ufg.inf.es.fs.contpatri.mobile.tombamento.TombamentoDAO.java

Source

/**
 * Esse documento  parte do cdigo fonte e artefatos relacionados ao projeto
 * CONTPATRI, em desenvolvimento pela Fbrica de Software da UFG.
 *
 * Links relevantes: Fbrica de Software: http://fs.inf.ufg.br/ 
 * Instituto de Informtica UFG: http://www.inf.ufg.br 
 * Projeto CONTPATRI DROPBOX: https://www.dropbox.com/home/CONTPATRI%20-%20012013 
 *
 * Copyleft  UFG.
 *
 * Licenciado sobre a licena GNU-GPL v3
 *
 * Voc pode obter uma cpia da licena em http://www.gnu.org/licenses/gpl.html
 *
 * A menos que especificado ou exigido por legislao local, o software 
 * fornecido "da maneira que est", sem garantias ou condies de qualquer tipo,
 * nem expressas nem implcitas. Em caso de dvidas referir a licena GNU-GPL.
 */
package br.ufg.inf.es.fs.contpatri.mobile.tombamento;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import br.ufg.inf.es.fs.contpatri.mobile.persistencia.BancoHelper;

import com.google.gson.GsonBuilder;

/**
 * Classe que abstrai todas as funes CRUD do modelo <code>Tombamento</code> no
 * banco de dados do aplicativo.
 * 
 * @author Rogrio Tristo Junior
 * 
 */
public final class TombamentoDAO {

    private final Context contexto;
    private SQLiteDatabase conexao;

    /**
     * Construtor para instanciar a classe e inicializar as variveis.
     * 
     * @param context
     *            <code>Context</code> utilizado para realizar a conexo com o
     *            banco de dados.
     * @throws IllegalArgumentException
     *             exceo lanada caso o contexto utilizado como parmetro,
     *             seja nulo
     */
    public TombamentoDAO(final Context context) throws IllegalArgumentException {
        if (context == null) {
            throw new IllegalArgumentException(" necessrio um contexto para iniciar o banco de dados");
        } else {
            contexto = context;
        }
    }

    /**
     * Mtodo que retorna a conexo utilizada com o banco de dados, caso no
     * haja conexo, retornar nulo ou um objeto sem conectividade com o banco.
     * 
     * @return retorna <code>SQLiteDatabase</code>
     */
    public SQLiteDatabase getConexao() {
        return conexao;
    }

    /**
     * Mtodo que realiza a abertura de uma conexo com o banco de dados.
     */
    public void abrirConexao() {

        if (conexao == null) {
            conexao = BancoHelper.getInstance(contexto).getWritableDatabase();
        } else {
            if (conexao.isOpen() == false) {
                conexao = BancoHelper.getInstance(contexto).getWritableDatabase();
            } else {
                Log.w(TombamentoDAO.class.getSimpleName(), "Conexo j ativa");
            }
        }

    }

    /**
     * Mtodo que remove um elemento do tipo <code>Tombamento</code> na base de
     * dados com base em seu cdigo. Antes da remoo,  verificado se o mesmo
     * existe. Se sim,  removido, seno, no  removido.
     * 
     * @param codigo
     *            cdigo que ser especificado para ser verificado e removido
     */
    public void deletar(final long codigo) {

        if (localizar(codigo) != null) {

            conexao.delete(BancoHelper.TABELA_TOMBAMENTO, BancoHelper.TOMBAMENTO_CODIGO + "=" + codigo, null);

        } else {
            Log.w(TombamentoDAO.class.getSimpleName(), "No foi possvel excluir pois no existe o cdigo");
        }

    }

    /**
     * Mtodo que fecha a conexo com o banco de dados.
     */
    public void fecharConexao() {
        if (conexao.isOpen()) {
            conexao.close();
        } else {
            Log.w(TombamentoDAO.class.getSimpleName(), "Conexo j fechada");
        }
    }

    /**
     * Mtodo que retorna todos os objetos do tipo <code>Tombamento</code> na
     * base de dados. Caso no tenha nenhum, ser retornada uma lista vazia.
     * 
     * @return retorna uma lista com elementos do tipo <code>Tombamento</code>
     *         ou vazia, caso no tenha nenhuma informao
     */
    public List<Tombamento> getTodos() {

        final List<Tombamento> lista = new ArrayList<Tombamento>();
        Tombamento tombamento;

        final Cursor cursor = conexao.query(BancoHelper.TABELA_TOMBAMENTO, BancoHelper.TOMBAMENTO_COLUNAS, null,
                null, null, null, BancoHelper.TOMBAMENTO_CODIGO);

        cursor.moveToFirst();

        while (cursor.moveToNext()) {

            tombamento = new Tombamento();
            tombamento.setCodigo(cursor.getInt(0));
            tombamento.setSituacao(cursor.getString(1));
            tombamento.setSublocal(cursor.getString(2));
            tombamento.setUltimaAlteracao(cursor.getLong(3));
            tombamento.setObservacao(cursor.getString(4));

            lista.add(tombamento);

        }

        cursor.close();

        return lista;

    }

    /**
     * Retorna todos os registros da base de dados e os colocar em uma
     * <code>String</code> no formato JSON. Tal formato, ir ser tratado e ir
     * ser identado conforme JSON.
     * 
     * @return retorna uma <code>String</code> que representa todos os objetos
     *         da base de dados
     */
    public String getTodosJson() {
        return new GsonBuilder().setPrettyPrinting().create().toJson(getTodos().toArray());
    }

    /**
     * Mtodo de insero de um objeto do tipo <code>Tombamento</code> na base
     * de dados. Antes de ser inserido, ser verificado se o mesmo existe, se
     * sim, no ir inserir, caso contrrio ser inserido.
     * 
     * @param tombamento
     *            <code>Tombamento</code> que ser inserido na base de dados
     */
    public void inserir(final Tombamento tombamento) {

        /*
         * Verifica se o objeto j existe na base de dados. Se sim, no ir
         * inserir, caso contrrio, ir.
         */
        if (localizar(tombamento.getCodigo()) == null) {

            final ContentValues valores = new ContentValues();
            valores.put(BancoHelper.TOMBAMENTO_CODIGO, tombamento.getCodigo());
            valores.put(BancoHelper.TOMBAMENTO_SITUACAO, tombamento.getSituacao());
            valores.put(BancoHelper.TOMBAMENTO_SUBLOCAL, tombamento.getSublocal());
            valores.put(BancoHelper.TOMBAMENTO_ALTERACAO, tombamento.getUltimaAlteracao());
            valores.put(BancoHelper.TOMBAMENTO_OBSERVACAO, tombamento.getObservacao());

            conexao.insert(BancoHelper.TABELA_TOMBAMENTO, null, valores);

        } else {
            alterar(tombamento);
        }

    }

    /**
     * Mtodo que realiza a alterao de um tombamento j existente na base de
     * dados. A alterao  feita utilizando o cdigo do tombamento como
     * referncia.
     * 
     * @param tombamento
     *            novo registro do tombamento que ser alterado na base de dados
     */
    public void alterar(final Tombamento tombamento) {

        final ContentValues valores = new ContentValues();

        valores.put(BancoHelper.TOMBAMENTO_OBSERVACAO, tombamento.getObservacao());
        valores.put(BancoHelper.TOMBAMENTO_SITUACAO, tombamento.getSituacao());
        valores.put(BancoHelper.TOMBAMENTO_SUBLOCAL, tombamento.getSublocal());
        valores.put(BancoHelper.TOMBAMENTO_ALTERACAO, tombamento.getUltimaAlteracao());

        conexao.update(BancoHelper.TABELA_TOMBAMENTO, valores,
                BancoHelper.TOMBAMENTO_CODIGO + "=" + tombamento.getCodigo(), null);

    }

    /**
     * Mtodo que retorna um objeto do tipo <code>Tombamento</code> com base no
     * cdigo do tombamento do mesmo. Caso no seja encontrado nenhum registro,
     * ser retornado <b>null</b>.
     * 
     * @param codigo
     *            cdigo que ser procurado na base de dados
     * @return retorna <b>null</b>, caso no encontre nada, ou o objeto com seus
     *         atributos completos caso ache
     */
    public Tombamento localizar(final long codigo) {

        Tombamento tombamento = null;

        final Cursor cursor = conexao.query(BancoHelper.TABELA_TOMBAMENTO, BancoHelper.TOMBAMENTO_COLUNAS,
                BancoHelper.TOMBAMENTO_CODIGO + "=" + codigo, null, null, null, null);

        /*
         * Verifica se encontrou algum registro, se sim, ir atribuir os valores
         * encontrados ao objeto Tombamento.
         */
        if (cursor.getCount() != 0) {

            cursor.moveToFirst();

            tombamento = new Tombamento();
            tombamento.setCodigo(cursor.getInt(0));
            tombamento.setSituacao(cursor.getString(1));
            tombamento.setSublocal(cursor.getString(2));
            tombamento.setUltimaAlteracao(cursor.getLong(3));
            tombamento.setObservacao(cursor.getString(4));

        }

        cursor.close();

        return tombamento;

    }
}