/**
  * Merges a remote pista into local database, overridign the local pista.
  *
  * <p>WARNING: To be used on result of a remote insert/update; this method 'mark' the object as
  * remote.
  *
  * @param pista The local pista to be override.
  * @param pistaRemote The remote pista to be saved.
  * @return The saved pista or null if something goes wrong.
  */
 public Pista merge(Pista pista, Pista pistaRemote) {
   SQLiteDatabase db = dbHelper.getWritableDatabase();
   try {
     // delete local pista
     delete(db, pista.getUuid());
     // insert remote pista
     pistaRemote.setRemote(true);
     pistaRemote.setChanged(false);
     insert(db, pistaRemote);
     return getPista(pistaRemote.getUuid());
   } catch (Exception ex) {
     Log.e(TAG, "Error merging pistas.", ex);
   } finally {
     dbHelper.close(db);
   }
   return null;
 }
 Pista getPista(Cursor cursor, boolean byColumnAlias) {
   Pista pista = new Pista();
   pista.setUuid(
       readCursor(
           cursor,
           byColumnAlias ? Columns._UUID.getColumnAlias() : Columns._UUID.getColumnName(),
           String.class));
   pista.setNome(
       readCursor(
           cursor,
           byColumnAlias ? Columns._NOME.getColumnAlias() : Columns._NOME.getColumnName(),
           String.class));
   pista.setDescricao(
       readCursor(
           cursor,
           byColumnAlias
               ? Columns._DESCRICAO.getColumnAlias()
               : Columns._DESCRICAO.getColumnName(),
           String.class));
   pista.setWebsite(
       readCursor(
           cursor,
           byColumnAlias ? Columns._WEBSITE.getColumnAlias() : Columns._WEBSITE.getColumnName(),
           String.class));
   pista.setFacebook(
       readCursor(
           cursor,
           byColumnAlias ? Columns._FACEBOOK.getColumnAlias() : Columns._FACEBOOK.getColumnName(),
           String.class));
   pista.setVideo(
       readCursor(
           cursor,
           byColumnAlias ? Columns._VIDEO.getColumnAlias() : Columns._VIDEO.getColumnName(),
           String.class));
   pista.setFoto(
       readCursor(
           cursor,
           byColumnAlias ? Columns._FOTO.getColumnAlias() : Columns._FOTO.getColumnName(),
           String.class));
   pista.setFundo(
       readCursor(
           cursor,
           byColumnAlias ? Columns._FUNDO.getColumnAlias() : Columns._FUNDO.getColumnName(),
           Boolean.class));
   pista.setResponsavel(
       readCursor(
           cursor,
           byColumnAlias
               ? Columns._RESPONSAVEL_UUID.getColumnAlias()
               : Columns._RESPONSAVEL_UUID.getColumnName(),
           String.class));
   pista.setRemote(
       readCursor(
           cursor,
           byColumnAlias ? Columns._REMOTE.getColumnAlias() : Columns._REMOTE.getColumnName(),
           Boolean.class));
   pista.setChanged(
       readCursor(
           cursor,
           byColumnAlias ? Columns._CHANGED.getColumnAlias() : Columns._CHANGED.getColumnName(),
           Boolean.class));
   return pista;
 }