From 5734fd38f0582e5586b8169cf5636d3e4ab34997 Mon Sep 17 00:00:00 2001 From: dankito Date: Wed, 15 Jul 2020 22:39:35 +0200 Subject: [PATCH] Removed unused FinTsClientForCustomerSwift --- .../kotlin/FinTsClientForCustomerSwift.kt | 198 ------------------ 1 file changed, 198 deletions(-) delete mode 100644 fints4k/src/iosMain/kotlin/FinTsClientForCustomerSwift.kt diff --git a/fints4k/src/iosMain/kotlin/FinTsClientForCustomerSwift.kt b/fints4k/src/iosMain/kotlin/FinTsClientForCustomerSwift.kt deleted file mode 100644 index 2dbd9a09..00000000 --- a/fints4k/src/iosMain/kotlin/FinTsClientForCustomerSwift.kt +++ /dev/null @@ -1,198 +0,0 @@ -import net.dankito.banking.fints.FinTsClient -import net.dankito.banking.fints.callback.FinTsClientCallback -import net.dankito.banking.fints.model.* -import net.dankito.banking.fints.response.client.AddAccountResponse -import net.dankito.banking.fints.response.client.FinTsClientResponse -import net.dankito.banking.fints.response.client.GetTransactionsResponse -import net.dankito.banking.fints.webclient.IWebClient -import kotlin.native.concurrent.TransferMode -import kotlin.native.concurrent.Worker -import kotlin.native.concurrent.freeze - - -open class FinTsClientWorkerArgument(val bank: BankData, val customer: CustomerData, val webClient: IWebClient, val callback: FinTsClientCallback) - -class GetTransactionsWorkerArgument(val parameter: GetTransactionsParameter, val account: AccountData, - bank: BankData, customer: CustomerData, webClient: IWebClient, callback: FinTsClientCallback) - : FinTsClientWorkerArgument(bank, customer, webClient, callback) - -data class FinTsClientWorkerResult( - val bank: BankData, val customer: CustomerData, val response: T) - - -open class FinTsClientForCustomerSwift( - protected val bank: BankData, - protected val customer: CustomerData, - protected val webClient: IWebClient, - protected val callback: FinTsClientCallback -) { - - protected val worker = Worker.start(name = "FinTsClient worker for $customer") - - - init { - webClient.freeze() - callback.freeze() - } - - - - open fun addAccountAsync(callback: (AddAccountResponse) -> Unit) { - val future = worker.execute(TransferMode.SAFE, { createWorkerArgument() }) { arg -> - val client = FinTsClient(arg.callback, arg.webClient) - - // unbelievable, i am not allowed to use the createCopy() methods - val bank = BankData( - arg.bank.bankCode, arg.bank.countryCode, arg.bank.finTs3ServerAddress, arg.bank.bic, arg.bank.bpdVersion, - arg.bank.name, arg.bank.countMaxJobsPerMessage, arg.bank.supportedHbciVersions, arg.bank.supportedTanProcedures, - arg.bank.changeTanMediumParameters, arg.bank.pinInfo, arg.bank.supportedLanguages, arg.bank.supportedJobs - ) - val customer = CustomerData( - arg.customer.customerId, arg.customer.pin, arg.customer.userId, arg.customer.name, arg.customer.updVersion, - arg.customer.supportedTanProcedures, arg.customer.selectedTanProcedure, arg.customer.tanMedia, - arg.customer.selectedLanguage, arg.customer.customerSystemId, arg.customer.customerSystemStatus - ) - - val response = client.addAccount(bank, customer) - - FinTsClientWorkerResult(bank.freeze(), customer.freeze(), response.freeze()) - } - - val result = future.result - map(bank, result.bank) - map(customer, result.customer) - - callback(result.response) - } - - - open fun getTransactionsAsync(parameter: GetTransactionsParameter, account: AccountData, callback: (GetTransactionsResponse) -> Unit) { - val future = worker.execute(TransferMode.SAFE, { createWorkerArgument(parameter, account) }) { arg -> - val client = FinTsClient(arg.callback, arg.webClient) - - // unbelievable, i am not allowed to use the createCopy() methods - val bank = BankData( - arg.bank.bankCode, arg.bank.countryCode, arg.bank.finTs3ServerAddress, arg.bank.bic, arg.bank.bpdVersion, - arg.bank.name, arg.bank.countMaxJobsPerMessage, arg.bank.supportedHbciVersions, arg.bank.supportedTanProcedures, - arg.bank.changeTanMediumParameters, arg.bank.pinInfo, arg.bank.supportedLanguages, arg.bank.supportedJobs - ) - val customer = CustomerData( - arg.customer.customerId, arg.customer.pin, arg.customer.userId, arg.customer.name, arg.customer.updVersion, - arg.customer.supportedTanProcedures, arg.customer.selectedTanProcedure, arg.customer.tanMedia, - arg.customer.selectedLanguage, arg.customer.customerSystemId, arg.customer.customerSystemStatus - ) - - val response = client.getTransactions(arg.parameter, bank, customer, arg.account) // TODO: map account - - FinTsClientWorkerResult(bank.freeze(), customer.freeze(), response.freeze()) - } - - future.consume { result -> - map(bank, result.bank) - map(customer, result.customer) - - callback(result.response) - } - } - - - protected open fun createWorkerArgument(): FinTsClientWorkerArgument { - val bank = createImmutableCopy(this.bank) - val customer = createImmutableCopy(this.customer) - - return FinTsClientWorkerArgument(bank, customer, webClient, callback) - } - - protected open fun createWorkerArgument(parameter: GetTransactionsParameter, account: AccountData): GetTransactionsWorkerArgument { - val bank = createImmutableCopy(this.bank) - val customer = createImmutableCopy(this.customer) - val frozenAccount = createImmutableCopy(account) - - return GetTransactionsWorkerArgument(parameter.freeze(), frozenAccount, bank, customer, webClient, callback) - } - - - protected open fun createCopy(bank: BankData): BankData { - return BankData( - bank.bankCode, bank.countryCode, bank.finTs3ServerAddress, bank.bic, bank.bpdVersion, - bank.name, bank.countMaxJobsPerMessage, bank.supportedHbciVersions, bank.supportedTanProcedures, - bank.changeTanMediumParameters, bank.pinInfo, bank.supportedLanguages, bank.supportedJobs - ) - } - - protected open fun createImmutableCopy(bank: BankData): BankData { - return createCopy(bank).freeze() - } - - protected open fun createCopy(customer: CustomerData): CustomerData { - return CustomerData( - customer.customerId, customer.pin, customer.userId, customer.name, customer.updVersion, - customer.supportedTanProcedures, customer.selectedTanProcedure, customer.tanMedia, - customer.selectedLanguage, customer.customerSystemId, customer.customerSystemStatus - ) - } - - protected open fun createImmutableCopy(customer: CustomerData): CustomerData { - return createCopy(customer).freeze() - } - - protected open fun createCopy(account: AccountData): AccountData { - val copy = AccountData( - account.accountIdentifier, account.subAccountAttribute, account.bankCountryCode, - account.bankCode, account.iban, account.customerId, account.accountType, account.currency, - account.accountHolderName, account.productName, account.accountLimit, account.allowedJobNames, - account.allowedJobs, account.supportsRetrievingTransactionsOfLast90DaysWithoutTan, - account.triedToRetrieveTransactionsOfLast90DaysWithoutTan - ) - - AccountFeature.values().forEach { feature -> - copy.setSupportsFeature(feature, account.supportsFeature(feature)) - } - - return copy - } - - protected open fun createImmutableCopy(account: AccountData): AccountData { - return createCopy(account).freeze() - } - - - protected open fun map(to: BankData, from: BankData) { - to.bankCode = from.bankCode - to.countryCode = from.countryCode - to.finTs3ServerAddress = from.finTs3ServerAddress - to.bic = from.bic - to.bpdVersion = from.bpdVersion - to.name = from.name - to.countMaxJobsPerMessage = from.countMaxJobsPerMessage - to.supportedHbciVersions = from.supportedHbciVersions - to.supportedTanProcedures = from.supportedTanProcedures - to.changeTanMediumParameters = from.changeTanMediumParameters - to.pinInfo = from.pinInfo - to.supportedLanguages = from.supportedLanguages - to.supportedJobs = from.supportedJobs - } - - protected open fun map(to: CustomerData, from: CustomerData) { - to.customerId = from.customerId - to.pin = from.pin - to.userId = from.userId - to.name = from.name - to.updVersion = from.updVersion - to.supportedTanProcedures = from.supportedTanProcedures - to.selectedTanProcedure = from.selectedTanProcedure - to.tanMedia = from.tanMedia - to.selectedLanguage = from.selectedLanguage - to.customerSystemId = from.customerSystemId - to.customerSystemStatus = from.customerSystemStatus - - // TODO: create convenience method to set accounts - to.accounts.forEach { account -> - to.removeAccount(account) - } - from.accounts.forEach { account -> - to.addAccount(account) // TODO: also map account? - } - } - -} \ No newline at end of file