package com.amazonaws.mobileconnectors.cognito; import android.util.Log; import com.amazonaws.mobileconnectors.cognito.Dataset.SyncCallback; import com.amazonaws.mobileconnectors.cognito.exceptions.DataStorageException; import java.util.ArrayList; import java.util.List; /** * A default implementation of SyncCallback. All methods but onConflict are * stubbed with logging. onConflict resolves conflicts using a 'last writer * wins' strategy */ public class DefaultSyncCallback implements SyncCallback { private static final String TAG = "DefaultSyncCallback"; @Override public void onSuccess(Dataset dataset, List<Record> updatedRecords) { Log.i(TAG, String.format("%d records synced successfully.", updatedRecords.size())); } @Override public boolean onConflict(Dataset dataset, List<SyncConflict> conflicts) { Log.i(TAG, "onConflict resolved with DefaultSyncCallback's default implementation (last writer wins)."); List<Record> resolvedConflicts = new ArrayList<Record>(conflicts.size()); for (SyncConflict conflict : conflicts) { resolvedConflicts.add(conflict.resolveWithLastWriterWins()); } dataset.resolve(resolvedConflicts); return true; } @Override public boolean onDatasetDeleted(Dataset dataset, String datasetName) { Log.w(TAG, "onDatasetDeleted was called and DefaultSyncCallback doesn't provide an implementation for it"); return false; } @Override public boolean onDatasetsMerged(Dataset dataset, List<String> datasetNames) { Log.w(TAG, "onDatasetsMerged was called and DefaultSyncCallback doesn't provide an implementation for it"); return false; } @Override public void onFailure(DataStorageException dse) { Log.e(TAG, "Failure occurred during sync", dse); } }