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