package co.smartreceipts.android.sync.drive.managers; import javax.inject.Inject; import co.smartreceipts.android.di.scopes.ApplicationScope; import co.smartreceipts.android.model.Category; import co.smartreceipts.android.model.Column; import co.smartreceipts.android.model.Distance; import co.smartreceipts.android.model.PaymentMethod; import co.smartreceipts.android.model.Receipt; import co.smartreceipts.android.model.Trip; import co.smartreceipts.android.persistence.database.controllers.impl.CSVTableController; import co.smartreceipts.android.persistence.database.controllers.impl.CategoriesTableController; import co.smartreceipts.android.persistence.database.controllers.impl.DistanceTableController; import co.smartreceipts.android.persistence.database.controllers.impl.PDFTableController; import co.smartreceipts.android.persistence.database.controllers.impl.PaymentMethodsTableController; import co.smartreceipts.android.persistence.database.controllers.impl.ReceiptTableController; import co.smartreceipts.android.persistence.database.controllers.impl.TripTableController; import co.smartreceipts.android.sync.drive.listeners.DatabaseBackupListener; import co.smartreceipts.android.sync.drive.listeners.ReceiptBackupListener; import co.smartreceipts.android.sync.drive.managers.DriveDatabaseManager; import co.smartreceipts.android.sync.drive.managers.DriveReceiptsManager; @ApplicationScope public class GoogleDriveTableManager { @Inject TripTableController tripTableController; @Inject ReceiptTableController receiptTableController; @Inject CategoriesTableController categoriesTableController; @Inject CSVTableController csvTableController; @Inject PDFTableController pdfTableController; @Inject PaymentMethodsTableController paymentMethodsTableController; @Inject DistanceTableController distanceTableController; private DatabaseBackupListener<Trip> tripDatabaseBackupListener; private ReceiptBackupListener receiptDatabaseBackupListener; private DatabaseBackupListener<Distance> distanceDatabaseBackupListener; private DatabaseBackupListener<PaymentMethod> paymentMethodDatabaseBackupListener; private DatabaseBackupListener<Category> categoryDatabaseBackupListener; private DatabaseBackupListener<Column<Receipt>> csvColumnDatabaseBackupListener; private DatabaseBackupListener<Column<Receipt>> pdfColumnDatabaseBackupListener; @Inject public GoogleDriveTableManager() { } public void initBackupListeners(DriveDatabaseManager driveDatabaseManager, DriveReceiptsManager driveReceiptsManager) { tripDatabaseBackupListener = new DatabaseBackupListener<>(driveDatabaseManager); receiptDatabaseBackupListener = new ReceiptBackupListener(driveDatabaseManager, driveReceiptsManager); distanceDatabaseBackupListener = new DatabaseBackupListener<>(driveDatabaseManager); paymentMethodDatabaseBackupListener = new DatabaseBackupListener<>(driveDatabaseManager); categoryDatabaseBackupListener = new DatabaseBackupListener<>(driveDatabaseManager); csvColumnDatabaseBackupListener = new DatabaseBackupListener<>(driveDatabaseManager); pdfColumnDatabaseBackupListener = new DatabaseBackupListener<>(driveDatabaseManager); } public void onConnected() { tripTableController.subscribe(tripDatabaseBackupListener); receiptTableController.subscribe(receiptDatabaseBackupListener); distanceTableController.subscribe(distanceDatabaseBackupListener); paymentMethodsTableController.subscribe(paymentMethodDatabaseBackupListener); categoriesTableController.subscribe(categoryDatabaseBackupListener); csvTableController.subscribe(csvColumnDatabaseBackupListener); pdfTableController.subscribe(pdfColumnDatabaseBackupListener); } public void onConnectionSuspended() { tripTableController.unsubscribe(tripDatabaseBackupListener); receiptTableController.unsubscribe(receiptDatabaseBackupListener); distanceTableController.unsubscribe(distanceDatabaseBackupListener); paymentMethodsTableController.unsubscribe(paymentMethodDatabaseBackupListener); categoriesTableController.unsubscribe(categoryDatabaseBackupListener); csvTableController.unsubscribe(csvColumnDatabaseBackupListener); pdfTableController.unsubscribe(pdfColumnDatabaseBackupListener); } }