package co.smartreceipts.android.persistence.database.controllers.impl; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.google.common.base.Preconditions; import java.util.List; import co.smartreceipts.android.model.Trip; import co.smartreceipts.android.persistence.database.controllers.TableController; import co.smartreceipts.android.persistence.database.controllers.TableEventsListener; import co.smartreceipts.android.persistence.database.operations.DatabaseOperationMetadata; import co.smartreceipts.android.persistence.database.operations.OperationFamilyType; /** * A simple implementation of the {@link TableEventsListener} contract that will call {@link TripTableController#get()} * whenever we alter on of the underlying components in order to refresh our price data. * * @param <ModelType> the model object type that this will be used to create */ class RefreshTripPricesListener<ModelType> implements TableEventsListener<ModelType> { protected final TableController<Trip> mTripTableController; public RefreshTripPricesListener(@NonNull TableController<Trip> tripTableController) { mTripTableController = Preconditions.checkNotNull(tripTableController); } @Override public void onGetSuccess(@NonNull List<ModelType> list) { } @Override public void onGetFailure(@Nullable Throwable e) { } @Override public void onInsertSuccess(@NonNull ModelType modelType, @NonNull DatabaseOperationMetadata databaseOperationMetadata) { if (databaseOperationMetadata.getOperationFamilyType() != OperationFamilyType.Sync) { mTripTableController.get(); } } @Override public void onInsertFailure(@NonNull ModelType modelType, @Nullable Throwable e, @NonNull DatabaseOperationMetadata databaseOperationMetadata) { } @Override public void onUpdateSuccess(@NonNull ModelType oldT, @NonNull ModelType newT, @NonNull DatabaseOperationMetadata databaseOperationMetadata) { if (databaseOperationMetadata.getOperationFamilyType() != OperationFamilyType.Sync) { mTripTableController.get(); } } @Override public void onUpdateFailure(@NonNull ModelType oldT, @Nullable Throwable e, @NonNull DatabaseOperationMetadata databaseOperationMetadata) { } @Override public void onDeleteSuccess(@NonNull ModelType modelType, @NonNull DatabaseOperationMetadata databaseOperationMetadata) { if (databaseOperationMetadata.getOperationFamilyType() != OperationFamilyType.Sync) { mTripTableController.get(); } } @Override public void onDeleteFailure(@NonNull ModelType modelType, @Nullable Throwable e, @NonNull DatabaseOperationMetadata databaseOperationMetadata) { } }