package com.code44.finance.modules; import android.content.Context; import android.database.Cursor; import com.code44.finance.data.Query; import com.code44.finance.data.db.DBHelper; import com.code44.finance.data.db.Tables; import com.code44.finance.data.model.Currency; import com.code44.finance.data.providers.AccountsProvider; import com.code44.finance.data.providers.CategoriesProvider; import com.code44.finance.data.providers.CurrenciesProvider; import com.code44.finance.data.providers.TagsProvider; import com.code44.finance.data.providers.TransactionsProvider; import com.code44.finance.qualifiers.ApplicationContext; import com.code44.finance.qualifiers.Main; import com.code44.finance.services.StartupService; import com.code44.finance.utils.IOUtils; import javax.inject.Singleton; import dagger.Module; import dagger.Provides; @Module( library = true, complete = false, injects = { CurrenciesProvider.class, CategoriesProvider.class, TagsProvider.class, AccountsProvider.class, TransactionsProvider.class, StartupService.class } ) public class PersistenceModule { @Provides @Singleton public DBHelper provideDBHelper(@ApplicationContext Context context) { return new DBHelper(context); } @Provides @Singleton @Main public Currency provideMainCurrency(DBHelper dbHelper) { final Cursor cursor = Query.create() .projectionLocalId(Tables.Currencies.LOCAL_ID) .projection(Tables.Currencies.PROJECTION) .selection(Tables.Currencies.IS_DEFAULT.getName() + "=?", "1") .from(dbHelper.getWritableDatabase(), Tables.Currencies.TABLE_NAME) .execute(); final Currency currency = Currency.from(cursor); IOUtils.closeQuietly(cursor); return currency; } }