diff --git a/app/src/androidTest/java/com/blogspot/e_kanivets/moneytracker/repo/RecordRepoTest.java b/app/src/androidTest/java/com/blogspot/e_kanivets/moneytracker/repo/RecordRepoTest.java index 092c9dd..4c4e988 100644 --- a/app/src/androidTest/java/com/blogspot/e_kanivets/moneytracker/repo/RecordRepoTest.java +++ b/app/src/androidTest/java/com/blogspot/e_kanivets/moneytracker/repo/RecordRepoTest.java @@ -47,7 +47,7 @@ public void testContentValues() throws Exception { expected.put(DbHelper.TYPE_COLUMN, Record.TYPE_EXPENSE); expected.put(DbHelper.TITLE_COLUMN, "title"); expected.put(DbHelper.CATEGORY_ID_COLUMN, 1L); - expected.put(DbHelper.PRICE_COLUMN, 100); + expected.put(DbHelper.PRICE_COLUMN, 100.0); expected.put(DbHelper.ACCOUNT_ID_COLUMN, 1L); expected.put(DbHelper.CURRENCY_COLUMN, "NON"); diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/MtApp.java b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/MtApp.java index 0907939..3b88db1 100644 --- a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/MtApp.java +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/MtApp.java @@ -2,6 +2,11 @@ import android.app.Application; +import com.blogspot.e_kanivets.moneytracker.di.AppComponent; +import com.blogspot.e_kanivets.moneytracker.di.DaggerAppComponent; +import com.blogspot.e_kanivets.moneytracker.di.module.ControllerModule; +import com.blogspot.e_kanivets.moneytracker.di.module.RepoModule; + /** * Custom application implementation. * Created on 29/08/14. @@ -16,10 +21,24 @@ public static MtApp get() { return mtApp; } + private AppComponent component; + @Override public void onCreate() { super.onCreate(); mtApp = this; + component = buildComponent(); + } + + public AppComponent getAppComponent() { + return component; + } + + private AppComponent buildComponent() { + return DaggerAppComponent.builder() + .repoModule(new RepoModule(get())) + .controllerModule(new ControllerModule()) + .build(); } } \ No newline at end of file diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/ExportActivity.java b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/ExportActivity.java index faa20d2..d9fdf90 100644 --- a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/ExportActivity.java +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/ExportActivity.java @@ -2,18 +2,10 @@ import android.os.Environment; -import com.blogspot.e_kanivets.moneytracker.DbHelper; +import com.blogspot.e_kanivets.moneytracker.MtApp; import com.blogspot.e_kanivets.moneytracker.R; import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity; -import com.blogspot.e_kanivets.moneytracker.controller.AccountController; -import com.blogspot.e_kanivets.moneytracker.controller.CategoryController; import com.blogspot.e_kanivets.moneytracker.controller.RecordController; -import com.blogspot.e_kanivets.moneytracker.entity.Category; -import com.blogspot.e_kanivets.moneytracker.entity.Record; -import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo; -import com.blogspot.e_kanivets.moneytracker.repo.CategoryRepo; -import com.blogspot.e_kanivets.moneytracker.repo.RecordRepo; -import com.blogspot.e_kanivets.moneytracker.repo.base.IRepo; import com.blogspot.e_kanivets.moneytracker.util.Constants; import java.io.File; @@ -21,26 +13,31 @@ import java.io.PrintWriter; import java.util.List; +import javax.inject.Inject; + import butterknife.OnClick; public class ExportActivity extends BaseBackActivity { + @SuppressWarnings("unused") private static final String TAG = "ExportActivity"; + @Inject + RecordController recordController; + @Override protected int getContentViewId() { return R.layout.activity_export; } + @Override + protected boolean initData() { + boolean result = super.initData(); + MtApp.get().getAppComponent().inject(ExportActivity.this); + return result; + } + @OnClick(R.id.btn_export) public void exportRecords() { - DbHelper dbHelper = new DbHelper(ExportActivity.this); - IRepo categoryRepo = new CategoryRepo(dbHelper); - CategoryController categoryController = new CategoryController(categoryRepo); - AccountController accountController = new AccountController(new AccountRepo(dbHelper)); - IRepo recordRepo = new RecordRepo(dbHelper); - - RecordController recordController = new RecordController(recordRepo, categoryController, accountController); - List records = recordController.getRecordsForExport(0, Long.MAX_VALUE); File outFile = new File(Environment.getExternalStorageDirectory(), Constants.DEFAULT_EXPORT_FILE_NAME); diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/ReportActivity.java b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/ReportActivity.java index 21dcd31..509f26a 100644 --- a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/ReportActivity.java +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/ReportActivity.java @@ -4,6 +4,7 @@ import android.support.v7.app.AlertDialog; import android.widget.ExpandableListView; +import com.blogspot.e_kanivets.moneytracker.MtApp; import com.blogspot.e_kanivets.moneytracker.R; import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity; import com.blogspot.e_kanivets.moneytracker.adapter.ExpandableListReportAdapter; @@ -13,8 +14,6 @@ import com.blogspot.e_kanivets.moneytracker.entity.Account; import com.blogspot.e_kanivets.moneytracker.model.Period; import com.blogspot.e_kanivets.moneytracker.entity.Record; -import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo; -import com.blogspot.e_kanivets.moneytracker.repo.ExchangeRateRepo; import com.blogspot.e_kanivets.moneytracker.report.ReportConverter; import com.blogspot.e_kanivets.moneytracker.report.ReportMaker; import com.blogspot.e_kanivets.moneytracker.report.base.IReport; @@ -22,6 +21,8 @@ import java.util.List; +import javax.inject.Inject; + import butterknife.Bind; public class ReportActivity extends BaseBackActivity { @@ -31,9 +32,15 @@ public class ReportActivity extends BaseBackActivity { public static final String KEY_PERIOD = "key_period"; public static final String KEY_RECORD_LIST = "key_record_list"; + @Inject + ExchangeRateController rateController; + @Inject + AccountController accountController; + + private IReport report; + @Bind(R.id.exp_list_view) ExpandableListView expandableListView; - private IReport report; @Override protected int getContentViewId() { @@ -50,9 +57,7 @@ protected boolean initData() { Period period = getIntent().getParcelableExtra(KEY_PERIOD); if (period == null) return false; - DbHelper dbHelper = new DbHelper(ReportActivity.this); - AccountController accountController = new AccountController(new AccountRepo(dbHelper)); - ExchangeRateController rateController = new ExchangeRateController(new ExchangeRateRepo(dbHelper)); + MtApp.get().getAppComponent().inject(ReportActivity.this); String currency = DbHelper.DEFAULT_ACCOUNT_CURRENCY; Account defaultAccount = accountController.readDefaultAccount(); @@ -92,9 +97,7 @@ private void showExchangeRatesNeededDialog(String currency, List ratesNe } builder.setMessage(sb.toString()); - builder.setPositiveButton(android.R.string.ok, null); - builder.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/SettingsActivity.java b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/SettingsActivity.java index 80253ac..fbfc03f 100644 --- a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/SettingsActivity.java +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/SettingsActivity.java @@ -5,16 +5,17 @@ import android.preference.Preference; import android.preference.PreferenceFragment; -import com.blogspot.e_kanivets.moneytracker.DbHelper; +import com.blogspot.e_kanivets.moneytracker.MtApp; import com.blogspot.e_kanivets.moneytracker.R; import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity; import com.blogspot.e_kanivets.moneytracker.controller.AccountController; import com.blogspot.e_kanivets.moneytracker.entity.Account; -import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; + public class SettingsActivity extends BaseBackActivity { @SuppressWarnings("unused") private static final String TAG = "SettingsActivity"; @@ -35,14 +36,14 @@ protected void initViews() { } public static class SettingsFragment extends PreferenceFragment { - private AccountController accountController; + @Inject + AccountController accountController; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - DbHelper dbHelper = new DbHelper(getActivity()); - accountController = new AccountController(new AccountRepo(dbHelper)); + MtApp.get().getAppComponent().inject(SettingsFragment.this); // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences); diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/AccountsActivity.java b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/AccountsActivity.java index 8a0c4a4..49ade79 100644 --- a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/AccountsActivity.java +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/AccountsActivity.java @@ -9,14 +9,15 @@ import android.widget.AdapterView; import android.widget.ListView; -import com.blogspot.e_kanivets.moneytracker.DbHelper; +import com.blogspot.e_kanivets.moneytracker.MtApp; import com.blogspot.e_kanivets.moneytracker.R; import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity; import com.blogspot.e_kanivets.moneytracker.adapter.AccountAdapter; import com.blogspot.e_kanivets.moneytracker.controller.AccountController; -import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo; import com.blogspot.e_kanivets.moneytracker.ui.AccountsSummaryPresenter; +import javax.inject.Inject; + import butterknife.Bind; import butterknife.OnClick; @@ -27,7 +28,9 @@ public class AccountsActivity extends BaseBackActivity { private static final int REQUEST_ADD_ACCOUNT = 1; private static final int REQUEST_TRANSFER = 2; - private AccountController accountController; + @Inject + AccountController accountController; + private AccountsSummaryPresenter summaryPresenter; @Bind(R.id.list_view) @@ -40,10 +43,10 @@ protected int getContentViewId() { @Override protected boolean initData() { - DbHelper dbHelper = new DbHelper(AccountsActivity.this); - accountController = new AccountController(new AccountRepo(dbHelper)); + boolean result = super.initData(); + MtApp.get().getAppComponent().inject(AccountsActivity.this); summaryPresenter = new AccountsSummaryPresenter(AccountsActivity.this); - return super.initData(); + return result; } @Override diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/AddAccountActivity.java b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/AddAccountActivity.java index ba83d53..83f6a4e 100644 --- a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/AddAccountActivity.java +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/AddAccountActivity.java @@ -6,22 +6,26 @@ import android.widget.ArrayAdapter; import android.widget.EditText; +import com.blogspot.e_kanivets.moneytracker.MtApp; import com.blogspot.e_kanivets.moneytracker.R; -import com.blogspot.e_kanivets.moneytracker.DbHelper; import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity; import com.blogspot.e_kanivets.moneytracker.controller.AccountController; import com.blogspot.e_kanivets.moneytracker.entity.Account; -import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo; import com.blogspot.e_kanivets.moneytracker.util.CurrencyProvider; import java.util.ArrayList; +import javax.inject.Inject; + import butterknife.Bind; public class AddAccountActivity extends BaseBackActivity { @SuppressWarnings("unused") private static final String TAG = "AddAccountActivity"; + @Inject + AccountController accountController; + @Bind(R.id.et_title) EditText etTitle; @Bind(R.id.et_init_sum) @@ -34,6 +38,13 @@ protected int getContentViewId() { return R.layout.activity_add_account; } + @Override + protected boolean initData() { + boolean result = super.initData(); + MtApp.get().getAppComponent().inject(AddAccountActivity.this); + return result; + } + @Override protected void initViews() { super.initViews(); @@ -71,6 +82,6 @@ private void addAccount() { Account account = new Account(title, initSum, currency); - new AccountController(new AccountRepo(new DbHelper(AddAccountActivity.this))).create(account); + accountController.create(account); } } \ No newline at end of file diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/TransferActivity.java b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/TransferActivity.java index 6cf51b7..8511ee4 100644 --- a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/TransferActivity.java +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/TransferActivity.java @@ -6,26 +6,29 @@ import android.widget.ArrayAdapter; import android.widget.EditText; +import com.blogspot.e_kanivets.moneytracker.MtApp; import com.blogspot.e_kanivets.moneytracker.R; import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity; import com.blogspot.e_kanivets.moneytracker.controller.AccountController; -import com.blogspot.e_kanivets.moneytracker.DbHelper; import com.blogspot.e_kanivets.moneytracker.controller.TransferController; import com.blogspot.e_kanivets.moneytracker.entity.Account; import com.blogspot.e_kanivets.moneytracker.entity.Transfer; -import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo; -import com.blogspot.e_kanivets.moneytracker.repo.TransferRepo; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; + import butterknife.Bind; public class TransferActivity extends BaseBackActivity { @SuppressWarnings("unused") private static final String TAG = "TransferActivity"; - private TransferController transferController; + @Inject + TransferController transferController; + @Inject + AccountController accountController; private List accountList; @@ -45,14 +48,10 @@ protected int getContentViewId() { @Override protected boolean initData() { - DbHelper dbHelper = new DbHelper(TransferActivity.this); - - AccountController accountController = new AccountController(new AccountRepo(dbHelper)); - transferController = new TransferController(new TransferRepo(dbHelper), accountController); - + boolean result = super.initData(); + MtApp.get().getAppComponent().inject(TransferActivity.this); accountList = accountController.readAll(); - - return super.initData(); + return result; } @Override diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/exchange_rate/AddExchangeRateActivity.java b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/exchange_rate/AddExchangeRateActivity.java index 3da64c0..171f12a 100644 --- a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/exchange_rate/AddExchangeRateActivity.java +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/exchange_rate/AddExchangeRateActivity.java @@ -6,22 +6,26 @@ import android.widget.ArrayAdapter; import android.widget.EditText; -import com.blogspot.e_kanivets.moneytracker.DbHelper; +import com.blogspot.e_kanivets.moneytracker.MtApp; import com.blogspot.e_kanivets.moneytracker.R; import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity; import com.blogspot.e_kanivets.moneytracker.controller.ExchangeRateController; import com.blogspot.e_kanivets.moneytracker.entity.ExchangeRate; -import com.blogspot.e_kanivets.moneytracker.repo.ExchangeRateRepo; import com.blogspot.e_kanivets.moneytracker.util.CurrencyProvider; import java.util.ArrayList; +import javax.inject.Inject; + import butterknife.Bind; public class AddExchangeRateActivity extends BaseBackActivity { @SuppressWarnings("unused") private static final String TAG = "AddExchangeRateActivity"; + @Inject + ExchangeRateController exchangeRateController; + @Bind(R.id.spinner_from_currency) AppCompatSpinner spinnerFromCurrency; @Bind(R.id.spinner_to_currency) @@ -34,6 +38,13 @@ protected int getContentViewId() { return R.layout.activity_add_exchange_rate; } + @Override + protected boolean initData() { + boolean result = super.initData(); + MtApp.get().getAppComponent().inject(AddExchangeRateActivity.this); + return result; + } + @Override protected void initViews() { super.initViews(); @@ -84,8 +95,7 @@ private boolean addExchangeRate() { ExchangeRate exchangeRate = new ExchangeRate(System.currentTimeMillis(), fromCurrency, toCurrency, amount); - ExchangeRate createdRate = new ExchangeRateController(new ExchangeRateRepo( - new DbHelper(AddExchangeRateActivity.this))).create(exchangeRate); + ExchangeRate createdRate = exchangeRateController.create(exchangeRate); return createdRate != null; } diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/exchange_rate/ExchangeRatesActivity.java b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/exchange_rate/ExchangeRatesActivity.java index ac99250..a03ca67 100644 --- a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/exchange_rate/ExchangeRatesActivity.java +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/exchange_rate/ExchangeRatesActivity.java @@ -9,17 +9,18 @@ import android.widget.BaseAdapter; import android.widget.ListView; -import com.blogspot.e_kanivets.moneytracker.DbHelper; +import com.blogspot.e_kanivets.moneytracker.MtApp; import com.blogspot.e_kanivets.moneytracker.R; import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity; import com.blogspot.e_kanivets.moneytracker.adapter.ExchangeRateAdapter; import com.blogspot.e_kanivets.moneytracker.controller.ExchangeRateController; import com.blogspot.e_kanivets.moneytracker.entity.ExchangeRate; -import com.blogspot.e_kanivets.moneytracker.repo.ExchangeRateRepo; import java.util.Collections; import java.util.List; +import javax.inject.Inject; + import butterknife.Bind; import butterknife.OnClick; @@ -29,7 +30,9 @@ public class ExchangeRatesActivity extends BaseBackActivity { private static final int REQUEST_ADD_EXCHANGE_RATE = 1; - private ExchangeRateController rateController; + @Inject + ExchangeRateController rateController; + private List exchangeRateList; @Bind(R.id.list_view) @@ -42,8 +45,9 @@ protected int getContentViewId() { @Override protected boolean initData() { - rateController = new ExchangeRateController(new ExchangeRateRepo(new DbHelper(ExchangeRatesActivity.this))); - return super.initData(); + boolean result = super.initData(); + MtApp.get().getAppComponent().inject(ExchangeRatesActivity.this); + return result; } @Override diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/record/AddRecordActivity.java b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/record/AddRecordActivity.java index 52530a3..f603949 100644 --- a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/record/AddRecordActivity.java +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/record/AddRecordActivity.java @@ -18,25 +18,24 @@ import android.widget.EditText; import android.widget.TextView; +import com.blogspot.e_kanivets.moneytracker.MtApp; import com.blogspot.e_kanivets.moneytracker.R; import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity; import com.blogspot.e_kanivets.moneytracker.adapter.CategoryAutoCompleteAdapter; import com.blogspot.e_kanivets.moneytracker.controller.AccountController; import com.blogspot.e_kanivets.moneytracker.controller.CategoryController; -import com.blogspot.e_kanivets.moneytracker.DbHelper; import com.blogspot.e_kanivets.moneytracker.controller.RecordController; import com.blogspot.e_kanivets.moneytracker.entity.Account; import com.blogspot.e_kanivets.moneytracker.entity.Category; import com.blogspot.e_kanivets.moneytracker.entity.Record; -import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo; -import com.blogspot.e_kanivets.moneytracker.repo.CategoryRepo; -import com.blogspot.e_kanivets.moneytracker.repo.RecordRepo; import com.blogspot.e_kanivets.moneytracker.util.CategoryAutoCompleter; import java.util.ArrayList; import java.util.Date; import java.util.List; +import javax.inject.Inject; + import butterknife.Bind; /** @@ -58,8 +57,12 @@ public class AddRecordActivity extends BaseBackActivity { private List accountList; - private CategoryController categoryController; - private RecordController recordController; + @Inject + CategoryController categoryController; + @Inject + RecordController recordController; + @Inject + AccountController accountController; @Bind(R.id.et_title) EditText etTitle; @@ -69,7 +72,6 @@ public class AddRecordActivity extends BaseBackActivity { EditText etPrice; @Bind(R.id.spinner_account) AppCompatSpinner spinnerAccount; - private AccountController accountController; @Override protected int getContentViewId() { @@ -79,14 +81,7 @@ protected int getContentViewId() { @Override protected boolean initData() { super.initData(); - - DbHelper dbHelper = new DbHelper(AddRecordActivity.this); - - AccountRepo accountRepo = new AccountRepo(dbHelper); - accountController = new AccountController(accountRepo); - categoryController = new CategoryController(new CategoryRepo(dbHelper)); - recordController = new RecordController(new RecordRepo(dbHelper), categoryController, - new AccountController(accountRepo)); + MtApp.get().getAppComponent().inject(AddRecordActivity.this); record = getIntent().getParcelableExtra(KEY_RECORD); mode = (Mode) getIntent().getSerializableExtra(KEY_MODE); diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/record/MainActivity.java b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/record/MainActivity.java index 3e33dfa..df1869d 100644 --- a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/record/MainActivity.java +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/record/MainActivity.java @@ -10,23 +10,17 @@ import android.widget.ListView; import com.blogspot.e_kanivets.moneytracker.DbHelper; +import com.blogspot.e_kanivets.moneytracker.MtApp; import com.blogspot.e_kanivets.moneytracker.R; import com.blogspot.e_kanivets.moneytracker.activity.ReportActivity; import com.blogspot.e_kanivets.moneytracker.activity.base.BaseDrawerActivity; import com.blogspot.e_kanivets.moneytracker.adapter.RecordAdapter; import com.blogspot.e_kanivets.moneytracker.controller.AccountController; -import com.blogspot.e_kanivets.moneytracker.controller.CategoryController; import com.blogspot.e_kanivets.moneytracker.controller.ExchangeRateController; import com.blogspot.e_kanivets.moneytracker.controller.RecordController; import com.blogspot.e_kanivets.moneytracker.entity.Account; -import com.blogspot.e_kanivets.moneytracker.entity.Category; import com.blogspot.e_kanivets.moneytracker.entity.Record; import com.blogspot.e_kanivets.moneytracker.model.Period; -import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo; -import com.blogspot.e_kanivets.moneytracker.repo.CategoryRepo; -import com.blogspot.e_kanivets.moneytracker.repo.ExchangeRateRepo; -import com.blogspot.e_kanivets.moneytracker.repo.RecordRepo; -import com.blogspot.e_kanivets.moneytracker.repo.base.IRepo; import com.blogspot.e_kanivets.moneytracker.report.ReportMaker; import com.blogspot.e_kanivets.moneytracker.report.base.IReport; import com.blogspot.e_kanivets.moneytracker.ui.AppRateDialog; @@ -38,6 +32,8 @@ import java.util.Collections; import java.util.List; +import javax.inject.Inject; + import butterknife.Bind; import butterknife.OnClick; @@ -50,9 +46,13 @@ public class MainActivity extends BaseDrawerActivity { private List recordList; private Period period; - private RecordController recordController; - private ExchangeRateController rateController; - private AccountController accountController; + @Inject + RecordController recordController; + @Inject + ExchangeRateController rateController; + @Inject + AccountController accountController; + private ShortSummaryPresenter summaryPresenter; @Bind(R.id.list_view) @@ -68,16 +68,7 @@ protected int getContentViewId() { @Override protected boolean initData() { PrefUtils.addLaunchCount(); - - DbHelper dbHelper = new DbHelper(MainActivity.this); - IRepo categoryRepo = new CategoryRepo(dbHelper); - CategoryController categoryController = new CategoryController(categoryRepo); - accountController = new AccountController(new AccountRepo(dbHelper)); - IRepo recordRepo = new RecordRepo(dbHelper); - - recordController = new RecordController(recordRepo, categoryController, accountController); - - rateController = new ExchangeRateController(new ExchangeRateRepo(dbHelper)); + MtApp.get().getAppComponent().inject(MainActivity.this); summaryPresenter = new ShortSummaryPresenter(MainActivity.this); diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/di/AppComponent.java b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/di/AppComponent.java new file mode 100644 index 0000000..015a49c --- /dev/null +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/di/AppComponent.java @@ -0,0 +1,51 @@ +package com.blogspot.e_kanivets.moneytracker.di; + +import com.blogspot.e_kanivets.moneytracker.activity.ExportActivity; +import com.blogspot.e_kanivets.moneytracker.activity.ReportActivity; +import com.blogspot.e_kanivets.moneytracker.activity.SettingsActivity; +import com.blogspot.e_kanivets.moneytracker.activity.account.AccountsActivity; +import com.blogspot.e_kanivets.moneytracker.activity.account.AddAccountActivity; +import com.blogspot.e_kanivets.moneytracker.activity.account.TransferActivity; +import com.blogspot.e_kanivets.moneytracker.activity.exchange_rate.AddExchangeRateActivity; +import com.blogspot.e_kanivets.moneytracker.activity.exchange_rate.ExchangeRatesActivity; +import com.blogspot.e_kanivets.moneytracker.activity.record.AddRecordActivity; +import com.blogspot.e_kanivets.moneytracker.activity.record.MainActivity; +import com.blogspot.e_kanivets.moneytracker.di.module.ControllerModule; +import com.blogspot.e_kanivets.moneytracker.di.module.RepoModule; +import com.blogspot.e_kanivets.moneytracker.ui.AccountsSummaryPresenter; + +import javax.inject.Singleton; + +import dagger.Component; + +/** + * Dagger 2 component. + * Created on 3/29/16. + * + * @author Evgenii Kanivets + */ +@Component(modules = {RepoModule.class, ControllerModule.class}) +@Singleton +public interface AppComponent { + void inject(MainActivity mainActivity); + + void inject(AddRecordActivity addRecordActivity); + + void inject(ExchangeRatesActivity exchangeRatesActivity); + + void inject(AddExchangeRateActivity exchangeRateActivity); + + void inject(AccountsActivity accountsActivity); + + void inject(AddAccountActivity addAccountActivity); + + void inject(TransferActivity transferActivity); + + void inject(ExportActivity exportActivity); + + void inject(ReportActivity reportActivity); + + void inject(SettingsActivity.SettingsFragment settingsFragment); + + void inject(AccountsSummaryPresenter accountsSummaryPresenter); +} diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/di/module/ControllerModule.java b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/di/module/ControllerModule.java new file mode 100644 index 0000000..e77b85e --- /dev/null +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/di/module/ControllerModule.java @@ -0,0 +1,68 @@ +package com.blogspot.e_kanivets.moneytracker.di.module; + +import android.support.annotation.NonNull; + +import com.blogspot.e_kanivets.moneytracker.controller.AccountController; +import com.blogspot.e_kanivets.moneytracker.controller.CategoryController; +import com.blogspot.e_kanivets.moneytracker.controller.ExchangeRateController; +import com.blogspot.e_kanivets.moneytracker.controller.RecordController; +import com.blogspot.e_kanivets.moneytracker.controller.TransferController; +import com.blogspot.e_kanivets.moneytracker.entity.Account; +import com.blogspot.e_kanivets.moneytracker.entity.Category; +import com.blogspot.e_kanivets.moneytracker.entity.ExchangeRate; +import com.blogspot.e_kanivets.moneytracker.entity.Record; +import com.blogspot.e_kanivets.moneytracker.entity.Transfer; +import com.blogspot.e_kanivets.moneytracker.repo.base.IRepo; + +import javax.inject.Singleton; + +import dagger.Module; +import dagger.Provides; + +/** + * Dagger 2 module to provide Controllers dependencies. + * Created on 3/29/16. + * + * @author Evgenii Kanivets + */ +@Module +public class ControllerModule { + + @Provides + @NonNull + @Singleton + public AccountController providesAccountController(IRepo accountRepo) { + return new AccountController(accountRepo); + } + + @Provides + @NonNull + @Singleton + public CategoryController providesCategoryController(IRepo categoryRepo) { + return new CategoryController(categoryRepo); + } + + @Provides + @NonNull + @Singleton + public ExchangeRateController providesExchangeRateController(IRepo exchangeRateRepo) { + return new ExchangeRateController(exchangeRateRepo); + } + + @Provides + @NonNull + @Singleton + public RecordController providesRecordController(IRepo recordRepo, + CategoryController categoryController, + AccountController accountController) { + return new RecordController(recordRepo, categoryController, accountController); + } + + @Provides + @NonNull + @Singleton + public TransferController providesTransferController(IRepo transferRepo, + AccountController accountController) { + return new TransferController(transferRepo, accountController); + } +} diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/di/module/RepoModule.java b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/di/module/RepoModule.java new file mode 100644 index 0000000..70f3b92 --- /dev/null +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/di/module/RepoModule.java @@ -0,0 +1,79 @@ +package com.blogspot.e_kanivets.moneytracker.di.module; + +import android.content.Context; +import android.support.annotation.NonNull; + +import com.blogspot.e_kanivets.moneytracker.DbHelper; +import com.blogspot.e_kanivets.moneytracker.entity.Account; +import com.blogspot.e_kanivets.moneytracker.entity.Category; +import com.blogspot.e_kanivets.moneytracker.entity.ExchangeRate; +import com.blogspot.e_kanivets.moneytracker.entity.Record; +import com.blogspot.e_kanivets.moneytracker.entity.Transfer; +import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo; +import com.blogspot.e_kanivets.moneytracker.repo.CategoryRepo; +import com.blogspot.e_kanivets.moneytracker.repo.ExchangeRateRepo; +import com.blogspot.e_kanivets.moneytracker.repo.RecordRepo; +import com.blogspot.e_kanivets.moneytracker.repo.TransferRepo; +import com.blogspot.e_kanivets.moneytracker.repo.base.IRepo; + +import javax.inject.Singleton; + +import dagger.Module; +import dagger.Provides; + +/** + * Dagger 2 module to provide {@link IRepo} dependencies. + * Created on 3/29/16. + * + * @author Evgenii Kanivets + */ +@Module +public class RepoModule { + private Context context; + + public RepoModule(Context context) { + this.context = context; + } + + @Provides + @NonNull + @Singleton + public DbHelper providesDbHelper() { + return new DbHelper(context); + } + + @Provides + @NonNull + @Singleton + public IRepo providesAccountRepo(DbHelper dbHelper) { + return new AccountRepo(dbHelper); + } + + @Provides + @NonNull + @Singleton + public IRepo providesCategoryRepo(DbHelper dbHelper) { + return new CategoryRepo(dbHelper); + } + + @Provides + @NonNull + @Singleton + public IRepo providesExchangeRateRepo(DbHelper dbHelper) { + return new ExchangeRateRepo(dbHelper); + } + + @Provides + @NonNull + @Singleton + public IRepo providesRecordRepo(DbHelper dbHelper) { + return new RecordRepo(dbHelper); + } + + @Provides + @NonNull + @Singleton + public IRepo providesTransferRepo(DbHelper dbHelper) { + return new TransferRepo(dbHelper); + } +} diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/ui/AccountsSummaryPresenter.java b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/ui/AccountsSummaryPresenter.java index 093cc72..8177754 100644 --- a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/ui/AccountsSummaryPresenter.java +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/ui/AccountsSummaryPresenter.java @@ -9,12 +9,11 @@ import android.widget.TextView; import com.blogspot.e_kanivets.moneytracker.DbHelper; +import com.blogspot.e_kanivets.moneytracker.MtApp; import com.blogspot.e_kanivets.moneytracker.R; import com.blogspot.e_kanivets.moneytracker.controller.AccountController; import com.blogspot.e_kanivets.moneytracker.controller.ExchangeRateController; import com.blogspot.e_kanivets.moneytracker.entity.Account; -import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo; -import com.blogspot.e_kanivets.moneytracker.repo.ExchangeRateRepo; import com.blogspot.e_kanivets.moneytracker.report.ReportMaker; import com.blogspot.e_kanivets.moneytracker.report.base.IAccountsReport; import com.blogspot.e_kanivets.moneytracker.util.CurrencyProvider; @@ -22,6 +21,8 @@ import java.util.List; import java.util.Locale; +import javax.inject.Inject; + import butterknife.Bind; import butterknife.ButterKnife; @@ -35,7 +36,10 @@ public class AccountsSummaryPresenter { private Context context; private final LayoutInflater layoutInflater; - private AccountController accountController; + @Inject + ExchangeRateController rateController; + @Inject + AccountController accountController; private int red; private int green; @@ -50,9 +54,7 @@ public AccountsSummaryPresenter(Context context) { red = context.getResources().getColor(R.color.red); green = context.getResources().getColor(R.color.green); - DbHelper dbHelper = new DbHelper(context); - accountController = new AccountController(new AccountRepo(dbHelper)); - ExchangeRateController rateController = new ExchangeRateController(new ExchangeRateRepo(dbHelper)); + MtApp.get().getAppComponent().inject(AccountsSummaryPresenter.this); reportMaker = new ReportMaker(rateController); }