Skip to content

Commit

Permalink
refactor: Refatoring Account and Transaction classes.
Browse files Browse the repository at this point in the history
  • Loading branch information
SamilaRuane committed Mar 15, 2018
1 parent ad70e78 commit 80c375d
Show file tree
Hide file tree
Showing 66 changed files with 1,944 additions and 443 deletions.
Binary file modified .gradle/4.1/fileHashes/fileHashes.bin
Binary file not shown.
Binary file modified .gradle/4.1/fileHashes/fileHashes.lock
Binary file not shown.
Binary file modified .gradle/4.1/fileHashes/resourceHashesCache.bin
Binary file not shown.
Binary file modified .gradle/4.1/javaCompile/classAnalysis.bin
Binary file not shown.
Binary file modified .gradle/4.1/javaCompile/javaCompile.lock
Binary file not shown.
Binary file modified .gradle/4.1/javaCompile/taskHistory.bin
Binary file not shown.
Binary file modified .gradle/4.1/taskHistory/fileSnapshots.bin
Binary file not shown.
Binary file modified .gradle/4.1/taskHistory/taskHistory.bin
Binary file not shown.
Binary file modified .gradle/4.1/taskHistory/taskHistory.lock
Binary file not shown.
11 changes: 11 additions & 0 deletions .idea/libraries/mockito_core_2_16_0.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

632 changes: 373 additions & 259 deletions .idea/workspace.xml

Large diffs are not rendered by default.

18 changes: 17 additions & 1 deletion app/app.iml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,22 @@
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
</configuration>
</facet>
<facet type="kotlin-language" name="Kotlin">
<configuration version="3" platform="JVM 1.8" useProjectSettings="false">
<compilerSettings />
<compilerArguments>
<option name="jvmTarget" value="1.8" />
<option name="languageVersion" value="1.1" />
<option name="apiVersion" value="1.1" />
<option name="pluginOptions">
<array />
</option>
<option name="pluginClasspaths">
<array />
</option>
</compilerArguments>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
<output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
Expand Down Expand Up @@ -125,7 +141,7 @@
<orderEntry type="library" scope="TEST" name="objenesis-2.6" level="project" />
<orderEntry type="library" name="transition-26.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="jsr305-2.0.1" level="project" />
<orderEntry type="library" scope="TEST" name="mockito-core-2.15.0" level="project" />
<orderEntry type="library" scope="TEST" name="mockito-core-2.16.0" level="project" />
<orderEntry type="library" scope="TEST" name="runner-1.0.1" level="project" />
<orderEntry type="library" name="support-compat-26.1.0" level="project" />
<orderEntry type="library" name="constraint-layout-solver-1.0.2" level="project" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,35 @@
package br.com.samilaruane.carteiravirtual.domain

import br.com.samilaruane.carteiravirtual.domain.entities.BitcoinTicker
import br.com.samilaruane.carteiravirtual.utils.EventResponseListener
import br.com.samilaruane.carteiravirtual.utils.constants.BaseConstants

/**
* Created by samila on 18/12/17.
*/
class BTCoin : Coin {
class BTCoin : Coin, EventResponseListener<BitcoinTicker> {

var saleResult: Double = 0.0
var purchaseResult: Double = 0.0

override fun getSalePrice(): Double {
return 1.0
return saleResult
}

override fun getPurchaseQuotation(): Double {
return 1.0
return purchaseResult
}

override fun getCoinInitials(): String {
return BaseConstants.BITCOIN_ACCOUNT
}

override fun onSuccess(obj: BitcoinTicker) {
saleResult = obj.sell
purchaseResult = obj.buy
}

override fun onError(errorMessage: String) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,41 @@
package br.com.samilaruane.carteiravirtual.domain

import br.com.samilaruane.carteiravirtual.domain.entities.DollarExchangeRate
import br.com.samilaruane.carteiravirtual.repository.remote.ServiceManager
import br.com.samilaruane.carteiravirtual.utils.EventResponseListener
import br.com.samilaruane.carteiravirtual.utils.constants.BaseConstants

/**
* Created by samila on 18/12/17.
*/
class BritaCoin : Coin {
class BritaCoin : Coin, EventResponseListener<DollarExchangeRate> {

var saleResult: Double = 0.0
var purchaseResult: Double = 0.0

constructor() {
ServiceManager().getBritaQuotation(this)
}


override fun getSalePrice(): Double {
//TODO checar cotação retornada pela API
return 1.0
return saleResult
}

override fun getPurchaseQuotation(): Double {
//TODO checar cotação retornada pela API
return 1.0
return purchaseResult
}

override fun getCoinInitials(): String {
return BaseConstants.BRITA_ACCOUNT
}

override fun onSuccess(obj: DollarExchangeRate) {
saleResult = obj.cotacaoVenda
purchaseResult = obj.cotacaoCompra
}

override fun onError(errorMessage: String) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import br.com.samilaruane.carteiravirtual.domain.entities.Account
import br.com.samilaruane.carteiravirtual.domain.entities.User
import br.com.samilaruane.carteiravirtual.utils.constants.BaseConstants
import br.com.samilaruane.carteiravirtual.repository.db.TransactionRepository
import br.com.samilaruane.carteiravirtual.repository.db.TransactionRepositoryImpl
import java.util.*

/**
Expand All @@ -16,7 +15,9 @@ class TransactionBusiness(val ctx : Context) {
var sourceAccount : Account? = null
var destinationAccount : Account? = null

var transactionRepository: TransactionRepository = TransactionRepositoryImpl.getInstance(ctx)
var transactionRepository: TransactionRepository = TransactionRepository.getInstance(ctx)



fun manageTransaction (operationType: String, sourceAccount: String, destinationAccount: String, amount: Double, user : User){

Expand Down Expand Up @@ -65,6 +66,6 @@ class TransactionBusiness(val ctx : Context) {
val transaction = Transaction (Date().time, type, amount,
sourceAccount,
destinationAccount)
transactionRepository.insert(transaction)
transactionRepository.create(transaction)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,9 @@ import br.com.samilaruane.carteiravirtual.domain.entities.User
import br.com.samilaruane.carteiravirtual.utils.constants.BaseConstants
import br.com.samilaruane.carteiravirtual.repository.SharedPreferencesHelper
import br.com.samilaruane.carteiravirtual.repository.db.AccountRepository
import br.com.samilaruane.carteiravirtual.repository.db.AccountRepositoryImpl
import br.com.samilaruane.carteiravirtual.repository.db.SearchFilter
import br.com.samilaruane.carteiravirtual.repository.db.UserRepository
import br.com.samilaruane.carteiravirtual.utils.OnEventResponse
import br.com.samilaruane.carteiravirtual.utils.EventResponseListener
import br.com.samilaruane.carteiravirtual.utils.constants.DatabaseConstants

/**
Expand All @@ -27,21 +26,21 @@ class UserBusiness(ctx : Context) {

init {
userRepository = UserRepository.getInstance(ctx)
accountRepository = AccountRepositoryImpl.getInstance(ctx)
accountRepository = AccountRepository.getInstance(ctx)
context = ctx
}

fun createUser (name : String, email : String, phone : String, password : String, passwordConfirmation : String, listener : OnEventResponse){
fun createUser (name : String, email : String, phone : String, password : String, passwordConfirmation : String, listener : EventResponseListener){

if (password.equals(passwordConfirmation)) {
val user = User(0, name, phone, email, password)
val userId = userRepository.create(user)

if (user.isValid()) {
if (userId != null) {
accountRepository.insert(Account(userId, BRLCoin(), 100000.00))
accountRepository.insert(Account(userId, BritaCoin(), 0.0))
accountRepository.insert(Account(userId, BTCoin(), 0.0))
accountRepository.create(Account(userId, BRLCoin(), 100000.00))
accountRepository.create(Account(userId, BritaCoin(), 0.0))
accountRepository.create(Account(userId, BTCoin(), 0.0))
}

listener.onSuccess()
Expand All @@ -51,7 +50,7 @@ class UserBusiness(ctx : Context) {
listener.onError(context.getString(R.string.create_user_error_alert))
}
fun initAccounts (user : User){
val accounts = accountRepository.select(user.id.toString())
val accounts = accountRepository.select(SearchFilter.getByArgument(DatabaseConstants.ACCOUNT.TABLE_NAME, DatabaseConstants.ACCOUNT.COLUMNS.USER_ID, user.id.toString()))
for (acc : Account in accounts){
when(acc.getCoin().getCoinInitials()){
BaseConstants.BRITA_ACCOUNT -> britaAccount = acc
Expand Down Expand Up @@ -92,7 +91,13 @@ class UserBusiness(ctx : Context) {
}

fun getUserAccounts () : List <Account>{
return accountRepository.select(SharedPreferencesHelper(context).getUserId().toString())
initAccounts(getCurrentUser())
val accounts = ArrayList<Account>()
accounts.add(britaAccount)
accounts.add(bitCoinAccount)
accounts.add(brlAccount)
return accounts

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,37 +7,37 @@ import java.io.Serializable
/**
* Created by samila on 18/12/17.
*/
class Account(private val userId : Long, private val coin : Coin, private var accountBalance : Double = 0.0) : Serializable {
class Account(private val userId: Long, private val coin: Coin, private var accountBalance: Double = 0.0) : Serializable {

private var id : Long = 0
private var id: Long = 0


fun deposit(amount: Double) : Boolean {
if (amount < 0) return false
fun deposit(amount: Double): Boolean {
if (amount < 0) return false
this.accountBalance += amount
return true
}

fun withdraw(amount: Double) : Boolean {
fun withdraw(amount: Double): Boolean {
//TODO Tratar em outro lugar
try {
if (amount > this.accountBalance) throw InsufficientBalanceException("Saldo Insuficiente")
if (amount > this.accountBalance) throw InsufficientBalanceException("Saldo Insuficiente")
this.accountBalance -= amount
return true
}catch(e : InsufficientBalanceException){
return false
} catch(e: InsufficientBalanceException) {
return false
}
}

fun getAccountBalance(): Double {
return this.accountBalance
}

fun getCoin() : Coin {
fun getCoin(): Coin {
return this.coin
}

fun getUserId () : Long {
fun getUserId(): Long {
return this.userId
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,72 @@
package br.com.samilaruane.carteiravirtual.repository.db

import android.content.ContentValues
import android.content.Context
import br.com.samilaruane.carteiravirtual.utils.constants.BaseConstants
import br.com.samilaruane.carteiravirtual.utils.constants.DatabaseConstants
import br.com.samilaruane.carteiravirtual.domain.*
import br.com.samilaruane.carteiravirtual.domain.entities.Account


/**
* Created by samila on 07/01/18.
*/
interface AccountRepository {
fun insert (account : Account) : Int
fun select (userId : String) : MutableList<Account>
class AccountRepository private constructor(ctx : Context) : Repository<Account>{
var mWalletDatabaseHelper = WalletDatabaseHelper (ctx)

companion object {
var sInstance : Repository<Account>? = null

fun getInstance (ctx : Context) : AccountRepository {
if(sInstance == null){
sInstance = AccountRepository(ctx)
}

return sInstance as AccountRepository
}
}

override fun create(item: Account): Long {
val db = mWalletDatabaseHelper.writableDatabase
val insertValues = ContentValues()
insertValues.put(DatabaseConstants.ACCOUNT.COLUMNS.USER_ID, item.getUserId())
insertValues.put(DatabaseConstants.ACCOUNT.COLUMNS.BALANCE, item.getAccountBalance())
insertValues.put(DatabaseConstants.ACCOUNT.COLUMNS.COIN_INITIALS, item.getCoin().getCoinInitials())

return db.insert(DatabaseConstants.ACCOUNT.TABLE_NAME, null, insertValues)
}

override fun delete(item: Account) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}

override fun update(item: Account) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}

override fun select(statment: Statment): List<Account> {

val db = mWalletDatabaseHelper.writableDatabase
val querySQL = statment.getQuery()

val list = mutableListOf<Account>()
val cursor = db.rawQuery(querySQL, null)

while (cursor.moveToNext()){
val userId = cursor.getLong(cursor.getColumnIndex(DatabaseConstants.ACCOUNT.COLUMNS.USER_ID))
val balance = cursor.getDouble(cursor.getColumnIndex(DatabaseConstants.ACCOUNT.COLUMNS.BALANCE))
val coin = cursor.getString(cursor.getColumnIndex(DatabaseConstants.ACCOUNT.COLUMNS.COIN_INITIALS))

var coinReference : Coin = BRLCoin ()

when (coin){
BaseConstants.BITCOIN_ACCOUNT -> {coinReference = BTCoin()}
BaseConstants.BRITA_ACCOUNT-> {coinReference = BritaCoin ()}
}

val item = Account(userId, coinReference, balance)

list.add(item)
}
return list
}
}
Loading

0 comments on commit 80c375d

Please sign in to comment.