Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.

Commit ca15dfb

Browse files
author
Evgenii Kanivets
committed
#56[30m]. Add CurrencyController and refactor app to use it.
1 parent 09d9315 commit ca15dfb

File tree

8 files changed

+107
-73
lines changed

8 files changed

+107
-73
lines changed

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/ReportActivity.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,14 @@
1010
import com.blogspot.e_kanivets.moneytracker.R;
1111
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity;
1212
import com.blogspot.e_kanivets.moneytracker.adapter.ExpandableListReportAdapter;
13-
import com.blogspot.e_kanivets.moneytracker.controller.AccountController;
13+
import com.blogspot.e_kanivets.moneytracker.controller.CurrencyController;
1414
import com.blogspot.e_kanivets.moneytracker.controller.ExchangeRateController;
15-
import com.blogspot.e_kanivets.moneytracker.repo.DbHelper;
16-
import com.blogspot.e_kanivets.moneytracker.entity.Account;
1715
import com.blogspot.e_kanivets.moneytracker.model.Period;
1816
import com.blogspot.e_kanivets.moneytracker.entity.Record;
1917
import com.blogspot.e_kanivets.moneytracker.report.ReportConverter;
2018
import com.blogspot.e_kanivets.moneytracker.report.ReportMaker;
2119
import com.blogspot.e_kanivets.moneytracker.report.base.IReport;
2220
import com.blogspot.e_kanivets.moneytracker.ui.presenter.ShortSummaryPresenter;
23-
import com.blogspot.e_kanivets.moneytracker.util.CurrencyProvider;
2421

2522
import java.util.List;
2623

@@ -38,7 +35,7 @@ public class ReportActivity extends BaseBackActivity {
3835
@Inject
3936
ExchangeRateController rateController;
4037
@Inject
41-
AccountController accountController;
38+
CurrencyController currencyController;
4239

4340
private List<Record> recordList;
4441
private Period period;
@@ -96,7 +93,7 @@ private void update(String currency) {
9693
}
9794

9895
private void initSpinnerCurrency() {
99-
List<String> currencyList = CurrencyProvider.getAllCurrencies();
96+
List<String> currencyList = currencyController.readAll();
10097

10198
spinnerCurrency.setAdapter(new ArrayAdapter<>(ReportActivity.this,
10299
R.layout.view_spinner_item, currencyList));
@@ -112,9 +109,7 @@ public void onNothingSelected(AdapterView<?> parent) {
112109
}
113110
});
114111

115-
String currency = DbHelper.DEFAULT_ACCOUNT_CURRENCY;
116-
Account defaultAccount = accountController.readDefaultAccount();
117-
if (defaultAccount != null) currency = defaultAccount.getCurrency();
112+
String currency = currencyController.readDefaultCurrency();
118113

119114
for (int i = 0; i < currencyList.size(); i++) {
120115
if (currency.equals(currencyList.get(i))) {

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/AddAccountActivity.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
import com.blogspot.e_kanivets.moneytracker.R;
1111
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity;
1212
import com.blogspot.e_kanivets.moneytracker.controller.AccountController;
13+
import com.blogspot.e_kanivets.moneytracker.controller.CurrencyController;
1314
import com.blogspot.e_kanivets.moneytracker.entity.Account;
14-
import com.blogspot.e_kanivets.moneytracker.util.CurrencyProvider;
1515

1616
import java.util.ArrayList;
1717

@@ -25,6 +25,8 @@ public class AddAccountActivity extends BaseBackActivity {
2525

2626
@Inject
2727
AccountController accountController;
28+
@Inject
29+
CurrencyController currencyController;
2830

2931
@Bind(R.id.et_title)
3032
EditText etTitle;
@@ -51,7 +53,7 @@ protected void initViews() {
5153

5254
spinner.setAdapter(new ArrayAdapter<>(AddAccountActivity.this,
5355
R.layout.view_spinner_item,
54-
new ArrayList<>(CurrencyProvider.getAllCurrencies())));
56+
new ArrayList<>(currencyController.readAll())));
5557
}
5658

5759
@Override

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/exchange_rate/AddExchangeRateActivity.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
import com.blogspot.e_kanivets.moneytracker.MtApp;
1010
import com.blogspot.e_kanivets.moneytracker.R;
1111
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity;
12+
import com.blogspot.e_kanivets.moneytracker.controller.CurrencyController;
1213
import com.blogspot.e_kanivets.moneytracker.controller.ExchangeRateController;
1314
import com.blogspot.e_kanivets.moneytracker.entity.ExchangeRate;
14-
import com.blogspot.e_kanivets.moneytracker.util.CurrencyProvider;
1515

1616
import java.util.ArrayList;
1717

@@ -25,6 +25,8 @@ public class AddExchangeRateActivity extends BaseBackActivity {
2525

2626
@Inject
2727
ExchangeRateController exchangeRateController;
28+
@Inject
29+
CurrencyController currencyController;
2830

2931
@Bind(R.id.spinner_from_currency)
3032
AppCompatSpinner spinnerFromCurrency;
@@ -51,11 +53,11 @@ protected void initViews() {
5153

5254
spinnerFromCurrency.setAdapter(new ArrayAdapter<>(AddExchangeRateActivity.this,
5355
android.R.layout.simple_list_item_1,
54-
new ArrayList<>(CurrencyProvider.getAllCurrencies())));
56+
new ArrayList<>(currencyController.readAll())));
5557

5658
spinnerToCurrency.setAdapter(new ArrayAdapter<>(AddExchangeRateActivity.this,
5759
android.R.layout.simple_list_item_1,
58-
new ArrayList<>(CurrencyProvider.getAllCurrencies())));
60+
new ArrayList<>(currencyController.readAll())));
5961
}
6062

6163
@Override

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/record/MainActivity.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import android.widget.ListView;
1111
import android.widget.TextView;
1212

13-
import com.blogspot.e_kanivets.moneytracker.repo.DbHelper;
13+
import com.blogspot.e_kanivets.moneytracker.controller.CurrencyController;
1414
import com.blogspot.e_kanivets.moneytracker.MtApp;
1515
import com.blogspot.e_kanivets.moneytracker.R;
1616
import com.blogspot.e_kanivets.moneytracker.activity.ReportActivity;
@@ -53,6 +53,8 @@ public class MainActivity extends BaseDrawerActivity {
5353
ExchangeRateController rateController;
5454
@Inject
5555
AccountController accountController;
56+
@Inject
57+
CurrencyController currencyController;
5658

5759
private ShortSummaryPresenter summaryPresenter;
5860

@@ -184,9 +186,7 @@ protected void update() {
184186

185187
listView.setAdapter(new RecordAdapter(MainActivity.this, recordList));
186188

187-
String currency = DbHelper.DEFAULT_ACCOUNT_CURRENCY;
188-
Account defaultAccount = accountController.readDefaultAccount();
189-
if (defaultAccount != null) currency = defaultAccount.getCurrency();
189+
String currency = currencyController.readDefaultCurrency();
190190

191191
ReportMaker reportMaker = new ReportMaker(rateController);
192192
IReport report = reportMaker.getReport(currency, period, recordList);
@@ -219,11 +219,11 @@ private void startAddExpenseActivity(Record record, AddRecordActivity.Mode mode)
219219

220220
@SuppressLint("SetTextI18n")
221221
private void fillDefaultAccount() {
222-
Account account = accountController.readDefaultAccount();
223-
if (account == null) return;
222+
Account defaultAccount = accountController.readDefaultAccount();
223+
if (defaultAccount == null) return;
224224

225-
tvDefaultAccountTitle.setText(account.getTitle());
226-
tvDefaultAccountSum.setText(Integer.toString(account.getCurSum()));
227-
tvCurrency.setText(account.getCurrency());
225+
tvDefaultAccountTitle.setText(defaultAccount.getTitle());
226+
tvDefaultAccountSum.setText(Integer.toString(defaultAccount.getCurSum()));
227+
tvCurrency.setText(defaultAccount.getCurrency());
228228
}
229229
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package com.blogspot.e_kanivets.moneytracker.controller;
2+
3+
import android.support.annotation.NonNull;
4+
5+
import com.blogspot.e_kanivets.moneytracker.entity.Account;
6+
import com.blogspot.e_kanivets.moneytracker.repo.DbHelper;
7+
8+
import java.util.ArrayList;
9+
import java.util.Collections;
10+
import java.util.Currency;
11+
import java.util.HashSet;
12+
import java.util.List;
13+
import java.util.Locale;
14+
import java.util.Set;
15+
16+
/**
17+
* Controller class to encapsulate currency handling logic. Use embedded locales to obtain all currencies.
18+
* Not deal with {@link com.blogspot.e_kanivets.moneytracker.repo.base.IRepo} instances as others.
19+
* Created on 4/20/16.
20+
*
21+
* @author Evgenii Kanivets
22+
*/
23+
public class CurrencyController {
24+
private AccountController accountController;
25+
26+
@NonNull
27+
private List<String> currencyList;
28+
29+
public CurrencyController(AccountController accountController) {
30+
this.accountController = accountController;
31+
currencyList = fetchCurrencies();
32+
}
33+
34+
@NonNull
35+
public List<String> readAll() {
36+
return currencyList;
37+
}
38+
39+
@NonNull
40+
public String readDefaultCurrency() {
41+
String currency = DbHelper.DEFAULT_ACCOUNT_CURRENCY;
42+
Account defaultAccount = accountController.readDefaultAccount();
43+
if (defaultAccount != null) currency = defaultAccount.getCurrency();
44+
45+
return currency;
46+
}
47+
48+
@NonNull
49+
private List<String> fetchCurrencies() {
50+
Set<Currency> toret = new HashSet<>();
51+
Locale[] locs = Locale.getAvailableLocales();
52+
53+
for (Locale loc : locs) {
54+
try {
55+
toret.add(Currency.getInstance(loc));
56+
} catch (Exception exc) {
57+
// Locale not found
58+
}
59+
}
60+
61+
List<String> currencyList = new ArrayList<>();
62+
for (Currency currency : toret) {
63+
currencyList.add(currency.getCurrencyCode());
64+
}
65+
66+
currencyList.add(DbHelper.DEFAULT_ACCOUNT_CURRENCY);
67+
68+
Collections.sort(currencyList);
69+
70+
return currencyList;
71+
}
72+
}

app/src/main/java/com/blogspot/e_kanivets/moneytracker/di/module/ControllerModule.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import com.blogspot.e_kanivets.moneytracker.controller.AccountController;
66
import com.blogspot.e_kanivets.moneytracker.controller.CategoryController;
7+
import com.blogspot.e_kanivets.moneytracker.controller.CurrencyController;
78
import com.blogspot.e_kanivets.moneytracker.controller.ExchangeRateController;
89
import com.blogspot.e_kanivets.moneytracker.controller.RecordController;
910
import com.blogspot.e_kanivets.moneytracker.controller.TransferController;
@@ -65,4 +66,11 @@ public TransferController providesTransferController(IRepo<Transfer> transferRep
6566
AccountController accountController) {
6667
return new TransferController(transferRepo, accountController);
6768
}
69+
70+
@Provides
71+
@NonNull
72+
@Singleton
73+
public CurrencyController providesCurrencyController(AccountController accountController) {
74+
return new CurrencyController(accountController);
75+
}
6876
}

app/src/main/java/com/blogspot/e_kanivets/moneytracker/ui/presenter/AccountsSummaryPresenter.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,14 @@
88
import android.widget.ArrayAdapter;
99
import android.widget.TextView;
1010

11-
import com.blogspot.e_kanivets.moneytracker.repo.DbHelper;
11+
import com.blogspot.e_kanivets.moneytracker.controller.CurrencyController;
1212
import com.blogspot.e_kanivets.moneytracker.MtApp;
1313
import com.blogspot.e_kanivets.moneytracker.R;
1414
import com.blogspot.e_kanivets.moneytracker.controller.AccountController;
1515
import com.blogspot.e_kanivets.moneytracker.controller.ExchangeRateController;
16-
import com.blogspot.e_kanivets.moneytracker.entity.Account;
1716
import com.blogspot.e_kanivets.moneytracker.report.ReportMaker;
1817
import com.blogspot.e_kanivets.moneytracker.report.base.IAccountsReport;
1918
import com.blogspot.e_kanivets.moneytracker.ui.presenter.base.BaseSummaryPresenter;
20-
import com.blogspot.e_kanivets.moneytracker.util.CurrencyProvider;
2119

2220
import java.util.List;
2321
import java.util.Locale;
@@ -39,6 +37,8 @@ public class AccountsSummaryPresenter extends BaseSummaryPresenter {
3937
ExchangeRateController rateController;
4038
@Inject
4139
AccountController accountController;
40+
@Inject
41+
CurrencyController currencyController;
4242

4343
private int red;
4444
private int green;
@@ -63,14 +63,12 @@ public View create() {
6363
final ViewHolder viewHolder = new ViewHolder(view);
6464
view.setTag(viewHolder);
6565

66-
List<String> currencyList = CurrencyProvider.getAllCurrencies();
66+
List<String> currencyList = currencyController.readAll();
6767

6868
viewHolder.spinnerCurrency.setAdapter(new ArrayAdapter<>(context,
6969
android.R.layout.simple_list_item_1, currencyList));
7070

71-
String currency = DbHelper.DEFAULT_ACCOUNT_CURRENCY;
72-
Account defaultAccount = accountController.readDefaultAccount();
73-
if (defaultAccount != null) currency = defaultAccount.getCurrency();
71+
String currency = currencyController.readDefaultCurrency();
7472

7573
for (int i = 0; i < currencyList.size(); i++) {
7674
String item = currencyList.get(i);

app/src/main/java/com/blogspot/e_kanivets/moneytracker/util/CurrencyProvider.java

Lines changed: 0 additions & 43 deletions
This file was deleted.

0 commit comments

Comments
 (0)