public static long salvar(Realizado realizado) throws Exception {
    long id = realizado.getId();

    realizado.trim();

    try {
      realizado.check();
    } catch (Exception e) {
      throw new Exception(e.getMessage());
    }

    if (id != 0) {
      atualizar(realizado);
    } else {
      id = inserir(realizado);
    }
    return id;
  }
 public static int atualizar(Realizado realizado) {
   ContentValues values = new ContentValues();
   values.put(Realizados.DESCRICAO, realizado.getDescricao());
   values.put(Realizados.USUARIO_ID, realizado.getUsuario().getId());
   if (realizado.getConta() != null) {
     values.put(Realizados.CONTA_ID, realizado.getConta().getId());
   } else {
     values.putNull(Realizados.CONTA_ID);
   }
   if (realizado.getContato() != null) {
     values.put(Realizados.CONTATO_ID, realizado.getContato().getId());
   } else {
     values.putNull(Realizados.CONTATO_ID);
   }
   if (realizado.getCategoria() != null) {
     values.put(Realizados.CATEGORIA_ID, realizado.getCategoria().getId());
   } else {
     values.putNull(Realizados.CATEGORIA_ID);
   }
   values.put(Realizados.DT_MOVIMENTO, CustomDateUtils.toSQLDate(realizado.getDt_movimento()));
   values.put(Realizados.VAL_MOVIMENTO, realizado.getVal_movimento());
   values.put(Realizados.TIPO_MOVIMENTO, realizado.getTipo_movimento());
   if (realizado.getPrevisto() != null) {
     values.put(Realizados.PREVISTO_ID, realizado.getPrevisto().getId());
   } else {
     values.putNull(Realizados.PREVISTO_ID);
   }
   String _id = String.valueOf(realizado.getId());
   String where = Realizados._ID + "=?";
   String[] whereArgs = new String[] {_id};
   int count = atualizar(NOME_TABELA, values, where, whereArgs);
   return count;
 }
 public static long inserir(Realizado realizado) {
   ContentValues values = new ContentValues();
   values.put(Realizados.DESCRICAO, realizado.getDescricao());
   values.put(Realizados.USUARIO_ID, realizado.getUsuario().getId());
   if (realizado.getConta() != null) {
     values.put(Realizados.CONTA_ID, realizado.getConta().getId());
   } else {
     values.putNull(Realizados.CONTA_ID);
   }
   if (realizado.getContato() != null) {
     values.put(Realizados.CONTATO_ID, realizado.getContato().getId());
   } else {
     values.putNull(Realizados.CONTATO_ID);
   }
   if (realizado.getCategoria() != null) {
     values.put(Realizados.CATEGORIA_ID, realizado.getCategoria().getId());
   } else {
     values.putNull(Realizados.CATEGORIA_ID);
   }
   values.put(Realizados.DT_MOVIMENTO, CustomDateUtils.toSQLDate(realizado.getDt_movimento()));
   values.put(Realizados.VAL_MOVIMENTO, realizado.getVal_movimento());
   values.put(Realizados.TIPO_MOVIMENTO, realizado.getTipo_movimento());
   if (realizado.getPrevisto() != null) {
     values.put(Realizados.PREVISTO_ID, realizado.getPrevisto().getId());
   } else {
     values.putNull(Realizados.PREVISTO_ID);
   }
   long id = inserir(NOME_TABELA, values);
   return id;
 }
  public static Realizado setDadosRealizado(Cursor c) {
    Realizado realizado = new Realizado();
    realizado.setId(c.getLong(c.getColumnIndex(Realizados._ID)));
    realizado.setDescricao(c.getString(c.getColumnIndex(Realizados.DESCRICAO)));
    realizado.setUsuario(
        UsuarioDAO.buscarUsuario(c.getLong(c.getColumnIndex(Realizados.USUARIO_ID))));
    realizado.setConta(
        ContaDAO.buscarConta(c.getLong(c.getColumnIndexOrThrow(Realizados.CONTA_ID))));
    realizado.setContato(
        ContatoDAO.buscarContato(c.getLong(c.getColumnIndexOrThrow(Realizados.CONTATO_ID))));
    realizado.setCategoria(
        CategoriaDAO.buscarCategoria(c.getLong(c.getColumnIndexOrThrow(Realizados.CATEGORIA_ID))));
    try {
      realizado.setDt_movimento(
          CustomDateUtils.toCalendar(
              c.getString(c.getColumnIndexOrThrow(Realizados.DT_MOVIMENTO))));
    } catch (IllegalArgumentException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (ParseException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    realizado.setVal_movimento(c.getDouble(c.getColumnIndexOrThrow(Realizados.VAL_MOVIMENTO)));
    realizado.setTipo_movimento(c.getString(c.getColumnIndexOrThrow(Realizados.TIPO_MOVIMENTO)));
    realizado.setPrevisto(
        PrevistoDAO.buscarPrevisto(c.getLong(c.getColumnIndexOrThrow(Realizados.PREVISTO_ID))));

    // TODO setar campos de tipo data
    return realizado;
  }