Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.
Prev Previous commit
Next Next commit
#10[30m]. Remove TransferController, add TransferRepo.
  • Loading branch information
Evgenii Kanivets committed Feb 15, 2016
commit efd4dc32d511246c80ab987776dd0e766b602eb2
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public class DbHelper extends SQLiteOpenHelper {

public static final String TABLE_TRANSFERS = "transfers";
public static final String FROM_ACCOUNT_ID_COLUMN = "from_account_id";
public static final String TO_ACCOUND_ID_COLUMN = "to_account_id";
public static final String TO_ACCOUNT_ID_COLUMN = "to_account_id";
public static final String FROM_AMOUNT_COLUMN = "from_amount";
public static final String TO_AMOUNT_COLUMN = "to_amount";
public static final String CREATED_AT_COLUMN = "created_at";
Expand Down Expand Up @@ -129,7 +129,7 @@ private void createTransfersTable(SQLiteDatabase db) {
+ ID_COLUMN + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ TIME_COLUMN + " INTEGER,"
+ FROM_ACCOUNT_ID_COLUMN + " INTEGER,"
+ TO_ACCOUND_ID_COLUMN + " INTEGER,"
+ TO_ACCOUNT_ID_COLUMN + " INTEGER,"
+ FROM_AMOUNT_COLUMN + " INTEGER,"
+ TO_AMOUNT_COLUMN + " INTEGER);");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@
import com.blogspot.e_kanivets.moneytracker.R;
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseActivity;
import com.blogspot.e_kanivets.moneytracker.controller.AccountController;
import com.blogspot.e_kanivets.moneytracker.controller.TransferController;
import com.blogspot.e_kanivets.moneytracker.DbHelper;
import com.blogspot.e_kanivets.moneytracker.model.Account;
import com.blogspot.e_kanivets.moneytracker.model.Transfer;
import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo;
import com.blogspot.e_kanivets.moneytracker.repo.IRepo;
import com.blogspot.e_kanivets.moneytracker.repo.TransferRepo;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -25,7 +25,7 @@ public class TransferActivity extends BaseActivity {
@SuppressWarnings("unused")
private static final String TAG = "TransferActivity";

private TransferController transferController;
private IRepo<Transfer> transferRepo;

private List<Account> accountList;

Expand All @@ -49,7 +49,7 @@ protected boolean initData() {

IRepo<Account> accountRepo = new AccountRepo(dbHelper);
AccountController accountController = new AccountController(accountRepo);
transferController = new TransferController(dbHelper, accountController);
transferRepo = new TransferRepo(dbHelper, accountController);

accountList = accountRepo.readAll();

Expand Down Expand Up @@ -117,6 +117,6 @@ private void doTransfer() {

Transfer transfer = new Transfer(System.currentTimeMillis(), fromAccount.getId(),
toAccount.getId(), fromAmount, toAmount);
transferController.create(transfer);
transferRepo.create(transfer);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
package com.blogspot.e_kanivets.moneytracker.repo;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;

import com.blogspot.e_kanivets.moneytracker.DbHelper;
import com.blogspot.e_kanivets.moneytracker.controller.AccountController;
import com.blogspot.e_kanivets.moneytracker.model.Transfer;

import java.util.ArrayList;
import java.util.List;

/**
* {@link IRepo} implementation for {@link Transfer} entity.
* Created on 2/15/16.
*
* @author Evgenii Kanivets
*/
public class TransferRepo implements IRepo<Transfer> {
@SuppressWarnings("unused")
private static final String TAG = "TransferRepo";

private DbHelper dbHelper;
private AccountController accountController;

public TransferRepo(DbHelper dbHelper, AccountController accountController) {
this.dbHelper = dbHelper;
this.accountController = accountController;
}

@Nullable
@Override
public Transfer create(Transfer transfer) {
if (transfer == null) return null;

SQLiteDatabase db = dbHelper.getWritableDatabase();

ContentValues contentValues = new ContentValues();
contentValues.put(DbHelper.TIME_COLUMN, transfer.getTime());
contentValues.put(DbHelper.FROM_ACCOUNT_ID_COLUMN, transfer.getFromAccountId());
contentValues.put(DbHelper.TO_ACCOUNT_ID_COLUMN, transfer.getToAccountId());
contentValues.put(DbHelper.FROM_AMOUNT_COLUMN, transfer.getFromAmount());
contentValues.put(DbHelper.TO_AMOUNT_COLUMN, transfer.getToAmount());

long id = db.insert(DbHelper.TABLE_TRANSFERS, null, contentValues);

db.close();

if (id == -1) {
Log.d(TAG, "Couldn't create transfer : " + transfer);
return null;
} else {
Transfer createdTransfer = read(id);
accountController.transferDone(transfer);
Log.d(TAG, "Created transfer : " + createdTransfer);

return createdTransfer;
}
}

@Nullable
@Override
public Transfer read(long id) {
List<Transfer> transferList = readWithCondition("id=?", new String[]{Long.toString(id)});

if (transferList.size() == 1) return transferList.get(0);
else return null;
}

@Nullable
@Override
public Transfer update(Transfer instance) {
throw new IllegalStateException("Not implemented yet");
}

@Override
public boolean delete(Transfer instance) {
throw new IllegalStateException("Not implemented yet");
}

@NonNull
@Override
public List<Transfer> readAll() {
return readWithCondition(null, null);
}

@NonNull
@Override
public List<Transfer> readWithCondition(String condition, String[] args) {
SQLiteDatabase db = dbHelper.getReadableDatabase();

// Read accounts table from db
Cursor cursor = db.query(DbHelper.TABLE_TRANSFERS, null, condition, args, null, null, null);
List<Transfer> accountList = getTransferListFromCursor(cursor);

cursor.close();
db.close();

return accountList;
}

private List<Transfer> getTransferListFromCursor(Cursor cursor) {
List<Transfer> accountList = new ArrayList<>();

if (cursor.moveToFirst()) {
// Get indexes of columns
int idColIndex = cursor.getColumnIndex(DbHelper.ID_COLUMN);
int idColTime = cursor.getColumnIndex(DbHelper.TIME_COLUMN);
int idColFromAccountId = cursor.getColumnIndex(DbHelper.FROM_ACCOUNT_ID_COLUMN);
int idColToAccountId = cursor.getColumnIndex(DbHelper.TO_ACCOUNT_ID_COLUMN);
int idColFromAmount = cursor.getColumnIndex(DbHelper.FROM_AMOUNT_COLUMN);
int idColToAmount = cursor.getColumnIndex(DbHelper.TO_AMOUNT_COLUMN);

do {
// Read a account from DB
Transfer account = new Transfer(cursor.getInt(idColIndex),
cursor.getLong(idColTime),
cursor.getLong(idColFromAccountId),
cursor.getLong(idColToAccountId),
cursor.getInt(idColFromAmount),
cursor.getInt(idColToAmount));

accountList.add(account);
} while (cursor.moveToNext());
}

return accountList;
}
}