package com.boardgamegeek.service; import android.content.Context; import android.support.annotation.NonNull; import com.boardgamegeek.R; import com.boardgamegeek.io.Adapter; import com.boardgamegeek.io.ThingRequest; import com.boardgamegeek.io.ThingResponse; import com.boardgamegeek.model.persister.GamePersister; import com.boardgamegeek.provider.BggContract; import timber.log.Timber; public class SyncGame extends UpdateTask { private final int gameId; public SyncGame(int gameId) { this.gameId = gameId; } @NonNull @Override public String getDescription(Context context) { if (isValid()) { return context.getString(R.string.sync_msg_game_valid, String.valueOf(gameId)); } return context.getString(R.string.sync_msg_game_invalid); } @Override public boolean isValid() { return gameId != BggContract.INVALID_ID; } @Override public void execute(Context context) { ThingResponse response = new ThingRequest(Adapter.createForXml(), gameId).execute(); if (response.hasError()) { Timber.w("Failed syncing game ID=%s", gameId); } else { int rowCount = new GamePersister(context).save(response.getGames(), "Game " + gameId); Timber.i("Synced game ID=%s (%,d rows)", gameId, rowCount); } } }