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

Commit e6c4ed7

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

File tree

8 files changed

+201
-141
lines changed

8 files changed

+201
-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: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
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;
1617

1718
import java.util.ArrayList;
1819
import java.util.List;
@@ -45,10 +46,11 @@ protected int getContentViewId() {
4546
protected boolean initData() {
4647
DbHelper dbHelper = new DbHelper(TransferActivity.this);
4748

48-
AccountController accountController = new AccountController(dbHelper);
49+
AccountRepo accountRepo = new AccountRepo(dbHelper);
50+
AccountController accountController = new AccountController(accountRepo);
4951
transferController = new TransferController(dbHelper, accountController);
5052

51-
accountList = accountController.getAccounts();
53+
accountList = accountRepo.readAll();
5254

5355
return super.initData();
5456
}

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

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
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;
1616

1717
import java.util.ArrayList;
1818
import java.util.List;
@@ -36,6 +36,11 @@ public abstract class AddRecordBaseActivity extends BaseActivity {
3636
protected Record record;
3737
protected Mode mode;
3838

39+
protected List<Account> accountList;
40+
41+
protected AccountRepo accountRepo;
42+
protected RecordController recordController;
43+
3944
@Bind(R.id.et_title)
4045
EditText etTitle;
4146
@Bind(R.id.et_category)
@@ -45,9 +50,6 @@ public abstract class AddRecordBaseActivity extends BaseActivity {
4550
@Bind(R.id.spinner_account)
4651
Spinner spinnerAccount;
4752

48-
protected RecordController recordController;
49-
protected AccountController accountController;
50-
5153
@Override
5254
protected int getContentViewId() {
5355
return R.layout.activity_add_record;
@@ -57,11 +59,14 @@ protected int getContentViewId() {
5759
protected boolean initData() {
5860
super.initData();
5961

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

6367
record = (Record) getIntent().getSerializableExtra(KEY_RECORD);
6468
mode = (Mode) getIntent().getSerializableExtra(KEY_MODE);
69+
accountList = accountRepo.readAll();
6570

6671
return mode != null && (!mode.equals(Mode.MODE_EDIT) || record != null);
6772
}
@@ -71,8 +76,6 @@ record = (Record) getIntent().getSerializableExtra(KEY_RECORD);
7176
protected void initViews() {
7277
super.initViews();
7378

74-
List<Account> accountList = accountController.getAccounts();
75-
7679
List<String> accounts = new ArrayList<>();
7780
for (Account account : accountList) {
7881
accounts.add(account.getTitle());
@@ -137,7 +140,7 @@ private boolean prepareRecord() {
137140
}
138141

139142
if (price >= 0 && price <= 1000000000 && spinnerAccount.getSelectedItemPosition() >= 0) {
140-
Account account = accountController.getAccounts().get(spinnerAccount.getSelectedItemPosition());
143+
Account account = accountList.get(spinnerAccount.getSelectedItemPosition());
141144
return doRecord(title, category, price, account);
142145
} else return false;
143146
}

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.AccountRepo;
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 AccountRepo 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(AccountRepo 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: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
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.repo.AccountRepo;
2828

2929
import butterknife.Bind;
3030
import butterknife.ButterKnife;
@@ -39,7 +39,7 @@ public class AccountsFragment extends Fragment {
3939
@Bind(R.id.list_view)
4040
ListView listView;
4141

42-
private AccountController accountController;
42+
private AccountRepo accountRepo;
4343

4444
public static AccountsFragment newInstance() {
4545
AccountsFragment fragment = new AccountsFragment();
@@ -57,7 +57,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
5757
super.onCreate(savedInstanceState);
5858
setHasOptionsMenu(true);
5959

60-
accountController = new AccountController(new DbHelper(getActivity()));
60+
accountRepo = new AccountRepo(new DbHelper(getActivity()));
6161
}
6262

6363
@Override
@@ -116,7 +116,7 @@ public boolean onContextItemSelected(MenuItem item) {
116116

117117
switch (item.getItemId()) {
118118
case R.id.delete:
119-
accountController.deleteAccount(accountController.getAccounts().get(info.position));
119+
accountRepo.delete(accountRepo.readAll().get(info.position));
120120
update();
121121
return true;
122122
default:
@@ -145,15 +145,15 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
145145
}
146146

147147
private void update() {
148-
listView.setAdapter(new AccountAdapter(getActivity(), accountController.getAccounts()));
148+
listView.setAdapter(new AccountAdapter(getActivity(), accountRepo.readAll()));
149149
((BaseAdapter) listView.getAdapter()).notifyDataSetChanged();
150150
}
151151

152152
private void initViews(View rootView) {
153153
if (rootView != null) {
154154
ButterKnife.bind(this, rootView);
155155

156-
listView.setAdapter(new AccountAdapter(getActivity(), accountController.getAccounts()));
156+
listView.setAdapter(new AccountAdapter(getActivity(), accountRepo.readAll()));
157157
((BaseAdapter) listView.getAdapter()).notifyDataSetChanged();
158158
registerForContextMenu(listView);
159159

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)