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