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

Commit d4e981a

Browse files
author
Evgenii Kanivets
committed
#10[30m]. Refactor AccountController, add AccountRepo.
1 parent 9b76a04 commit d4e981a

File tree

8 files changed

+205
-141
lines changed

8 files changed

+205
-141
lines changed

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88

99
import com.blogspot.e_kanivets.moneytracker.R;
1010
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseActivity;
11-
import com.blogspot.e_kanivets.moneytracker.controller.AccountController;
1211
import com.blogspot.e_kanivets.moneytracker.DbHelper;
12+
import com.blogspot.e_kanivets.moneytracker.model.Account;
13+
import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo;
1314

1415
import java.util.ArrayList;
1516
import java.util.Collections;
@@ -75,8 +76,9 @@ private void addAccount() {
7576
int initSum = Integer.parseInt(etInitSum.getText().toString().trim());
7677
String currency = (String) spinner.getSelectedItem();
7778

78-
new AccountController(new DbHelper(AddAccountActivity.this))
79-
.addAccount(title, initSum, currency);
79+
Account account = new Account(title, initSum, currency);
80+
81+
new AccountRepo(new DbHelper(AddAccountActivity.this)).create(account);
8082
}
8183

8284
public static List<String> getAllCurrencies() {

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import com.blogspot.e_kanivets.moneytracker.DbHelper;
1414
import com.blogspot.e_kanivets.moneytracker.model.Account;
1515
import com.blogspot.e_kanivets.moneytracker.model.Transfer;
16+
import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo;
17+
import com.blogspot.e_kanivets.moneytracker.repo.IRepo;
1618

1719
import java.util.ArrayList;
1820
import java.util.List;
@@ -45,10 +47,11 @@ protected int getContentViewId() {
4547
protected boolean initData() {
4648
DbHelper dbHelper = new DbHelper(TransferActivity.this);
4749

48-
AccountController accountController = new AccountController(dbHelper);
50+
IRepo<Account> accountRepo = new AccountRepo(dbHelper);
51+
AccountController accountController = new AccountController(accountRepo);
4952
transferController = new TransferController(dbHelper, accountController);
5053

51-
accountList = accountController.getAccounts();
54+
accountList = accountRepo.readAll();
5255

5356
return super.initData();
5457
}

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/base/AddRecordBaseActivity.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@
88
import android.widget.Spinner;
99

1010
import com.blogspot.e_kanivets.moneytracker.R;
11-
import com.blogspot.e_kanivets.moneytracker.controller.AccountController;
1211
import com.blogspot.e_kanivets.moneytracker.controller.RecordController;
1312
import com.blogspot.e_kanivets.moneytracker.DbHelper;
1413
import com.blogspot.e_kanivets.moneytracker.model.Account;
1514
import com.blogspot.e_kanivets.moneytracker.model.Record;
15+
import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo;
16+
import com.blogspot.e_kanivets.moneytracker.repo.IRepo;
1617

1718
import java.util.ArrayList;
1819
import java.util.List;
@@ -36,6 +37,11 @@ public abstract class AddRecordBaseActivity extends BaseActivity {
3637
protected Record record;
3738
protected Mode mode;
3839

40+
protected List<Account> accountList;
41+
42+
protected IRepo<Account> accountRepo;
43+
protected RecordController recordController;
44+
3945
@Bind(R.id.et_title)
4046
EditText etTitle;
4147
@Bind(R.id.et_category)
@@ -45,9 +51,6 @@ public abstract class AddRecordBaseActivity extends BaseActivity {
4551
@Bind(R.id.spinner_account)
4652
Spinner spinnerAccount;
4753

48-
protected RecordController recordController;
49-
protected AccountController accountController;
50-
5154
@Override
5255
protected int getContentViewId() {
5356
return R.layout.activity_add_record;
@@ -57,11 +60,14 @@ protected int getContentViewId() {
5760
protected boolean initData() {
5861
super.initData();
5962

60-
recordController = new RecordController(new DbHelper(AddRecordBaseActivity.this));
61-
accountController = new AccountController(new DbHelper(AddRecordBaseActivity.this));
63+
DbHelper dbHelper = new DbHelper(AddRecordBaseActivity.this);
64+
65+
accountRepo = new AccountRepo(dbHelper);
66+
recordController = new RecordController(dbHelper);
6267

6368
record = (Record) getIntent().getSerializableExtra(KEY_RECORD);
6469
mode = (Mode) getIntent().getSerializableExtra(KEY_MODE);
70+
accountList = accountRepo.readAll();
6571

6672
return mode != null && (!mode.equals(Mode.MODE_EDIT) || record != null);
6773
}
@@ -71,8 +77,6 @@ record = (Record) getIntent().getSerializableExtra(KEY_RECORD);
7177
protected void initViews() {
7278
super.initViews();
7379

74-
List<Account> accountList = accountController.getAccounts();
75-
7680
List<String> accounts = new ArrayList<>();
7781
for (Account account : accountList) {
7882
accounts.add(account.getTitle());
@@ -137,7 +141,7 @@ private boolean prepareRecord() {
137141
}
138142

139143
if (price >= 0 && price <= 1000000000 && spinnerAccount.getSelectedItemPosition() >= 0) {
140-
Account account = accountController.getAccounts().get(spinnerAccount.getSelectedItemPosition());
144+
Account account = accountList.get(spinnerAccount.getSelectedItemPosition());
141145
return doRecord(title, category, price, account);
142146
} else return false;
143147
}

app/src/main/java/com/blogspot/e_kanivets/moneytracker/controller/AccountController.java

Lines changed: 13 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
11
package com.blogspot.e_kanivets.moneytracker.controller;
22

3-
import android.content.ContentValues;
4-
import android.database.Cursor;
5-
import android.database.sqlite.SQLiteDatabase;
63
import android.support.annotation.Nullable;
7-
import android.util.Log;
84

9-
import com.blogspot.e_kanivets.moneytracker.DbHelper;
105
import com.blogspot.e_kanivets.moneytracker.model.Account;
116
import com.blogspot.e_kanivets.moneytracker.model.Record;
127
import com.blogspot.e_kanivets.moneytracker.model.Transfer;
13-
14-
import java.util.ArrayList;
15-
import java.util.List;
8+
import com.blogspot.e_kanivets.moneytracker.repo.IRepo;
169

1710
/**
1811
* Controller class to encapsulate account handling logic.
@@ -21,117 +14,19 @@
2114
* @author Evgenii Kanivets
2215
*/
2316
public class AccountController {
17+
@SuppressWarnings("unused")
2418
private static final String TAG = "AccountController";
2519

26-
private DbHelper dbHelper;
27-
28-
public AccountController(DbHelper dbHelper) {
29-
this.dbHelper = dbHelper;
30-
}
31-
32-
public List<Account> getAccounts() {
33-
List<Account> accountList = new ArrayList<>();
34-
35-
SQLiteDatabase db = dbHelper.getReadableDatabase();
36-
37-
// Read accounts table from db
38-
Cursor cursor = db.query(DbHelper.TABLE_ACCOUNTS, null, null, null, null, null, null);
39-
40-
if (cursor.moveToFirst()) {
41-
// Get indexes of columns
42-
int idColIndex = cursor.getColumnIndex(DbHelper.ID_COLUMN);
43-
int titleColIndex = cursor.getColumnIndex(DbHelper.TITLE_COLUMN);
44-
int curSumColIndex = cursor.getColumnIndex(DbHelper.CUR_SUM_COLUMN);
45-
int currencyColIndex = cursor.getColumnIndex(DbHelper.CURRENCY_COLUMN);
46-
47-
do {
48-
// Read a account from DB
49-
Account account = new Account(cursor.getInt(idColIndex),
50-
cursor.getString(titleColIndex),
51-
cursor.getInt(curSumColIndex),
52-
cursor.getString(currencyColIndex));
53-
54-
//Add account to list
55-
accountList.add(account);
56-
} while (cursor.moveToNext());
57-
}
58-
59-
cursor.close();
60-
db.close();
61-
62-
return accountList;
63-
}
64-
65-
@Nullable
66-
public Account read(long id) {
67-
Account account = null;
68-
69-
SQLiteDatabase db = dbHelper.getReadableDatabase();
70-
71-
// Read accounts table from db
72-
Cursor cursor = db.query(DbHelper.TABLE_ACCOUNTS, null, "id=?",
73-
new String[]{Long.toString(id)}, null, null, null);
74-
75-
if (cursor.moveToFirst()) {
76-
// Get indexes of columns
77-
int idColIndex = cursor.getColumnIndex(DbHelper.ID_COLUMN);
78-
int titleColIndex = cursor.getColumnIndex(DbHelper.TITLE_COLUMN);
79-
int curSumColIndex = cursor.getColumnIndex(DbHelper.CUR_SUM_COLUMN);
80-
int currencyColIndex = cursor.getColumnIndex(DbHelper.CURRENCY_COLUMN);
20+
private IRepo<Account> accountRepo;
8121

82-
do {
83-
// Read a account from DB
84-
account = new Account(cursor.getInt(idColIndex),
85-
cursor.getString(titleColIndex),
86-
cursor.getInt(curSumColIndex),
87-
cursor.getString(currencyColIndex));
88-
89-
} while (cursor.moveToNext());
90-
}
91-
92-
cursor.close();
93-
db.close();
94-
95-
return account;
96-
}
97-
98-
public void update(Account account) {
99-
SQLiteDatabase db = dbHelper.getWritableDatabase();
100-
101-
ContentValues contentValues = new ContentValues();
102-
contentValues.put(DbHelper.CUR_SUM_COLUMN, account.getCurSum());
103-
104-
db.update(DbHelper.TABLE_ACCOUNTS, contentValues, "id=?",
105-
new String[]{Integer.valueOf(account.getId()).toString()});
106-
107-
db.close();
108-
}
109-
110-
public void deleteAccount(Account account) {
111-
// Delete the account from DB
112-
SQLiteDatabase db = dbHelper.getWritableDatabase();
113-
db.delete(DbHelper.TABLE_ACCOUNTS, "id=?", new String[]{Integer.toString(account.getId())});
114-
db.close();
115-
}
116-
117-
public void addAccount(String title, int curSum, String currency) {
118-
//Add account to DB
119-
SQLiteDatabase db = dbHelper.getWritableDatabase();
120-
121-
ContentValues contentValues = new ContentValues();
122-
contentValues.put(DbHelper.TITLE_COLUMN, title);
123-
contentValues.put(DbHelper.CUR_SUM_COLUMN, curSum);
124-
contentValues.put(DbHelper.CURRENCY_COLUMN, currency);
125-
126-
db.insert(DbHelper.TABLE_ACCOUNTS, null, contentValues);
127-
128-
db.close();
22+
public AccountController(IRepo<Account> accountRepo) {
23+
this.accountRepo = accountRepo;
12924
}
13025

13126
public boolean recordAdded(@Nullable Record record) {
13227
if (record == null) return false;
13328

134-
Account account = read(record.getAccountId());
29+
Account account = accountRepo.read(record.getAccountId());
13530
if (account == null) return false;
13631

13732
switch (record.getType()) {
@@ -147,17 +42,15 @@ public boolean recordAdded(@Nullable Record record) {
14742
break;
14843
}
14944

150-
Log.d(TAG, "recordAdded: " + account);
151-
152-
update(account);
45+
accountRepo.update(account);
15346

15447
return true;
15548
}
15649

15750
public boolean recordDeleted(@Nullable Record record) {
15851
if (record == null) return false;
15952

160-
Account account = read(record.getAccountId());
53+
Account account = accountRepo.read(record.getAccountId());
16154
if (account == null) return false;
16255

16356
switch (record.getType()) {
@@ -173,7 +66,7 @@ public boolean recordDeleted(@Nullable Record record) {
17366
break;
17467
}
17568

176-
update(account);
69+
accountRepo.update(account);
17770

17871
return true;
17972
}
@@ -188,16 +81,16 @@ public boolean recordUpdated(@Nullable Record oldRecord, @Nullable Record newRec
18881
public boolean transferDone(@Nullable Transfer transfer) {
18982
if(transfer == null) return false;
19083

191-
Account fromAccount = read(transfer.getFromAccountId());
192-
Account toAccount = read(transfer.getToAccountId());
84+
Account fromAccount = accountRepo.read(transfer.getFromAccountId());
85+
Account toAccount = accountRepo.read(transfer.getToAccountId());
19386

19487
if (fromAccount == null || toAccount == null) return false;
19588

19689
fromAccount.take(transfer.getFromAmount());
19790
toAccount.put(transfer.getToAmount());
19891

199-
update(fromAccount);
200-
update(toAccount);
92+
accountRepo.update(fromAccount);
93+
accountRepo.update(toAccount);
20194

20295
return true;
20396
}

app/src/main/java/com/blogspot/e_kanivets/moneytracker/controller/RecordController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.blogspot.e_kanivets.moneytracker.DbHelper;
88
import com.blogspot.e_kanivets.moneytracker.model.Period;
99
import com.blogspot.e_kanivets.moneytracker.model.Record;
10+
import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo;
1011

1112
import java.util.ArrayList;
1213
import java.util.List;
@@ -24,7 +25,7 @@ public class RecordController {
2425

2526
public RecordController(DbHelper dbHelper) {
2627
this.dbHelper = dbHelper;
27-
this.accountController = new AccountController(dbHelper);
28+
this.accountController = new AccountController(new AccountRepo(dbHelper));
2829
categoryController = new CategoryController(dbHelper);
2930
}
3031

app/src/main/java/com/blogspot/e_kanivets/moneytracker/fragment/AccountsFragment.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323
import com.blogspot.e_kanivets.moneytracker.activity.NavDrawerActivity;
2424
import com.blogspot.e_kanivets.moneytracker.activity.TransferActivity;
2525
import com.blogspot.e_kanivets.moneytracker.adapter.AccountAdapter;
26-
import com.blogspot.e_kanivets.moneytracker.controller.AccountController;
2726
import com.blogspot.e_kanivets.moneytracker.DbHelper;
27+
import com.blogspot.e_kanivets.moneytracker.model.Account;
28+
import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo;
29+
import com.blogspot.e_kanivets.moneytracker.repo.IRepo;
2830

2931
import butterknife.Bind;
3032
import butterknife.ButterKnife;
@@ -39,7 +41,7 @@ public class AccountsFragment extends Fragment {
3941
@Bind(R.id.list_view)
4042
ListView listView;
4143

42-
private AccountController accountController;
44+
private IRepo<Account> accountRepo;
4345

4446
public static AccountsFragment newInstance() {
4547
AccountsFragment fragment = new AccountsFragment();
@@ -57,7 +59,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
5759
super.onCreate(savedInstanceState);
5860
setHasOptionsMenu(true);
5961

60-
accountController = new AccountController(new DbHelper(getActivity()));
62+
accountRepo = new AccountRepo(new DbHelper(getActivity()));
6163
}
6264

6365
@Override
@@ -116,7 +118,7 @@ public boolean onContextItemSelected(MenuItem item) {
116118

117119
switch (item.getItemId()) {
118120
case R.id.delete:
119-
accountController.deleteAccount(accountController.getAccounts().get(info.position));
121+
accountRepo.delete(accountRepo.readAll().get(info.position));
120122
update();
121123
return true;
122124
default:
@@ -145,15 +147,15 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
145147
}
146148

147149
private void update() {
148-
listView.setAdapter(new AccountAdapter(getActivity(), accountController.getAccounts()));
150+
listView.setAdapter(new AccountAdapter(getActivity(), accountRepo.readAll()));
149151
((BaseAdapter) listView.getAdapter()).notifyDataSetChanged();
150152
}
151153

152154
private void initViews(View rootView) {
153155
if (rootView != null) {
154156
ButterKnife.bind(this, rootView);
155157

156-
listView.setAdapter(new AccountAdapter(getActivity(), accountController.getAccounts()));
158+
listView.setAdapter(new AccountAdapter(getActivity(), accountRepo.readAll()));
157159
((BaseAdapter) listView.getAdapter()).notifyDataSetChanged();
158160
registerForContextMenu(listView);
159161

app/src/main/java/com/blogspot/e_kanivets/moneytracker/model/Account.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ public Account(int id, String title, int curSum, String currency) {
1717
this.currency = currency;
1818
}
1919

20+
public Account(String title, int curSum, String currency) {
21+
this.id = -1;
22+
this.title = title;
23+
this.curSum = curSum;
24+
this.currency = currency;
25+
}
26+
2027
public int getId() {
2128
return id;
2229
}

0 commit comments

Comments
 (0)