Android Open Source - ReqDroid B D Gerenciador






From Project

Back to project page ReqDroid.

License

The source code is released under:

GNU General Public License

If you think the Android project ReqDroid listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Este arquivo esta sujeito aos termos e condicoes definidos
 * no arquivo 'LICENSE.txt, o qual e parte deste pacote de codigo fonte.
 *//*from w w w  . j  a  v  a  2 s  .co  m*/

package com.vrs.reqdroid.dao;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteStatement;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;

import com.vrs.reqdroid.models.Dependencia;
import com.vrs.reqdroid.models.Projeto;


/**
 * Implementa a classe responsavel pelas operacoes de banco de dados do aplicativo.
 *
 * @author Vinicius Rodrigues Silva <vinicius.rodsilva@gmail.com>
 * @version 1.0
 */
public class BDGerenciador implements IOperacoesBD{
       private static BDGerenciador instancia;
       
       private static final String DATABASE_NAME = "reqdroid.db";
       private static final int DATABASE_VERSION = 29;
       private static final String TABLE_PROJETOS  = "projetos";
       private static final String TABLE_REQUISITOS  = "requisitos";
       private static final String TABLE_REQUISITOS_ATRASADOS  = "requisitos_atrasados";
       private static final String TABLE_CARACTERISTICAS_USUARIO  = "caracteristicas_usuario";
       private static final String TABLE_HIPOTESES  = "hipoteses";
       private static final String TABLE_PROJETO_REQUISITOS  = "projeto_requisitos";
       private static final String TABLE_PROJETO_REQUISITOS_ATRASADOS  = "projeto_requisitos_atr";
       private static final String TABLE_DEPENDENCIAS  = "dependencias";
       
       private final Context context;
       private final SQLiteDatabase db;

       private final SQLiteStatement insertStmtProjeto;
       private final SQLiteStatement insertStmtRequisitos;
       private final SQLiteStatement insertStmtRequisitosAtrasados;
       private final SQLiteStatement insertStmtCaracteristicasUsuario;
       private final SQLiteStatement insertStmtHipoteses;
       private final SQLiteStatement insertStmtProjetoRequisitos;
       private final SQLiteStatement insertStmtProjetoRequisitosAtrasados;
       private final SQLiteStatement insertStmtDependencia;
       
       private static final String INSERT_PROJETOS = "insert into " + TABLE_PROJETOS  + "(titulo, descricao, beneficios, objetivos, publicoalvo, data) values (?,?,?,?,?,?)";
       private static final String INSERT_REQUISITOS = "insert into " + TABLE_REQUISITOS  + "(descricao, data, prioridade, versao, subversao, autor, idprojeto) values (?,?,?,?,?,?,?)";
       private static final String INSERT_REQUISITOS_ATRASADOS = "insert into " + TABLE_REQUISITOS_ATRASADOS  + "(descricao,  data, prioridade, versao, subversao, autor, idprojeto) values (?,?,?,?,?,?,?)";
       private static final String INSERT_CARACTERISTICAS_USUARIO = "insert into " + TABLE_CARACTERISTICAS_USUARIO  + "(experiencia,  pericia, treinamento, idprojeto) values (?,?,?,?)";
       private static final String INSERT_HIPOTESE = "insert into " + TABLE_HIPOTESES  + "(descricao,  data, versao, subversao, autor, idprojeto) values (?,?,?,?,?,?)";
       private static final String INSERT_PROJETO_REQUISITOS = "insert into " + TABLE_PROJETO_REQUISITOS  + "(idprojeto, idrequisito, numero) values (?,?,?)";
       private static final String INSERT_PROJETO_REQUISITOS_ATRASADOS = "insert into " + TABLE_PROJETO_REQUISITOS_ATRASADOS  + "(idprojeto, idrequisito, numero) values (?,?,?)";
       private static final String INSERT_DEPENDENCIA = "insert into " + TABLE_DEPENDENCIAS  + "(idprojeto, idprimeirorequisito, idsegundorequisito) values (?,?,?)";
       
       private BDGerenciador(Context context) {
            this.context = context;
            OpenHelper openHelper = new OpenHelper(this.context);
            this.db = openHelper.getWritableDatabase();
            this.insertStmtProjeto = this.db.compileStatement(INSERT_PROJETOS);
            this.insertStmtRequisitos = this.db.compileStatement(INSERT_REQUISITOS);
            this.insertStmtRequisitosAtrasados = this.db.compileStatement(INSERT_REQUISITOS_ATRASADOS);
            this.insertStmtCaracteristicasUsuario = this.db.compileStatement(INSERT_CARACTERISTICAS_USUARIO);
            this.insertStmtHipoteses = this.db.compileStatement(INSERT_HIPOTESE);
            this.insertStmtProjetoRequisitos = this.db.compileStatement(INSERT_PROJETO_REQUISITOS);
            this.insertStmtProjetoRequisitosAtrasados = this.db.compileStatement(INSERT_PROJETO_REQUISITOS_ATRASADOS);
            this.insertStmtDependencia = this.db.compileStatement(INSERT_DEPENDENCIA);
       }
   
   ////////////////////////////////////////////
   /////////////////// INSERT ////////////////
   //////////////////////////////////////////
       
   /**
    * Insere um novo projeto.
    * 
    * @param titulo O titulo do projeto
    * @param descricao A descricao do projeto
    * @param beneficios Os beneficios do projeto
    * @param objetivos Os objetivos do projeto
    * @param publicoalvo O publico alvo do projeto
    * @param data A data do projeto
    */
   public long insertProjeto(String titulo, String descricao, String beneficios, String objetivos, String publicoalvo, String data) {
        try{
            this.insertStmtProjeto.bindString(1, titulo);
            this.insertStmtProjeto.bindString(2, descricao);
            this.insertStmtProjeto.bindString(3, beneficios);
            this.insertStmtProjeto.bindString(4, objetivos);
            this.insertStmtProjeto.bindString(5, publicoalvo);
            this.insertStmtProjeto.bindString(6, data);
        }
        catch (Exception e) {
              Log.v("Insert projeto", e.getMessage(), e);
              e.printStackTrace();
          } 
         return this.insertStmtProjeto.executeInsert();
      }
      
   /**
    * Insere um novo requisito do projeto.
    * 
    * @param descricao A descricao do requisito
    * @param data A data do requisito
    * @param prioridade A prioridade do requisito
    * @param versao A versao do requisito
    * @param autor O autor do requisito
    * @param idprojeto O id do projeto
    */
   public long insertRequisito(String descricao, String data, int prioridade, int versao, int subversao, String autor, int idprojeto) {
        try {
            this.insertStmtRequisitos.bindString(1, descricao);
            this.insertStmtRequisitos.bindString(2, data);
            this.insertStmtRequisitos.bindLong(3, prioridade);
            this.insertStmtRequisitos.bindLong(4, versao);
            this.insertStmtRequisitos.bindLong(5, subversao);
            this.insertStmtRequisitos.bindString(6, autor);
            this.insertStmtRequisitos.bindLong(7, idprojeto);
        }
        catch (Exception e) {
              Log.v("Insert requisito", e.getMessage(), e);
              e.printStackTrace();
          } 
         return this.insertStmtRequisitos.executeInsert();
      }
   
   /**
    * Insere um novo requisito atrasado do projeto.
    * 
    * @param descricao A descricao do requisito atrasado
    * @param data A data do requisito atrasado
    * @param prioridade A prioridade do requisito atrasado
    * @param versao A versao do requisito atrasado
    * @param autor O autor do requisito atrasado
    * @param idprojeto O id do projeto atrasado
    */
   public long insertRequisitoAtrasado(String descricao, String data, int prioridade, int versao, int subversao, String autor, int idprojeto) {
     try {
      this.insertStmtRequisitosAtrasados.bindString(1, descricao);
         this.insertStmtRequisitosAtrasados.bindString(2, data);
         this.insertStmtRequisitosAtrasados.bindLong(3, prioridade);
         this.insertStmtRequisitosAtrasados.bindLong(4, versao);
          this.insertStmtRequisitosAtrasados.bindLong(5, subversao);
         this.insertStmtRequisitosAtrasados.bindString(6, autor);
         this.insertStmtRequisitosAtrasados.bindLong(7, idprojeto);
     }
     catch (Exception e) {
           Log.v("Insert requisito atrasado", e.getMessage(), e);
           e.printStackTrace();
       } 
      return this.insertStmtRequisitosAtrasados.executeInsert();
   }
   
   /**
    * Insere as caracteristicas do usuario do sistema.
    * 
    * @param experiencia O nivel de experiencia do usuario
    * @param pericia O nivel de pericia do usuario
    * @param treinamento A necessidade de treinamento do usuario
    * @param idprojeto O id do projeto
    */
   public long insertCaracteristicasUsuario(int experiencia, int pericia, int treinamento, int idprojeto) { 
     try {
      this.insertStmtCaracteristicasUsuario.bindLong(1, experiencia);
      this.insertStmtCaracteristicasUsuario.bindLong(2, pericia);
      this.insertStmtCaracteristicasUsuario.bindLong(3, treinamento);
         this.insertStmtCaracteristicasUsuario.bindLong(4, idprojeto);
     }
     catch (Exception e) {
           Log.v("Insert caracteristicas usuario", e.getMessage(), e);
           e.printStackTrace();
       } 
      return this.insertStmtCaracteristicasUsuario.executeInsert();
   }
   
   /**
    * Insere uma nova hipotese do projeto.
    * 
    * @param descricao A descricao da hipotese
    * @param data A data da hipotese
    * @param versao A versao da hipotese
    * @param autor O autor da hipotese
    * @param idProjeto O id do projeto
    */
   public long insertHipotese(String descricao, String data, int versao, int subversao, String autor, int idProjeto) {
       try {
        this.insertStmtHipoteses.bindString(1, descricao);
        this.insertStmtHipoteses.bindString(2, data);
        this.insertStmtHipoteses.bindLong(3, versao);
              this.insertStmtHipoteses.bindLong(4, subversao);
        this.insertStmtHipoteses.bindString(5, autor);
           this.insertStmtHipoteses.bindLong(6, idProjeto);
       }
       catch (Exception e) {
             Log.v("Insert hipotese", e.getMessage(), e);
             e.printStackTrace();
         } 
        return this.insertStmtHipoteses.executeInsert();
     }
   
   /**
    * Insere um novo numero que identifica o requisito no projeto.
    * 
    * @param idProjeto O id do projeto
    * @param idRequisito O id do requisito
    * @param numero O numero do requisito
    */
   public long insertProjetoRequisito(int idProjeto, int idRequisito, int numero) { 
       try {
           this.insertStmtProjetoRequisitos.bindLong(1, idProjeto);
           this.insertStmtProjetoRequisitos.bindLong(2, idRequisito);
           this.insertStmtProjetoRequisitos.bindLong(3, numero);
       }
       catch (Exception e) {
             Log.v("Insert projeto requisito", e.getMessage(), e);
             e.printStackTrace();
         } 
        return this.insertStmtProjetoRequisitos.executeInsert();
     }
       
   /**
    * Insere um novo numero que identifica o requisito atrasado no projeto.
    * 
    * @param idProjeto O id do projeto
    * @param idRequisito O id do requisito atrasado
    * @param numero O numero do requisito atrasado
    */
   public long insertProjetoRequisitoAtrasado(int idProjeto, int idRequisito, int numero) { 
       try {
           this.insertStmtProjetoRequisitosAtrasados.bindLong(1, idProjeto);
           this.insertStmtProjetoRequisitosAtrasados.bindLong(2, idRequisito);
           this.insertStmtProjetoRequisitosAtrasados.bindLong(3, numero);
       }
       catch (Exception e) {
             Log.v("Insert projeto requisito atrasado", e.getMessage(), e);
             e.printStackTrace();
         } 
        return this.insertStmtProjetoRequisitosAtrasados.executeInsert();
     }
   
   /**
    * Insere uma nova dependencia do projeto.
    * 
    * @param idProjeto O id do projeto
    * @param idPrimeiroRequisito O id do primeiro requisito
    * @param idSegundoRequisito O id do segundo requisito
    */
   public long insertDependencia(int idProjeto, int idPrimeiroRequisito, int idSegundoRequisito) { 
       try {
           this.insertStmtDependencia.bindLong(1, idProjeto);
           this.insertStmtDependencia.bindLong(2, idPrimeiroRequisito);
           this.insertStmtDependencia.bindLong(3, idSegundoRequisito);
       }
       catch (Exception e) {
             Log.v("Insert dependencia", e.getMessage(), e);
             e.printStackTrace();
         } 
        return this.insertStmtDependencia.executeInsert();
     }
   
   ////////////////////////////////////////////
   /////////////////// DELETE ////////////////
   //////////////////////////////////////////

   /**
    * Deleta todos os projetos.
    */
   public void deleteAllProjetos() {
    try {
      this.db.delete(TABLE_PROJETOS , null, null);
    }
    catch (Exception e) {
          Log.v("Delete todos os requisitos", e.getMessage(), e);
          e.printStackTrace();
      } 
   }
      
   /**
    * Deleta um projeto.
    * 
    * @param idProjeto O id do projeto a ser deletado.
    */
   public void deleteProjeto(int idProjeto) {
      String whereProjeto =  "id = ?";
      String idString = String.valueOf(idProjeto);
      String[] whereArgsProjeto = {idString};
      try {
        this.db.delete(TABLE_PROJETOS, whereProjeto, whereArgsProjeto);
      }
      catch (Exception e) {
          Log.v("Delete projeto", e.getMessage(), e);
          e.printStackTrace();
      } 
      //String whereRequisito =  "idprojeto = id?";
      //String idString = String.valueOf(idProjeto);
      //String[] whereArgsProjeto = {idString};
   }
   
   /**
    * Deleta um requisito pela sua descricao.
    * 
    * @param descricao A descricao do requisito
    */
   public void deleteRequisito(String descricao) {
        String where =  "descricao = " + descricao;
        try {
        this.db.delete(TABLE_REQUISITOS, where, null);
        }
        catch (Exception e) {
            Log.v("Delete requisito", e.getMessage(), e);
            e.printStackTrace();
        } 
     }
   
   /**
    * Deleta um requisito pelo seu id.
    * 
    * @param id O id do requisito
    */
   public void deleteRequisito(int id) {
      String where =  "id = " + String.valueOf(id);
      try{
      this.db.delete(TABLE_REQUISITOS, where, null);
      }
      catch (Exception e) {
          Log.v("Delete requisito", e.getMessage(), e);
          e.printStackTrace();
      } 
   }
   
   /**
    * Deleta um requisito atrasado pelo seu id.
    * 
    * @param id O id do requisito atrasado
    */
   public void deleteRequisitoAtrasado(int id) {
        String where =  "id = " + String.valueOf(id);
        try{
        this.db.delete(TABLE_REQUISITOS_ATRASADOS, where, null);
        }
        catch (Exception e) {
            Log.v("Delete requisito_atr", e.getMessage(), e);
            e.printStackTrace();
        } 
     }
   
   /**
    * Deleta um requisito atrasado pela sua descricao.
    * 
    * @param descricao A descricao do requisito atrasado
    */
   public void deleteRequisitoAtrasado(String descricao) {
        String where =  "descricao = " + descricao;
        try {
        this.db.delete(TABLE_REQUISITOS_ATRASADOS, where, null);
        }
        catch (Exception e) {
            Log.v("Delete requisito_atr", e.getMessage(), e);
            e.printStackTrace();
        } 
     }
   
   /**
    * Deleta uma hipotese pelo seu id.
    * 
    * @param id O id da hipotese
    */
   public void deleteHipotese(int id)
   {
     String where =  "id = " + String.valueOf(id);
        try{
        this.db.delete(TABLE_HIPOTESES, where, null);
        }
        catch (Exception e) {
            Log.v("Delete hipotese", e.getMessage(), e);
            e.printStackTrace();
        }    
   }
     
   /**
    * Deleta uma dependencia do projeto.
    * 
    * @param idProjeto O id do projeto
    * @param idPrimeiroRequisito O id do primeiro requisito
    * @param idSegundoRequisito O id do segundo requisito
    */
   public void deleteDependencia(int idProjeto, int idPrimeiroRequisito, int idSegundoRequisito)
   {
     String where =  "idprojeto = " + String.valueOf(idProjeto) + " AND idprimeirorequisito = " + idPrimeiroRequisito + " AND idsegundorequisito = " + idSegundoRequisito;
        try{
        this.db.delete(TABLE_DEPENDENCIAS, where, null);
        }
        catch (Exception e) {
            Log.v("Delete dependencia", e.getMessage(), e);
            e.printStackTrace();
        } 
   }
   
   ////////////////////////////////////////////
   /////////////////// UPDATE ////////////////
   //////////////////////////////////////////
   
   /**
    * Atualiza um requisito.
    * 
    * @param id O id do requisito
    * @param descricaoNova A nova descricao do requisito
    * @param versaoNova A nova versao do requisito
    * @param subversaoNova A nova subversao do requisito
    */
   public void updateRequisito(int id, String descricaoNova, int versaoNova, int subversaoNova) {
      ContentValues novaDescricao = new ContentValues();
      novaDescricao.put("descricao", descricaoNova); 
      ContentValues novaVersao = new ContentValues();
      novaVersao.put("versao", versaoNova);
      ContentValues novaSubversao = new ContentValues();
      novaSubversao.put("subversao", subversaoNova);
      String where = "id = ?";
      String idString = String.valueOf(id);
      String[] whereArgs = {idString};
      try {
        this.db.update(TABLE_REQUISITOS, novaDescricao, where, whereArgs);
        this.db.update(TABLE_REQUISITOS, novaVersao, where, whereArgs);
          this.db.update(TABLE_REQUISITOS, novaSubversao, where, whereArgs);
      }
      catch (Exception e) {
          Log.v("Update requisito", e.getMessage(), e);
          e.printStackTrace();
      } 
   }
   
   /**
    * Atualiza um requisito atrasado.
    * 
    * @param id O id do requisito atrasado
    * @param descricaoNova A nova descricao do requisito atrasado
    * @param versaoNova A nova versao do requisito atrasado
    * @param subversaoNova A nova subversao do requisito atrasado
    */
   public void updateRequisitoAtrasado(int id, String descricaoNova, int versaoNova, int subversaoNova)
   {
     ContentValues novaDescricao = new ContentValues();
        novaDescricao.put("descricao", descricaoNova); 
        ContentValues novaVersao = new ContentValues();
        novaVersao.put("versao", versaoNova);
          ContentValues novaSubversao = new ContentValues();
          novaVersao.put("subversao", subversaoNova);
          String where = "id = ?";
        String idString = String.valueOf(id);
        String[] whereArgs = {idString};
        try {
          this.db.update(TABLE_REQUISITOS_ATRASADOS, novaDescricao, where, whereArgs);
          this.db.update(TABLE_REQUISITOS_ATRASADOS, novaVersao, where, whereArgs);
              this.db.update(TABLE_REQUISITOS_ATRASADOS, novaSubversao, where, whereArgs);
        }
        catch (Exception e) {
            Log.v("Update requisito", e.getMessage(), e);
            e.printStackTrace();
        } 
   }
   
   /**
    * Atualiza a prioridade de um requisito.
    * 
    * @param id O id do requisito
    * @param prioridadeNova A nova prioridade do requisito
    */
   public void updatePrioridadeRequisito(int id, int prioridadeNova)
   {
     ContentValues novaPrioridade = new ContentValues();
     novaPrioridade.put("prioridade", prioridadeNova); 
     String where = "id = ?"; 
     String idString = String.valueOf(id);
     String[] whereArgs = {idString};
     try {
         this.db.update(TABLE_REQUISITOS, novaPrioridade, where, whereArgs);
      }
     catch (Exception e) {
         Log.v("Update requisito", e.getMessage(), e);
         e.printStackTrace();
     } 
   }
   
   /**
    * Atualiza a prioridade de um requisito atrasado.
    * 
    * @param id O id do requisito atrasado
    * @param prioridadeNova A nova prioridade do requisito atrasado
    */
   public void updatePrioridadeRequisitoAtrasado(int id, int prioridadeNova)
   {
     ContentValues novaPrioridade = new ContentValues();
     novaPrioridade.put("prioridade", prioridadeNova); 
     String where = "id = ?"; 
     String idString = String.valueOf(id);
     String[] whereArgs = {idString};
     try {
         this.db.update(TABLE_REQUISITOS_ATRASADOS, novaPrioridade, where, whereArgs);
      }
     catch (Exception e) {
         Log.v("Update requisito", e.getMessage(), e);
         e.printStackTrace();
     }  
   }
   
   /**
    * Atualiza o autor de um requisito.
    * 
    * @param id O id do requisito
    * @param autorNovo O novo autor do requisito
    */
   public void updateAutorRequisito(int id, String autorNovo)
   {
     ContentValues novoAutor = new ContentValues();
     novoAutor.put("autor", autorNovo); 
     String where = "id = ?"; 
     String idString = String.valueOf(id);
     String[] whereArgs = {idString};
     try {
         this.db.update(TABLE_REQUISITOS, novoAutor, where, whereArgs);
      }
     catch (Exception e) {
         Log.v("Update requisito", e.getMessage(), e);
         e.printStackTrace();
     } 
   }
      
   /**
    * Atualiza o autor de um requisito atrasado.
    * 
    * @param id O id do requisito atrasado
    * @param autorNovo O novo autor do requisito atrasado
    */
   public void updateAutorRequisitoAtrasado(int id, String autorNovo)
   {
     ContentValues novoAutor = new ContentValues();
     novoAutor.put("autor", autorNovo); 
     String where = "id = ?"; 
     String idString = String.valueOf(id);
     String[] whereArgs = {idString};
     try {
         this.db.update(TABLE_REQUISITOS_ATRASADOS, novoAutor, where, whereArgs);
      }
     catch (Exception e) {
         Log.v("Update requisito", e.getMessage(), e);
         e.printStackTrace();
     } 
   }
   
   /**
    * Atualiza a experiencia do usuario.
    * 
    * @param idProjeto O id do projeto
    * @param experienciaNova A nova experiencia do usuario 
    */
   public void updateExperiencia(int idProjeto, int experienciaNova)
   {
     ContentValues novaExperiencia = new ContentValues();
     novaExperiencia.put("experiencia", experienciaNova); 
     String where = "idprojeto = ?"; 
     String idString = String.valueOf(idProjeto);
     String[] whereArgs = {idString};
     try {
         this.db.update(TABLE_CARACTERISTICAS_USUARIO, novaExperiencia, where, whereArgs);
      }
     catch (Exception e) {
         Log.v("Update experiencia", e.getMessage(), e);
         e.printStackTrace();
     }  
   }
   
   
   /**
    * Atualiza a pericia do usuario.
    * 
    * @param idProjeto O id do projeto
    * @param periciaNova A nova pericia do usuario 
    */
   public void updatePericia(int idProjeto, int periciaNova)
   {
     ContentValues novaPericia = new ContentValues();
     novaPericia.put("pericia", periciaNova); 
     String where = "idprojeto = ?"; 
     String idString = String.valueOf(idProjeto);
     String[] whereArgs = {idString};
     try {
         this.db.update(TABLE_CARACTERISTICAS_USUARIO, novaPericia, where, whereArgs);
      }
     catch (Exception e) {
         Log.v("Update pericia", e.getMessage(), e);
         e.printStackTrace();
     }  
   }
   
   /**
    * Atualiza o nivel de treinamento do usuario.
    * 
    * @param idProjeto O id do projeto
    * @param treinamentoNovo O novo nivel de treinamento do usuario
    */
   public void updateTreinamento(int idProjeto, int treinamentoNovo)
   {
     ContentValues novoTreinamento = new ContentValues();
     novoTreinamento.put("treinamento", treinamentoNovo); 
     String where = "idprojeto = ?"; 
     String idString = String.valueOf(idProjeto);
     String[] whereArgs = {idString};
     try {
         this.db.update(TABLE_CARACTERISTICAS_USUARIO, novoTreinamento, where, whereArgs);
      }
     catch (Exception e) {
         Log.v("Update treinamento", e.getMessage(), e);
         e.printStackTrace();
     }  
   }
      
   /**
    * Atualiza as informacoes do escopo do projeto.
    * 
    * @param id O id do projeto
    * @param tituloNovo O novo titulo do projeto
    * @param descricaoNova A nova descricao do projeto
    * @param beneficiosNovos Os novos beneficios do projeto
    * @param objetivosNovos Os novos objetivos do projeto
    * @param publicoAlvoNovo O novo publico-alvo do projeto
    */
   public void updateProjeto(int id, String tituloNovo, String descricaoNova, String beneficiosNovos, String objetivosNovos, String publicoAlvoNovo) {
        ContentValues novoEscopo = new ContentValues();
        novoEscopo.put("titulo", tituloNovo); 
        novoEscopo.put("descricao",descricaoNova);
        novoEscopo.put("beneficios",beneficiosNovos);
        novoEscopo.put("objetivos",objetivosNovos);
        novoEscopo.put("publicoalvo",publicoAlvoNovo);
        String where = "id = ?"; 
        String idString = String.valueOf(id);
        String[] whereArgs = {idString};
        try {
          this.db.update(TABLE_PROJETOS, novoEscopo, where, whereArgs);
        }
        catch (Exception e) {
            Log.v("Update projeto", e.getMessage(), e);
            e.printStackTrace();
        } 
     }
   
   /**
    * Atualiza uma hipotese do projeto.
    * 
    * @param id O id da hipotese
    * @param descricaoNova A nova descricao da hipotese
    * @param versaoNova A nova versao da hipotese
    * @param subversaoNova A nova subversao da hipotese
    */
   public void updateHipotese(int id, String descricaoNova, int versaoNova, int subversaoNova)
   {
     ContentValues novaDescricao = new ContentValues();
        novaDescricao.put("descricao", descricaoNova); 
        ContentValues novaVersao = new ContentValues();
        novaVersao.put("versao", versaoNova);
          ContentValues novaSubversao = new ContentValues();
          novaSubversao.put("subversao", versaoNova);
       String where = "id = ?";
        String idString = String.valueOf(id);
        String[] whereArgs = {idString};
        try {
          this.db.update(TABLE_HIPOTESES, novaDescricao, where, whereArgs);
          this.db.update(TABLE_HIPOTESES, novaVersao, where, whereArgs);
              this.db.update(TABLE_HIPOTESES, novaSubversao, where, whereArgs);
        }
        catch (Exception e) {
            Log.v("Update hipotese", e.getMessage(), e);
            e.printStackTrace();
        } 
   }

   /**
    * Atualiza o autor de uma hipotese do projeto.
    * 
    * @param id O id da hipotese
    * @param autorNovo O novo autor da hipotese
    */
   public void updateAutorHipotese(int id, String autorNovo)
   {
     ContentValues novoAutor = new ContentValues();
     novoAutor.put("autor", autorNovo); 
     String where = "id = ?"; 
     String idString = String.valueOf(id);
     String[] whereArgs = {idString};
     try {
         this.db.update(TABLE_HIPOTESES, novoAutor, where, whereArgs);
      }
     catch (Exception e) {
         Log.v("Update autor hipotese", e.getMessage(), e);
         e.printStackTrace();
     } 
   }
     
   
   ////////////////////////////////////////////
   /////////////////// SELECT ////////////////
   //////////////////////////////////////////
  
   /**
    * Select de todos os titulos dos projetos.
    * 
    * @return Uma lista com os titulos de todos os projetos
    */
   public List<String> selectAllProjetos() {
        List<String> list = new ArrayList<String>();
        Cursor cursor = null;
        
        try {
          cursor = this.db.query(TABLE_PROJETOS , new String[] { "titulo" },null, null, null, null, "id desc"); //os projetos mais recentes serao listados primeiro
          if (cursor.moveToFirst()) 
          {
            do {
              list.add(cursor.getString(0));
            } while (cursor.moveToNext());
          }
        }
        catch (Exception e) {
            Log.v("Select todos os projetos", e.getMessage(), e);
            e.printStackTrace();
        } 
        finally{
          if (cursor != null && !cursor.isClosed()) {
            cursor.close();
          }
        }
        return list;
     }

    public List<Projeto> selectProjetosRecentesComData()
    {
        Projeto projeto;
        List<Projeto> list = new ArrayList<Projeto>();
        Cursor cursor = null;

        try {
            cursor = this.db.query(TABLE_PROJETOS , new String[] { "titulo", "data" },null, null, null, null, "id desc"); //os projetos mais recentes serao listados primeiro
            if (cursor.moveToFirst())
            {
                int i =0;
                do {
                    projeto = new Projeto(cursor.getString(0), cursor.getString(1));
                    list.add(projeto);
                    i++;
                } while (cursor.moveToNext() && i < 5);
            }
        }
        catch (Exception e) {
            Log.v("Select projetos recentes", e.getMessage(), e);
            e.printStackTrace();
        }
        finally{
            if (cursor != null && !cursor.isClosed()) {
                cursor.close();
            }
        }
        return list;
    }
   
   /**
    * Select de todos os titulos e datas dos projetos.
    * 
    * @return Uma lista com os titulos e datas de todos os projetos
    */
   public List<Projeto> selectAllProjetosComData()
   {
     Projeto projeto;
     List<Projeto> list = new ArrayList<Projeto>();
     Cursor cursor = null;
        
        try {
          cursor = this.db.query(TABLE_PROJETOS , new String[] { "titulo", "data" },null, null, null, null, "id desc"); //os projetos mais recentes serao listados primeiro
          if (cursor.moveToFirst()) 
          {
            do {
              projeto = new Projeto(cursor.getString(0), cursor.getString(1));
              list.add(projeto);
            } while (cursor.moveToNext());
          }
        }
        catch (Exception e) {
            Log.v("Select todos os requisitos", e.getMessage(), e);
            e.printStackTrace();
        } 
        finally{
          if (cursor != null && !cursor.isClosed()) {
            cursor.close();
          }
        }
        return list;
   }
   
   /**
    * Select de todas as datas dos projetos.
    * 
    * @return Uma lista com as datas de todos os projetos
    */
   public List<String> selectDatasAllProjetos()
   {
     List<String> list = new ArrayList<String>();
        Cursor cursor = null;
        
        try {
          cursor = this.db.query(TABLE_PROJETOS , new String[] {"data" },null, null, null, null, "id desc"); //os projetos mais recentes serao listados primeiro
          if (cursor.moveToFirst()) 
          {
            do {
              list.add(cursor.getString(0));
            } while (cursor.moveToNext());
          }
        }
        catch (Exception e) {
            Log.v("Select todos os requisitos", e.getMessage(), e);
            e.printStackTrace();
        } 
        finally{
          if (cursor != null && !cursor.isClosed()) {
            cursor.close();
          }
        }
        return list;
   }
   
   /**
    * Select de um requisito pela sua descricao.
    * 
    * @param descricao A descricao do requisito
    * @param idProjeto O id do projeto
    * @return O id do requisito
    */
   public int selectRequisitoPorDescricao(String descricao, int idProjeto) {
      String select = "SELECT id FROM " + TABLE_REQUISITOS + " WHERE (descricao = '" + descricao + "' AND idprojeto = " + idProjeto + ")";
      Cursor cursor = null;
      int idRequisito = 0;
      
      try {
        cursor = this.db.rawQuery(select, null);
        if (cursor.moveToFirst()) 
        {
          idRequisito = cursor.getInt(0);
        }
      }
      catch (Exception e) {
          Log.v(select, e.getMessage(), e);
          e.printStackTrace();
      } finally {
          if (cursor != null && !cursor.isClosed())
            cursor.close();
      }
      return idRequisito;      
   }
   
   /**
    * Select da data de um requisito.
    * 
    * @param descricao A descricao do requisito
    * @param idProjeto O id do projeto
    * @return A data do requisito
    */
   public String selectDataRequisito(String descricao, int idProjeto)
   {
     String select = "SELECT data FROM " + TABLE_REQUISITOS + " WHERE (descricao = '" + descricao + "' AND idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        String dataRequisito = "";
        
        try {
          cursor = this.db.rawQuery(select, null);
          if (cursor.moveToFirst()) 
          {
            dataRequisito = cursor.getString(0);
          }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
              cursor.close();
        }
        return dataRequisito;   
   }
   
   /**
    * Select da data de um requisito atrasado.
    * 
    * @param descricao A descricao do requisito atrasado
    * @param idProjeto O id do projeto
    * @return A data do requisito atrasado
    */
   public String selectDataRequisitoAtrasado(String descricao, int idProjeto)
   {
     String select = "SELECT data FROM " + TABLE_REQUISITOS_ATRASADOS + " WHERE (descricao = '" + descricao + "' AND idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        String dataRequisito = "";
        
        try {
          cursor = this.db.rawQuery(select, null);
          if (cursor.moveToFirst()) 
          {
            dataRequisito = cursor.getString(0);
          }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
              cursor.close();
        }
        return dataRequisito; 
   }
   
   /**
    * Select do autor de um requisito.
    * 
    * @param descricao A descricao do requisito
    * @param idProjeto O id do projeto
    * @return O autor do requisito
    */
   public String selectAutorRequisito(String descricao, int idProjeto)
   {
     String select = "SELECT autor FROM " + TABLE_REQUISITOS + " WHERE (descricao = '" + descricao + "' AND idprojeto = " + idProjeto + ")";
     Cursor cursor = null;
     String autorRequisito = "";
        
     try {
         cursor = this.db.rawQuery(select, null);
         if (cursor.moveToFirst()) 
        {
           autorRequisito = cursor.getString(0);
        }
     }
     catch (Exception e) {
        Log.v(select, e.getMessage(), e);
        e.printStackTrace();
     } finally {
        if (cursor != null && !cursor.isClosed())
         cursor.close();
     }
    return autorRequisito;   
   }
   
   /**
    * Select do autor de um requisito atrasado.
    * 
    * @param descricao A descricao do requisito atrasado
    * @param idProjeto O id do projeto
    * @return O autor do requisito atrasado
    */
   public String selectAutorRequisitoAtrasado(String descricao, int idProjeto)
   {
     String select = "SELECT autor FROM " + TABLE_REQUISITOS_ATRASADOS + " WHERE (descricao = '" + descricao + "' AND idprojeto = " + idProjeto + ")";
     Cursor cursor = null;
     String autorRequisito = "";
        
     try {
         cursor = this.db.rawQuery(select, null);
         if (cursor.moveToFirst()) 
        {
           autorRequisito = cursor.getString(0);
        }
     }
     catch (Exception e) {
        Log.v(select, e.getMessage(), e);
        e.printStackTrace();
     } finally {
        if (cursor != null && !cursor.isClosed())
         cursor.close();
     }
    return autorRequisito;
   }
   
   /**
    * Select da versao de um requisito.
    * 
    * @param descricao A descricao do requisito
    * @param idProjeto O id do projeto
    * @return A versao do requisito 
    */
   public int selectVersaoRequisito(String descricao, int idProjeto)
   {
     String select = "SELECT versao FROM " + TABLE_REQUISITOS + " WHERE (descricao = '" + descricao + "' AND idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        int versaoRequisito = 0;
        
        try {
          cursor = this.db.rawQuery(select, null);
          if (cursor.moveToFirst()) 
          {
            versaoRequisito = cursor.getInt(0);
          }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
              cursor.close();
        }
        return versaoRequisito;       
   }

    /**
     * Select da subversao de um requisito.
     *
     * @param descricao A descricao do requisito
     * @param idProjeto O id do projeto
     * @return A subversao do requisito
     */
    public int selectSubversaoRequisito(String descricao, int idProjeto)
    {
        String select = "SELECT subversao FROM " + TABLE_REQUISITOS + " WHERE (descricao = '" + descricao + "' AND idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        int subversaoRequisito = 0;

        try {
            cursor = this.db.rawQuery(select, null);
            if (cursor.moveToFirst())
            {
                subversaoRequisito = cursor.getInt(0);
            }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
                cursor.close();
        }
        return subversaoRequisito;
    }
   
   /**
    * Select da versao de um requisito atrasado.
    * 
    * @param descricao A descricao do requisito atrasado
    * @param idProjeto O id do projeto
    * @return A versao do requisito atrasado
    */
   public int selectVersaoRequisitoAtrasado(String descricao, int idProjeto)
   {
     String select = "SELECT versao FROM " + TABLE_REQUISITOS_ATRASADOS + " WHERE (descricao = '" + descricao + "' AND idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        int versaoRequisito = 0;
        
        try {
          cursor = this.db.rawQuery(select, null);
          if (cursor.moveToFirst()) 
          {
            versaoRequisito = cursor.getInt(0);
          }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
              cursor.close();
        }
        return versaoRequisito;
   }

    /**
     * Select da subversao de um requisito atrasado.
     *
     * @param descricao A descricao do requisito atrasado
     * @param idProjeto O id do projeto
     * @return A subversao do requisito atrasado
     */
    public int selectSubversaoRequisitoAtrasado(String descricao, int idProjeto)
    {
        String select = "SELECT subversao FROM " + TABLE_REQUISITOS_ATRASADOS + " WHERE (descricao = '" + descricao + "' AND idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        int subversaoRequisito = 0;

        try {
            cursor = this.db.rawQuery(select, null);
            if (cursor.moveToFirst())
            {
                subversaoRequisito = cursor.getInt(0);
            }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
                cursor.close();
        }
        return subversaoRequisito;
    }
   
   /**
    * Select da prioridade de um requisito.
    * 
    * @param descricao A descricao do requisito
    * @param idProjeto O id do projeto
    * @return A prioridade do requisito
    */
   public int selectPrioridadeRequisito(String descricao, int idProjeto)
   {
     String select = "SELECT prioridade FROM " + TABLE_REQUISITOS + " WHERE (descricao = '" + descricao + "' AND idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        int prioridadeRequisito = 0;
        
        try {
          cursor = this.db.rawQuery(select, null);
          if (cursor.moveToFirst()) 
          {
            prioridadeRequisito = cursor.getInt(0);
          }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
              cursor.close();
        }
        return prioridadeRequisito;       
   }
   
   /**
    * Select da prioridade de um requisito atrasado.
    * 
    * @param descricao A descricao do requisito atrasado
    * @param idProjeto O id do projeto
    * @return A prioridade do requisito atrasado
    */
   public int selectPrioridadeRequisitoAtrasado(String descricao, int idProjeto)
   {
     String select = "SELECT prioridade FROM " + TABLE_REQUISITOS_ATRASADOS + " WHERE (descricao = '" + descricao + "' AND idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        int prioridadeRequisito = 0;
        
        try {
          cursor = this.db.rawQuery(select, null);
          if (cursor.moveToFirst()) 
          {
            prioridadeRequisito = cursor.getInt(0);
          }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
              cursor.close();
        }
        return prioridadeRequisito;       
   }
   
   /**
    * Select de um requisito atrasado pela sua descricao.
    * 
    * @param descricao A descricao do requisito atrasado
    * @param idProjeto O id do projeto
    * @return O id do requisito atrasado
    */
   public int selectRequisitoAtrasadoPorDescricao(String descricao, int idProjeto) {
        String select = "SELECT id FROM " + TABLE_REQUISITOS_ATRASADOS + " WHERE (descricao = '" + descricao + "' AND idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        int idRequisito = 0;
        
        try {
          cursor = this.db.rawQuery(select, null);
          if (cursor.moveToFirst()) 
          {
            idRequisito = cursor.getInt(0);
          }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
              cursor.close();
        }
        return idRequisito;      
     }
     
   /**
    * Select de todos os requisitos pela suas descricoes.
    * 
    * @param idProjeto O id do projeto
    * @return Uma lista com as descricoes de todos os requisitos
    */
   public List<String> selectRequisito(int idProjeto) {
      List<String> list = new ArrayList<String>();
      String select = "SELECT descricao FROM " + TABLE_REQUISITOS + " WHERE (idprojeto = " + idProjeto + ")";
      Cursor cursor = null;
      
      try {
        cursor = this.db.rawQuery(select, null);
        if (cursor.moveToFirst()) 
        {
          do {
            list.add(cursor.getString(0));
          } while (cursor.moveToNext());
        }
      }
      catch (Exception e) {
          Log.v(select, e.getMessage(), e);
          e.printStackTrace();
      } finally {
          if (cursor != null && !cursor.isClosed())
            cursor.close();
      }
      return list;
   }

   /**
    * Select de todos os requisitos atrasados pela suas descricoes.
    * 
    * @param idProjeto O id do projeto
    * @return Uma lista com as descricoes de todos os requisitos atrasados
    */
   public List<String> selectRequisitoAtrasado(int idProjeto) {
        List<String> list = new ArrayList<String>();
        String select = "SELECT descricao FROM " + TABLE_REQUISITOS_ATRASADOS + " WHERE (idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        
        try {
          cursor = this.db.rawQuery(select, null);
          if (cursor.moveToFirst()) 
          {
            do {
              list.add(cursor.getString(0));
            } while (cursor.moveToNext());
          }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
              cursor.close();
        }
        return list;
     }
   
   /**
    * Select de todos os detalhes de um projeto
    * 
    * @param titulo O titulo do projeto
    * @return Um objeto projeto com todas as suas informacoes
    */
   public Projeto selectProjeto(String titulo) {  
      String select = "SELECT * FROM " + TABLE_PROJETOS + " WHERE (titulo = '" + titulo + "')";
      Cursor cursor = null;
      Projeto projeto = null;
      
      try {
        cursor = this.db.rawQuery(select, null);
        if (cursor.moveToFirst()) 
        {
             projeto = new Projeto(cursor.getString(1), cursor.getString(2), cursor.getString(3),
                     cursor.getString(4), cursor.getString(5));
             projeto.setId(cursor.getInt(0));
             projeto.setData(cursor.getString(6));
        }
      }
      catch (Exception e) {
          Log.v(select, e.getMessage(), e);
          e.printStackTrace();
      } finally {
          if (cursor != null && !cursor.isClosed())
            cursor.close();
      }
      return projeto;
   }
   
   /**
    * Select do id de um projeto
    * 
    * @param titulo O titulo do projeto
    * @return O id do projeto
    */
   public int selectIdProjeto(String titulo) {  
      String select = "SELECT id FROM " + TABLE_PROJETOS + " WHERE (titulo = '" + titulo + "')";
      Cursor cursor = null;
      int idProjeto = 0;
      
      try {
        cursor = this.db.rawQuery(select, null);
        if (cursor.moveToFirst()) 
        {     
          idProjeto = cursor.getInt(0);
        }
      }
      catch (Exception e) {
          Log.v(select, e.getMessage(), e);
          e.printStackTrace();
      } finally {
          if (cursor != null && !cursor.isClosed())
            cursor.close();
      }
      return idProjeto;
   }
   
   /**
    * Select que verifica se um projeto ja existe pelo seu titulo.
    * 
    * @param titulo O titulo do projeto
    * @return True se um projeto com o mesmo titulo ja existe
    */
   public boolean selectProjetoExistente(String titulo)
   {
       String select = "SELECT id FROM " + TABLE_PROJETOS + " WHERE (titulo = '" + titulo + "')";
       Cursor cursor = null;
       int cont = 0;
       try {
         cursor = this.db.rawQuery(select, null);     
         if (cursor.moveToFirst()) 
            {
           do {
             cont++;             
              }while (cursor.moveToNext());
            }
       }
       catch (Exception e) {
           Log.v(select, e.getMessage(), e);
           e.printStackTrace();
       } finally {
           if (cursor != null && !cursor.isClosed())
             cursor.close();
       }
       return (cont > 0);
   }
   
   /**
    * Select do nivel de experiencia do usuario.
    * 
    * @param idProjeto O id do projeto
    * @return O nivel de experiencia do usuario
    */
   public int selectExperienciaUsuario(int idProjeto)
   {
     String select = "SELECT experiencia FROM " + TABLE_CARACTERISTICAS_USUARIO + " WHERE (idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        int experiencia = 0;
        
        try {
          cursor = this.db.rawQuery(select, null);
          if (cursor.moveToFirst()) 
          {
            experiencia = cursor.getInt(0);
          }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
              cursor.close();
        }
        return experiencia;     
   }
   
   /**
    * Select do nivel de pericia do usuario.
    * 
    * @param idProjeto O id do projeto
    * @return O nivel de pericia do usuario
    */
   public int selectPericiaUsuario(int idProjeto)
   {
     String select = "SELECT pericia FROM " + TABLE_CARACTERISTICAS_USUARIO + " WHERE (idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        int pericia = 0;
        
        try {
          cursor = this.db.rawQuery(select, null);
          if (cursor.moveToFirst()) 
          {
            pericia = cursor.getInt(0);
          }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
              cursor.close();
        }
        return pericia;     
   }
   
   /**
    * Select do nivel de treinamento do usuario.
    * 
    * @param idProjeto O id do projeto
    * @return O nivel de treinamento do usuario
    */
   public int selectTreinamentoUsuario(int idProjeto)
   {
     String select = "SELECT treinamento FROM " + TABLE_CARACTERISTICAS_USUARIO + " WHERE (idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        int treinamento = 0;
        
        try {
          cursor = this.db.rawQuery(select, null);
          if (cursor.moveToFirst()) 
          {
            treinamento = cursor.getInt(0);
          }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
              cursor.close();
        }
        return treinamento;     
   }
   
   /**
    * Select todas as hipoteses de um projeto
    * 
    * @param idProjeto O id do projeto
    * @return Uma lista com a descricao de todas as hipoteses do projeto
    */
   public List<String> selectHipotese(int idProjeto)
   {
        List<String> list = new ArrayList<String>();
        String select = "SELECT descricao FROM " + TABLE_HIPOTESES + " WHERE (idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        
        try {
          cursor = this.db.rawQuery(select, null);
          if (cursor.moveToFirst()) 
          {
            do {
              list.add(cursor.getString(0));
            } while (cursor.moveToNext());
          }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
              cursor.close();
        }
        return list;
   }
   
   /**
    * Select de uma hipotese por sua descricao.
    * 
    * @param descricao A descricao da hipotese
    * @param idProjeto O id do projeto
    * @return O id da hipotese
    */
   public int selectHipotesePorDescricao(String descricao, int idProjeto)
   {
     String select = "SELECT id FROM " + TABLE_HIPOTESES + " WHERE (descricao = '" + descricao + "' AND idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        int idHipotese = 0;
        
        try {
          cursor = this.db.rawQuery(select, null);
          if (cursor.moveToFirst()) 
          {
            idHipotese = cursor.getInt(0);
          }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
              cursor.close();
        }
        return idHipotese;     
   }
   
   /**
    * Select da data de uma hipotese.
    * 
    * @param descricao A descricao da hipotese
    * @param idProjeto O id do projeto
    * @return A data da hipotese
    */
   public String selectDataHipotese(String descricao, int idProjeto)
   {
     String select = "SELECT data FROM " + TABLE_HIPOTESES + " WHERE (descricao = '" + descricao + "' AND idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        String dataHipotese = "";
        
        try {
          cursor = this.db.rawQuery(select, null);
          if (cursor.moveToFirst()) 
          {
            dataHipotese = cursor.getString(0);
          }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
              cursor.close();
        }
        return dataHipotese;        
   }

   /**
    * Select da versao de uma hipotese.
    * 
    * @param descricao A descricao da hipotese
    * @param idProjeto O id do projeto
    * @return A versao da hipotese
    */
   public int selectVersaoHipotese(String descricao, int idProjeto)
   {
     String select = "SELECT versao FROM " + TABLE_HIPOTESES + " WHERE (descricao = '" + descricao + "' AND idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        int versaoHipotese = 0;
        
        try {
          cursor = this.db.rawQuery(select, null);
          if (cursor.moveToFirst()) 
          {
            versaoHipotese = cursor.getInt(0);
          }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
              cursor.close();
        }
        return versaoHipotese;       
   }

    /**
     * Select da subversao de uma hipotese.
     *
     * @param descricao A descricao da hipotese
     * @param idProjeto O id do projeto
     * @return A subversao da hipotese
     */
    public int selectSubversaoHipotese(String descricao, int idProjeto)
    {
        String select = "SELECT subversao FROM " + TABLE_HIPOTESES + " WHERE (descricao = '" + descricao + "' AND idprojeto = " + idProjeto + ")";
        Cursor cursor = null;
        int subversaoHipotese = 0;

        try {
            cursor = this.db.rawQuery(select, null);
            if (cursor.moveToFirst())
            {
                subversaoHipotese = cursor.getInt(0);
            }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
                cursor.close();
        }
        return subversaoHipotese;
    }

   /**
    * Select do autor de uma hipotese.
    * 
    * @param descricao A descricao da hipotese
    * @param idProjeto O id do projeto
    * @return O autor da hipotese
    */
   public String selectAutorHipotese(String descricao, int idProjeto)
   {
     String select = "SELECT autor FROM " + TABLE_HIPOTESES + " WHERE (descricao = '" + descricao + "' AND idprojeto = " + idProjeto + ")";
     Cursor cursor = null;
     String autorHipotese = "";
        
     try {
         cursor = this.db.rawQuery(select, null);
         if (cursor.moveToFirst()) 
        {
           autorHipotese = cursor.getString(0);
        }
     }
     catch (Exception e) {
        Log.v(select, e.getMessage(), e);
        e.printStackTrace();
     } finally {
        if (cursor != null && !cursor.isClosed())
         cursor.close();
     }
    return autorHipotese;
   }
   
   /**
    * Select do numero de um requisito.
    * 
    * @param descricao A descricao do requisito
    * @param idProjeto O id do projeto
    * @return O numero do requisito
    */
   public int selectNumeroRequisito(String descricao, int idProjeto)
   {
     int idRequisito = selectRequisitoPorDescricao(descricao, idProjeto);
     String select = "SELECT numero FROM " + TABLE_PROJETO_REQUISITOS + " WHERE (idrequisito = " + idRequisito + " AND idprojeto = " + idProjeto + ")";
     
     Cursor cursor = null;
     int numero = 0;
        
     try {
         cursor = this.db.rawQuery(select, null);
         if (cursor.moveToFirst()) 
        {
           numero = cursor.getInt(0);
        }
     }
     catch (Exception e) {
        Log.v(select, e.getMessage(), e);
        e.printStackTrace();
     } finally {
        if (cursor != null && !cursor.isClosed())
         cursor.close();
     }
    return numero;   
   }
   
   /**
    * Select do numero de um requisito.
    * 
    * @param idProjeto O id do projeto
    * @param idRequisito O id do requisito
    * @return O numero do requisito
    */
   public int selectNumeroRequisito(int idProjeto, int idRequisito)
   {
     String select = "SELECT numero FROM " + TABLE_PROJETO_REQUISITOS + " WHERE (idrequisito = " + idRequisito + " AND idprojeto = " + idProjeto + ")";
     
     Cursor cursor = null;
     int numero = 0;
        
     try {
         cursor = this.db.rawQuery(select, null);
         if (cursor.moveToFirst()) 
        {
           numero = cursor.getInt(0);
        }
     }
     catch (Exception e) {
        Log.v(select, e.getMessage(), e);
        e.printStackTrace();
     } finally {
        if (cursor != null && !cursor.isClosed())
         cursor.close();
     }
    return numero;  
   }
   
   /**
    * Select do numero de um requisito atrasado.
    * 
    * @param descricao A descricao do requisito atrasado
    * @param idProjeto O id do projeto
    * @return O numero do requisito atrasado
    */
   public int selectNumeroRequisitoAtrasado(String descricao, int idProjeto)
   {
     int idRequisito = selectRequisitoAtrasadoPorDescricao(descricao, idProjeto);
     String select = "SELECT numero FROM " + TABLE_PROJETO_REQUISITOS_ATRASADOS + " WHERE (idrequisito = " + idRequisito + " AND idprojeto = " + idProjeto + ")";
     
     Cursor cursor = null;
     int numero = 0;
        
     try {
         cursor = this.db.rawQuery(select, null);
         if (cursor.moveToFirst()) 
        {
           numero = cursor.getInt(0);
        }
     }
     catch (Exception e) {
        Log.v(select, e.getMessage(), e);
        e.printStackTrace();
     } finally {
        if (cursor != null && !cursor.isClosed())
         cursor.close();
     }
    return numero;   
   }
   
   /**
    * Select de todos os numeros dos requisitos.
    * 
    * @param idProjeto O id do projeto
    * @return Uma lista com todos os numeros dos requisitos
    */
   public List<Integer> selectAllNumerosRequisitos(int idProjeto)
   {
     List<Integer> list = new ArrayList<Integer>();
        Cursor cursor = null;
        
        try {
          cursor = this.db.query(TABLE_PROJETO_REQUISITOS , new String[] { "numero" },"idprojeto =?", new String[] {String.valueOf(idProjeto)}, null, null, null); 
          if (cursor.moveToFirst()) 
          {
            do {
              list.add( cursor.getInt(0));
            } while (cursor.moveToNext());
          }
        }
        catch (Exception e) {
            Log.v("Select todos os numeros requisitos", e.getMessage(), e);
            e.printStackTrace();
        } 
        finally{
          if (cursor != null && !cursor.isClosed()) {
            cursor.close();
          }
        }
        return list;
   }
   
   /**
    * Select de um requisito pelo seu numero.
    * 
    * @param idProjeto O id do projeto
    * @param numero O numero do requisito
    * @return O id do requisito
    */
   public int selectRequisitoPorNumero(int idProjeto, int numero)
   {
     String select = "SELECT idrequisito FROM " + TABLE_PROJETO_REQUISITOS + " WHERE (numero = " + numero + " AND idprojeto = " + idProjeto + ")";
     
     Cursor cursor = null;
     int idRequisito = 0;
        
     try {
         cursor = this.db.rawQuery(select, null);
         if (cursor.moveToFirst()) 
        {
           idRequisito = cursor.getInt(0);
        }
     }
     catch (Exception e) {
        Log.v(select, e.getMessage(), e);
        e.printStackTrace();
     } finally {
        if (cursor != null && !cursor.isClosed())
         cursor.close();
     }
    return idRequisito; 
   }
   
   /**
    * Select de todas as dependencias de um projeto.
    * 
    * @param idProjeto O id do projeto
    * @return Uma lista de objetos Dependencia com todas as informacoes sobre as dependencias.
    */
   public List<Dependencia> selectDependencias(int idProjeto)
   {
     List<Dependencia> list = new ArrayList<Dependencia>();
     
     String select = "SELECT idprimeirorequisito, idsegundorequisito FROM " + TABLE_DEPENDENCIAS + " WHERE (idprojeto = " + idProjeto + ")";

     Cursor cursor = null;
        
        try {
          cursor = this.db.rawQuery(select, null);
          if (cursor.moveToFirst()) 
          {
            do {
              list.add(new Dependencia(cursor.getInt(0), cursor.getInt(1)));
            } while (cursor.moveToNext());
          }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
              cursor.close();
        }
        return list;
   }
   
   /**
    * Retorna o id do ultimo projeto criado.
    * 
    * @return O id do ultimo projeto criado
    */
   public int getIdUltimoProjeto()
    {
        String select = "SELECT id FROM " + TABLE_PROJETOS;
        int id = 0;
        Cursor cursor = null;
        try {
          cursor = this.db.rawQuery(select, null);        
          if (cursor.moveToFirst()) 
          {
            do {
              id = cursor.getInt(0);             
            }while (cursor.moveToNext());
          }
        }
        catch (Exception e) {
            Log.v(select, e.getMessage(), e);
            e.printStackTrace();
        } finally {
            if (cursor != null && !cursor.isClosed())
              cursor.close();
        }
        return id;
    }
   
   /**
    * Retorna o id do ultimo requisito adicionado.
    * 
    * @return O id do ultimo requisito adicionado
    */
   public int getIdUltimoRequisito()
   {
     String select = "SELECT id FROM " + TABLE_REQUISITOS;
       int id = 0;
       Cursor cursor = null;
       try {
         cursor = this.db.rawQuery(select, null);        
         if (cursor.moveToFirst()) 
         {
           do {
             id = cursor.getInt(0);             
           }while (cursor.moveToNext());
         }
       }
       catch (Exception e) {
           Log.v(select, e.getMessage(), e);
           e.printStackTrace();
       } finally {
           if (cursor != null && !cursor.isClosed())
             cursor.close();
       }
       return id;
   }
   
   /**
    * Retorna o id do ultimo requisito atrasado adicionado.
    * 
    * @return O id do ultimo requisito atrasado adicionado
    */
   public int getIdUltimoRequisitoAtrasado()
   {
     String select = "SELECT id FROM " + TABLE_REQUISITOS_ATRASADOS;
       int id = 0;
       Cursor cursor = null;
       try {
         cursor = this.db.rawQuery(select, null);        
         if (cursor.moveToFirst()) 
         {
           do {
             id = cursor.getInt(0);             
           }while (cursor.moveToNext());
         }
       }
       catch (Exception e) {
           Log.v(select, e.getMessage(), e);
           e.printStackTrace();
       } finally {
           if (cursor != null && !cursor.isClosed())
             cursor.close();
       }
       return id;
   }
   
   /**
    * Retorna o numero do ultimo requisito adicionado.
    * 
    * @param idProjeto O id do projeto
    * @return O numero do ultimo requisito adicionado
    */
   public int getNumeroUltimoRequisito(int idProjeto)
   {
     String select = "SELECT numero FROM " + TABLE_PROJETO_REQUISITOS + " WHERE idprojeto = " + idProjeto;
       int numero = 0;
       Cursor cursor = null;
       try {
         cursor = this.db.rawQuery(select, null);        
         if (cursor.moveToFirst()) 
         {
           do {
             numero = cursor.getInt(0);             
           }while (cursor.moveToNext());          
         }
       }
       catch (Exception e) {
           Log.v(select, e.getMessage(), e);
           e.printStackTrace();
       } finally {
           if (cursor != null && !cursor.isClosed())
             cursor.close();
       }
       return numero;
   }
   
   /**
    * Retorna o numero do ultimo requisito atrasado adicionado.
    * 
    * @param idProjeto O id do projeto
    * @return O numero do ultimo requisito atrasado adicionado
    */
   public int getNumeroUltimoRequisitoAtrasado(int idProjeto)
   {
     String select = "SELECT numero FROM " + TABLE_PROJETO_REQUISITOS_ATRASADOS + " WHERE idprojeto = " + idProjeto;
       int numero = 0;
       Cursor cursor = null;
       try {
         cursor = this.db.rawQuery(select, null);        
         if (cursor.moveToFirst()) 
         {
           do {
             numero = cursor.getInt(0);             
           }while (cursor.moveToNext());            
         }
       }
       catch (Exception e) {
           Log.v(select, e.getMessage(), e);
           e.printStackTrace();
       } finally {
           if (cursor != null && !cursor.isClosed())
             cursor.close();
       }
       return numero;
   }
    
   /**
    * Classe que implementa metodos extendidos por SQLiteOpenHelper,
    * essenciais para o funcionamento do banco de dados do aplicativo.
    * 
    * @author Vinicius Rodrigues Silva <vinicinhopolaco@yahoo.com.br>
    * @version 1.0
    */
   private static class OpenHelper extends SQLiteOpenHelper {

      OpenHelper(Context context) {
         super(context, DATABASE_NAME, null, DATABASE_VERSION);
      }
      
      //O Titulo do projeto e chave primaria.
      @Override
      public void onCreate(SQLiteDatabase db) {
       try{ 
         db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_PROJETOS  + "(id INTEGER PRIMARY KEY autoincrement, titulo TEXT, descricao TEXT, beneficios TEXT, objetivos TEXT, publicoalvo TEXT, data TEXT)");
         db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_REQUISITOS  + "(id INTEGER PRIMARY KEY autoincrement, descricao TEXT, data TEXT, prioridade INTEGER, versao INTEGER, subversao INTEGER, autor TEXT, idprojeto INTEGER, FOREIGN KEY(idprojeto) REFERENCES " + TABLE_PROJETOS + "(id) ON DELETE CASCADE)");
         db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_REQUISITOS_ATRASADOS  + "(id INTEGER PRIMARY KEY autoincrement, descricao TEXT,  data TEXT, prioridade INTEGER, versao INTEGER, subversao INTEGER, autor TEXT, idprojeto INTEGER, FOREIGN KEY(idprojeto) REFERENCES " + TABLE_PROJETOS + "(id) ON DELETE CASCADE)");
         db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_CARACTERISTICAS_USUARIO  + "(id INTEGER PRIMARY KEY autoincrement, experiencia INTEGER DEFAULT '2',  pericia INTEGER DEFAULT '2', treinamento INTEGER DEFAULT '0', idprojeto INTEGER, FOREIGN KEY(idprojeto) REFERENCES " + TABLE_PROJETOS + "(id) ON DELETE CASCADE)");
         db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_HIPOTESES  + "(id INTEGER PRIMARY KEY autoincrement, descricao TEXT, data TEXT, versao INTEGER, subversao INTEGER, autor TEXT, idprojeto INTEGER, FOREIGN KEY(idprojeto) REFERENCES " + TABLE_PROJETOS + "(id) ON DELETE CASCADE)");
         db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_PROJETO_REQUISITOS  + "(id INTEGER PRIMARY KEY autoincrement, numero INTEGER, idprojeto INTEGER, idrequisito INTEGER, FOREIGN KEY(idprojeto) REFERENCES " + TABLE_PROJETOS + "(id) ON DELETE CASCADE, FOREIGN KEY(idrequisito) REFERENCES " + TABLE_REQUISITOS + "(id) ON DELETE CASCADE)");
         db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_PROJETO_REQUISITOS_ATRASADOS  + "(id INTEGER PRIMARY KEY autoincrement, numero INTEGER, idprojeto INTEGER, idrequisito INTEGER, FOREIGN KEY(idprojeto) REFERENCES " + TABLE_PROJETOS + "(id) ON DELETE CASCADE, FOREIGN KEY(idrequisito) REFERENCES " + TABLE_REQUISITOS_ATRASADOS + "(id) ON DELETE CASCADE)");
         db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_DEPENDENCIAS  + "(id INTEGER PRIMARY KEY autoincrement, idprojeto INTEGER, idprimeirorequisito INTEGER, idsegundorequisito INTEGER, FOREIGN KEY(idprojeto) REFERENCES " + TABLE_PROJETOS + "(id) ON DELETE CASCADE, FOREIGN KEY(idprimeirorequisito) REFERENCES " + TABLE_REQUISITOS + "(id) ON DELETE CASCADE, FOREIGN KEY(idsegundorequisito) REFERENCES " + TABLE_REQUISITOS + "(id) ON DELETE CASCADE)");
       }
       catch (Exception e) {
             Log.v("Create table", e.getMessage(), e);
             e.printStackTrace();
         } 
      }

      @Override
      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
       db.beginTransaction();
       
       try {
         Log.v("Banco de dados", "Atualizando banco de dados..."); 
         onCreate(db);
        
         //db.execSQL("ALTER table " + TABLE_REQUISITOS_ATRASADOS + " ADD COLUMN titulo TEXT");
                 
         
         //Atualizar caracteristicas do usuario para os projetos ja existentes.
         //db.execSQL(String.format( "INSERT INTO %s (%s) SELECT %s from %s", TABLE_CARACTERISTICAS_USUARIO, "idprojeto", "id", TABLE_PROJETOS));
                 
         db.setTransactionSuccessful();
             
       }
       catch (Exception e) {
             Log.v("Erro ao atualizar banco de dados", e.getMessage(), e);
             e.printStackTrace();
       }
       finally
       {  
         db.endTransaction();
       }       
      }
      
      @Override
      public void onOpen(SQLiteDatabase db) {
         super.onOpen(db);
         if (!db.isReadOnly()) {
         // Enable foreign key constraints
         db.execSQL("PRAGMA foreign_keys = ON;");
         }
     }
   }
    
   /**
    * Retorna uma instancia desta classe, implementando o padrao Singleton.
    * 
    * @param context O contexto onde sera usada a instancia
    * @return A instancia da classe
    */
   public static BDGerenciador getInstance(Context context)
        {
            if (instancia == null)
            {
                instancia = new BDGerenciador(context);
            }
            return instancia;
        }
   
}




Java Source Code List

com.vrs.reqdroid.activities.DrawerPrincipalActivity.java
com.vrs.reqdroid.activities.MainActivity.java
com.vrs.reqdroid.activities.TelaAbrirProjetoActivity.java
com.vrs.reqdroid.activities.TelaEditarEscopoActivity.java
com.vrs.reqdroid.activities.TelaEscopoActivity.java
com.vrs.reqdroid.activities.TelaHipoteseDetalhadaActivity.java
com.vrs.reqdroid.activities.TelaNovoProjetoActivity.java
com.vrs.reqdroid.activities.TelaPrincipalActivity.java
com.vrs.reqdroid.activities.TelaRequisitoAtrasadoDetalhadoActivity.java
com.vrs.reqdroid.activities.TelaRequisitoDetalhadoActivity.java
com.vrs.reqdroid.activities.TelaSobreActivity.java
com.vrs.reqdroid.dao.BDGerenciador.java
com.vrs.reqdroid.dao.IOperacoesBD.java
com.vrs.reqdroid.fragments.CaracteristicasUsuarioFragment.java
com.vrs.reqdroid.fragments.DependenciasFragment.java
com.vrs.reqdroid.fragments.HipotesesEDependenciasFragment.java
com.vrs.reqdroid.fragments.HipotesesFragment.java
com.vrs.reqdroid.fragments.ProjetosListFragment.java
com.vrs.reqdroid.fragments.RequisitosAtrasadosFragment.java
com.vrs.reqdroid.fragments.RequisitosFragment.java
com.vrs.reqdroid.models.Dependencia.java
com.vrs.reqdroid.models.Projeto.java
com.vrs.reqdroid.util.AlertsUtil.java
com.vrs.reqdroid.util.DependenciasUtils.java
com.vrs.reqdroid.util.DrawerPrincipalAdapter.java
com.vrs.reqdroid.util.HipotesesUtils.java
com.vrs.reqdroid.util.IRequisito.java
com.vrs.reqdroid.util.ListViewDependenciasAdapter.java
com.vrs.reqdroid.util.ListViewHipotesesAdapter.java
com.vrs.reqdroid.util.ListViewProjetosAdapter.java
com.vrs.reqdroid.util.ListViewRequisitosAdapter.java
com.vrs.reqdroid.util.ListViewRequisitosAtrasadosAdapter.java
com.vrs.reqdroid.util.ProjetoUtils.java
com.vrs.reqdroid.util.RequisitosAtrasadosUtils.java
com.vrs.reqdroid.util.RequisitosUtils.java