package co.smartreceipts.android.sync.drive.listeners;
import android.support.annotation.NonNull;
import com.google.common.base.Preconditions;
import co.smartreceipts.android.persistence.database.controllers.impl.StubTableEventsListener;
import co.smartreceipts.android.persistence.database.operations.DatabaseOperationMetadata;
import co.smartreceipts.android.persistence.database.operations.OperationFamilyType;
import co.smartreceipts.android.sync.drive.managers.DriveDatabaseManager;
public class DatabaseBackupListener<ModelType> extends StubTableEventsListener<ModelType> {
protected final DriveDatabaseManager mDriveDatabaseManager;
public DatabaseBackupListener(@NonNull DriveDatabaseManager driveDatabaseManager) {
mDriveDatabaseManager = Preconditions.checkNotNull(driveDatabaseManager);
}
@Override
public void onInsertSuccess(@NonNull ModelType modelType, @NonNull DatabaseOperationMetadata databaseOperationMetadata) {
if (databaseOperationMetadata.getOperationFamilyType() != OperationFamilyType.Sync) {
mDriveDatabaseManager.syncDatabase();
}
}
@Override
public void onUpdateSuccess(@NonNull ModelType oldT, @NonNull ModelType newT, @NonNull DatabaseOperationMetadata databaseOperationMetadata) {
if (databaseOperationMetadata.getOperationFamilyType() != OperationFamilyType.Sync) {
mDriveDatabaseManager.syncDatabase();
}
}
@Override
public void onDeleteSuccess(@NonNull ModelType modelType, @NonNull DatabaseOperationMetadata databaseOperationMetadata) {
if (databaseOperationMetadata.getOperationFamilyType() != OperationFamilyType.Sync) {
mDriveDatabaseManager.syncDatabase();
}
}
}