package co.smartreceipts.android.sync.drive.listeners; import android.support.annotation.NonNull; import com.google.common.base.Preconditions; import co.smartreceipts.android.model.Receipt; import co.smartreceipts.android.persistence.database.operations.DatabaseOperationMetadata; import co.smartreceipts.android.persistence.database.operations.OperationFamilyType; import co.smartreceipts.android.sync.drive.managers.DriveDatabaseManager; import co.smartreceipts.android.sync.drive.managers.DriveReceiptsManager; public class ReceiptBackupListener extends DatabaseBackupListener<Receipt> { private final DriveReceiptsManager mDriveReceiptsManager; public ReceiptBackupListener(@NonNull DriveDatabaseManager driveDatabaseManager, @NonNull DriveReceiptsManager driveReceiptsManager) { super(driveDatabaseManager); mDriveReceiptsManager = Preconditions.checkNotNull(driveReceiptsManager); } @Override public void onInsertSuccess(@NonNull Receipt receipt, @NonNull DatabaseOperationMetadata databaseOperationMetadata) { super.onInsertSuccess(receipt, databaseOperationMetadata); if (databaseOperationMetadata.getOperationFamilyType() != OperationFamilyType.Sync) { mDriveReceiptsManager.handleInsertOrUpdate(receipt); } } @Override public void onUpdateSuccess(@NonNull Receipt oldReceipt, @NonNull Receipt newReceipt, @NonNull DatabaseOperationMetadata databaseOperationMetadata) { if (newReceipt.getFile() != null) { mDriveDatabaseManager.syncDatabase(); } if (databaseOperationMetadata.getOperationFamilyType() != OperationFamilyType.Sync) { mDriveReceiptsManager.handleInsertOrUpdate(newReceipt); } } @Override public void onDeleteSuccess(@NonNull Receipt receipt, @NonNull DatabaseOperationMetadata databaseOperationMetadata) { super.onDeleteSuccess(receipt, databaseOperationMetadata); if (databaseOperationMetadata.getOperationFamilyType() != OperationFamilyType.Sync) { mDriveReceiptsManager.handleDelete(receipt); } } }